- fuzzing так же возможен на базе tcpreplay-edit, scapy, isic, radamsa + curl (скрин)
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
Ошибки установки/запуска
Если не хватает 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