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.