ISIC

IP Stack Integrity Checker – jest zbiorem narzędzi służącym do testowania stabilności stosu IP (można nim także sprawdzać jakich dana maszyna używa reguł do filtrowania sieci).

!Uwaga! Podczas nieostrożnej zabawy z tym narzędziem można przyblokować sieć lub wywalić naszego firewalla. !Uwaga!

Instalacja

Do instalacji isic jest wymagana biblioteka libnet w wersji 1.1 lub wyższej.

mkdir isic
 cd isic/
 wget http://www.packetfactory.net/Projects/ISIC/isic-0.06.tgz
 tar zxvf isic-0.06.tgz
 cd isic-0.06
 ./configure
 make
 make install

Jeżeli po wydaniu polecenia make otrzymamy coś takiego

gcc -o isic isic.c -Wall -W -g -O2 `libnet-config --cflags` -DSTDC_HEADERS=1 -Din_addr_t=u_int32_t 
 `libnet-config --defines` -DVERSION=\"0.06\" `libnet-config --libs`
 isic.c: In function ‘main’:
 isic.c:78: warning: pointer targets in passing argument 1 of ‘usage’ differ in signedness
 isic.c:141: warning: pointer targets in passing argument 1 of ‘usage’ differ in signedness
 isic.c:230: warning: pointer targets in assignment differ in signedness
 isic.c:232: error: invalid lvalue in assignment
 isic.c:233: error: invalid lvalue in assignment

oznacza to tylko i wyłącznie tyle, że używamy gcc-4.1 ;).
Otwieramy plik isic.c w naszym ulubionym edytorze i zmieniamy linijkę 232 i 233 z

(u_int16_t) payload[cx] = rand() & 0xffff;
 (u_int16_t) payload[payload_s] = rand() & 0xffff;

na

payload[cx] = rand() & 0xffff;
 payload[payload_s] = rand() & 0xffff;

Następnie w pliku tcpsic.c zmieniamy linijkę 320 z

(u_int16_t) payload[cx] = rand() & 0xffff;

na

payload[cx] = rand() & 0xffff;

itd. dla “udpsic.c” oraz “icmpsic.c”. (Możemy skorzystać z tej łatki).

Użycie

Przykładowa sesja z programem może wyglądać tak

isic -s rand -d 192.168.0.11 -m 128 -I 20% -k
 Using random source IP's
 isic: option requires an argument -- k
 Compiled against Libnet 1.1.2.1
 Installing Signal Handlers.
 Seeding with 10566
 Maximum traffic rate = 128.00 k/s
 Bad IP Version  = 10%           Odd IP Header Length    = 20%           Frag'd Pcnt     = 30%
 1000 @ 970.2 pkts/sec and 576.2 k/s
 2000 @ 974.8 pkts/sec and 589.1 k/s
 3000 @ 986.0 pkts/sec and 590.7 k/s
 4000 @ 990.7 pkts/sec and 585.6 k/s
 [..]
 34000 @ 996.2 pkts/sec and 587.2 k/s
 35000 @ 995.2 pkts/sec and 616.7 k/s
 36000 @ 999.2 pkts/sec and 599.6 k/s
 37000 @ 995.2 pkts/sec and 604.1 k/s

 Caught signal 2
 Used random seed 10566
 Wrote 37279 packets in 37.56s @ 992.61 pkts/s

Po wydaniu polecenia dmesg najczęściej znajdziemy coś takiego

ipt_hook: happy cracking.
 ipt_hook: happy cracking.
 printk: 406 messages suppressed.
 ipt_hook: happy cracking.
 printk: 455 messages suppressed.
 ipt_hook: happy cracking.
 Neighbour table overflow.
 Neighbour table overflow.

Jednak czasami opłaca się zostawić isic włączonego na kilka godzin – można wyłapać jakiś błąd w stosie IP.

Opcje

Dla wszystkich programów wchodzących w skład ISIC (isic, tcpsic, udpsic, icmpsic) obowiązują takie same flagi.
-s – podajemy adres źródłowy pakietu. Możemy również podać “-s rand” - zostanie użyty losowy adres.
-d – podajemy docelowy adres pakietu. Możemy również podać “-d rand” - zostanie użyty losowy adres.
-p – ograniczamy liczbę wysyłanych pakietów do z góry zadanej wartości.
-x – wysyła dany pakiet ustaloną ilość razy.
-r – podajemy liczbę, która ułatwi generowanie liczb losowych.
-m – ograniczamy ilość generowanych pakietów w KB/s.
Poniższe opcje należy podawać w procentach.
-F – % ilość (?) pakietów.
-V – % ilość pakietów ze złą wersją IP.
-I - % ilość pakietów z nagłówkiem IP losowej długości.

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-Share Alike 2.5 License.