Тестируем сетевые устройства с помощью Stack Integrity Checker (ISIC)

IP Stack Integrity Checker (ISIC) – набор утилит по тестированию стека tcp-ip без application layer. Им активно пользуются лаборатории по тестированию при тестировании firewall/ips, совместно с BreakingPoint stack scrambler – в основном трафик направляют непосредственно на management интерфейс DUT. Пример CVE-2008-1746 на CUCM.

Version > 0.07 ISIC supports IPv6 (*sic6)

- Suite of utilities to exercise the stability of an IP Stack and its component stacks (TCP, UDP, ICMP)
- Good to test fragments etc.
- Includes isic, tcpsic, udpsic, icmpsic, esic
- Test firewall rulesets and their behavior under pressure for exampleCan be used in shell scripts
- ISIC to test the implementation of IDS/firewalls

CVE-2008-1746
The SNMP Trap Agent service in Cisco Unified Communications Manager (CUCM) 4.1 before 4.1(3)SR6, 4.2 before 4.2(3)SR3, 4.3 before 4.3(2), 5.x before 5.1(3), and 6.x before 6.1(1) allows remote attackers to cause a denial of service (core dump and service restart) via a series of malformed UDP packets, as demonstrated by the IP Stack Integrity Checker (ISIC), aka Bug ID CSCsj24113.

The UnityOne performed consistently and reliably throughout our tests, continuing to pass legitimate traffic while blocking attack traffic in a consistent manner. Exposing the sensor interface to an extended run of IP Stack Integrity Checker (ISIC)-generated traffic had no adverse effect, and the device continued to detect and block all other exploits throughout and following the ISIC attack.

This test stresses the protocol stacks of the DUT by exposing it to traffic from various protocol randomizer and mutation tools. Several of the tools in this category are based on the ISIC test suite and the BreakingPoint Stack Scrambler component.
NSS LABS

The management port will be scanned to determine ports/services visible on the management interface. ISIC/ESIC/TCPSIC/UDPSIC/ICMPSIC: This test stresses the protocol stack of the management interface of the DUT by exposing it to traffic from various protocol randomizer and mutation tools. Several of the tools in this category are based on the Stack Integrity Check (SIC) test suite run over multiple protocols and the BreakingPoint Stack Scrambler component. Traffic load is a maximum of 350Mbps and 60,000 packets per second (average packet size is 690 bytes). Results are presented as a simple PASS/FAIL -­‐ the device is expected to remain operational and capable of detecting and blocking exploits throughout the test

This  test  stresses  the  protocol  stacks  of  the  DUT  by  exposing  it  to  traffic  from  various  protocol  randomizer  and   mutation  tools.  Several  of  the  tools  in  this  category  are  based  on  the  ISIC  test  suite  and  the  BreakingPoint  Stack   Scrambler  component.   Traffic  load  is  a  maximum  of  350Mbps  and  60,000  packets  per  second  (average  packet  size  is  690  bytes).  Results   are  presented  as  a  simple  PASS/FAIL  -­‐  the  DUT  is  expected  to  remain  operational  and  capable  of  detecting  and   blocking  exploits  throughout  the  test.

Из крутой презы про fuzzing.

Использование
  • описание опций и примеры можно посмотреть в самих утилитах запуская их без параметров
  • intuit, подробно с примерами
  • еще примеры 1, 2
./esic -i enp2s0 -s rand -d rand -p rand -m 50000
./multisic -s rand -d rand -i enp2s0 -p 500000 -F 500 -z ff:ff:ff:ff:ff:ff
./isic -s rand -d rand -F 50 -p 1000000000 -k 20 -r 10
./tcpsic -s 172.16.0.23 -d 172.16.0.22 -x 2 -m 1000 -T 30 -t 50
./udpsic -s 172.16.0.23 -d 172.16.0.22 -x 2 -m 1000 -T 30 -t 50
./icmpsic -s 172.16.0.23 -d 172.16.0.22 -x 2 -m 1000
./isic6 -s rand -d 2001:db8:0:f101::2 -p 1000000 -k 20 -r 10
./tcpsic6 -s rand -d 2001:db8:0:f101::2 -p 1000000 -I 90 -U 20
./udpsic6 -s rand -d 2001:db8:0:f101::2 -p 1000000 -I 90 -U 20
./icmpsic6 -s rand -d 2001:db8:0:f101::2 -x 2 -m 1000

