スニッフィング(盗聴)したパケットからZIPファイルを抽出する
またWEPの実験をしたので書きます.
これはサイバーセキュリティの知識を深めるための実験であり,犯罪行為を唆すものではありません.実験する際は必ず自分が管理する機器を用いてください.自分のものではないネットワークに対しこのようなことを行うのは犯罪です.
実験環境
- 無線LANルータ(アクセスポイント)
- SSIDはWLAN_ROUTER_2.4G
- 暗号化はWEP
- HTTPサーバと有線接続している
- 正規クライアントと無線接続している
- HTTPサーバ
- IPアドレスは192.168.1.101
- OSはUbuntu18.04,Apache2が走っている
- ウェブブラウザでアクセスすると簡単なホームページが開く
- 正規クライアント
- 盗聴用パソコン
今回は,攻撃者は既にWEPキーを入手しているという状況で実験します.
下に簡単な図を示しておきます.
手順
通信を盗聴する
例によって例のごとくパケットキャプチャを実行しておきます.今回はcapture-01.capに保存します.
キャプチャを行っている最中に正規クライアントはHTTPサーバにアクセスしZIPファイルをダウンロードします.正規クライアントでウェブブラウザ(実験ではFireFox)を立ち上げ,URLの欄にサーバのIPアドレス192.168.1.101を入力,リンクからZIPファイルをダウンロードします.
ダウンロードが終了したら,盗聴用パソコンでのパケットキャプチャは止めて構いません.
キャプチャファイルを復号化する
キャプチャファイルcapture-01.capをWireSharkで開くと,プロトコルは全て802.11で有意な情報は読み取れないと思います.今回,攻撃者は既にWEPキーを知っているという状況を想定しているので,キーを使って復号化を試みます.
以下は日本語環境での手順を示したものです.英語やその他の言語の場合は適宜読み替えてください.
WireSharkの編集メニューから設定を選び,出てきたウィンドウのProtocolsからIEEE 802.11をクリックします.Enable decryptionのチェックボックスをオンにし,下のEdit...ボタンを押します.
WEP and WPA Decryption Keysのウィンドウが出てくるので,まず左下の+ボタンを押し,続いてKey typeをwepに,KeyにはWEPキーをASCIIの16進数にしたものを入力し,OKを押します.この実験の場合,WEPキーはpwordのため,それを16進数にした70776f7264を入力します.
以上を完了すると,802.11だけでなくHTTPやTCPが見えるようになると思います.
TCPストリームからデータを抽出する
復号化したパケットを見ていると,クライアントからサーバにGET /file.zip HTTP/1.1しているHTTPパケットが見つかりました.
そのパケットを選択し,右クリック→追跡→TCPストリームを選択します.
表示されたウィンドウを見ていくと,先ほどのGET /file.zip HTTP/1.1が見つかりました(下図緑枠).さらにその下にサーバからのHTTP/1.1 200 OKから始まるヘッダがあり,その下にZIPファイルのバイナリが見えます.ZIPファイルのバイナリはContent-Type: application/zip<改行><改行>の後,PK..から始まるようです.
Show and save data asをRaw(無加工)形式にした後,Save as...を押して適当な場所に保存します.実験ではCドライブ直下にfile.zipとして保存しました.
データからZIPファイルを抜き出す
保存したファイルをバイナリエディタで開きます.
先ほど確認したZIPファイルの先頭であるPK..の直前までを削除します.
ZIPバイナリの後にもゴミが付いているようならそれも削除し,上書き保存します.
以上でfile.zipの抽出が完了しました.
おわり
以上より,パスワードの割れたWEPを使い,かつ暗号化されていない通信では簡単に通信内容を覗かれてしまうことがお分かりいただけたと思います.
毎度のことですが,実験は必ず自分の環境で行ってください.許可なく人の機材で実験すると犯罪になります.
この方法は例えばマルウェア感染の疑いがあるパソコンに触れることなく怪しい通信がないかなどを調べるのに役立つかもしれません.ただ,今どきWEPを使う人はいないだろうし,もしいるとすれば早急にやめるべきですが.
念のため,抽出したfile.zipのハッシュ値と,正規クライアントでダウンロードしたfile.zipのハッシュ値を比較しておきます.上が盗聴データから抽出したもの,下が正規にダウンロードしたものです.
MD5SUMが一致しているため全く同じファイルと言えます.もし一致しない場合は,パケットキャプチャの段階で取りこぼしている可能性が高いです.
さて,抽出したfile.zipをWindowsのexplorerで開いてみました.
アレ,空です.ハッシュが一致しているため途中でファイルが壊れたとは考えにくく,またファイルサイズが17キロバイトほどあるのに中身がないのは不審です.
ということで,次回はこのZIPファイルから何とかしてデータを取り出そうと思います.