hacking Ético: a identificação de serviços com nmap
Tabela de conteúdo
No post anterior, hacking ético explicar brevemente várias opções para obter uma enumeração de endereços IP e subdomínios quando efectuar uma hacking ético do processo. Se você gostou do que “isto é muito seguro, porque quem é que vai saber que este subdomínio existe” (que, apesar de você não acreditar, é mais comum do que parece), não perca como o “quem é que vai saber que eu colocar em porta com uma estranha número”…
Em suma, neste post, vamos tentar ver como é possível fazer um inventário de portas abertas em um IP ou faixa de IPs, e até mesmo identificar a tecnologia de acordo com uma porta aberta, quando isso é possível. Basicamente, este post vai se concentrar no uso de uma ferramenta fantástica e essencial, o nmap. Embora seja uma ferramenta normalmente usada no Linux (e, claro, incluída no pacote de referência que uso nessas postagens, Kali), compilações para outros sistemas operacionais já podem ser encontradas.
antes de ir trabalhar, queremos avisar que o nmap é uma ferramenta complexa e completa, com uma enorme quantidade de opções, parâmetros, etc.; Este post não pretende ser um manual para o uso da ferramenta, mas, novamente, uma introdução para compreender a identificação de serviços como uma fase de hacking ético prévio para a detecção de vulnerabilidades. Para saber mais sobre a ferramenta, recomendamos a leitura do manual.
a ferramenta nmap de código aberto nos permite realizar varreduras de rede e porta, podendo digitalizar um único destino, um intervalo, uma lista de IPs… com base em solicitações TCP, UDP, ICMP, SCTP, etc. e incorpora várias técnicas de digitalização. Recomendamos, em geral, atualizar alguns conhecimentos sobre protocolos de transporte, por exemplo, lembrando como o estabelecimento de uma conexão TCP funciona com a negociação em três etapas: primeiro, chamada do tipo SYN do cliente para uma porta, primeira resposta se a porta estiver fechada ou SYN-ACK se estiver aberta e o ACK do cliente para o servidor para concluir o processo. O Nmap dependerá desses tipos de mensagens para determinar se uma porta está ouvindo ou não no destino. Às vezes, isso não pode ser usado ou é detectado pelo servidor remoto e existem outras alternativas para digitalização.
sintaxe Geral
nmap { }
Nossa primeira varredura
, podemos executar o seguinte comando:
nmap 45.33.49.119
não estamos colocando nenhum tipo de enquete, então use a enquete padrão, TCP SYN. o nmap envia um SYN e assume que a porta está aberta se receber um SYN ACN. Também não há parâmetro adicional de opções e, como destino, há um único IP. Este comando nos dará um resultado semelhante ao seguinte:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-10-01 18:12 CESTNmap scan report for ack.nmap.org (45.33.49.119)Host is up (0.19s latency).Not shown: 993 filtered portsPORT STATE SERVICE22/tcp open ssh25/tcp open smtp70/tcp closed gopher80/tcp open http113/tcp closed ident443/tcp open https31337/tcp closed EliteNmap done: 1 IP address (1 host up) scanned in 10.86 seconds
retornando em alguns segundos uma lista de portas abertas nesse IP, incluindo um SSH, um servidor de email SMTP, um servidor web e um possível orifício de retorno (https://www.speedguide.net/port.php?port=31337).
em muitos casos, este é simplesmente um primeiro ponto de análise, embora, por exemplo, o software por trás de um servidor FTP, SSH, etc., é totalmente atualizado e não há vulnerabilidades conhecidas. Você pode começar, por exemplo, um ataque de Força bruta com um dicionário no SSH ou FTP tentando acessar (há um grande número de servidores desse tipo com credenciais padrão ou inseguras).
existem ferramentas automáticas (bots) que estão basicamente continuamente escaneando amplas faixas de IPs procurando portas abertas reconhecíveis, por exemplo, banco de dados (MongoDB, MySQL, PostgreSQL, etc.), e quando detectam uma porta aberta, eles tentam automaticamente um login com credenciais padrão. Por exemplo, no caso de instalações típicas de LAMP / WAMP, uma raiz / acesso à porta mySQL. E, basicamente, um grande número de bancos de dados foi hackeado sem intervenção humana prévia. Isso é viável mesmo que o tenhamos aberto em outra porta, pois é possível identificar em muitos casos que o que está na porta 5555 “enganar”, para dizer alguma coisa, é um mySQL através da impressão digital do serviço, como veremos mais adiante.
em suma, é muito perigoso deixar credenciais por padrão em servidores web, roteadores, FTPs, SSHs, bancos de dados … porque ninguém precisa ter uma mania, um bot vai.
Um primeiro parâmetro
Se queremos ter alguma informação sobre como o nmap tem de obter estas informações, podemos aumentar os traços com o-v (verbose) ou -vv parâmetro, onde podemos ver que o nmap foi a emissão de SYN comandos e, em alguns casos o recebimento de RESET (porta fechada ), em outras SYN-ACK (abre a porta) e em outros não resposta (“filtrada”), o que pode nos fazer entender que um firewall é parar o nosso pedido:
PORT STATE SERVICE REASON22/tcp open ssh syn-ack ttl 5325/tcp open smtp syn-ack ttl 5370/tcp closed gopher reset ttl 5280/tcp open http syn-ack ttl 53113/tcp closed ident reset ttl 52443/tcp open https syn-ack ttl 5331337/tcp closed Elite reset ttl 53
Aumentar a gama de IPs para digitalizar
nmap 192.168.10.0/24 (subred completa)nmap 192.168.10.1-20 (20 IPs)nmap 192.168.10.*nmap 192.168.10.1 192.168.10.2 192.168.10.3
Ou, por exemplo, imagine que temos vindo a acumular IPs de nossos inicial de enumeração, e temos um arquivo com os diferentes IPs separados por tabulações ou quebras de linha (um IP ou intervalo por linha). Podemos carregar o arquivo com o parâmetro-iL (input list) e, assim, verificar todo o inventário IP. Também permite, por exemplo, excluir alguns IPs específicos com –exclude ou –excludefile.
definindo as portas para digitalizar
podemos definir manualmente as portas que queremos digitalizar. Por exemplo, se olharmos para servidores web nas portas 80, 443 e 8080 em uma sub-rede, podemos fazer isso com o parâmetro-p:
nmap -p 80,443,8080 192.168.10.0/24
podemos também pedir o nmap para verificar o “N” (número inteiro) portas mais comuns; Por exemplo, para verificar as 25 mais comuns de portas em um intervalo de IPs:
nmap --top-ports 25 192.168.10.0/24
Receber uma resposta como esta:
PORT STATE SERVICE21/tcp closed ftp22/tcp open ssh23/tcp closed telnet25/tcp closed smtp53/tcp open domain80/tcp open http110/tcp closed pop3111/tcp open rpcbind135/tcp closed msrpc139/tcp open netbios-ssn143/tcp closed imap199/tcp closed smux443/tcp closed https445/tcp open microsoft-ds587/tcp closed submission993/tcp closed imaps995/tcp closed pop3s1025/tcp closed NFS-or-IIS1720/tcp closed h323q9311723/tcp closed pptp3306/tcp closed mysql3389/tcp closed ms-wbt-server5900/tcp open vnc8080/tcp closed http-proxy8888/tcp closed sun-answerbook
Podemos pedir que todos TCP, UDP e SCTP portas (mais lento) com o identificador de -p – ser digitalizados:
nmap -p- 192.168.10.0/24
Identificar sistemas operacionais e serviços
Como podemos ver, o nmap permite-nos detectar portas que estão escutando em um IP ou um intervalo. Mais tarde, também veremos como outras técnicas de pesquisa podem ser definidas. Além disso, o nmap nos permite tentar identificar qual tecnologia (produto, Versão, etc.) está atrás de uma porta aberta, ou mesmo do sistema operacional instalado em um servidor, com os parâmetros-O e-sV. Essa detecção é baseada na” Assinatura ” (impressão digital) das respostas que o serviço fornece a certas chamadas.
nmap -O -sV 192.168.10.5
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 6.7p1 Raspbian 5+deb8u3 (protocol 2.0)53/tcp open domain ISC BIND 9.9.5 (Raspbian Linux 8.0 (Jessie based))80/tcp open http Apache httpd 2.4.10 ((Raspbian))111/tcp open rpcbind 2-4 (RPC #100000)139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)4567/tcp open http Jetty 9.4.8.v201711215900/tcp open vnc RealVNC Enterprise 5.3 or later (protocol 5.0)MAC Address: B8:27:EB:CD:FE:89 (Raspberry Pi Foundation)Device type: general purposeRunning: Linux 3.X|4.XOS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4OS details: Linux 3.2 - 4.9Network Distance: 1 hopService Info: Host: RASPBERRYPI; OS: Linux; CPE: cpe:/o:linux:linux_kernel
nesse caso, não sabemos apenas que esta máquina possui certas portas abertas. Ele também nos diz que é um Raspbian em execução de framboesa (com o qual, por exemplo, poderíamos fazer um teste de Força bruta com um usuário “pi”, que é o usuário padrão) e as versões das diferentes portas que estão ouvindo, para que essas informações possam ser usadas para explorar vulnerabilidades em versões não corrigidas, etc.
Usando mais técnicas de pesquisa
por padrão, o nmap usa o SYN como uma técnica de pesquisa. É uma técnica rápida e não muito intrusiva / detectável, mas às vezes, mas suporta um total de 12 técnicas diferentes que podemos definir como parâmetros, como podemos ver no manual do usuário da ferramenta.
Por exemplo, se quisermos fazer uma análise baseada em UDP chamadas, pode efectuar uma chamada do tipo:
nmap -sU 192.168.10.5
Procurar vulnerabilidades com o nmap
Apesar de existirem mais “confortável” e ferramentas específicas para a busca de vulnerabilidades, tais como o Nessus, ou suítes como o Metasploit, que integra várias ferramentas, o nmap também nos permite realizar a análise de vulnerabilidade.
para fazer isso, ele usa uma série de scripts Lua localizados em um caminho de nossa máquina (no caso de Kali, em / usr / share / nmap / scripts /) e que podem ser invocados com –script ou seu equivalente-sC .
Scripts podem pertencer a uma ou várias categorias, então podemos pedir ao nmap para avaliar, por exemplo, todos os scripts em uma categoria em relação a um host. Existem algumas categorias especialmente interessantes, como” vuln “(scripts dedicados à detecção de vulnerabilidades no destino),” exploit”, etc.
Por exemplo, se desejar digitalizar a vulnerabilidade categoria scripts contra um host:
nmap --script vuln scanme.nmap.org
PORT STATE SERVICE22/tcp open ssh80/tcp open http| http-csrf: | Spidering limited to: maxdepth=3; maxpagecount=20; withinhost=scanme.nmap.org| Found the following possible CSRF vulnerabilities: | | Path: http://scanme.nmap.org:80/| Form id: cse-search-box-sidebar|_ Form action: https://nmap.org/search.html|http-dombased-xss: Couldn't find any DOM based XSS. | http-enum: | /images/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)' | /shared/: Potentially interesting directory w/ listing on 'apache/2.4.7 (ubuntu)'| http-slowloris-check: | VULNERABLE:| Slowloris DOS attack| State: LIKELY VULNERABLE| IDs: CVE:CVE-2007-6750| Slowloris tries to keep many connections to the target web server open and hold them open as long as possible. It accomplishes this by opening connections to the target web server and sending a partial request. By doing so, it starves the http server's resources causing Denial Of Service.| Disclosure date: 2009-09-17| References:| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-6750|_ http://ha.ckers.org/slowloris/|_http-stored-xss: Couldn't find any stored XSS vulnerabilities.9929/tcp open nping-echo31337/tcp open Elite
Como podemos ver, o script foi detectada uma vulnerabilidade potencial com base no Slowloris ataque de negação de serviço. Se analisarmos os scripts que estão na rota mencionada acima, veremos que há precisamente um que explora essa vulnerabilidade, chamado http-slowloris. Se quisermos mais informações sobre o script, podemos iniciar o seguinte comando:
nmap --script-help http-slowloris
explicando como o script funciona, como iniciá –lo (também é possível fazê –lo com o próprio nmap com-script e-script-args), etc. Também podemos obter, por exemplo, uma descrição de todos os scripts que procuram vulnerabilidades:
nmap --script-help vuln
também podemos, por exemplo, Iniciar Todos os scripts de um determinado tipo. Por exemplo, se quisermos verificar vulnerabilidades no protocolo SMB em um determinado host:
nmap --script smb-* 192.168.10.5
também podemos, por exemplo, avaliar uma vulnerabilidade em toda a nossa rede, escolhendo um script específico em relação a um intervalo. O parâmetro-script
nmap --script-help vuln
nmap --script
em suma, o nmap ainda inclui opções interessantes para avaliar vulnerabilidades e até mesmo lançar exploits, embora existam outras ferramentas comumente usadas para esse fim.
Outras opções interessantes
Como já comentamos, o nmap tem muitas opções e é impossível tentar cobrir até mesmo uma pequena porcentagem em um post. Na verdade, existe um livro oficial do nmap de quase 500 páginas… mas em qualquer caso tentamos comentar aqui alguns que parecem interessantes.
como comentamos, o nmap tem muitas opções e é impossível tentar cobrir até mesmo uma pequena porcentagem em uma postagem. Na verdade, existe um livro oficial do nmap de quase 500 páginas… mas em qualquer caso tentamos comentar aqui alguns que parecem interessantes.
- a ferramenta permite gerar o resultado da verificação em um arquivo de saída processável, por exemplo, no formato XML, com-oX ou-oN .
- quando examinamos amplas faixas de IPs, podemos desativar a tentativa de resolução reversa DNS com o parâmetro-n.
- durante a execução de um comando, podemos aumentar o nível de informações exibidas no console (verbosidade) pressionando a tecla “V”.
- se tivermos um firewall que nos corte, podemos tentar-Pn.
resumindo, tentamos desenvolver uma introdução” breve ” ao nmap como uma ferramenta para identificar portas e serviços abertos em um host ou intervalo de IPs. Em postagens posteriores, veremos outras maneiras de detectar vulnerabilidades.
tudo pronto?
é hora de lidar com documentos de forma mais eficiente