DHCPの攻撃と防御

機器がネットワークに接続される際には,DHCPによりDHCPサーバからIPアドレスが割り当てられることが多い.
よく使用されるプロトコルではあるが脆弱な点も多いため,勉強も兼ねてここにまとめておく.

DHCPによるIPアドレス取得の流れ

DHCPによるIPアドレスの割当ては以下のような動作で行われる.

1.DHCP discover

クライアントはdiscoverメッセージをブロードキャストすることにより,DHCPサーバの検索を行う.

2.DHCP offer

DHCPサーバはdiscoverメッセージを受信し,クライアントに対して利用可能なIPアドレスの提示を,offerメッセージとして送信する.

3.DHCP request

クライアントはofferメッセージを受信し,利用を決定したIPアドレスをrequestメッセージとして送信する.

4.DHCP acknowledgement

DHCPサーバはrequestメッセージを受信し,クライアントに対してリース期間などをacknowledgementメッセージとして送信する.

 

DHCPによるIPアドレスの開放

1.DHCP releasing

DHCPクライアントがIPアドレスを返却する際には,DHCPサーバに対してreleaseメッセージを送信する.

2.リース期限切れ

リース期限が切れると,DHCPサーバはIPアドレスを再利用可能なものとして登録を行う.なお,リース期間は48時間のものが多い.

 

DHCPに対する攻撃

DHCPでは不正な端末による攻撃が行われる可能性がある.
Wikipediaによると,DHCPを利用した攻撃は以下の3つに分類される.

1.不正なDHCPサーバがクライアントに誤った情報を提示する
2.無許可のクライアントがリソースにアクセスする
3.悪意のあるDHCPクライアントからのリソース枯渇攻撃

引用元:Wikipedia – Dynamic Host Configuration Protocol

LANの脅威と対策についてはアライドテレシスの『LAN環境での不正アクセス対策』が詳しい.
 

不正なDHCPサーバ

Rogue DHCP

不正なDHCPサーバをRogue DHCPと呼ぶ.
不正なDHCPサーバにより正規のものではないIPアドレス(別のネットワークアドレス)が設定された場合,クライアントはネットワーク上の他の端末に接続することができなくなる.また,DHCPはIPアドレスだけでなくDNSサーバやデフォルトゲートウェイの情報も設定する.そのため,不正なDNSサーバによるリダイレクトや,不正なデフォルトゲートウェイによる中間者攻撃が行われる場合がある.
対策としては,パケットフィルタリングや,DHCPスヌーピングがある.
 

野良DHCPサーバ

不正なDHCPサーバには悪意のないものも存在する.ITに関する知識が乏しい人が誤って設置した DHCPサーバ機能がある機器は「野良DHCPサーバ」とも呼ばれ,稀に問題となっている.先述したDHCPの動作の流れのうち,offerメッセージは先着順で採用される.そのため,野良DHCPサーバが設置されると正しくないIPアドレスの設定が行われ,ネットワークに接続できないという事態が発生する.これに関する詳しい説明はASCIIによる『DHCPサーバーを勝手に立てるとどうなるの?』に記載されている.なお,記事の結論としては「高速なDHCPサーバを使用すること」となっているが,現在ではDHCPスヌーピングを使うこともできる.
 

不正なDHCPクライアント

DHCP Starvation Attack

DHCP exhaustion attackとも呼ばれる.
正規のクライアントになりすまし,MACアドレスを適当なものに変更しつつDHCPサーバに対してIPアドレスを要求することで,アドレスプールを枯渇させる.
 

DHCP Release

正規のクライアントになりすまし,DHCPのreleaseメッセージをDHCPサーバに対して送信する.この攻撃によって,DHCPサーバのデータベースと実際のIPアドレスの使用状況の一貫性が崩れる.なお,正規のクライアントはIPアドレスを使用し続けることは可能であるため,DHCPサーバによるIPアドレスの再割当てによりIPアドレスの重複が起きない限りは通信を行うことができる.
 

攻撃の実装

DHCPig

DHCP Starvation Attackを行うツール.
Kali Linuxの解説ページに使い方などが記載されている.
 

Yersinia

Yersiniaは様々なネットワークプロトコルの弱点を利用するように設計されたネットワークツールである.
ソースコードはGitHubに置いてあり,Yersiniaを用いたDHCPへの攻撃は『DHCP Penetration Testing』に記載されている.
 

その他

検索するとその他いろいろ出てくる.
 

DHCPにおける防御

MACアドレスによる制限

L2スイッチにMACアドレスを登録しフィルタリングを行うことや,DHCPサーバでMACアドレスに対してIPアドレスを固定割当で払い出し自動割当は無効にするという方法がある.しかし,あらかじめMACアドレスを登録する必要があるため,公衆の場所などでは適用することができない.また,ポートセキュリティ機能により,スイッチにMACアドレスの学習上限を設けることもできる.
 

パケットフィルタリング

DHCPではクライアント側のポート番号が68,サーバ側のポート番号が67で通信が行われる.そのため,パケットフィルタリングにより正規のDHCPサーバ以外からのoffer,acknowledgementメッセージを遮断することで,不正なDHCPサーバを防ぐことができる.
 

DHCPスヌーピング

DHCPスヌーピングはスイッチのポートをTrustedとUntrustedに分け,DHCPサーバから各スイッチまでの信頼できるポートのみをtrustedに設定する.Untrustedに設定されたポートからoffer,acknowledgementメッセージを遮断することで,不正なDHCPサーバを防ぐことができる.
詳しくは ネットワークエンジニアとして の『DHCP Snooping』に記載されている.
また,Ciscoのコンフィグレーションガイドに実際の設定方法が記載されている.
 

ポート当たりのリース制限

インタフェース当たりのリース数を制限することによって,1つのインタフェースから大量のIPアドレスを要求された場合にも被害を軽減することができる.
Ciscoのコンフィグレーションガイドに詳しい設定方法が記載されている.