ARPスプーフィングによる
中間者攻撃
Slank (すらんく)
アジェンダ
・ ARPスプーフィングを利用したMITM攻撃(中間者攻撃)
・ 攻撃検知について少しだけ
ARPの攻撃について話します
Address Resolution Protocol (アドレス解決プロトコル、略称:ARP、アープ)は、
イーサネット環境において、IPアドレスからそれに対応するMACアドレスを動的に
得るために用いられるプロトコル。RFC 826で定義され、
その後 RFC 5227、 RFC 5494 により内容のエンハンスが行われている。
TCP/IPにおいて、IPパケットを送受信するためには、
下位のデータリンク層のアドレスを取得する必要があり、
MACアドレスが必要な場合に ARP が用いられる。イーサネットの場合論理的なIPアドレスを
物理的なハードウェア・アドレスであるMACアドレスに変換する必要がある。
(引用:Wikipedia)
ARPスプーフィング
ARPスプーフィング(アープスプーフィング)とは、ARPプロトコルの応答を偽装することにより、
LAN上で通信機器のなりすましを行なう技法である。
とあるIPアドレス宛にパケットを送信したい場合、
まず「このIPアドレスに対応する通信機器はどれか?」という質問を記述したARP要求が
ブロードキャストで発信され、該当するノードがARP応答で「そのIPアドレスに対応するMACアドレスは私である」
とユニキャストで答える。これによりIPアドレスとMACアドレスの対応付けが実現し、
以降はそのMACアドレスを宛先とする通信が行なわれることとなる。
イーサネットは、この仕組みによって作成されたARPテーブル(アドレス対照表)を信じる事で成り立っているので、
このARPの応答を偽装すること により誤ったARPテーブルを覚え込ませてしまえば、
異なる通信機器へパケットを流す事が可能となる。
すなわち、機器のなりすましを行なうことができてし まい、
特にルーターになりすますとLANからWANへの通信をことごとく盗聴することができることになる。
一般に、LANに使うハブに単純なハブではなくスイッチ/ブリッジ機能を持つものを導入すれば
盗聴に対して強固となる事が言われるが、上記の手法を用いれば
スイッチド・ネットワークにおいてもその危険性は存在する。
(引用:Wikipedia)
ARP スプーフィングについて
ターゲット攻撃者
IP: 192.168.0.2
MAC: bb:bb:bb:*
IP: 192.168.0.3
MAC: cc:cc:cc:*
ARP Table (Before)
IP MAC
192.168.0.1 aa:aa:aa:*
ARP Table (After)
IP MAC
192.168.0.1 cc:cc:cc:*
改竄
operation ARP Reply
src hardware addr cc:cc:cc:*
src protocol addr 192.168.0.1
dst hardware addr bb:bb:bb:*
dst protocol addr 192.168.0.2
偽装ARP Reply
偽装ARPを送信
「192.168.0.1はcc:cc:cc:*ですよー」というメッセージを送信。
ターゲットは、ルータ(192.168.0.1)に送信するはずが、攻撃者の
コンピュータに通信をしてしまう。。。。
ルータ
IP: 192.168.0.1
MAC: aa:aa:aa:*
攻撃者
IP: 192.168.0.3
MAC: cc:cc:cc:*
ターゲット
IP: 192.168.0.2
MAC: bb:bb:bb:*
ルータ
IP: 192.168.0.1
MAC: aa:aa:aa:*
正常なパケットと異常なパケット
operation ARP Reply
src hardware addr cc:cc:cc:*
src protocol addr 192.168.0.3
dst hardware addr bb:bb:bb:*
dst protocol addr 192.168.0.2
正常なARP Reply パケット
operation ARP Reply
src hardware addr cc:cc:cc:*
src protocol addr 192.168.0.1
dst hardware addr bb:bb:bb:*
dst protocol addr 192.168.0.2
異常なARP Reply パケット
送信者hardwareアドレスと
Protocolアドレスが一致
送信者hardwareアドレスと
Protocolアドレスが不一致
このような送信元を偽装した
パケットを送って、
ターゲットのARPテーブルを
強制的に改竄させる
MITM攻撃(中間者攻撃)
暗号理論において、中間者攻撃 (ちゅうかんしゃこうげき、man-in-the-middle attack、MITM と略記されることもある)
またはバケツリレー攻撃(バケツリレーこうげき、bucket-brigade attack)は、能動的な盗聴の 方法である。中間者攻撃では、
攻撃者が犠牲者と独立した通信経路を確立し、犠牲者間のメッセージを中継し、
実際には全ての会話が攻撃者によって制御されて いるときに、
犠牲者にはプライベートな接続で直接対話していると思わせる。
攻撃者は2人の犠牲者の間で交わされている全てのメッセージを横取りし、
間に別 のメッセージを差し挟む。これは多くの状況で容易なものである。
(例えば、公開された無線アクセスポイントの所有者は、ユーザへの中間者攻撃を実行することが、本質的に可能である。)
(引用:Wikipedia)
インターネットインターネット
正常な通信異常な通信(中間者攻撃をされている)
ターゲット攻撃者
ターゲットとルータの
通信の中間に入っている
ターゲット
中間者攻撃について
ARPスプーフィング攻撃で、
ルータとターゲットの
ARPテーブルを改竄して、
通信に入り込んで、
通信内容を傍受、
改竄することができてしまう。
攻撃実験
実験環境
ターゲット windows 8.1
IP 192.168.179.10
MAC 5c:51:4f:*
攻撃者 Ubuntu gnome 14.04 LTS
IP 192.168.179.6
MAC a6:12:42:*
攻撃環境
攻撃コードはlibpgenを使用して作成。
ARPスプーフィング攻撃をルータとターゲットに行い、
それらの通信内容を盗聴するMITM攻撃(中間者攻撃)
を行う。
実験は自己責任で、からなず自分のテスト環境のみで
行いましょう。パブリックネットワークでこの実験をすると、
もちろん犯罪になります。。。
攻撃実験
インターネット
SW
ターゲット
ルータ
攻撃者
攻撃者の作業
準備
1 カーネルのip_forrwardを有効にする
2 ARPスプーフィング攻撃で、ルータとターゲットのARPテーブルを書き換える。
(作成した攻撃プログラムを使用する。)
MITM攻撃が成功したら
1 pcapファイルに通信内容が保存されているので、あとは煮るなり約なり
某パケットキャプチャに食べさせるなり。
2 sslstripなどを使えば、sslの通信も丸見えになるかも。。。
攻撃者の作業
● カーネルのip_forrwardを有効にする
攻撃者の作業
● ARPスプーフィング攻撃で、ルータとターゲットのARPテーブルを書き換える。
(作成した攻撃プログラムを使用する。)
これで攻撃が成功しているはずなので、あとは気長に待つ…..
ターゲットでの作業
● 普段どうりにネットサーフィンなどをしましょう。
今回は、解析が楽な画像検索を行います。
ターゲットでの作業
● slankdev.netにつないでみた
どの作業も、不自由なく行えているが……
攻撃者側では…
● 保存されているpcapファイルをwiresharkで開いて、http objectを見てみると…..
調べている画像がばれてしまう..
こんな画像程度ならいいけど、見られたくないものだったりしたら….
攻撃者側では…
● ディスプレイフィルタでDNSパケットに絞って、内容を見てみると…
DNSクエリの情報から、つないでいるサイトがばれてしまう。
この程度なら問題ないが、大事なログイン情報などまで筒抜けだったら…..
ARPスプーフィングを検知する方法
① 怪しい通信を発見する
IPアドレスとMACアドレスのリストをネットワーク管理者が一定時間ごとに調べ、
リストと異なるARPパケット(MACアドレスのみの変化)などをリストアップする。
また、ネットワーク管理者のコンピュータ自体が攻撃されることもあるので、
リストの変化も攻撃による可能性もある。
IP MAC
192.168.0.1 aa:aa:aa:*
192.168.0.2 bb:bb:bb:*
192.168.0.3 cc:cc:cc:*
192.168.0.4 dd:dd:dd:*
ある時刻でのIPアドレスとMACアドレスの対応表1
IP MAC
192.168.0.1 aa:aa:aa:*
192.168.0.2 cc:cc:cc:*
192.168.0.3 cc:cc:cc:*
192.168.0.4 dd:dd:dd:*
ある時刻でのIPアドレスとMACアドレスの対応表2
例2
二つのホストが同じMACアドレスに
なっているので、明らかにおかしい
例1
リストと違うペアのパケットが
流れていて、怪しい。。
ARPスプーフィングを検知する方法
② ①のパケットを解析して、攻撃者を特定する
リストアップされたパケットの改竄部分が攻撃者のアドレスとなるので、
そのアドレスのコンピュータを攻撃者と特定。
operation ARP Reply
src hardware addr cc:cc:cc:*
src protocol addr 192.168.0.1
dst hardware addr bb:bb:bb:*
dst protocol addr 192.168.0.2
異常なARP Reply パケット ARPスプーフィングによる中間者攻撃の場合
この部分が攻撃者のアドレスである可能性が高い
攻撃者のMACアドレスはcc:cc:cc:*の可能性が高い
このようにして、攻撃者を特定していくのだが、検知ミスなどや、
攻撃検知をかいくぐってくる攻撃もあるかもしれないので、安心はできない
まとめ:どのようにして攻撃検知をするか
① 攻撃ごとの特徴をつかみ、その通信を論理的にまとめたルールを作る。
② 定めたルールに引っかかる通信を解析して、攻撃者を割り出す。
③ 誤検知や検知できないものもあるので完璧ではない。(今後もっと調べていきます。)
実際に目だけで攻撃を探してみた
ARPスプーフィングのみを探すことにします。
ディスプレイフィルタでARPのみを絞ってみていると、、、
Wiresahrkさんが教えてくれている。。。??
なんか言ってる…..
実際に目だけで攻撃を探してみた
攻撃より前にパケットキャプチャを初めていれば、IPアドレスと、MACアドレスの対応リストと違う
パケットが流れていたら、教えてくれる!!(やはりwiresharkすごい!!)
攻撃後にキャプチャを始めても、別々のIPアドレスなのにMACアドレスが重複しているものがある。
まとめ
超頑張ってパケットを目で見れば、どんな攻撃でも、わかるかもしれない。
一つ一つの攻撃を理解するのには、プロトコルの知識が必要不可欠なので、勉強になる。
今後は、コンピュータに攻撃を検知させて、ネットワーク管理者に通知する、などについてもやってみようと思った。
Snortなど。
厨二心をくすぐられるので、面白かった。
実際に、この攻撃に対する厳密な防御法はまだ確立されていなく、いろいろなところで
攻撃が成功してしまうかもしれない。

ARPSpoofing攻撃によるMITM攻撃