Можно и из vrf генерировать.
ip netns exec VRF1 ./tcpsic -s rand -d 172.17.0.1 -m 1000
ip netns exec VRF2 ./tcpsic -s 172.16.0.23,69 -d 172.16.0.22 -x 2 -m 1000 -T 30 -t 50

Вывод

Default

./tcpsic -s rand -d 172.17.0.1
Bad IP Version = 10% IP Opts Pcnt = 10%
Frag'd Pcnt = 10% Urg Pcnt = 10%
Bad TCP Cksm = 10% TCP Opts Pcnt = 10%

Полезные опции

[-D] causes packet info to be printed out -- DEBUGGING

Добавьте опцию -D, чтобы получить список, содержащий информацию об отладке (содержание пакета) для любого из пакетов *sic. На первый взгляд, это может показаться не очень полезным, но взгляните на поле IPID. Каждый последующий пакет увеличивает это значение на единицу. Следовательно, вы можете просмотреть файл регистрации, например брандмауэра, чтобы увидеть, какой именно пакет вызвал ошибку. Посмотрите раздел "Советы и уловки" далее в этой лекции, чтобы познакомиться с множеством примеров того, как отслеживать ошибки.

Перевоспроизведение трафика, вызвавшего проблему, достигается через использование того же SID value для генератора “случайных” пакетов. Конкретный пакет можно узнать с помощью дебага с -D и генерируя только этот подозрительный пакет с помощью skip всех предыдущих + никто не мешает собирать дамп wireshark.

ex: -s rand -d rand -k 10000 -p 10001 -r 666
Will only send the 10001 packet with random seed 666
this is especially useful if you suspect that packet is
causing a problem with the target stack.

./tcpsic -s rand -d 172.16.0.1 -m 1000 -r 666 -D
235.107.111.18 -> 172.16.0.1 tos[9] id[0] ver[4] frag[0]
208.215.208.255 -> 172.16.0.1 tos[55] id[1] ver[4] frag[0]
18.83.84.33 -> 172.16.0.1 tos[20] id[2] ver[4] frag[5174]
24.157.104.38 -> 172.16.0.1 tos[202] id[3] ver[4] frag[0]
252.150.1.118 -> 172.16.0.1 tos[53] id[4] ver[4] frag[0]
165.185.17.177 -> 172.16.0.1 tos[206] id[5] ver[4] frag[0]

./tcpsic -s rand -d 172.16.0.1 -m 1000 -r 666 -D
235.107.111.18 -> 172.16.0.1 tos[9] id[0] ver[4] frag[0]
208.215.208.255 -> 172.16.0.1 tos[55] id[1] ver[4] frag[0]
18.83.84.33 -> 172.16.0.1 tos[20] id[2] ver[4] frag[5174]
24.157.104.38 -> 172.16.0.1 tos[202] id[3] ver[4] frag[0]
252.150.1.118 -> 172.16.0.1 tos[53] id[4] ver[4] frag[0]
165.185.17.177 -> 172.16.0.1 tos[206] id[5] ver[4] frag[0]
Установка
apt-get install gcc
apt-get install libnet1-dev
dpkg -L libnet1-dev
isic-master# ./configure && make
Ошибки установки/запуска
  • проблемы и решения 1 2 3

Если не хватает make, то пересобираем build-essential

-su: make: command not found
apt-get install --reinstall build-essential

Если выдает “Nothing to be done” то, возможно, вы поместили в папку с исходниками уже скомпилированный код (или по крайней мере логи отработки make).

make: Nothing to be done for 'all'.

Если выдает “No such device” – значит не тот интерфейс.

Can not initialize libnet: libnet_check_iface() ioctl: No such device

Если выдает “Network is unreachable” – значит нет маршрута к сети или даже IP адреса на интерфейсе. При этом пакеты по факту передаются.

Failed to send packet: Network is unreachable

Leave a Reply