[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