Você está na página 1de 15

Nmap Parte 1 - Entendendo os tipos de Scanning

Este ser o primeiro de uma srie de artigos sobre NMAP. O intuito mostrar como possvel explorar este utilitrio, muito alm de um simples port scan. Muita gente conhece apenas o bsico desta ferramenta poderosa e acha que ela se limita apenas ao port scanning, mas a verdade bem diferente: o Nmap to poderoso e possui tantas opes que existem diversos LIVROS completos falando exclusivamente desta ferramenta. Aproveitando a oportunidade, indico o livro do Fyodor, o prprio desenvolvedor da ferramenta, afinal quem melhor para falar do assunto no ? Hoje iremos explorar os principais tipos de scanning que o Nmap nos oferece. Sendo assim, irei explicar cada um, separadamente, e mostrarei onde cada um pode ser utilizado. Boa parte dos usurios de Nmap at conhece quais so os tipos de scan, mas no sabem exatamente a finalidade de cada um.

Tipos de Scan
Os principais tipos de scan e suas respetivas flags so: ACK -sA, FIN -sF, XMAS -sX, IDLE -sI, SYN (Stealth/Half Open) -sS, TCP -sT, NULL -sN. Existem ainda mais algumas opes de scanning, mas iremos tratar delas em um outro artigo para o assunto no ficar muito extenso. Antes de continuar com o assunto, aqui vai um aviso MUITO IMPORTANTE: Scanning crime nos EUA e possivelmente em outros lugares, ento no saia escaneando mquinas sem ter permisso ou voc poder acabar encrencado! TCP SCAN: nmap -sT IP_DESTINO Este tipo de scan o mais CONFIVEL com relao a resposta obtida, mas tambm um dos mais barulhentos, sendo facilmente detectvel por IDS. Ele utiliza o three-way-handshake para testar quais portas esto abertas ou fechadas. Se a porta estiver aberta ele receber a resposta SYN/ACK, se estiver fechada, receber RST.

Onde/Quando usar? Quando voc precisa ter 100% de certeza que o resultado confivel, e/ou existam mecanismos de defesa que faam com que outros tipos de scan sejam ineficazes.

UDP SCAN: nmap -sU IP_DESTINO Como pode ser deduzido pelo nome, este scan serve para identificar portas UDP, porm pela arquitetura do UDP no ser considerado um protocolo confivel, pelo fato de no existir controle no h como saber se a resposta ser mesmo vlida.A resposta padro para uma porta fechada ICMP port unreachable, (no caso de portas abertas nenhuma resposta retornada). Uma das desvantagens deste scan que no ser possvel obter mais informaes como por exemplo, a verso do programa que estiver rodando na porta aberta.

SYN SCAN: nmap -sS IP_DESTINO Syn, Stealth, Half Open. Existem vrias nomenclaturas para este tipo de scan. A principal diferena em relao ao TCP que ele no chega a completar o handshake, pois ele finaliza a conexo antes disso. Assim, ele acaba se tornando muito mais sorrateiro (stealth). O mecanismo deste scan funciona assim: enviado um SYN ao host, se a porta estiver aberta ele recebe SYN/ACK (como no TCP), e ao invs de estabelecer a conexo completa com ACK, um RST enviado finalizando a conexo antes mesmo dela ser totalmente estabelecida. Os retornos de portas abertas/fechadas so iguais aos do TCP.

Onde/Quando usar? Quando voc no quiser chamar a ateno, durante o levantamento de informaes de um pent test por exemplo.

ACK SCAN: nmap -sA IP_DESTINO Este tipo de scan no utiliza a comunicao de handshake normal. Ao invs de inciar uma conexo SYN enviado apenas a flag ACK, se receber um RST como resposta porque a porta no est filtrada. Com isso voc no tem 100% de certeza se a porta est aberta pois voc nunca chegou a estabelecer uma conexo real.

Onde/Quando usar? Este scan utilizado para verificar se existe a presena de um firewall statefull entre voc e o host de destino. Um firewall statefull bloquearia a conexo logo de cara, pois no possvel receber um ACK sem antes de ter iniciado a conexo normalmente. FIN SCAN / XMAS SCAN / NULL SCAN: nmap -sF IP_DESTINO Todos estes scans tambm no utilizam a comunicao padro para estabelecer uma conexo. No caso do FIN a conexo feita enviando o flag FIN para o host de destino; normalmente esta flag utilizada para que os dois lados da comunicao encerrem uma conexo. No caso do XMAS, as flags URG,PSH e FIN so setadas, para o NULL nenhuma flag. Todos eles so considerados stealth scans pois enviam apenas um nico frame e esperam uma nica resposta. Uma coisa muito importante a ser observada nestes tipos de scan: mquinas com WINDOWS iro responder a estas requisies com RST independente se as portas estiverem abertas ou no. No caso de mquinas com LINUX, se a porta estiver aberta nenhuma resposta ser recebida, e o RST ser enviado no caso da porta estar fechada. Isto ocorre porque a Microsoft no implantou a RFC 793.

