arpspoofで同セグメント上のパケットを盗聴

スタバなどのフリーwifiまたは、パスワードが脆弱なwifi環境から暗号化されていない認証を通るのは危険という話。

arp-scanやnmapでネットワークの構成を把握する

ARPテーブルを改ざん

TCP/IPにおいて通信するためには宛先MACアドレスが必要になる。その際にARPテーブルを参照するが、ARPテーブルに宛先MACアドレスが無い場合、ARPリクエストをブロードキャストで送信する。ARPリクエストを受け取った対象のIPアドレスが設定されている機器は、ARPリプライを返す仕様になっている。

arpspoofによって改ざんしたARPリプライを送信することでARPテーブルは簡単に改ざん可能であり、デフォルトゲートウェイとの間に割り込んでパケットを盗聴することができる。

詳細はこちらが大変参考になります。

https://netwiz.jp/arp-spoofing/

IPフォワードを有効化する

# sysctl -w net.ipv4.ip_forward=1

arpspoofで改ざんしたARPリプライを送信する。ゲートウェイ:192.168.1.1、ターゲット:192.168.1.110

# arpspoof -t ens33 -t 192.168.1.1 -r 192.168.1.110

別のシェルを立ち上げ、tcpdumpでパケットをcapture.pcapファイルにキャプチャする。

# tcpdump -i ens33 -w capture.pcap

試しに何かログインしてみる

攻撃者がキャプチャ中にターゲットPC:192.168.1.110から色々ログインしてみる。

WordPressにログインしてみる。

Basic認証にログインしてみる。

FTPにログインしてみる。

Wiresharkで見てみる

キャプチャしたファイルは後でじっくりWiresharkで見ることができる。

WordPressのIDとパスワードを見る。

WordPressはwp-login.phpにPOSTでIDとパスワードを送信していることから次のクエリで絞り込める。wp-login.phpの名前を変更していたとしてもキャプチャされてしまっては時間稼ぎでしかない。

ip.src == 192.168.1.110 and http.request.uri contains "/wp-login.php" and http.request.method == POST

対策:httpsにするコストが掛けられないのであれば、wp-login.phpにDigest認証を掛け、WordPressアカウント以上に強力なパスワードを設定する。(wp-cronが効かなくなるかも?)
ブルートフォースアタックによるログイン失敗ログの量が減るメリットもある。

Basic認証のIDとパスワードを見る。

Basic認証は平文でIDとパスワードをやり取りしているためこのように見えてしまう。

ip.src == 192.168.1.110 and http.request.method == GET

対策:Digest認証に変更する。

FTPのIDとパスワードを見る。

FTPもやはり平文でやり取りしているためこのように見えてしまう。

ip.src == 192.168.1.110 and ftp

対策:FTPsやSFTPなど暗号化された仕組みを使うのが一番だが、使用できないのであればvpnやsshのポート転送などと併用して信頼できるネットワークから接続する。

ARPスプーフィングされているか知るためには

攻撃を受けるとデフォルトゲートウェイのMACアドレスが変わる。tracertをするとデフォルトゲートウェイよりも手前に知らないアドレスが割り込まれている事が分かる。

ARPの仕様を突いた攻撃のため対策は難しいが、信頼できないwifiやLANは接続しないことと、暗号化されたプロトコルを使用することで傍受されても問題ないようにすることが大切。信頼できないネットワークを使用せざるを得ない場合はvpnやsshのポートフォワーディング等で信頼できるネットワークから利用する。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA