a3VtYQ2e9uA1のブログ

特記事項はありません

漂うパケットを読む

スニッフィング(盗聴)したパケットからZIPファイルを抽出する

またWEPの実験をしたので書きます.

これはサイバーセキュリティの知識を深めるための実験であり,犯罪行為を唆すものではありません.実験する際は必ず自分が管理する機器を用いてください.自分のものではないネットワークに対しこのようなことを行うのは犯罪です.

実験環境

  • 無線LANルータ(アクセスポイント)
    • SSIDWLAN_ROUTER_2.4G
    • 暗号化はWEP
    • HTTPサーバと有線接続している
    • 正規クライアントと無線接続している
  • HTTPサーバ
    • IPアドレス192.168.1.101
    • OSはUbuntu18.04,Apache2が走っている
    • ウェブブラウザでアクセスすると簡単なホームページが開く
  • 正規クライアント
  • 盗聴用パソコン

今回は,攻撃者は既にWEPキーを入手しているという状況で実験します.
下に簡単な図を示しておきます.

f:id:a3VtYQ2e9uA1:20200316215809p:plain
実験環境の概略図

手順

通信を盗聴する

例によって例のごとくパケットキャプチャを実行しておきます.今回はcapture-01.capに保存します.
キャプチャを行っている最中に正規クライアントはHTTPサーバにアクセスしZIPファイルをダウンロードします.正規クライアントでウェブブラウザ(実験ではFireFox)を立ち上げ,URLの欄にサーバのIPアドレス192.168.1.101を入力,リンクからZIPファイルをダウンロードします.

f:id:a3VtYQ2e9uA1:20200316215844p:plain
正規クライアントにて192.168.1.101からfile.zipをダウンロードする

ダウンロードが終了したら,盗聴用パソコンでのパケットキャプチャは止めて構いません.

キャプチャファイルを復号化する

キャプチャファイルcapture-01.capWireSharkで開くと,プロトコルは全て802.11で有意な情報は読み取れないと思います.今回,攻撃者は既にWEPキーを知っているという状況を想定しているので,キーを使って復号化を試みます.

以下は日本語環境での手順を示したものです.英語やその他の言語の場合は適宜読み替えてください.

WireShark編集メニューから設定を選び,出てきたウィンドウのProtocolsからIEEE 802.11をクリックします.Enable decryptionチェックボックスをオンにし,下のEdit...ボタンを押します.

f:id:a3VtYQ2e9uA1:20200316220108p:plain
WireSharkの設定.ProtocolsからIEEE 802.11を選ぶ

WEP and WPA Decryption Keysのウィンドウが出てくるので,まず左下の+ボタンを押し,続いてKey typeをwepに,KeyにはWEPキーをASCIIの16進数にしたものを入力し,OKを押します.この実験の場合,WEPキーはpwordのため,それを16進数にした70776f7264を入力します.

f:id:a3VtYQ2e9uA1:20200316220155p:plain
復号化キーの設定

以上を完了すると,802.11だけでなくHTTPやTCPが見えるようになると思います.

TCPストリームからデータを抽出する

復号化したパケットを見ていると,クライアントからサーバにGET /file.zip HTTP/1.1しているHTTPパケットが見つかりました.
そのパケットを選択し,右クリック→追跡→TCPストリームを選択します.

f:id:a3VtYQ2e9uA1:20200316220304p:plain
TCPストリームを追跡する

表示されたウィンドウを見ていくと,先ほどのGET /file.zip HTTP/1.1が見つかりました(下図緑枠).さらにその下にサーバからのHTTP/1.1 200 OKから始まるヘッダがあり,その下にZIPファイルのバイナリが見えます.ZIPファイルのバイナリはContent-Type: application/zip<改行><改行>の後,PK..から始まるようです.

f:id:a3VtYQ2e9uA1:20200316220451p:plain
TCPペイロード

Show and save data asRaw(無加工)形式にした後,Save as...を押して適当な場所に保存します.実験ではCドライブ直下にfile.zipとして保存しました.

データからZIPファイルを抜き出す

保存したファイルをバイナリエディタで開きます.
先ほど確認したZIPファイルの先頭であるPK..の直前までを削除します.

f:id:a3VtYQ2e9uA1:20200316220601p:plain
ZIPバイナリ以外の部分を選択し削除する

ZIPバイナリの後にもゴミが付いているようならそれも削除し,上書き保存します.
以上でfile.zipの抽出が完了しました.

おわり

以上より,パスワードの割れたWEPを使い,かつ暗号化されていない通信では簡単に通信内容を覗かれてしまうことがお分かりいただけたと思います.
毎度のことですが,実験は必ず自分の環境で行ってください.許可なく人の機材で実験すると犯罪になります.
この方法は例えばマルウェア感染の疑いがあるパソコンに触れることなく怪しい通信がないかなどを調べるのに役立つかもしれません.ただ,今どきWEPを使う人はいないだろうし,もしいるとすれば早急にやめるべきですが.

念のため,抽出したfile.zipのハッシュ値と,正規クライアントでダウンロードしたfile.zipのハッシュ値を比較しておきます.上が盗聴データから抽出したもの,下が正規にダウンロードしたものです.

f:id:a3VtYQ2e9uA1:20200316220627p:plain
ハッシュ値の比較.一致している

MD5SUMが一致しているため全く同じファイルと言えます.もし一致しない場合は,パケットキャプチャの段階で取りこぼしている可能性が高いです.

さて,抽出したfile.zipをWindowsexplorerで開いてみました.

f:id:a3VtYQ2e9uA1:20200316220705p:plain
なぜか中身が空っぽなZIP

アレ,空です.ハッシュが一致しているため途中でファイルが壊れたとは考えにくく,またファイルサイズが17キロバイトほどあるのに中身がないのは不審です.

ということで,次回はこのZIPファイルから何とかしてデータを取り出そうと思います.