Onde/Quando usar? Como dito anteriormente, as mquinas WINDOWS respondem com RST independente da porta estar aberta ou no, ento dependendo o resultado podemos ter uma noo do SO que o destino est utilizando. Outra possibilidade de uso para evitar firewalls que controlem o handshake das conexes. IDLE SCAN: nmap -sI IP_ZUMBI IP_DESTINO Este tipo de scan utiliza spoofing, para o destino quem vai estar se conectando ser o endereo IP da mquina ZUMBI e no o seu endereo. Um ponto importante que a mquina ZUMBI esteja parada, sem uso (por isso o nome idle). Alm disto a mquina ZUMBI tem que oferecer valores de IPID (IP Identification) que sejam predizveis, caso contrrio o Nmap ir exibir uma mensagem de alerta. Para iniciar o processo, o Nmap envia as flags SYN/ACK ao ZUMBI para induzir um RST de retorno; este RST contm o IPID inicial que ser utilizado no processo do scan. Agora o Nmap ir enviar um frame SYN ao destino, mas com o endereo IP spoofado parecer que veio do ZUMBI. Se a porta estiver aberta, o host de destino ir responder com SYN/ACK para o ZUMBI. A mquina ZUMBI por no ter iniciado esta conexo ir responder com UM RST, como esperado, e ir incrementar o IPID. O ltimo passo deste processo realizar um novo envio de SYN/ACK ao ZUMBI. Se o IPID respondido for igual ao IPID inicial incrementado sabemos que a porta est aberta, se no incrementar porque a porta est fechada. Em considerao ao que o artigo se props creio que a explicao sobre o funcionamento deste tipo de scan j tenha sido o suficiente para saber qual a finalidade chave de seu uso.

Scan de SO: nmap -O IP_DESTINO No um scan em si mas sim uma parmetro que pode ser passado ao comando do Nmap, para alm de efetuar sua funo normal, tambm identificar o SO que est na mquina de destino. Para que este resultado seja confivel, necessrio no mnimo, uma porta aberta e uma porta fechada no host de destino.

Concluso
Gastar um tempinho lendo a documentao, se informando, muito valioso. Com este conhecimento, seu trabalho ficar muito mais fcil e seus resultados sero muito mais precisos. Tenham em mente esta citao de Abraham Lincoln: If I had eight hours to chop down a tree, I'd spend six hours sharpening my ax Se eu tivesse oito horas para cortar uma rvore, Eu gastaria 6 horas afiando meu machado

Nmap - Parte 2 - Evaso de Firewall / IDS


1 Comentrio por 1c3m4n em 20-12-2012 s 14:16 (839 Visualizaes)

Dando continuidade a sequncia de artigos sobre NMAP, iremos abordar agora tcnicas mais complexas e opes pouco utilizadas por usurios comuns. Veremos vrias opes para evitar ou no mnimo, dificultar a deteco. Voc deve estar se perguntando agora se com este tipo de artigo no estaremos incentivando mais pessoas a irem para o lado negro da fora. A resposta NO, pois voc como um profissional DEVE entender o funcionamento das ferramentas e as tcnicas utilizadas; se no fizer isto, com certeza os invasores tero uma vantagem imensa contra voc/sua rede. Portanto, necessrio entender como os invasores agem e saber exatamente como se defender dos mesmos. A importncia est na maneira como a ferramenta utilizada. A grande regra que os invasores seguem fazer tudo o que for possvel sem ser detectado, como qualquer fora da lei faria. Nesta fase de scanning, ser feito tudo o que for possvel para no chamar ateno ou ainda desviar a ateno para outra coisa enquanto o scan de verdade passe despercebido. Alm das tcnicas de evaso, veremos as opes para salvar os scans em arquivos para uma anlise/consulta posterior. Caso voc ainda no tenha visto o primeiro artigo, clique aqui. Antes de inciar com as opes de evaso, vamos ver um parmetro bem simples, mas que pode ser de grande ajuda no processo de levatamento de hosts. Esta tcnica chamada de Ping Sweep. uma varredura via icmp para determinar quais hosts iro responder.. Cdigo :
nmap -sP 10.0.0.0/24

Isto ir pingar todos os hosts de 10.0.0.0-10.0.0.255. Exemplo:

Evaso e Spoofing
O primeiro parmetro que veremos o -f, de fragment. Esta opo fragmenta os pacotes do scan. Muitos Firewalls/IDS simplesmente iro descartar ou ainda iro permitir pacotes fragmentados a passar sem qualquer tipo de filtro. Pois o processo de remontar os pacotes para anlise 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 parmetro o -D de decoy isca. Esta opo faz parecer que os hosts especificados tambm estejam scaneando o alvo. As iscas so utilizadas tanto no ping inicial (o Nmap por padro envia pings ao host antes do scan por padro, a menos que voc explicitamente diga para no o fazer com -PN), como durante o prprio scanning. As iscas tambm so utilizadas durante a deteco de SO ( opo -O). Mas ateno, decoys no iro funcionar em conjunto com a deteco de verso ou ainda com o scan TCP. -T[0-5]: Define o timing (quanto maior, mais rpido) Este parmetro serve tanto para evaso, como tambm para perfomance. Como assim? simples, quanto menor o nmero, mais lentamente o scanning ocorrer, portanto ser muito mais difcil um sistema de IDS detectar que um portscan est realmente acontecendo. Com isso, voc tem a evaso. Quanto a performance tambm bem simples: imagine que voc precisa diagnosticar problemas de conexo com um servidor da sua rede interna, neste caso voc no 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 rpido e mais barulhento. O resultado do -T 5 no muito confivel. Caso voc queria algo rpido mas precise que o resultado seja confivel, utilize o -T 4. Ao invs de usar nmeros -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 parmetros definidos ir utilizar a opo 3. --randomize-hosts (Altera a ordem do scan de forma aleatria) . Esta opo altera a ordem do scan de forma aleatria, tornando a deteco de um scan a nvel de rede muito mais difcil de ser detectado, e funciona melhor ainda se utilizado em conjunto com a opo -T. -S [IP]: Spoofa o endereo de Origem Esta opo faz com que o scan parea ser executado pelo endereo definido -S. Mas note, que para este scan funcionar, voc deve ser capaz de escutar/interceptar o trfego de resposta, pois todo ele ser enviado para o IP definido neste parmetro. -p [range de portas] O ltimo parmetro no exatamente um parmetro para evaso, mas o uso dele em conjunto com as opes citadas acima pode ser muito til. Imagine um portscan de 1-65535. Isto com certeza ir chamar a ateno de um IDS, agora se

voc utilizar apenas algumas portas, pode parecer ser apenas trfego legtimo. Exemplos: Ir buscar apenas hosts que estejam com a porta 22 aberta Cdigo :
nmap -p22 10.0.0.0/24

Ir scanear todas as portas possveis de todos os hosts da rede Cdigo :


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 Cdigo :


nmap -p U:53,111,137,T:21-25,80,139,8080 10.0.0.0/24

Sadas
Veremos agora exemplos de como salvar, e quais os formatos possveis para o resultado dos scans, afinal para que executar o portscan toda vez que voc precisar da informao? Isto somente ir chamar mais a ateno. Os parmetros so: -oN/-oX/-oS/-oG : Normal, XML, skrIpt kIddi3,e format Grepable - caso no conhea oGREP clique aqui. -oA : Salva a sada nos trs principais formatos de uma vez. Agora vamos ver um exemplo prtico para cada uma das opes: Cdigo :
nmap localhost -oN saida.txt

Se voc executar um cat no arquivo normal, ver exatamente o mesmo contedo, com a mesma formatao que o comando exibe na tela quando executando sem a opo -oN. Cdigo :
nmap localhost -oX saida.xml

A sada ser:

Cdigo :
<!--?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,109111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443445,458,464-465,481,497,500,512-515,524,541,543-545,548,554555,563,587,593,616-617,625,631,636,646,648,666668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,9991002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,11211124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,11631166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,12331234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,13091311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,15001501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,16871688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,18621864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,20202022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,21052107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,21902191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,23932394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,26072608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,29092910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,30303031,3050,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,33003301,3306,3322-3325,3333,3351,3367,3369-3372,33893390,3404,3476,3493,3517,3527,3546,3551,3580,3659,36893690,3703,3737,3766,3784,3800-3801,3809,3814,38263828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,399 8,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,44434446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,50505051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,52255226,5269,5280,5298,5357,5405,5414,54315432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,56785679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,59005904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,59986007,6009,6025,6059,61006101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,65656567,6580,6646,6666-6669,6689,6692,6699,6779,67886789,6792,6839,6881,6901,6969,70007002,7004,7007,7019,7025,7070,7100,7103,7106,72007201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,79207921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,80808090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,82908292,8300,8333,8383,8400,8402,8443,8500,8600,8649,86518652,8654,8701,8800,8873,8888,8899,8994,9000-9003,90099011,9040,9050,9071,9080-9081,9090-9091,9099-9103,91109111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,95939595,9618,9666,9876-9878,9898,9900,9917,9943-9944,9968,9998-10004,1000910010,10012,10024-10025,10082,10180,10215,10243,10566,10616-

