Quantcast
Nmap - Parte 2 - Evasão de Firewall / IDS

Visite: BR-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org

Ver Feed RSS

Coluna de Segurança

Nmap - Parte 2 - Evasão de Firewall / IDS

Avaliação: 2 votos, 5,00 média.
Dando continuidade a sequência de artigos sobre NMAP, iremos abordar agora técnicas mais complexas e opções pouco utilizadas por usuários comuns. Veremos várias opções para evitar ou no mínimo, dificultar a detecção.

Você deve estar se perguntando agora se com este tipo de artigo não estaremos incentivando mais pessoas a irem para o “lado negro da força”. A resposta é NÃO, pois você como um profissional DEVE entender o funcionamento das ferramentas e as técnicas utilizadas; se não fizer isto, com certeza os invasores terão uma vantagem imensa contra você/sua rede. Portanto, é necessário entender como os invasores agem e saber exatamente como se defender dos mesmos. A importância está na maneira como a ferramenta é utilizada.

A grande regra que os invasores seguem é fazer tudo o que for possível sem ser detectado, como qualquer fora da lei faria. Nesta fase de scanning, será feito tudo o que for possível para não chamar atenção ou ainda desviar a atenção para outra coisa enquanto o scan de verdade passe despercebido. Além das técnicas de evasão, veremos as opções para salvar os scans em arquivos para uma análise/consulta posterior.

Caso você ainda não tenha visto o primeiro artigo, clique aqui.

Antes de inciar com as opções de evasão, vamos ver um parâmetro bem simples, mas que pode ser de grande ajuda no processo de levatamento de hosts. Esta técnica é chamada de Ping Sweep. É uma varredura via icmp para determinar quais hosts irão responder..

Código :
nmap -sP 10.0.0.0/24

Isto irá pingar todos os hosts de 10.0.0.0-10.0.0.255.


Exemplo:

Nome:      pingsweep.png
Visitas:     1181
Tamanho:  7,9 KB



Evasão e Spoofing

O primeiro parâmetro que veremos é o -f, de fragment. Esta opção fragmenta os pacotes do scan. Muitos Firewalls/IDS simplesmente irão descartar ou ainda irão permitir pacotes fragmentados a passar sem qualquer tipo de filtro. Pois o processo de remontar os pacotes para análise iria ser muito custoso do ponto de vista de processamento.

-f; --mtu : fragmente os pacotes (pode-se opcionalmente passar o valor de MTU)

-D [decoy1,decoy2...]

O segundo parâmetro é o -D de decoy “isca”. Esta opção faz parecer que os hosts especificados também estejam scaneando o alvo.

As iscas são utilizadas tanto no ping inicial (o Nmap por padrão envia pings ao host antes do scan por padrão, a menos que você explicitamente diga para não o fazer com -PN), como durante o próprio scanning. As iscas também são utilizadas durante a detecção de SO ( opção -O). Mas atenção, decoys não irão funcionar em conjunto com a detecção de versão ou ainda com o scan TCP.

-T[0-5]: Define o timing (quanto maior, mais rápido)

Este parâmetro serve tanto para evasão, como também para perfomance. Como assim?
É simples, quanto menor o número, mais lentamente o scanning ocorrerá, portanto será muito mais difícil um sistema de IDS detectar que um portscan está realmente acontecendo. Com isso, você tem a evasão. Quanto a performance também é bem simples: imagine que você precisa diagnosticar problemas de conexão com um servidor da sua rede interna, neste caso você não tem nada a esconder, tem certeza de que sua rede tem uma performance boa e tem pressa no resultado, usando o -T 5 será o scan será muito rápido e mais “barulhento”. O resultado do -T 5 não é muito confiável. Caso você queria algo rápido mas precise que o resultado seja confiável, utilize o -T 4.

Ao invés de usar números -T<0-5> você pode utilizar nomes: paranoid (0), sneaky (1), polite (2), normal (3), aggressive (4), and insane (5). O nmap executado sem nenhum destes parâmetros definidos irá utilizar a opção 3.


--randomize-hosts (Altera a ordem do scan de forma aleatória) .

Esta opção altera a ordem do scan de forma aleatória, tornando a detecção de um scan a nível de rede muito mais difícil de ser detectado, e funciona melhor ainda se utilizado em conjunto com a opção -T.

-S [IP]: Spoofa o endereço de Origem
Esta opção faz com que o scan pareça ser executado pelo endereço definido -S. Mas note, que para este scan funcionar, você deve ser capaz de escutar/interceptar o tráfego de resposta, pois todo ele será enviado para o IP definido neste parâmetro.

-p [range de portas]
O último parâmetro não é exatamente um parâmetro para evasão, mas o uso dele em conjunto com as opções citadas acima pode ser muito útil. Imagine um portscan de 1-65535. Isto com certeza irá chamar a atenção de um IDS, agora se você utilizar apenas algumas portas, pode parecer ser apenas tráfego legítimo.

