wireshark でUSB監視

wireshark で USBメモりのデータの流れをチェックできます
ただし、条件つきですが
Linuxカーネルで
usbmon
が有効になっていることが条件です
backtrack5 SR1
ubuntu
のカーネルでは有効なので、問題ありません
やりかたは単純です
まず、USBメモりを Linux パソコンに指します
今回は、
ubuntu 11.10 64bit で行っています
そして、lsusb で確認します
Screenshot-2012-05-29 20:08:52
下の赤枠でかこってあるほうが
USBメモりを指した後です
デバイスが追加されています
次に wireshark を起動します
管理者権限がほしいので
sudo wireshark
で実行し、パスワードを入力します
警告などがでますが、きにせず起動します
起動後、USBをキャプチャすればOKです

パケットからUDIDを調べるには

パケットの中からUDIDが流れているかを調べるには
wireshark を起動して
リアルタイムパケットを取得し
Edit > Find Packet を選び
検索ダイアログが立ち上がるので、
string のところへラジオボタンをチェックして
Filter のところへ
UDID の一部、もしくは全部を入力
もし該当があれば緑色になり、該当しないなら
Filter の枠が赤くなります
Screenshot-2012-05-28 20:52:26
乗り換えアプリだと、
このUDIDがGETリクエストのパラメータに含まれることもあります

最近のマルウェア

現在のマルウェアの多くはプログラムの実行を除いて
web ページ閲覧時とか
USBメモりなどの外部記録媒体を接続した時に感染するものがほとんど
このとき、感染するプログラムは
ダウンローダーとよばれる小さいプログラム
このダウンローダーは
ウイルス本体やアップデートをネットワーク越しに取り込んで実行する
というもの
最近の例をだすと
スマホのアプリの自動アップデートにちかい動き
このような2段階攻撃になったのは
機能部分まで含んだプログラムだと
サイズが大きくて、アンチウイルスとかで見つかりやすい
そして
最新のマルウェアを仕込みやすいということ
そして、スマホに多かったマルウェアのように
最近のものは
自動更新機能とか
外部への連絡通信機能も持っている
よくある、アップデート攻撃もこれとにたような動作かもしれない
このような動きをしている場合
wireshark などで通信を取得すれば
怪しい動きなどの詳細データを得ることができるようだ

slammer Pcap をwireshark で読み込む

slammer のキャプチャファイルを読み込むには
sudo wireshark
でwireshark を起動して
ファイルを開きます
開く前の注意点として
アンチウイルスソフトを停止しておく必要があります
理由は、Pcap ファイルは
バイナリで攻撃コードを含むため
ウィルスとしてして隔離されてしまいます
wireshark は管理者権限で動かしますので
fire > open
でダイアログがでるので
ファイルシステム > home > ユーザ名 > ダウンロード >
slammer.pcap
で開きます

SQL slammer について

この SQL slammer は
2003 年に発生した Server または
MSDEに含まれるバッファオーバーフローの脆弱性をついて
感染するワーム
このワームは
UDP 1434 ポートを利用して感染を広げ
感染したPCも同じパケットをコピーして
ランダムなIPに攻撃を繰り返す
典型的感染パターンをもつ
ワームに感染したときの特徴
PCが大量の
UDPパケットを放出するので、
ネットワーク全体が過負荷になり通信不能になる
ハブのアクセスランプから
多量の通信が発生しているのは確認できるけど
感染PCを再起動すると、元に戻ってしまう
これは、このワームがメモり常駐型のため
再起動すると消滅するため
しかし、脆弱性がそのままだとまたそのうち感染してしまう
こういったタイプの感染の場合
再起動するとウイルスはいないため
ウイルススキャンしてもなにも発見できないということになってしまう
こんなときには wireshark でパケット解析をするとよいらしい

wireshark の通信サンプルファイル

Hacker Japan (ハッカー ジャパン) 2012年 05月号
特集で wireshark をつかってマルウェア解析というものがあったので、
実践してみました