10617,10621,10626,10628-10629,10778,1111011111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,1444114442,15000,15002-15004,15660,15742,1600016001,16012,16016,16018,16080,16113,1699216993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842, 20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,2573425735,26214,27000,27352-27353,2735527356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,3457134573,35500,38292,40193,40911,41511,42510,44176,4444244443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,4999950003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869, 54045,54328,55055-55056,55555,55600,5673756738,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="netbiosssn" method="table" conf="3"></service></state> <state state="open" reason="syn-ack" reason_ttl="0"><service name="microsoftds" 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="" no="" conhea="" o="" <a="" href="http://en.wikipedia.org/wiki/GREP" target="_blank"><nome>

Cdigo :
nmap localhost -oS kiddie

Esta opo muito mais uma brincadeira do que algo til, veja o arquivo de sada:

Cdigo :
nmap localhost -oG saida.grep

Cdigo :
nmap localhost -oA saidateste

So gerados os 3 arquivos, saidateste.xml, saidateste.nmap que a sada padro, e o saidateste.gnmap que o formato grepable.

Concluso
Conhecer a ferramenta fundamental para um trabalho bem feito com o mnimo de esforo. Com alguns parmetros simples, podemos reduir o esforo do trabalho (levantamento de hosts com ping sweep). Aprendemos a criar arquivos de sada 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 prximo artigo sobre Nmap, veremos outras opes ainda mais interessantes. Portanto, fiquem ligados.

Nmap Parte 3 - Utilizando Scripting para Brute-Force e Enumerao


Avalie este Post de Blog 1 Comentrio por 1c3m4n em 29-01-2013 s 11:10 (99 Visualizaes)

Muita gente no conhece mas o NMAP oferece uma funcionalidade MUITO boa, a NSE Nmap Scripting Engine. possvel criar scripts para automatizar diversas tarefas para facilitar sua vida. Neste artigo vou focar apenas nos scripts j prontos que vem com o NMAP, caso voc tenha interesse em criar seus prprios scripts leia a documentao oficial aqui. Como primeiro exemplo vamos utilizar o BRUTE FORCE de FTP, resumidamente este comando ir executar um brute-force ftp na mquina local (localhost). Cdigo :

nmap --script ftp-brute --script-args userdb=/tmp/users,passdb=/tmp/senhas -p 21 localhost

--script ftp-brute: Define qual script ser executado --script-args: Define argumentos que sero passados ao script, neste caso a variveluserdb, que define um arquivo que contm os nomes de usurios que sero utilizados no brute-force e passdb, que uma wordlist de senhas -p: Define a porta O resultado ser: Cdigo :
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2013-01-29 10:26 BRST Nmap scan report for localhost (127.0.0.1) Host is up (0.000055s latency). PORT STATE SERVICE ftp 21/tcp open | ftp-brute: |_ test: 12345 Nmap done: 1 IP address (1 host up) scanned in 4.26 seconds

No uma das melhores opes de brute-force, mas serve como exemplo e at como um quebra galho na falta de outras ferramentas. Outro exemplo interessante o script para enumerar os compartilhamentos de uma mquina/rede: Cdigo :
nmap --script smb-enum-shares -p445 localhost

O resultado, se houver algum compartilhamento ser:

Cdigo :
Starting Nmap 5.61TEST4 ( http://nmap.org ) at 2013-01-29 10:45 BRST Nmap scan report for localhost (127.0.0.1) Host is up (0.000069s latency). PORT STATE SERVICE microsoft-ds 445/tcp open

Host script results: | smb-enum-shares: | | | | | | | | IPC$ Type: STYPE_IPC_HIDDEN Comment: IPC Service (rafael server (Samba, Ubuntu)) Users: 1, Max: unlimited Path: C:\tmp Anonymous access: READ not a file share Current user ('guest') access: READ not a file share print$

| | | | | |_

Type: STYPE_DISKTREE Comment: Printer Drivers Users: 0, Max: unlimited Path: C:\var\lib\samba\printers Anonymous access: none Current user ('guest') access: none

Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds

Existem, diversos parmetros que podem ser utilizados para realizar a varredura, por exemplo o domnio, usurio, senha,etc. Estes foram apenas dois exemplos de diversas possibilidades existentes, para conhecer as opes disponveis veja a lista aqui -> http://nmap.org/nsedoc/index.html