[gl-como] rtcp: Reverse TCP
Pietro Bertera
dr.iggy@iol.it
Ven 4 Lug 2003 03:15:03 CEST
questa sera un'idea piuttosto malata mi ha preso alla testa:
TCP usa i flag SYN e FIN per gestire l'apertura e la
chiusura di connessioni.
Molte implemetazioni di firewall e Indrusion Detection
System quardano molto di sospetto pacchetti con il flag SYN
settato (v. SYN flood apertura di connessioni etc...).
Una cosa piuttosto divertente sarebbe quella di scambiare i
SYN con i FIN ovvero:
Alice vuole stabilire una connessione copn Bob:
1) TCP "normale"
ALICE -----[SYN]----> BOB
BOB -----[SYN ACK]----> ALICE
ALICE -----[ACK]-----> BOB
è la banale procedura del 3-way handshake
2) TCP spippolato
Se io sovverto lo stack TCP di Alice e BOb in modo che per
stabilire una connessione debbano fare:
ALICE -----[FIN]----> BOB
BOB -----[FIN ACK]----> ALICE
ALICE -----[ACK]-----> BOB
e ovviamente quando viene chiusa la connessione verrà usato
il SYN al posto del FIN
Alice e Bob, comunicando in questo modo rendono la vita
piuttosto difficile a un ipotetico firewall o IDS tra loro due.
Per fare questo ho scritto un modulo in kernel space che
inverte i syn con i fin di tutti i pacchetti provenienti o
uscenti verso un certo ip.
Il modulo è molto semplice, si appoggia netfilter per
piazzare 2 hook (ingresso e uscita) e quando trova una
corrispondenza con l'ip desiderato inverte syn con fin:
if (addr == magic){
[...]
flag = tcph->fin;
tcph->fin = tcph->syn;
tcph->syn = flag;
[...]
}
se bob ha ip 192.168.2.2 e alice 192.168.2.100
Alice si installa sulla sua linux box il modulo indicando
l'ip di bob:
insmod rtcp ip=192.168.2.2
la stessa cosa la fa bob:
insmod rtcp ip=192.168.2.100
ora, da alice e da bob usciranno pacchetti tcp con i syn e i
fin invertiti mantre i software in userspace di alice e bob
riceveranno i pacchetti con i flag "normali"
ALICE BOB
------------- -------------
| userspace | | userspace | <-- qui sono normali
------------- -------------
| |
------------- -------------
| KERNEL | | KERNEL | <- qui vengon inverti
------------- -------------
| |
+------------------+ <- qui sono invertiti
Si potrebbero anche invertire le porte TCP ma adesso è
troppo tardi e domani ho un esame !!!
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: rtcp.c
Tipo: text/x-csrc
Dimensione: 5939 bytes
Descrizione: non disponibile
Url: /pipermail/attachments/20030704/83a550d3/rtcp.bin
Maggiori informazioni sulla lista
gl-como