まずは、サンプルを取得するため
http://wiki.wireshark.org/SampleCaptures
へアクセスし
slammer.pcap
をダウンロードします
かなり下のほうでわかりにくいので、
chrome を使っているなら
Alt + e
をおして
検索を選択、もしくは f をおすと、検索窓が
画面の右上にでるので、
これに
slam
と入力すれば
slmamer.pcap のところまで移動できます
Screenshot-2012-05-23 19:31:38
このサイトには
HTTP や POP などの基本的な通信パターンのほかにも
DNSへの Exploit 実行記録などもありますので、
さまざまな通信のログをみることができます

暗号キーを16進数で入力するときの参考サイト

wireshark で 無線LANのパケットを覗くには
設定をするときに ASCIIコードではなく16進数でキーを入力する必要があります
通常、1~Fということでそんなに悩まないのですが
暗号キーやパスフレーズになると、わかりにくいと思うので
変換したときの一覧が載っているサイトがあったので紹介です
他のワイヤレスネットワークでTrueMobile 1150シリーズを使う:DellTM TrueMobileTM 1150 シリーズ ユーザーズガイド
このように、大文字、小文字も含めてたくさんの入力変換が必要になるので
これを手打ちで調べていたら、かなりの時間をロスします
そのうち、ASCII から16進数に変換するスクリプトを作って置こうと思います

wireshark の表示時間の変更

wireshark のデフォルト設定では時間をみにくいので
設定を変更します
参考サイトは
WireSharkでタイムスタンプのフォーマットを変更する。
View >Time Display format >Time of day
で設定を変更します
初期設定は
Seconds Since Beginning of Capture 123.123456

Automatic (File Format Precision)
になっているので、これを
Date of Time of Day に変更します
これで、表示が見やすくなります
こちらが初期状態
Screenshot-2012-04-20 20:40:45
そして、こちらが変更後
Screenshot-2012-04-20 20:42:23
多少は見やすくなります

オプション画面でのフィルター設定

引き続き、wireshark 関連です
リアルタイムで通信データを監視するとき、不要な情報を
削ぎ、必要な情報のみをみるようにキャプチャーフィルターを設定します
設定方法は、最初に wiresharkを立ち上げたときに
Capture Option をクリックする方法
Screenshot-2012-04-18 20:23:27
または、メインツールバーの左から2番めにある
Show the CaotyreIotuibs ボタンをクリックする方法
Screenshot-2012-04-18 20:26:46
または、Capture > Options を実行するか
ショートカットキーで
Ctrl + k で実行します
起動したら設定するには
Capture Filter をクリックして設定します
Screenshot-2012-04-18 20:35:52
ただし、
ディスプレイフィルターとは違って
Filter string の右に
Exception ボタンがないので、そこまで細かく設定できません
Screenshot-2012-04-18 20:36:05
ちなみに、今回勉強に使った書籍
Hacker Japan (ハッカー ジャパン) 2012年 05月号
についていたサンプルデータは
この機能を使って
eth,addr == 08:00:27:46:2c:20
というフィルターをつけて
LANすべてのパケットから
ubuntu 11.10 の仮想マシンのパケットだけを集めたものだそうです
これを活用すれば
Android とか iPhone のマルウェアが入っても通信内容を解析して
発見できるようになるかもしれません
ちなみに、hacker japan のwebサイトに
今回の特集のデータがダウンロードできるので
こちらも合わせてみるとより理解しやすくなります

無線LANのキャプチャーデータを wireshark で見るには

wireshark をそのままつかっても
無線LANの通信をみることはできません
このため、暗号キーになる
WEP key
WPA-PSKパスフレーズ

wiresharkへ設定します
設定するには
Edit > Preference > Protocol > IEEE 802.11
を開き
Enable decryption にチェックをいれ
key#1 のところに暗号キーを
16進数で入力します
そのまま入力してもダメなので注意
Screenshot-2012-04-18 20:13:13