[FUGSPBR] IPFW (Finger print do namp)

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Qua Jul 9 01:28:13 BRT 2003


Bom dia, bom feriado paulistas!! ;-)

> como
> poderia evitar a descoberta do meu S.O. via t?cnica finger print .
>  Algu?m sabe como eu poderia me proteger contra o FingerPrint ?

Evitando que o seu sistema responda pedidos de inicializacao (SYN FLAG) 
invalidos, em portas que nao estão ouvindo ;-) Ou qualquer outro pacote 
(ACK perdido, fora de um handshake, FIN sem ter inicializado, etc).

> OBS: Uso freebsd com ipfw, por especifica??o do cliente n?o poderei 
> mudaro sistema ou o filtro.

Nem deve/precisa.

> No passado eu fazia isso com o ipfilter  com o sysctl  do Openbsd

Com os 2? IPF+Sysctl? Paranoid hein.

Bom, vamos lá. O que você está querendo, via sysctl, são as MIBS que 
controlam blackholes, elas são:

sysctl net.inet.tcp.blackhole
sysctl net.inet.udp.blackhole

Elas forcam exatamente o comportamento que eu citei acima, evitam que 
seu sistema responda (TCP RST) quando não tiver nada ouvindo em uma 
porta, agindo como um "drop" silencioso pros pacotes. A ferramenta vai 
tentar adivinhar o OS de qualquer forma, baseando-se nas portas que 
estavam ouvindo (80, por exemplo) mas invariavelmente vai errar feio.

Com blackholes, invariavelmente o NMAP pensa que os FreeBSD onde eu 
testo são IBM-AIX. Com Firewall e blackholes ele nem chuta... diz que é 
invalido e pede pra ser submetida informacao caso voce saiba qual o O.S.

Com firewall, a idéia é a mesma, basta dropar silenciosamente os pacotes 
para sequencias de flags conhecidas, e que invariavelmente não surgem 
efeito. Essas sequências variam de tempos em tempos, conforma a técnica 
das varreduras vão se aperfeicoando, portanto e' bom você se manter em 
dia com isso. Segue parte de um exemplo que eu costumo usar, algumas 
(não todas) regras pra evitar fingerprint com comportamento conhecido:

setup7_fingerprint() {
${fwcmd} add set 7 drop log tcp from any to any tcpflags fin,urg,psh in 
recv ${ife}
${fwcmd} add set 7 drop log tcp from any to any tcpflags 
!fin,!syn,!ack,!urg,!psh,!rst in recv ${ife}
${fwcmd} add set 7 drop log tcp from any to any tcpflags psh in recv ${ife}
${fwcmd} add set 7 drop log tcp from any to any tcpflags syn,fin,rst,ack 
in recv ${ife}
${fwcmd} add set 7 drop log tcp from any to any tcpflags 
fin,!syn,!rst,!ack in recv ${ife}
${fwcmd} add set 7 drop tcp from any to any tcpflags 
urg,!syn,!fin,!rst,!ack in recv ${ife}
...
...
...
}

Não saia usando essas regras a esmo, teste antes, e crie seu proprio 
setup pra evitar fingerprint. Esse exemplo nao esta completo, voce pode 
analisar outras sequencias de flags tcp usando portscanners em hosts 
para testes (varias outras), e cuidado se for usar SSH, algumas regras 
acima podem causar falsos positivos e dropar o handshake de conexoes 
SSH. Enfim, é apenas uma idéia pra você comecar seu setup...

(PS.: IPFW1 não tem "set <N>" pra controlar conjuntos de regras.)



-- 
Atenciosamente,

Patrick Tracanelli

FreeBSD Brasil LTDA.
The FreeBSD pt_BR Documentation Project
http://www.freebsdbrasil.com.br
patrick @ freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"

_______________________________________________________________
Sair da Lista: http://www2.fugspbr.org/mailman/listinfo/fugspbr
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/



Mais detalhes sobre a lista de discussão freebsd