========================================================================================= .-.---.-----.-.--.--.--. | | -__| _| | | |__|__|_____|__| \___/ Labs title: Hping2 Vs. Iptables doc name: info.hping-vs-iptables.paper author: nibble version: 0.1 updated: Jun, 14th 2003 email: nerv@netlimit.com web: nibble.8bit.co.uk Publicado pelo CdM - Clube dos Mercenários (http://mercenarios.x-world.nl/) ----------------------------------------------------------------------------------------- --------------------------------[ Hping2 vs. Iptables]---------------------------------- ----------------------------------------------------------------------------------------- Conteúdo 1. Introdução 2. Ferramentas 2.1. Hping24 2.2. Iptables4 4. Firewall 4.1. Desmascarando políticas 4.1.1. Policy Accept 4.1.2. Policy Drop 4.2. Desmascarando filtros 4.2.1. Filtros ICMP 4.2.2. Filtros TCP/UDP 5. Na prática ----------------------------------------------------------------------------------------- 1. Introdução Este breve documento visa expor algumas idéias na coleta de informações críticas de um firewall. Para os testes foi implementado um gateway linux com ACLs iptables como firewall e ssh (porta 22) aberto. ----------------------------------------------------------------------------------------- 2. Iptables Utilizado, principalemente na contrução de firewalls, é bastante robusto e amplamente empregado. Possui vasta documentação (inclusive em português), e está incluso na grande marioria das distribuições linux (sob gpl). As ACLs expostas durante o texto não terão maiores(ou qualquer) explições, consulte a documentação em caso de dúvidas. http://netfilter.samba.org/ ----------------------------------------------------------------------------------------- 3. Hping2 O hping2 foi escolhido por possuir boa documentação e ter o código fonte aberto (sob gpl). Foi criada por Salvatore Sanfilippo para, dentre muitas coisas, testar pilhas tcp/ip descobrindo políticas de firewalls. Grande parte de suas interessantes funcionalidades nao vai ser exploradas neste texto, deixo a cargo do leitor (e de sua curiosidade) esta tarefa.. não deixe de contemplar os métodos de enumeração, fingerprint, fragmentação de pacotes que esta ferramenta pode lhe proporcionar. http://www.hping.org/ ----------------------------------------------------------------------------------------- 4. Firewall Filtros com iptables podem ser implementados por meio de chains adicionadas as suas respectivas tabelas ou de policys. POLICY é filtros de bloqueio restrito a um chain da tabela FILTER, assumem 2 valores possíveis: ACCEPT/DROP. % iptables -t filter -L (lista todas ACLs, de modo amigável, da tabela filter) % iptables -t filter -F (apaga todas ACLs da tabela filter) Filtros com iptables podem ser implementados em 3 tabelas diferentes filter, nat e mangle. Os exemplos apresentados a seguir se restrigem ao chain INPUT da tabela FILTER. Consulte documentação em caso de dúvidas. ----------------------------------------------------------------------------------------- 4.1. Desmascarando Políticas As respostas seguintes do hping2 não dão qualquer garantia de um firewall iptables, pois coincidem com soluções comerciais ou ainda implemtetações de ipfw, ipchains.. logo, constate o iptables com outras tecnicas! ----------------------------------------------------------------------------------------- 4.1.1. Policy ACCEPT $ iptables --policy INPUT ACCEPT a) TCP % hping2 pitbull -p 666 -? A máquina respondeu aos flags [FIN, SYN, PUSH, ACK, URG, Xmas, Ymas], porém não respondeu ao flag [URG] quando indicamos uma porta (-p) não-LISTEN. % hping2 pitbull -p 22 -? Na escolha de uma porta em LISTEN apenas os flags (ACK, SYN) respondem. Note que no flag SYN temos como resposta ttl=64 no caso de portas em LISTEN. b) UDP % hping2 -2 pitbull -p 666 Outra forma de descobrir uma provável configuração de firewall pode ser testando diversas portas não-LISTEN com pacotes udp, por default estes vão responder com "icmp port unreachable" caso não sejam ignorados. % hping2 -2 pitbull -p 22 As portas abertas tem a mesma resposta do que os pacotes ignorados. c) ICMP % hping2 pitbull -p ? -c 4 -C ? Muito pacotes ICMP nao são respondidos (3,4,5,11,14,17,18), porém os de tipo (8,13/echo-request, timestamp) são respondidos. Leia rfc. ----------------------------------------------------------------------------------------- 4.1.2. Policy DROP $ iptables --policy INPUT DROP a) TCP/UDP/ICMP A maquina não respondeu a quaisquer drapeaux tcp (nao importa a porta) ou pacote icmp, tudo foi ignorado! OBS: $ iptables -P INPUT DROP $ iptables -A INPUT -p tcp --dport 22 -j ACCEPT A máquina voltou a responder ao (SYN, ACK), temos a porta aberta novamente, no entanto demais portas continuam a ignorar demais todos flags. O mesmo acontece com os pacotes icmp. ----------------------------------------------------------------------------------------- 4.2. Desmascarando Filtros Identificar o filtro esta sendo aplicado por uma chain (INPUT, OUTPUT, FORWARD) da tabela filter ou por uma policy é uma informação importante obtida sobre o firewall. ----------------------------------------------------------------------------------------- 4.2.1. Filtros contra ICMP Sempre use portas (-p) identificadas como abertas para evitar uma interpretação errônea das ACLs. Lembre-se que policy pode estar descartando os pacotes! a) Desmascarando Bloqueios $ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP % hping2 pitbull -p 22 -c 4 -C 8 Se o pacote icmp-request (icmp tipo 8) for ignorado, entao provavelmente temos um bloqueio a este tipo de requisisao, já que esta é aceita por default. % hping2 pitbull -p 22 -c 4 -C 13 É interessante testar icmp timestamp, se esta requisão responder é bem possível que tenhamos exatamente a ACL acima no alvo.. Teste outras também! b) Desmascarando Limites $ iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT % hping2 pitbull -p 22 -c 20 -i u10000 A reposta não é exata (deve-se testar diversas vezes), porém constata-se a ACL em analise comparativa entre o numero de os pacotes perdidos de uma porta LISTEN e de uma porta não-LISTEN. É importante variar o taxa de pacotes por milisegundos (-i u) para as provaveis acls possiveis. ----------------------------------------------------------------------------------------- 4.2.2. Filtros contra TCP/UDP $ iptables -A INPUT -p tcp --dport 80 -j DROP % hping2 pitbull -p 80 -A O fato de não responder aos flags SYN/ACK a uma determinada porta evidencia um provável bloqueio. Porém pode ser apenas um limite de requisões em determinado tempo também facilmente identificável, como já mencionado. $ iptables -A INPUT -p udp --dport 81 -j DROP % hping -2 pitbull -p 81 % hping -2 pitbull -C 8 -p 81 Veja as respostas e compare com uma porta que descarte qualquer pacote e uma porta não aberta (policy accept, lógico).. não é tarefa trivial diferenciar, com hping2, uma porta aberta de uma que apenas descarte pacotes udp! % hping2 pitbull -p 501 -c 10 --fast % hping2 pitbull -p 502 -c 10 --fast % hping2 pitbull -p 503 -c 10 --fast ... Existem ainda tecnicas bastantes simples para bloqueiar "port scanning" via iptables, baseada em limite de tempo, que podem ser desmascaradas facilmente se constatarmos periodicidade nos pacotes descartados em portas diferentes. É certo que determinado tempo deve ser aguardado a cada nova porta testada. ----------------------------------------------------------------------------------------- 5. Na prática As informações, muitas vezes, não são evidentes requerem muita intuição e dedução, como um jogo, em que tentamos advinhar como foi implementada a rede alvo. Assim sendo, melhores resultados são alcançados com ténicas de engenharia social em paralelo. Tentei empregar ACLs bem simples e bastantes conhecidas, muitas vezes copiadas indiscriminadamente sem maiores apurações no funcionamento. As idéias foram bem simples. Existe muita coisa interessante com NAT e chains FORWARD (e.g. load balacing), que apesar de largamente empregadas não foram exemplificadas. Mas estas podem sim, também serem abordadas, com técnicas um pouco mais complexas (e.g. counting NATed Hosts). Espero ter instigado, aos que ainda não sabiam por onde começar, a iniciar uma coleta de informações sensíveis sobre seus firewalls. Muitas dessas informações são detalhes que podem viabilizar ataques mais complexos (e.g. syn flood + spoof) e não devem ser negligênciadas; porém a paranóia do admin pode se tornar uma brecha. Agradeço ao Clube dos Mercenários (CdM) por tonarem esta publicação possível. nibble ----------------------------------------------------------------------------------------- Procure por.. - hping2's documentation (hping2-howto.txt, hping2-fr.8.txt) - man iptables (man pages) - RFCs: 791, 2401, 2993, 3022, 3235.. - Know your enemy: passive fingerprinting, Honeynet project - A Technique for Counting NATed Host, Steven M. Bellovin - http://insecure.org/nmap/ - http://www.secforum.com.br/textos/tcp1.htm - http://iptables.underlinux.com.br/ =========================================================================================