書籍「実践パケット解析」を読んでいて気になっていたARPスプーフィングによるパケットキャプチャと、DNSキャッシュポイゾニングをcain & abelでやってみた。
他人の通信の盗聴、なりすまし、乗っ取りは犯罪に繋がります。あくまでも他に影響を及ぼさない自身の環境でのみ行ってください。
ARPスプーフィング
ARPスプーフィングとは
Wikipediaによると
ARPスプーフィング(アープスプーフィング)とは、ARPプロトコルの応答を偽装することにより、LAN上で通信機器のなりすましを行なう技法である。
疑問に感じたから、記事を書きながらARPスプーフィングとARPキャッシュポイゾニングの違いを調べてみた。結論から言えば、ARPスプーフィングとARPキャッシュポイゾニングは同じといえるとのこと。詳しいことはCiscoのサイトを読んでみるとわかる。
ダイナミック ARP インスペクション(DAI) – Cisco Systems
参考資料
Cain & abelをダウンロード
ブラウザやアンチウイルスソフトにマルウェアとして検知される可能性があるので注意する。(検知されたので例外に追加した。)
http://www.oxid.it/cain.html
ダウンロード後は念のためハッシュ(衝突問題のあるsha1はやめてmd5)を取って改ざんがないか確認する。
起動・設定
起動は「管理者として実行」からする。
ウィンドウ上部の左から2つ目のアイコンをクリックしてを選択してSniffingを有効にする。初めての場合は使用するNICを設定する。(アイコンがヘコめばOK)
この時、以下のエラーが出る場合はエラーメッセージに従って以下のコマンド a を実行する。
a. ジャンボフレーム機能を無効化: netsh int ip set global taskoffload=disable
b. ジャンボフレーム機能を有効化: netsh int ip set global taskoffload=enable
ウィンドウ上部の左から8つ目の+アイコンをクリックしてホストをスキャンする。All hosts…を選択してもよいが、事前にネットワークの範囲がわかっているならRangeで選択したほうが早い。選択してOK を押す。
ウィンドウ左下の黄色アイコンのARPタブをクリックする。上段の表をクリックしてウィンドウ上部にあるメニューバーの+アイコン(左から8番目)をクリックする。
左側ではパケットをキャプチャ(盗聴)する対象を、右側ではゲートウェイ(多くの場合はルータ)を選択する。今回は以下の構成で実験した。この場合は左側で192.168.0.8
を右側で192.168.0.1
を選択する。
- キャプチャ(盗聴)対象: 192.168.0.8
- デフォルトゲートウェイ: 192.168.0.1
- キャプチャデバイス(Cain & Abel): 192.168.0.11
実験
実際のパケットを確認する為に、開始する前にWiresharkを立ち上げておいた。
そして、Cain & Abelの左から3つ目のアイコンをクリックして開始する。
実行中は次のようにパケットについて随時、記録されていく。
キャプチャ対象マシン(192.168.0.8
)でブラウザを立ち上げてhttps://yahoo.co.jp/
へアクセスしてみる。すると通常、キャプチャデバイス(192.168.0.11
)からは見えないはずのパケットがキャプチャ出来ている。なお、yahoo.co.jpのIPアドレス 182.22.25.124
は正規のものである。
DNSスプーフィング
DNSスプーフィングとは
Wikipedia によると
DNSスプーフィング(DNS Spoofing)は、DNSに対する攻撃手法の一つ。DNSは、人間がインターネット上のアドレスとして用いるURL(FQDN)をコンピュータがインターネット上のアドレスとして用いる「IPアドレス」と対応づける(名前解決)ためのサーバであるが、DNSスプーフィングは不正な方法でこの対応関係を書き換えるなどして、DNSへのURLの問い合わせ(クエリ)に対し、偽の情報を答えさせる一連の攻撃手法の総称である[1][2]。DNSスプーフィングは、被害者を偽のサイトに誘導するなどの目的で行われ、偽のサイトでファーミングなどのさらなる攻撃を仕掛けるための下準備となる。
DNSスプーフィングの代表的な手法としてDNSキャッシュポイズニング(DNS cache poisoning)があるが、他にも攻撃者がDNSを乗っ取る方法[2]などがある。日本語の定着した訳語はないが、シマンテックはDNS詐称と訳しており[3]、BUFFALOは自社製品の脆弱性をDNS偽装と訳している[4]。
Cain&AbelでやっているDNSスプーフィングとは、DNSキャッシュポイゾニングである。このソフトウェアではARPスプーフィングと組み合わせることで実現しているらしい。
DNSキャッシュポイゾニング ∈ DNSスプーフィング
確認
まず、現状のkoyama.me
の正引き(DNS)を確認してみる。
するとIPアドレス183.181.0.12
が帰ってくる。もちろん、どの端末からでも変わらない。
設定
ARPスプーフィングの設定をしたままARPタブをクリックする。左メニューにある「ARP-DNS」をクリックしてメニューバーの+アイコンをクリックする。表示されるウィンドウにホスト名と対応させるIPアドレスを入力してOKを押す。
設定が追加されると以下の表にレコードが表示される。
実験
まず、キャプチャ対象のマシンでkoyama.me
を正引きをしてみる。
すると、設定前は183.181.0.12
だったのが182.22.59.229
になっていることが確認できる。
このことからDNSスプーフィングが出来ていることが分かる。Wiresharkでパケットをキャプチャしてみても成功していることが分かる。
同様にしてyahoo.co.jp
を183.181.0.12
に変更したことを確認する。キャプチャ対象マシン(192.168.0.8
)でyahoo.co.jp
を正引きしてみると183.181.0.12
になっていることが分かる。
試しにWebブラウザからhttp://yahoo.co.jp/
にアクセスしてみると正規のページが表示されずhttp://183.181.0.12/
に飛ばされていることが分かる。
DNSスプーフィングとARPスプーフィングを実際に手を動かして確かめられてよかった。
次はPythonで実際にコードを書いて実験してみたい。
コメントを残す