Exemplos:

Irá buscar apenas hosts que estejam com a porta 22 aberta
Código :
nmap -p22 10.0.0.0/24
Irá scanear todas as portas possíveis de todos os hosts da rede
Código :
nmap -pp1-65535 10.0.0.0/24
Irá scanear apenas as portas UDP 53,111 e 137 e as TCP de 21 á 25,80,139,8080
Código :
nmap -p U:53,111,137,T:21-25,80,139,8080 10.0.0.0/24

Saídas

Veremos agora exemplos de como salvar, e quais os formatos possíveis para o resultado dos scans, afinal para que executar o portscan toda vez que você precisar da informação? Isto somente irá chamar mais a atenção.

Os parâmetros são:
-oN/-oX/-oS/-oG : Normal, XML, skrIpt kIddi3,e format “Grepable” - caso não conheça o GREP clique aqui.
-oA : Salva a saída nos três principais formatos de uma vez.

Agora vamos ver um exemplo prático para cada uma das opções:

Código :
nmap localhost -oN saida.txt

Se você executar um cat no arquivo “normal”, verá exatamente o mesmo conteúdo, com a mesma formatação que o comando exibe na tela quando executando sem a opção -oN.

Código :
nmap localhost -oX saida.xml

A saída será:

Código :
<!--?xml version="1.0" ?-->
<!--?xml-stylesheet href="file:///usr/share/nmap/nmap.xsl" type="text/xsl"?-->
<!-- Nmap 5.21 scan initiated Thu Dec 20 11:13:43 2012 as: nmap -oA saidateste localhost -->
<nmaprun scanner="nmap" args="nmap -oA saidateste localhost" start="1356009223" startstr="Thu Dec 20 11:13:43 2012" version="5.21" xmloutputversion="1.03">
<scaninfo type="connect"  protocol="tcp" numservices="1000" services="1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3050,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389">
<verbose level="0">
<debugging level="0">
<host starttime="1356009223" endtime="1356009223"><status state="up" reason="syn-ack">
<address addr="127.0.0.1" addrtype="ipv4">
<hostnames>
<hostname name="localhost" type="user">
<hostname name="localhost" type="PTR">
</hostname></hostname></hostnames>
 
<extraports state="closed" count="988">
<extrareasons reason="conn-refused" count="988">
</extrareasons></extraports>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="ssh" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="smtp" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="domain" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="http" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="netbios-ssn" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="microsoft-ds" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="ipp" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="mysql" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="vnc-http" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="vnc" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="cslistener" method="table" conf="3"></service></state>
 
<state state="open" reason="syn-ack" reason_ttl="0"><service name="tor-socks" method="table" conf="3"></service></state>
 
<times srtt="715" rttvar="126" to="100000">
 
<runstats><finished time="1356009223" timestr="Thu Dec 20 11:13:43 2012" elapsed="0.09"><hosts up="1" down="0" total="1">
<!-- Nmap done at Thu Dec 20 11:13:43 2012; 1 IP address (1 host up) scanned in 0.09 seconds -->
</hosts></finished></runstats><file><ript kiddi3,e="" format="" “grepable”="" -="" caso="" não="" conheça="" o="" <a="" href="http://en.wikipedia.org/wiki/GREP" target="_blank"><nome>


Código :
nmap localhost -oS kiddie

Esta opção é muito mais uma brincadeira do que algo útil, veja o arquivo de saída:

Nome:      kiddie.png
Visitas:     1190
Tamanho:  7,2 KB


Código :
nmap localhost -oG saida.grep

Nome:      grep.jpg
Visitas:     1199
Tamanho:  60,1 KB


Código :
nmap localhost -oA saidateste

Nome:      saidateste.png
Visitas:     1162
Tamanho:  7,3 KB


São gerados os 3 arquivos, saidateste.xml, saidateste.nmap que é a saída padrão, e o saidateste.gnmap que é o formato “grepable”.


Conclusão

Conhecer a ferramenta é fundamental para um trabalho bem feito com o mínimo de esforço. Com alguns parâmetros simples, podemos reduir o esforço do trabalho (levantamento de hosts com ping sweep). Aprendemos a criar arquivos de saída que podem ser utilizados para consulta posterior ou como meio de documentar o trabalho no caso de um pentest, e tudo isso utilizando apenas uma única ferramenta.

No próximo artigo sobre Nmap, veremos outras opções ainda mais interessantes. Portanto, fiquem ligados.
Categorias
Artigos

Comentários

  1. Avatar de peritinaicos
    Muito bom, fiz alguns testes na minha rede e já deu para notar algumas falhas que por usar estes passos já solucionei... Vlw.

+ Enviar Comentário