Реализация
Комплект ISIC постоянно находится в каталоге /security дистрибутива BSD или может быть загружен с сайта http://www.packetfactory.net/Projects/ISIC/. Он основан на использовании библиотеки создания пакетов libnet, которая должна быть установлена на вашей системе. Приложение ISIC представляет собой комплект из пяти программ: ISIC, tcpsic, udpsic, icmpsic и esic. Каждая из этих программ генерирует различные типы допустимых и недопустимых пакетов для протоколов IP, TCP, UDP, ICMP и ARP. Это дает возможность тестировать не только общие сетевые протоколы (IP), но также и более специфические.
Все тесты требуют четырех опций для определения отправителя и получателя каждого пакета. IP-адрес отправителя определяется опцией -s; получатель всегда задается последним аргументом (без флага опции).
# iptest -s 172.16.34.213 192.168.12.84
Если IP-адрес отправителя не принадлежит физической сетевой карте (NIC), использующейся для генерации трафика, вам может понадобиться определить также сетевой интерфейс (-d) и шлюз (-g) в командной строке.
# iptest -s 10.87.34.213 -d le0 -g 192.168.12.1 192.168.12.84
Затем вы можете позволить инструменту Iptest пройти весь список встроенных тестов, или выбрать более узко направленные тесты с помощью опций -n и -pt, где n - число в интервале от одного до семи, а t - номер "точечного теста" (point test) для соответствующего n. Другими словами, вы выбираете опцию между единицей и семеркой. Например, опция пять (-5) содержит большинство TCP-тестов. В пределах пятой опции есть восемь точечных тестов (-p). Окончательно команда, предназначенная для выполнения пятой опции с ее первым точечным тестом, будет выглядеть следующим образом:
# iptest -s 10.87.34.213-d le0-g 192.168.12.1 -5 -p1 192.168.12.84
В этом примере будут проверены все комбинации флагов TCP. В таблице 17.3 описаны более полезные опции меню.
Опции iptest | ||
-1 | 7 | Генерирует пакеты с фрагментами нулевой длины. |
-1 | 8 | Создает пакеты длиной более 64 килобайт после сборки. Это могло бы вызвать переполнение буфера в плохих сетевых стеках. |
-2 | 1 | Создает пакеты с длиной опции IP, которая больше, чем длина пакета. |
-6 | n/a | Генерирует фрагменты пакета, которые перекрываются при реконструкции. Это может наносить ущерб менее устойчивым стекам TCP/IP. Если вы используете этот тест, выполняйте его отдельно от других. |
-7 | n/a | Генерирует 1024 случайных IP-пакета. Поля IP-уровня будут правильны, но данные пакета - случайны. |
Опции UDP теста | ||
-4 | 1,2 | Создает длину полезной нагрузки UDP протокола, которая меньше (1) или больше (2), чем длина пакета. |
-4 | 3,4 | Создает UDP-пакет, в котором номер порта отправителя (3) или получателя (4) попадает на границу байта: например, 0, 1, 32767, 32768, 65535. Этот тест может обнаружить граничные (off-by-one) ошибки. |
Опции ICMP теста | ||
-3 | с 1 по 7 | Генерирует различные нестандартные ICMP-типы и коды. Может выявить ошибки в списке контроля доступа ACL, которые, как предполагается, блокируют ICMP-сообщения. |
Опции TCP теста | ||
-5 | 1 | Генерирует все возможные комбинации флагов опций TCP. Этот тест может выявить логические проблемы в способах, которыми стек TCP/IP обрабатывает или игнорирует пакеты. |
-5 | 2,3 | Создает пакеты, в которых номера пакетов (2) и номера подтверждения (3) попадают на границы байта. Этот тест может выявить граничные (off-by-one) ошибки. |
-5 | 4 | Создает SYN-пакеты различных размеров. SYN-пакет с нулевым размером является повсеместным пакетом сканирования порта. Система обнаружения вторжений или брандмауэр должны отслеживать все виды SYN-пакетов, соответствующих подозрительной деятельности. |
-5 | 7,8 | Создает пакеты, в которых номер порта отправителя (7) или порта получателя (8) попадает на границу байта. Например, 0, 1, 32767, 32768, 65535. Может выявить граничные ошибки (off-by-one). |
Комплект nemesis содержит утилиты, предназначенные для создания пакетов и пакетных данных для протоколов ARP, DNS, ICMP, IGMP, OSPF, RIP, TCP и UDP. Каждая утилита называется соответственно nemesis-<протокол>, где <протокол> - один из восьми поддерживаемых типов протокола. Например, nemesis-dns имеет дело с созданием DNS-пакетов, в то время как nemesis-tcp создает пакеты для TCP-трафика. Вы можете выполнить общую отладку сети и тестирование с помощью инструментальных средств nemesis-udp и nemesis-tcp. Другие инструментальные средства приспособлены для тестирования более специализированных протоколов или служб.
Требуется некоторое время, чтобы начать создание пакетов с помощью nemesis, но как только вы создадите каркас, в нем будет просто производить небольшие изменения. Каждое из инструментальных средств комплекта nemesis требует основных IP-опций. Каждое из инструментальных средств поддерживает следующие опции.
Опции IP:
-S <IP адрес отправителя> -D <IP адрес получателя> -I <IP ID (идентификатор)> -T <IP TTL (время жизни дейтаграммы)> -t <IP tos (тип сервиса)> -F <IP frag (смещение фрагмента)> -O <Опции IP>
Опции Data Link:
-d <Устройство Ethernet> -H <MAC-адрес отправителя> -M <MAC-адрес получателя>
Утилита nemesis-tcp может быть особенно полезна при составлении общей картины атак, называемых "reply attacks", за счет анализа пакетов, которые вы перехватили в сети. Например, чтобы подделать сеанс TCP, вам нужно знать не только одноранговый (peer) IP-адрес и номер порта, но также и порядковый номер пакета (SEQ) и номер подтверждения (ACK). Таким образом, вы можете обрабатывать любую часть трехэтапного квитирования при установлении связи по TCP. Утилита nemesis-tcp поддерживает следующие специфические для TCP опции.
Опции TCP:
[-x <порт отправителя>] [-y <порт получателя>] -f <Опции флагов TCP> -fS SYN,-fA ACK,-fR RST,-fP PSH,-fF FIN,-fU URG -w < Размер окна> -s <номер SEQ> -a <номер ACK> -u <TCP urgent pointer (указатель срочности)> -P <Файл полезной нагрузки (двоичный или ASCII)> -v VERBOSE (Подробный - вывод структуры пакета на стандартное устройство stdout) Совет. Помещайте опции TCP флага (-f) перед опциями порта (-x, -y).