Опубликован: 20.02.2007 | Доступ: свободный | Студентов: 3481 / 786 | Оценка: 4.42 / 4.03 | Длительность: 40:03:00
Лекция 17:

Инструментальные средства проверки TCP/IP-стека

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >

Nemesis: создание пакетов 101

Инструмент nemesis предназначен для создания собственных IP-пакетов. В отличие от утилит isic и Iptest, которые автоматически генерируют хорошие и вредные пакеты, nemesis может изменять любую часть пакета. Утилита основана на библиотеке libnet, но ее легче использовать, чем libnet или libpcap, потому что она не требует никакой манипуляции на уровне сокета. Вместо написания и отладки программ на языке C, вы можете быстро настроить сценарий командного интерпретатора. Вам надо только определить содержимое данных в командной строке; nemesis сам создает и посылает пакет.

Реализация

Комплект 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 ). Иначе флаги могут быть применены не по назначению.

Утилита nemesis-udp поддерживает приведенные ниже опции. Заметьте, что UDP, как протокол, не устанавливающий соединения и не имеющий состояния, не предусматривает так много опций, как TCP. Некоторые применения этой утилиты могли бы состоять в толковом сканировании портов при поиске UDP-служб, таких как SNMP, используя опцию -P для обработки определенного пакета.

Опции UDP:

[-x <порт отправителя>]
    [-y <порт получателя>]
    -P <Файл полезной нагрузки>
    -v VERBOSE (подробный вывод структуры пакета на стандартное 
       устройство stdout)

В разделе <Пример из жизни> в конце этой лекции, посмотрите пример генерации SNMP-пакета.

опции ICMP:

-i  <Тип ICMP>
    -c  <Код ICMP>
    -s  <Порядковый номер>
    -m  <Маска ICMP>
    -G  <Предпочитаемый шлюз>
    -Co <Время возникновения запроса>
    -Cr <Время получения запроса>
    -Ct <Время передачи ответа>
    -P  <Файл полезной нагрузки (двоичный или ASCII)>
    -v  VERBOSE (подробный - вывод структуры пакета на стандартное 
        устройство stdout)

Комплект nemesis поддерживает также DNS ( nemesis-dns ), ARP ( nemesis-arp ), IGMP ( nemesis-igmp ) и OSPF ( nemesis-ospf ) протоколы. Хотя они относительно мало известны, возможности протоколов IGMP и OSPF могут быть полезны для сетевых инженеров, пробующих отлаживать глобальные сети.

< Лекция 16 || Лекция 17: 12345 || Лекция 18 >