ARPスプーフィング
ARPスプーフィング(アープスプーフィング)、ARPキャッシュ・ポイズニングとは、ARPプロトコルの応答を偽装することにより、LAN上で通信機器のなりすましを行う技法である。 一般的に、攻撃者が攻撃者のIPアドレスを他のホストのIPアドレスに偽装することによって、偽装したホストに向かう通信は攻撃者に送信されてしまう。
ARPスプーフィングをすることによって、攻撃者はネットワークの通信に割りこみ、通信を改ざんし、全ての通信を停止することができる。 この攻撃は、DoS攻撃や中間者攻撃、セッションハイジャックなど次に行う攻撃の布石としても使われる[1]。
この攻撃はARPを使用しているネットワーク内でのみ使用できる。すなわち、攻撃者はローカルネットワークに直接アクセスする必要がある[2]。
日本国内でARPスプーフィングによって許可なく他人の通信を盗聴する行為は、不正アクセス禁止法によって禁じられており、刑事罰を受ける可能性がある[3]。
概要
[編集]ARPとは、イーサネットにおいて、既知のIPアドレスから未知のMACアドレスを得るためのプロトコルである。
とあるIPアドレス宛にパケットを送信したい場合、まず「このIPアドレスに対応する通信機器はどれか?」という質問を記述したARP要求がブロードキャストで発信され、該当するノードがARP応答で「そのIPアドレスに対応するMACアドレスは私である」とユニキャストで答える。ARPはステートレス・プロトコルである。ARP要求とARP応答の2回の通信によりIPアドレスとMACアドレスの対応付けが実現し、以降はそのMACアドレスを宛先とする通信が行なわれる[2]。
イーサネットのネットワークは、この仕組みによって作成されたARPテーブル(アドレス対照表)を信じる事で成り立っている。ARPの応答を偽装することにより、ネットワーク内のホストのARPテーブル(アドレス対照表)を偽のARPテーブルに上書きできる。ARPには認証がないため、プロトコル内で偽のARPテーブルを検知する手段が存在しない。すなわち、機器のなりすましができてしまい、特にルーターになりすますとLANからWANへの通信をことごとく盗聴することができることになる。 この仕様はARPの脆弱性であり、攻撃者はこの脆弱性を悪用してARPスプーフィングを行う[1][2][4]。
一般に、LANに使うハブに、単純なハブではなくスイッチ/ブリッジ機能を持つものを導入すれば、盗聴に対して強固となると言われているが、上記の手法を用いれば、スイッチド・ネットワークにおいてもその危険性は存在する。
攻撃の機構
[編集]ARPスプーフィングの原理は、ARPのプロトコルに認証がないことを悪用し、なりすましたARPのメッセージをローカルネットワークへ送信することにある。ARPスプーフィングは、ローカルネットワークに直接接続できる端末から攻撃を行う[5]。 攻撃者はルーターや他のホストになりすましをして通信するため、被害者は攻撃者がなりすましをしてるとは気づかずに通信する。
一般的に、攻撃のゴールは、攻撃者のMACアドレスと被害者のIPアドレスを関連づけることである。その結果、被害者への通信は全て攻撃者に送信される。 攻撃者は被害者の通信を傍受し、攻撃の発覚を避けるために本来の通信先へ転送する。中間者攻撃により通信の内容を改ざんし、DoS攻撃により通信の一部または全てを遮断することができる。
カフェラテ攻撃
[編集]ARPスプーフィングの中には、Wi-Fiを経由して攻撃するものも存在する。 カフェラテ攻撃は、Wi-Fiに接続する対象に攻撃する。
攻撃者はWi-Fiに接続し、ARPスプーフィングを行う。対象からの通信は、Airodump-ngなどのLinuxのハッキングツールで対象とのトンネルを作成して傍受する。最後に、Aircrack-ngなどのハッキングツールで対象のWi-FiのWEP鍵を特定し、対象のWi-Fi通信を直接傍受する[6]。
攻撃の名前は、カフェでドリンクを待つ時間で攻撃できてしまうことに由来する。
対処法
[編集]静的ARPエントリー
[編集]最もシンプルな対処法は、リード・オンリーの静的なARPキャッシュを使用することである。IPアドレスとMACアドレスの静的な対応表があれば、ホストはARP要求を送信する必要がない[7]。この方法はARPスプーフィングに対するセキュリティは強くなるが、メンテナンスの労力が増える。ネットワーク内に n 台のホストが存在する場合、n 台のホストに n-1 個のエントリーが必要になるため、合計で n2-n のエントリーが必要になる。
対策ソフトウェアの使用
[編集]ARPスプーフィングを検知するソフトウェアは、ARPの応答を相互にチェックする。ARPの応答の異常を検知した場合、ARPをブロックする。この方法はDHCPサーバーで使用できるため、動的IPアドレスと静的IPアドレスのどちらも検知することができる。個人のホストでも運用でき、スイッチや他のネットワーク機器も使用できる。一つのMACアドレスに複数のIPアドレスが紐づけられた場合にARPスプーフィングを検出するが、正しく使用しても一つのMACアドレスに複数のIPアドレスが紐づけられることはある[8]。
AntiARP[9] は、Windowsのカーネルレベルでスプーフィングを防御する。KVMなどの仮想化された環境で、同じホストの異なるゲストの間でのMACスプーフィングを防ぐ機能もある[10]。 イーサネットアダプターの中にはMACやVLANのスプーフィングを防ぐ機能を持つものも存在する[11]。
OSのセキュリティ
[編集]Linuxは未承諾の返信は無視するが、他のマシンからのリクエストに対する返信はキャッシュを更新するために使用する。 Windowsでは、ARPのキャッシュの挙動は以下のレジストリで設定できる[12]。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters, ArpCacheLife, ArpCacheMinReferenceLife, ArpUseEtherSNAP, ArpTRSingleRoute, ArpAlwaysSourceRoute, ArpRetryCount
適正な利用法
[編集]ARPスプーフィングはネットワークの冗長性を改善することにも利用できる。不具合のあるサーバーがある場合に、ARPスプーフィングを行うことによってバックアップサーバーに転送するソフトウェアが存在する[13] [14]。
ARPスプーフィングは開発のデバッグにも利用される。ホストAとホストBの間の通信を確認したい場合、ARPスプーフィングを行うことによって、中間者攻撃と同じくホストAとホストBの間の通信を監視することができる。
ツール
[編集]防衛用のツール
[編集]名前 | OS | GUI | 無料 | 防御 | 分割されたインターフェース | アクティブ/パッシブ | 備考 |
---|---|---|---|---|---|---|---|
Agnitum Outpost Firewall | Windows | Yes | No | Yes | No | パッシブ | |
AntiARP | Windows | Yes | No | Yes | No | アクティブ + パッシブ | |
Antidote[15] | Linux | No | Yes | No | ? | パッシブ | Linux daemon、対応表を監視、たまに大量のARPパケット |
Arp_Antidote[16] | Linux | No | Yes | No | ? | パッシブ | Linux Kernel Patch for 2.4.18 – 2.4.20, 対応表を監視、 検知したときに行動を決定できる |
Arpalert | Linux | No | Yes | No | Yes | パッシブ | 事前にMACアドレスのリストを作成し、リストに存在しないMACアドレスを検出 |
ArpON | Linux | No | Yes | Yes | Yes | アクティブ+パッシブ | 動的ネットワークと静的ネットワーク、ハイブリッドネットワークで動作するポータブルハンドラーデーモン |
ArpGuard | Mac | Yes | No | Yes | Yes | アクティブ+パッシブ | |
ArpStar | Linux | No | Yes | Yes | ? | パッシブ | |
Arpwatch | Linux | No | Yes | No | Yes | パッシブ | IPアドレス-MACアドレス対応表を記録、対応表に変更があればシステムログやメールで通知 |
ArpwatchNG | Linux | No | Yes | No | No | パッシブ | IPアドレス-MACアドレス対応表を記録、対応表に変更があればシステムログやメールで通知 |
Avast Premium Security | Windows、Mac | Yes | No | Yes | No | アクティブ + パッシブ | 無料版は検知しない |
Colasoft Capsa | Windows | Yes | No | No | Yes | 検知しない。手動でスキャンする | |
cSploit[17] | Android (rooted only) | Yes | Yes | No | Yes | パッシブ | |
Prelude IDS | ? | ? | ? | ? | ? | ? | Arpスプーフィングのプラグイン。アドレスの基本的なチェックをする |
Panda Security | Windows | ? | ? | Yes | ? | アクティブ | アドレスの基本的なチェックをする |
remarp | Linux | No | Yes | No | No | パッシブ | |
Snort | Windows/Linux | No | Yes | No | Yes | パッシブ | Snort preprocessor Arpspoof、アドレスの基本的なチェックをする |
Winarpwatch | Windows | No | Yes | No | No | パッシブ | IPアドレス-MACアドレス対応表を記録、対応表に変更があればシステムログやメールで通知 |
XArp[18] | Windows, Linux | Yes | Yes (+pro version) | Yes (Linux, pro) | Yes | アクティブ + パッシブ | アクティブにプローブを出して、パッシブでチェックする |
zANTI | Android (ルート化) | Yes | Yes | No | ? | パッシブ | |
NetSec Framework | Linux | No | Yes | No | No | アクティブ | |
anti-arpspoof[19] | Windows | Yes | Yes | ? | ? | ? | |
DefendARP:[20] | ? | ? | ? | ? | ? | ? | ホストを元にしたARP対応表、公共のWi-Fiに接続するときに使用するためのツール。ARPポイズニングを防御し、偽のARPエントリーを修正する。攻撃者のMACアドレスとIPアドレスを特定する |
NetCutDefender:[21] | Windows | ? | ? | ? | ? | ? |
攻撃用のツール
[編集]ARPスプーフィング攻撃に使用するためのツール。
日本国内でARPスプーフィングによって許可なく他人の通信を盗聴する行為は、不正アクセス禁止法によって禁じられており、刑事罰を受ける可能性がある[3]。
- Arpspoof (DSniff内のツール)
- Arpoison
- Subterfuge[22]
- Ettercap
- Seringe[23]
- ARP-FILLUP -V0.1[24]
- arp-sk -v0.0.15[24]
- ARPOc -v1.13[24]
- arpalert -v0.3.2[24]
- arping -v2.04[24]
- arpmitm -v0.2[24]
- arpoison -v0.5[24]
- ArpSpyX -v1.1[24]
- ArpToXin -v 1.0[24]
- Cain and Abel -v 4.3
- cSploit -v 1.6.2[17]
- SwitchSniffer[24]
- APE – ARP Poisoning Engine[25]
- Simsang[26]
- zANTI -v2
- elmoCut[27]
- NetSec Framework -v1
- Minary[28]
- NetCut[29] (Also has a defense feature)
- ARPpySHEAR[30]
脚注
[編集]- ^ a b Ramachandran, Vivek & Nandi, Sukumar (2005). “Detecting ARP Spoofing: An Active Technique”. In Jajodia, Suchil & Mazumdar, Chandan. Information systems security: first international conference, ICISS 2005, Kolkata, India, December 19–21, 2005 : proceedings. Birkhauser. p. 239. ISBN 978-3-540-30706-8
- ^ a b c Lockhart, Andrew (2007). Network security hacks. O'Reilly. p. 184. ISBN 978-0-596-52763-1
- ^ a b e-GOV 法令検索「平成十一年法律第百二十八号 不正アクセス行為の禁止等に関する法律」
- ^ Steve Gibson (2005年12月11日). “ARP Cache Poisoning”. GRC. 2023年12月20日閲覧。
- ^ Moon, Daesung; Lee, Jae Dong; Jeong, Young-Sik; Park, Jong Hyuk (2014-12-19). “RTNSS: a routing trace-based network security system for preventing ARP spoofing attacks”. The Journal of Supercomputing 72 (5): 1740–1756. doi:10.1007/s11227-014-1353-0. ISSN 0920-8542. オリジナルの2021-01-23時点におけるアーカイブ。 2021年1月23日閲覧。.
- ^ https://www.aircrack-ng.org/doku.php?id=cafe-latte
- ^ Lockhart, Andrew (2007). Network security hacks. O'Reilly. p. 186. ISBN 978-0-596-52763-1
- ^ “A Security Approach to Prevent ARP Poisoning and Defensive tools” (英語). ResearchGate. 2019年5月3日時点のオリジナルよりアーカイブ。2019年3月22日閲覧。
- ^ AntiARP Archived June 6, 2011, at the Wayback Machine.
- ^ “Daniel P. Berrangé » Blog Archive » Guest MAC spoofing denial of service and preventing it with libvirt and KVM”. 2019年8月9日時点のオリジナルよりアーカイブ。2019年8月9日閲覧。
- ^ “Archived copy”. 2019年9月3日時点のオリジナルよりアーカイブ。2019年8月9日閲覧。
- ^ “Address Resolution Protocol” (18 July 2012). 2021年1月23日時点のオリジナルよりアーカイブ。2017年8月26日閲覧。
- ^ “OpenBSD manpage for CARP (4)”. 2018年2月5日時点のオリジナルよりアーカイブ。2018年2月4日閲覧。, retrieved 2018-02-04
- ^ Simon Horman. “Ultra Monkey: IP Address Takeover”. 2012年11月18日時点のオリジナルよりアーカイブ。2013年1月4日閲覧。, retrieved 2013-01-04
- ^ “Antidote”. 2012年3月13日時点のオリジナルよりアーカイブ。2014年4月7日閲覧。
- ^ “Arp_Antidote”. 2012年1月14日時点のオリジナルよりアーカイブ。2011年8月2日閲覧。
- ^ a b “cSploit”. tux_mind. 2019年3月12日時点のオリジナルよりアーカイブ。2015年10月17日閲覧。
- ^ “XArp”. 2020年6月16日時点のオリジナルよりアーカイブ。2021年1月23日閲覧。
- ^ anti-arpspoof Archived August 31, 2008, at the Wayback Machine.
- ^ “Defense Scripts | ARP Poisoning”. 2013年1月22日時点のオリジナルよりアーカイブ。2013年6月8日閲覧。
- ^ “Netcut defender | Arcai.com”. 2019年4月8日時点のオリジナルよりアーカイブ。2018年2月7日閲覧。
- ^ “Subterfuge Project”. 2016年4月27日時点のオリジナルよりアーカイブ。2013年11月18日閲覧。
- ^ “Seringe – Statically Compiled ARP Poisoning Tool”. 2016年9月16日時点のオリジナルよりアーカイブ。2011年5月3日閲覧。
- ^ a b c d e f g h i j “ARP Vulnerabilities: The Complete Documentation”. l0T3K. 2011年3月5日時点のオリジナルよりアーカイブ。2011年5月3日閲覧。
- ^ “ARP cache poisoning tool for Windows”. July 9, 2012時点のオリジナルよりアーカイブ。2012年7月13日閲覧。
- ^ “Simsang”. 2016年3月4日時点のオリジナルよりアーカイブ。2013年8月25日閲覧。
- ^ “elmoCut: EyeCandy ARP Spoofer (GitHub Home Page)”. GitHub. 2023年12月20日閲覧。
- ^ “Minary”. 2019年4月8日時点のオリジナルよりアーカイブ。2018年1月10日閲覧。
- ^ “NetCut”. 2020年11月12日時点のオリジナルよりアーカイブ。2021年1月23日閲覧。
- ^ “ARPpySHEAR: An ARP cache poisoning tool to be used in MITM attacks”. GitHub. 2020年10月13日時点のオリジナルよりアーカイブ。2019年11月11日閲覧。