
Neighbor Discovery Protocol を使用した IPv6 アドレススプーフィング
sylkieIPv6ネットワークにおける近隣探索プロトコルを使用した、一般的なアドレススプーフィングのセキュリティ脆弱性をテストするためのコマンドラインツールおよびライブラリです。
注意: このプロジェクトはまだ開発の初期段階にあります。問題が発生した場合は、issue を提出してください。現在、Linux上でのみ動作します。
詳細は The Wiki をご覧ください。
コードを取得してコンパイルします!
# コードを取得
git clone https://github.com/dlrobertson/sylkie
cd ./sylkie
# コードをコンパイル
mkdir -p ./build
cd ./build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
make install
以下に sylkie の基本的な使い方を説明します。詳細は sylkie -h または
sylkie <サブコマンド> -h を実行するか、Advanced Usage
を参照してください。
注意: sylkie は偽造された広告を送信するために raw sockets を使用します。そのため、実行可能ファイルには setuid ビットが設定されているか、root として実行する必要があります。
router-advert コマンドの基本的な使い方は以下の通りです。このコマンドは、指定されたIPアドレスまたは全ノードマルチキャストアドレスにルーター広告メッセージを送信し、対象ノードのデフォルトルートリストから <router-ip>/<prefix> を削除させます。
sylkie ra -i <interface> \
--target-mac <mac of router> \
--router-ip <ip of router> \
--prefix <router prefix> \
--timeout <time between adverts> \
--repeat <number of times to send the request>
基本的な例です。
sylkie ra -i ens3 \
--target-mac 52:54:00:e3:f4:06 \
--router-ip fe80::b95b:ee1:cafe:9720 \
--prefix 64 \
--repeat -1 \
--timeout 10
これにより、リンクローカルスコープの全ノードアドレス ff02::1 に「偽造された」ルーター広告が送信され、すべてのノードのデフォルトルートリストから fe80::b95b:ee1:cafe:9720/64(リンク層アドレス 52:54:00:e3:f4:06)が削除されます。
sylkie の neighbor-advert コマンドの基本的な使い方は以下の通りです。このコマンドは、指定されたIPアドレスに偽造された近隣広告メッセージを送信します。
sylkie na -i <interface> \
--dst-mac <dest hw addr> \
--src-ip <source ip> \
--dst-ip <dest ip address> \
--target-ip <target ip address> \
--target-mac <target mac address> \
--timeout <time betweeen adverts> \
--repeat <number of times to send the request>
基本的な例です。
sylkie na -i ens3 \
--dst-mac 52:54:00:e3:f4:06 \
--src-ip fe80::61ad:fda3:3032:f6f4 \
--dst-ip fe80::b95b:ee1:cafe:9720 \
--target-ip fe80::61ad:fda3:3032:f6f4 \
--target-mac 52:54:00:c2:a7:7c \
--repeat -1 \
--timeout 3
これにより、dst-ip(fe80::b95b:ee1:cafe:9720)に「偽造された」近隣広告メッセージが送信され、target-ip(fe80::61ad:fda3:3032:f6f4)の近隣キャッシュ内のハードウェアアドレスが target-mac(52:54:00:c2:a7:7c)に更新されます。
上記のコマンドにはかなりの情報が必要です。作業を簡単にするために、sylkie は偽造広告の送信に必要な情報を含むJSONファイルやプレーンテキストファイルも受け付けます。
サブコマンド(router-advert、neighbor-advert)はキーであり、その値はキーと値が対応するオプションと値を持つオブジェクトの配列です。コマンドを実行するには、-j オプションの引数としてJSONファイルへのパスを渡します。
上記の router-advert の例をJSONから実行するには、まず以下の内容のファイルを作成します。
{
"router-advert": [
{
"interface": "ens3",
"target-mac": "52:54:00:e3:f4:06",
"router-ip": "fe80::b95b:ee1:cafe:9720",
"prefix": 64,
"repeat": -1,
"timeout": 10
}
]
}
ファイルを作成したら、以下のコマンドで広告の送信を開始します。
sylkie -j /path/to/json
ファイルの各行は、sylkie コマンドを除いた、コマンドラインで指定する内容と正確に同じである必要があります。
上記の neighbor-advert の例をJSONから実行するには、まず以下の内容のファイルを作成します。
na -i ens3 --dst-mac 52:54:00:e3:f4:06 --src-ip fe80::61ad:fda3:3032:f6f4 --dst-ip fe80::b95b:ee1:cafe:9720 --target-ip fe80::61ad:fda3:3032:f6f4 --target-mac 52:54:00:c2:a7:7c --repeat -1 --timeout 3
ファイルを作成したら、以下のコマンドで広告の送信を開始します。
sylkie -x /path/to/file