
O Nmap é um pacote muito utilizado e por isso está
disponível em todas as principais distribuições. Você pode instalá-lo usando o
yast (SuSE), yum (Fedora), urpmi (Mandriva), ou outro gerenciador de pacotes
disponível. Nas distribuições derivadas do Debian, você pode instalá-lo via
#
apt-get install nmap
Para usar todos os recursos do Nmap, você deve executá-lo
como root. O uso mais simples é escanear diretamente uma máquina da rede, como
# nmap 192.168.0.3
Starting nmap 3.81 (
http://www.insecure.org/nmap/ )
Interesting ports on 192.168.0.3:
(The 1661 ports scanned but not
shown below are in state: closed)
PORT STATE SERVICE
68 /tcp open dhcpclient
631 /tcp open ipp
MAC Address: 00:0F:B0:55:EE:16
(Compal Electronics)
Nmap finished: 1 IP address (1 host
up) scanned in 0.339 seconds
Neste exemplo, o teste foi disparado contra uma máquina
Linux, rodando uma instalação personalizada do Debian Sarge. As duas portas
abertas são o cliente DHCP (é normal que a porta 68 fique aberta em clientes
configurados via DHCP) e o servidor Cups, que escuta na porta 631. O Cups
mantém esta porta aberta sempre que é ativado (você precisa dele para imprimir,
tanto em compartilhamentos da rede, quanto em impressoras locais). Por padrão,
ele permite apenas que o localhost imprima e acesse a interface de administração,
mas é possível configurá-lo para compartilhar as impressoras com a rede de
forma bem simples através do arquivo "/etc/cups/cupsd.conf".
Nem o cliente DHCP nem o Cups permitem acesso via shell, por
isso, salvo eventuais graves brechas de segurança, os ataques mais graves que
poderiam ser lançados neste caso seriam tentar modificar a configuração de
rede, tentando responder ao cliente DHCP no lugar do servidor DHCP da rede, ou
tentar usar impressoras compartilhadas no Cups.
O simples fato de uma determinada porta estar aberta, não
significa que a máquina está vulnerável, mas apenas que existem serviços ativos
e as portas não estão sendo bloqueadas por nenhum firewall.
Você pode obter mais informações sobre as portas abertas,
incluindo a versão de cada serviço ativo usando a opção "-sV", como
em:
#
nmap -sV 192.168.0.3
Esta opção é muito mais demorada, no lugar dela você pode
preferir fazer logo um scan completo usando o Nessus.
É possível também escanear de uma vez toda uma faixa de
endereços, como em:
#
nmap 192.168.0.1-254
Outro parâmetro interessante é a opção "-O", que
faz com que o Nmap tente identificar qual é o sistema operacional usado em cada
máquina. Esta identificação permite diferenciar máquinas rodando diferentes
versões do Windows de máquinas rodando Linux ou MacOS, por exemplo, mas não é
muito eficiente em identificar diferentes distribuições Linux, nem em
identificar a versão do Windows usada. Veja um exemplo:
#
nmap -O 192.168.0.4
Starting
nmap 3.81 ( http://www.insecure.org/nmap/ )
Interesting ports on 192.168.1.35:
(The 1658 ports scanned but not
shown below are in state: closed)
PORT STATE SERVICE
135 /tcp open msrpc
139 /tcp open netbios-ssn
445 /tcp open microsoft-ds
1025 /tcp open NFS-or-IIS
5000 /tcp open UPnP
MAC Address: 02:0F:B0:55:EE:16
(Unknown)
Device type: general purpose
Running: Microsoft Windows
95/98/ME|NT/2K/XP
OS details: Microsoft Windows
Millennium Edition (Me),
Windows 2000 Pro or Advanced Server,
or Windows XP
Nmap finished: 1 IP address (1 host
up) scanned in 1.145 seconds
Neste caso temos uma instalação limpa do Windows XP, sem o
firewall ativo. Note que a identificação do sistema não é exata, o Nmap indicou
corretamente que é uma máquina Windows, mas não soube identificar precisamente
a versão.
Continuando, os scans do Nmap podem ser facilmente
detectados caso alguma das máquinas-alvo esteja com o Snort, ou outro detector
de intrusões ativo, o que vai lhe render no mínimo um puxão de orelha do
administrador da rede. Para dificultar isso, o Nmap oferece a opção de fazer um
half-open scan, especificando a opção "-sS", como em:
#
nmap -sS 192.168.0.1-254
Operando neste modo, o Nmap apenas envia um pacote SYN para
cada porta alvo e espera para ver se recebe um pacote ACK de confirmação sem,
entretanto, responder com o segundo pacote ACK, que abriria a conexão. Isso
permite burlar muitos programas de detecção de intrusão, que monitoram e logam
apenas conexões efetivamente estabelecidas.
Apesar de menos comum, é possível fazer também uma varredura
de portas UDP abertas. Embora poucos serviços possam ser diretamente conectados
através de portas UDP, muitos as utilizam para transferir dados e, em geral, os
firewalls são configurados para bloquear apenas as portas TCP. Escanear as
portas UDP é uma forma alternativa de detectar serviços abertos em uma máquina,
mesmo que todas as portas TCP estejam fechadas no firewall. Existem também
casos de backdoors acessíveis via UDP, como o Back Orifice (no Windows) e até
mesmo (raras) brechas de segurança em serviços do Linux ou outros sistemas
Unix, como uma brecha em certas versões do rpcbind do Solaris, que podia ser
explorada através de uma porta UDP alta, a partir da 32770 (variando de acordo
com a versão).
Os scans de UDP são rápidos se direcionados a máquinas
Windows, mas são absurdamente lentos se feitos contra máquinas Linux ou BSD,
onde o sistema limita o número de erros de ICMP (dos quais o scan do Nmap
depende) a uma taxa de aproximadamente 20 por segundo. No Windows não existe
limite.
Para usar o scan UDP, usamos a opção "-sU", como
em:
#
nmap -sU 192.168.0.4
Por padrão, o Nmap escaneia apenas um conjunto de 1661 portas,
que incluem as usadas pelos serviços mais comuns. Uma media de segurança comum
é esconder serviços como o SSH em portas altas, de forma que eles sejam mais
difíceis de detectar. Nesses casos, você pode fazer um scan completo, incluindo
todas as portas TCP (ou UDP) usando a opção "-p 0-65535 ", como em :
#
nmap -sS -p 0-65535 192.168.0.4
A opção "-p" pode ser usada para escanear apenas
uma porta específica, ou uma faixa de portas em que esteja interessado. Se
executado via rede local, o scan é sempre relativamente rápido (a menos que a
máquina-alvo esteja com um firewall ativo, configurado em modo
"DROP"), mas, via Internet, as coisas tornam-se bem mais demoradas.
Ao tentar localizar vulnerabilidades em uma determinada faixa de endereços IP,
você começaria lançando o teste rápido contra toda a faixa, reservando as
opções mais demoradas para algumas máquinas específicas.
A opção "-sS", combinada com a "-p
0-65535", permite localizar serviços escondidos em portas altas, mas não é
capaz de dizer muito sobre eles. Ele sempre retorna algo como:
22543
/tcp open unknown
Você pode escanear esta porta específica usando a opção
"-sV" para descobrir mais sobre ela, como em:
# nmap -sV -p 22543 192.168.0.4
PORT STATE SERVICE VERSION
22543/tcp open ssh OpenSSH 3.8.1p1
Debian-8.sarge.4 (protocol 1.99) Nmap finished: 1 IP address (1 host up)
scanned in 0.284 seconds
Agora você sabe que a máquina tem ativo um servidor OpenSSH
(versão 3.8.1, do Debian Sarge), escondido na porta 22543.
Tudo é muito simples quando a máquina alvo não possui nenhum
firewall ativo. O scan é rápido e você pode lançar toda sorte de ataques sobre
os serviços ativos. Mas, com um firewall ativo, as coisas tornam-se um pouco
mais complicadas e demoradas. Um firewall configurado para descartar (DROP) todos
os pacotes recebidos, faz com que o scan torne-se extremamente lento.
Versões antigas do Nmap não chegavam sequer a concluir o
teste quando o alvo estava configurado desta forma, retornando uma mensagem
como:
Starting nmap 3.50 (
http://www.insecure.org/nmap/ )
Host 192.168.0.33 appears to be
down, skipping it.
Note: Host seems down.
Nmap run completed -- 1 IP address
(0 hosts up) scanned in 12.053 seconds
Nestes casos, você pode forçar o Nmap a concluir o teste, a
fim de detectar serviços escondidos em portas altas usando o parâmetro
"-P0", como em:
#
nmap -sS -P0 -p 0-65535 192.168.0.4
O problema
neste caso é que o scan demora muito mais que o normal, já que, por não receber
respostas, ele precisa aguardar um tempo muito maior antes de passar para a
porta seguinte. Um teste executado contra um micro na Internet, através de uma
conexão lenta, pode literalmente demorar dias. Apesar de não responder, o micro
remoto pode ser configurado para logar suas tentativas, permitindo que o
administrador tome conhecimento e aja de acordo, bloqueando seu endereço IP ou
contatando seu provedor de acesso. Um firewall bem configurado é realmente uma
grande vantagem de segurança para qualquer servidor.
0 comentários:
Postar um comentário