はじめに
「ハッキングラボのつくりかた」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段階にすると、それを回避できる。
- ターゲットの端末Aに対して、ARPスプーフィングして、ルーターに届くべきパケットを攻撃端末KaliLinuxに届くようにする。
- ルーターに対してARPスプーフィングして、ターゲットの端末Aに届くべきパケットを攻撃端末KaliLinuxに届くようにする。
- 攻撃端末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のネットワーク環境を、以下の条件で、すでに設定してある。
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
nameserver 10.0.3.3
しかし、この設定のままで、VirtualBox側でアダプタ1,2をオフにしたり、アダプタ1に「ブリッジアダプター」を割り当てても、ネットワークには通じない。
解決法
設定ファイル"/etc/network/interfaces"に"gateway 192.168.1.1"を追記する。
(略)
最後に追記する
gateway 192.168.1.1
次に、nameserverが10.0.3.3を指定しているから、設定ファイル"/etc/resolv.conf"を別の任意のDNSのアドレスに書き換える。この設定の変更は、Kaliを再起動したらデフォルトに戻ることに注意。
GoogleのDNSサービス8.8.8.8に指定する。
#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を「ブリッジアダプター」に設定して、「プロミスキャス・モード」を「全て許可」にする。
- kaliLinuxのIPアドレスとルータ、インターネットへの接続を確認する。
ip adress
ping -c 3 192.168.1.1
ping -c 3 8.8.8.8
2 . ターゲットWindows10のARPテーブルを確認する。
powershellかコマンドプロンプトをたちあげて、次のコマンドを実行する。
arp -a
3 . KaliLinuxのMACアドレスとIPアドレスの確認、route -n
でルーター(ゲートウェイ)のIPアドレスも確認。
ip addr show eth2
route -n
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のものである。
今度は、ルーターに対して偽の情報を送る。KaliLinuxで別に端末を起動し、次のコマンドを実行する。
sudo arpspoof -i eth2 -t 192.168.1.1 192.168.1.17
-tオプションの、ターゲットのIPアドレスと書き換えたいIPアドレスを先ほどと逆にする。
arpspoofコマンドは、Ctrl+Cを押下して終了。終了時には、正常なARPレスポンスが送られるので、Windows10を確認すると、正常なMACアドレスに戻っている。
おわりに
ネットワークの設定に手間取りました・・・。
次回は、中間者攻撃のフレームワークMITMfの導入、実験に挑戦しようと思っています。
ですが、このMITMf、さまざまなネット情報や私自身がいままで挑戦した経験にだと、新しいKaliLinux2022.1上で(というより、KaliLinux2018.x以降で)使用することが、難しい状態です(更新されていないため)。また、MITMfの次に同書で紹介されているBeEFを使った攻撃も、MITMfがないと使用できないのです。
うまくMITMf,BeEfが導入できない場合、この2つは先延ばしにして、無線LANのハッキングの実験を行います。ご了承ください。
「ハッキング・ラボのつくりかた」(IPUSIRON)
「図解でわかるネットワークのすべて」(小泉修)