手元にあったGR-PEACHで簡単なDHCP Starvation Attackが行えるかどうか実験を行った.
DHCPに関する簡単な解説は前回の記事を参照.
ソースコード
GR-PEACHは複数の開発環境が使用できるが,今回はMbedのオンラインコンパイラを使用した.
DHCP Starvation Attackでは (1)MACアドレスを変更しつつ (2)DHCPでIPアドレスを取得 することが必要となる.そのような動作を行いつつ,USBのシリアル通信でIPアドレスの取得状況を表示するコードを作成した.
ソースコードを直接貼り付けるか迷ったが,ジョークサイトのリンクを貼っただけで補導やら書類送検やらされる時代なので,概要のみ示しておく.
MACアドレスの変更はmbed_mac_address関数を作成し,rand関数により生成した乱数を入れることにより実装した.また,IPアドレスの取得に関してはローカル関数内でEthernetInterface型の変数を宣言しconnectを行うことで行った.ローカル関数の終了に伴いEthernetInterface型の変数は開放される.あとはこのローカル関数をmain関数内の無限ループで実行する.
全部で33行のコードとなった.
ネットワーク構成
今回の実験ではRaspberry PiにDHCPサーバ(ISC DHCP)をインストールし,GR-PEACHで攻撃を行う.その状況を監視用PCで監視し,アドレスプールが枯渇した後テスト用PCを接続する.
なお,DHCPサーバは固定IPアドレスで192.168.1.1,監視用PCはDHCPの固定割当で192.168.1.2とする.DHCPサーバは192.168.1.3から192.168.1.254を動的に割り当てる.
以下にネットワークの構成を示す.
DHCPの設定
DHCPサーバのインストール
Raspberry PiにDHCPサーバをインストールする.
sudo apt-get install isc-dhcp-server
/etc/network/interfaces
固定IPでDHCPサーバ自身のIPアドレスを192.168.1.1/24として設定する.
/etc/default/isc-dhcp-server
IPv4で使用するインタフェースをeth0に設定する.
/etc/dhcp/dhcpd.conf
192.168.1.3から192.168.1.254の範囲を割り当てる設定をする.Ciscoの製品ではデフォルトのリース期間は1日なので,リース期間は1日,最大リース期間は2日に設定した.また,監視用PCに対応するMACアドレスに対し192.168.1.2を割り当てる.
実験結果
gr.log
/var/lib/dhcp/dhcp.leases
テスト用PCを接続した結果
dhcpd.leasesが192.168.1.254まで割り当てられていること確認した後,テスト用PCを接続した.その結果,DHCPサーバからIPアドレスの付与は行われず,正常に通信が行えないことを確認した.
考察
有効性
監視用PCが正常に通信できなかったため,攻撃は有効であると考える.
速度
dhcpd.leasesより,192.168.1.3の取得日時は22:59:10,192.168.1.254の取得日時は23:14:14である.つまり,252のIPアドレスを15分4秒(904秒)で枯渇させたことがわかる.
また,比較としてKali Linux上でDHCPigによる枯渇攻撃の時間を計測した.機器はThinkPad Edge 14,CPUはCeleron P4600(2GHz)である.DHCPigはPython2系で動作し,scapyは2.3.3で動作する.
pip install scapy==2.3.3 time dhcpig eth0
として実行したところ,
real 2m19.251s user 0m6.613s sys 0m0.863s
となり,結果は139.251秒となった.
その後ESP-WROOM-02でGR-PEACHとほぼ同じ内容のプログラムを記述した.ネットワーク構成を変更し,スイッチの代わりにDHCPサーバ機能をOFFにした無線LANルータを接続した上で,Wi-Fi経由による実験を行った.その結果,枯渇には30分5秒(=1805秒)かかることがわかった.
費用
攻撃の実現方法としては専用のハードウェアの作成と,Linux上でDHCPigを実行する方法との2通りがある.
専用のハードウェアとして今回使用したGR-PEACHは1万円程度である.安く済ませるのであればEthernetモジュールにSPIを話せる適当なマイコンをつけることで,コードを書き回路を作る必要はあるが,1千円程度にできるのではないかと考える.無線環境であればESP-WROOM-02が400円程度なので,それを使用することもできるはず.
安価にLinuxを動作させる場合,RaspberryPi3B+が5千円である.さらに安く済ませるのであればRPi ZeroにUSB-Ethernet変換器をつけることでおそらく3千円程度になるのではないかと考える.無線環境であればRPiZeroWを使用することもできる.
価格性能比
今回使用した機器についてまとめると以下の表になる.性能は1秒あたりに処理できるIPアドレスの数,価格性能比は性能/価格×1000とした.なお,GR-PEACH(full)とESP-WROOM-02の価格は秋月電子を参考にし,Thinkpadは以前Amazonで中古で購入した際の価格とした.
機器名 | 価格[円] | 処理時間[s] | 性能 | 価格性能比 |
GR-PEACH | 9690 | 904 | 0.279 | 0.029 |
Thinkpad Edge 14 | 8800 | 139.251 | 1.810 | 0.206 |
ESP-WROOM-02 | 400 | 1805 | 0.140 | 0.349 |
ESP-WROOM-02が最も効率が良いらしい.
いずれにしろ,現状では安く手軽に行うことができるため,対策が必要となる.
対策
根本的な対策としてはスイッチのポート当たりのMACアドレスの学習制限やリース制限などがある.
被害の軽減にはリース期間を短くすることやアドレス空間の小分けなどがある.
結論
簡単にDHCP Starvation Attackを行うハードウェアをつくることができることを確認した.また,DHCPigにより高速に攻撃を行うことも確認した.よって,手軽に攻撃が行えることがわかった.
そのため,今後対策は必要になる.
対策としてはスイッチのポート当たりのMACアドレスの学習制限やリース制限がある.また,リース期間の短縮やアドレス空間の小分けにより被害の軽減が見込める.