Como falsificar a porta de origem de um pacote TCP?

6

Existe uma maneira fácil (ou é possível) de reescrever um pacote TCP quando ele sai da máquina?
Por exemplo, se eu correr

telnet binfalse.de 22

ele procurará por uma porta não usada para deixar a máquina. Nesse caso, é 46576 :

root@srv % lsof -i -P -n | grep telnet
telnet    10150   user    3u  IPv4 1159425      0t0  TCP 1.2.3.4:46576->87.118.88.39:22 (ESTABLISHED)

Mas agora eu quero reescrever esses pacotes para permitir que o servidor pense que os pedidos vieram da porta 1337 , ou algo assim. É claro que sei que não preciso esperar uma resposta na minha sessão telnet .

EDITAR:
É claro que em 1337 outro programa está escutando, então dizer telnet para falar através de 1337 não é uma opção ...

    
por binfalse 29.06.2011 / 17:03

2 respostas

6

Supondo que você esteja falando sobre o Linux, iptables tem uma tabela mangle que pode fazer todo tipo de coisas malucas para o tráfego TCP de saída. Os recursos iptables NAT também podem ajudar, porque realmente parece que você quer fazer "tradução de endereço de porta" ou "NAT manual".

    
por 29.06.2011 / 17:44
6

Se você realmente estiver usando o protocolo telnet (ou fluxos tcp brutos), será possível usar as opções% tel_de% ... nc -p <source_port> negotianet telnet. Eu tenho um servidor de terminal abaixo que aceita conexões de telnet em -t e eu irei me originar de tcp/2015

# Window 1
[mpenning@hotcoffee ~]$ nc -p 31415 -t 192.168.12.117 2015
????????????????

8024-1(config-if-Po2)#

Para verificar ...

[mpenning@hotcoffee tshark_wd]$ netstat -an | grep 31415
tcp        0      0 192.168.12.236:31415    192.168.12.117:2015     ESTABLISHED
[mpenning@hotcoffee tshark_wd]$

Isso pressupõe que você ainda não tenha um soquete local escutando tcp/31415 ... se você já tem um soquete tcp local ligado à porta desejada, tcp/31415 é sua única opção.

    
por 29.06.2011 / 18:39

Tags