─ Şefik Efe Altınoluk による IoT 統合型全自動ワイヤレス フィッシング システム─
法的許可を持たないユーザー/システムでこのソフトウェアを試行しないでください。事前の相互同意なしに、ターゲットを攻撃するためにWi-Phi
を使用することは違法です。適用されるすべての地方法、州法、および連邦法に従うのはエンドユーザーの責任です。私は一切の責任を負わず、このソフトウェア、ドキュメント、およびこのリポジトリ内のあらゆるものによって引き起こされる誤用または損害に対して責任を負いません。
(#4 を参照) Wi-Phi
悪用される可能性があるため、ソース コードのほとんどの部分は共有しません。実用的なコード全体が必要なビジネス/学術/教育のケースについては、LinkedIn から私に連絡してください。
このプロジェクトは、Gnu General Public License バージョン 3.0 に基づいてライセンスされています。
詳細については、「ライセンス」を参照してください。
Wi-Phi
ワイヤレスIoT
(モノのインターネット) ボードに完全に統合された自動phishing
system
です。
これは、高度な機能が豊富なWifi Pineapple
のように考えることができます。
Wi-Phi
、次のソフトウェアの少なくとも 1 つを実行しているユーザーをフィッシングできます。
Wi-Phi
の主なコンポーネントは次のとおりです。
MicroPython
ファームウェアをサポートするIoTボード。 ESP32
ベースのDeneyap Kart
使用しています。esp32-20220117-v1.18.bin
ESP32 IoT デバイスを入手します。
ESP32 をコンピュータに接続し、ESP32 が接続されているシリアル ポートを取得します。
COMx
です/dev/ttyUSBx
または/dev/tty/USBx
です。次に、GNU/Linux に対して次のコマンドを実行します。
[efe@lhost ~] $ git clone https://github.com/f4T1H21/Wi-Phi.git && cd Wi-Phi
[efe@lhost Wi-Phi] $ pip3 install -r requirements.txt
[efe@lhost Wi-Phi] $ sudo ./setup.sh < serial_port >
これで、ソフトウェアが動作するはずです。 Google Free Wi-Fi
という名前の Wi-Fi ネットワークが表示されるかどうかを確認してください。
ESP32 を電源に接続すると、ブート段階後にプロジェクトが自動的に実行されます。
他には何も関係ありません。
すべてのソフトウェアは MicroPython 上に実装されており、ESP32 上で実行されます。
ESP32 はワイヤレス AP (アクセス ポイント) になります。そして 3 つの独立したソケット (OSI レイヤ 4 上) を実行します。
DNS
サーバーの53/UDP
HTTP
サーバーの場合は80/TCP
Credential Store
サーバーの2121/TCP
すべてのバインドは、ゲートウェイ (AP) の IP アドレス ( 210.210.210.1
で行われます。
このような IP クラスを選択した理由は、何らかの理由で、Samsung デバイスが短い IP アドレスをキャプティブ ポータルとして考慮しないためです。それは私にとって問題でした。
主なアイデアは、HTTP サーバー上で静的なフィッシング Web サイトを提供し、これを Wi-Fi 経由で接続されているあらゆるベンダーのデバイス (ステーション) のcaptive portal
にすることです。
Static site
DNS
、 HTTP
、 CS
サーバーTCP
およびUDP
ソケットGateway
LAN
Wireless AP
、 Wi-Fi
以下に、 Wi-Phi
動作する適切に設計されたシナリオを示します。
これは私が自分自身に課したケーススタディでもあります。それでは、ケースに入ってみましょう...
ほとんどのデバイス ベンダーは、ベンダー固有のキャプティブ ポータル検出サーバーの特定のエンドポイントに HTTP リクエストを送信し、Wi-Fi ネットワークにキャプティブ ポータルがあるかどうかを理解するための特定の HTTP 応答を期待しています。
以下の表は、Wi-Fi ネットワークにキャプティブ ポータルが存在することをデバイスに想定させるために、さまざまなデバイス ベンダーに対して何を応答するかを示しています。
注: Mozilla は「デバイス ベンダー」の例外です。 Firefox (ブラウザとして) は、独自のキャプティブ ポータル検出サーバーに従って、この決定を自ら行うことができます。
302 Found
ステータス コードを含む応答には、ブラウザ (クライアント) を適切にリダイレクトするためにLocation:
ヘッダーも必要です。
デバイスベンダー | エンドポイント | ステータスコード | 応答本文 |
---|---|---|---|
マイクロソフト(Windows) | www.msftconnecttest.com/ncsi.txt | 200 OK | Microsoft NCSI |
マイクロソフト(Windows) | www.msftconnecttest.com/connecttest.txt | 200 OK | Microsoft Connect Test |
マイクロソフト(Windows) | www.msftconnecttest.com/redirect | 302 Found | |
グーグル(アンドロイド) | connectivitycheck.gstatic.com/gen_204 | 302 Found | |
グーグル(アンドロイド) | connectivitycheck.gstatic.com/generate_204 | 302 Found | |
グーグル(アンドロイド) | clients3.google.com/generate_204 | 302 Found | |
シャオミ | connect.rom.miui.com/gen_204 | 302 Found | |
シャオミ | connect.rom.miui.com/generate_204 | 302 Found | |
アップル (IOS/MacOS) | captive.apple.com/hotspot-detect.html | 302 Found | |
モジラ (Firefox) | detectportal.firefox.com/canonical.html | 302 Found | |
モジラ (Firefox) | detectportal.firefox.com/success.txt | 302 Found |
上記のエンドポイントに対して行われる http リクエストに応答できるようにするには、これらのリクエストを ESP32 の HTTP サーバーに送信する必要があります。これを達成するために、ESP32 は、特定のドメイン ルックアップに対して自身の IP アドレスに応答する必要があります。
google.com
の IP アドレスは210.210.210.1
になります。したがって、ESP32 上でドメイン ネーム システム サーバーが実行されている必要があります。この観点から見ると、この状況は DNS ハイジャック攻撃に似ています。
Google は世界中で最も人気があり、信頼されているテクノロジー企業だと思います。そこで、Gmail の古いログイン ページとほぼ同じに見える静的なフィッシング ページを用意しました。また、Wi-Fi ネットワークはGoogle Free Wi-Fi
とも呼ばれます。
シーンが続くと、ブラウザー (クライアント) を静的ログイン ページにリダイレクトした後、ユーザーは資格情報を入力して「次へ」ボタンを押すことになります。資格情報はローカル ファイルに保存されます。その後、ユーザーは次回 ESP32 を再起動するまで IP が禁止されます。そうしないと、ダミーまたは間違った資格情報によってローカル データベースが台無しになる可能性があります。これらすべての後、クライアントは静的サイトの/
ディレクトリにリダイレクトされます。
IP が禁止されたクライアントが HTTP サーバー上のリソースにアクセスしようとするたびに、HTTP リクエストのメソッド、ヘッド、ボディなどに関係なく、同じ HTML ファイルhacklendin.html
が提供されます。
一方、Wi-Fi 接続中に2121/tcp
に接続し、ハードコードされたパスワードで認証することで、ローカル資格情報ストアをリモートで表示できます。
Wi-Phi
機能が豊富なシステムです。 Wi-Fi
、 HTTP
、およびDNS
サービスによって作成された詳細なログをリアルタイムで表示できます。これらのログは、ストレージを節約するためにローカルには保存されません。
詳細なログを表示できるようにするには、
boot.py
の内容をmain.py
という名前のローカル ファイルにコピーします。boot.py
削除します。main.py
実行します。 ESP32 上でのファイル操作やソフトウェアの実行には、 ampy
ツールを使用できます。
さまざまなベンダーの複数の独立したデバイスをGoogle Free Wi-Fi
に同時に接続しているケースを見てみましょう。
IOS デバイスがキャプティブ ポータルに遭遇すると、ユーザーに「いいね!」というプロンプトを表示せずに、自動的にキャプティブ ポータル ページを起動します。
Samsung デバイスには通知のみが表示されます。したがって、ここでユーザーは、 Sign in to the network
か、画面上部の通知をクリックする必要があります。
Xiaomi デバイスにも通知が表示されます。また、ユーザーに再度プロンプトを表示せずに、キャプティブ ポータル ページが自動的に開かれる場合もあります。
Firefox では、アプリケーション ウィンドウの上部にプロンプトが表示されます。 Open network login page
をクリックすると、新しいタブでキャプティブ ポータル ページが開きます。
そしてもう1つは、ユーザーに決定さえさせない人(IOSなど)です。常にキャプティブ ポータル ページを自動的に開きます。
先ほど説明したように、
学習し、学んだことを実際の生活に実装し、バグを修正し、このドキュメントを書くという全期間は、私にとってとても楽しかったです。ぜひこれらの知識を倫理に役立ててください。その他の質問やビジネス/学術/教育に関するケースについては、私までお問い合わせください。
ツイッター
リンクトイン
ハッカーワン
ボックスをハックする
─シェフィク・エフェ・アルトゥノルク著─