红队笔记详细整理与拓展
一. 整体框架与背景
红队行动的目标与工具的重要性
红队行动的目的是通过模拟攻击行为,全面检测目标系统的安全性,并挖掘潜在漏洞。
Nmap 是红队行动中不可或缺的核心工具,具备高效灵活的网络扫描和信息收集功能,适用于多种复杂场景。
目标:不仅掌握工具使用,还需理解其背后设计逻辑和操作原理,以提升对攻防场景的适应能力。
内容结构与重点说明
本次笔记覆盖:
Nmap 的功能详细解析与案例分析。
扫描技术的拓展与对抗策略。
高级功能参数解析与脚本开发。
针对防御机制的绕过与免杀技术。
二. Nmap 的功能与操作
核心功能分类与详解
1.主机发现(Host Discovery)
确认目标网络中的活跃主机。
技术手段:
ICMP Echo 请求:发送回显请求包探测主机存活。
TCP SYN 探测:利用未完成的 TCP 连接验证主机状态。
UDP 探测:发送空 UDP 数据包检查响应。
关键参数:
-sn:仅进行主机发现,不扫描端口。-PS:指定 SYN 探测包,常用于快速扫描。-PU:发送 UDP 探测包识别存活主机。-PE/-PP/-PM:分别用于标准 ICMP 回显请求、时间戳请求和网络掩码请求。
2.端口与服务发现(Port and Service Discovery)
探测目标主机开放的端口以及运行的服务。
技术方法:通过发送特定协议包(如 TCP SYN)并观察响应状态确定端口开放性。
参数:
-p:指定扫描端口范围(如-p1-65535扫描所有端口)。
- p -扫描的端口的前后顺序是随机的
-r:顺序扫描端口,而不是随机顺序(默认是随机扫描)。-vvv:超详细模式,显示更全面的信息,包括每个扫描步骤的细节。-F:快速扫描,仅检查常用的 100 个端口。-sV:服务版本探测,获取运行服务的具体版本信息。--traceroute:追踪到目标主机的路由路径。
-e <iface>:指定网络接口。-oA <file name>:全部格式都输出结果
xsltproc 详细解释
xsltproc是一个命令行工具,用于将 XSLT (可扩展样式表语言转换) 应用到 XML 文档上,从而生成转换后的输出(例如 HTML、纯文本或另一个 XML 文档)。它基于libxslt库,是处理 XML 和 XSLT 的强大工具。功能
XML 转换
将 XML 文档转换为所需格式。处理 XSLT
使用 XSLT 样式表指定的规则对 XML 进行解析和转换。支持 XPath
支持在 XSLT 样式表中使用 XPath 表达式进行节点查询和选择。可扩展性
支持扩展功能,如外部参数和文档合并。
常用语法
xsltproc [选项] 样式表文件.xml 输入文件.xml参数说明:
样式表文件.xml:XSLT 样式表文件,定义了如何处理和转换 XML。
输入文件.xml:需要转换的 XML 文档。
常用选项
1. 基本用法
将 XML 文件根据样式表转换为 HTML:
xsltproc style.xsl input.xml > output.html2. 将输出保存到指定文件
xsltproc -o output.html style.xsl input.xml3. 禁用 DTD 验证
如果 XML 文件有 DTD,但无需验证:
xsltproc --novalid style.xsl input.xml4. 向样式表传递参数
假设样式表需要一个名为
param1的参数:xsltproc --param param1 "'value1'" style.xsl input.xml5. 指定文件查找路径
如果 XML 文件或样式表引用了外部文件:
xsltproc --path /path/to/files style.xsl input.xml使用场景
动态网页生成
使用 XML 和 XSLT 动态生成 HTML 页面。批量数据转换
在数据处理流程中将 XML 转换为其他格式,如 CSV、JSON。报告生成
通过 XSLT 样式表生成定制化的报告。调试 XML/XSLT
通过--verbose或--noout查看转换过程中可能出现的问题。
常见问题与解决方法
找不到外部资源
使用
--path指定正确路径。确保网络资源可访问。
样式表错误或转换失败
检查 XSLT 文件是否有效。
使用
--verbose查看详细日志。
DTD 验证失败
使用
--novalid禁用验证。
xsltproc是一个轻量级且高效的工具,非常适合开发者处理 XML 和 XSLT 转换任务。它支持各种选项和参数,能够满足不同场景下的需求。

3.操作系统与指纹探测(OS and Fingerprint Detection)
通过分析目标响应包的特征(如 TTL、窗口大小),推断操作系统类型。
指纹库文件
/usr/share/nmap/nmap-service-probes
16777行
参数:
-O:启用操作系统探测。--osscan-limit:限制探测范围,减少无关扫描。
4.脚本功能(NSE - Nmap Scripting Engine)
利用脚本实现特定场景下的功能扩展,如漏洞检测、暴力破解等。
脚本路径:
/usr/share/nmap/scripts/分类:
默认脚本:基本的服务探测功能。
漏洞检测:如
vuln类脚本,快速发现已知漏洞。自定义脚本:用户可根据需求开发新的 NSE 脚本。
常用脚本:
ftp-brute:FTP 服务密码爆破。http-vuln-cve2017-5638:检测 Apache Struts 漏洞。ssl-enum-ciphers:列出 SSL/TLS 加密套件。
高级参数与用法详解
-T<0-5>:时间模板,控制扫描速度和侵入性。--data-length:向数据包添加额外字节,用于扰乱检测机制。--badsum:发送伪造校验和的包,用于测试目标防御的严格性。--source-port:伪造源端口,实现特定流量模式。--spoof-mac:随机或指定 MAC 地址伪造。
三. 高级扫描技术与流量操控
TCP 标志位与扫描技术
常用扫描模式:
-sS:SYN 扫描,半开放式方式,效率高且隐蔽性好。-sA:ACK 扫描,探测防火墙规则并判断目标是否在线。-sW:窗口扫描,通过窗口大小变化识别端口状态。-sF/-sX/-sN:利用 FIN、Xmas 和 Null 标志位组合绕过防火墙。
流量控制与绕过防火墙技术
(防火墙/IDS 绕过与伪装)
FIREWALL/IDS EVASION AND SPOOFING:
-f/--mtu :分片数据包。
-D <decoy1,decoy2[,ME],...>:伪装扫描来源。
-S <IP_Address>:伪造源地址。
-e :指定网络接口。
-g/--source-port :指定源端口。
--proxies <url1,[url2],...>:通过代理转发连接。
--data :附加自定义负载。
--data-length :填充随机数据。
--ttl :设置数据包 TTL 值。
--spoof-mac <mac address/prefix/vendor name>:伪造 MAC 地址。
数据包分片
参数:
--mtu指定分片大小,将大包拆分为多个小包以绕过检测。应用场景:针对流量重组能力较弱的防火墙。
伪造源地址与混淆
参数:
-D:掩护模式,使用多个虚假 IP 混淆扫描来源。--spoof-mac:伪造 MAC 地址,增加追踪难度。
时间与频率调整
参数:
--scan-delay:控制探测之间的时间间隔,降低扫描流量特征。--max-rate:限制最大扫描速率,防止触发检测规则。
标志位调整与自定义扫描
参数:
--scanflags自定义标志位组合以实现特定目标。技术优势:通过标志位微调,生成新的扫描模式。
Nmap 中 -sS 和 -sA 的区别
1. -sS(SYN 扫描)
工作原理
-sS是 Nmap 默认的扫描方式之一,也称为 半开放扫描(Half-Open Scan)。它通过发送 TCP 的 SYN 包 开始扫描,而不会完成完整的 TCP 三次握手。
向目标端口发送一个 SYN 包。
根据目标的响应判断端口状态:
SYN/ACK:端口开放(Open)。
RST:端口关闭(Closed)。
无响应:端口被过滤(Filtered)。
如果收到 SYN/ACK,Nmap 会发送一个 RST 包 终止连接,避免建立完整的 TCP 连接。
优点
速度快:因为不需要完成三次握手,减少了时间开销。
隐蔽性强:目标系统可能不会记录此类扫描日志(比完整连接扫描隐蔽)。
适用场景
用于探测目标主机上哪些端口开放。
适合在需要快速扫描且隐蔽性要求较高的情况下使用。
2. -sA(ACK 扫描)
工作原理
-sA是 ACK 扫描,它的主要目的是 检测端口的防火墙状态,而非直接探测端口是否开放。
向目标端口发送一个 TCP 的 ACK 包。
根据目标的响应判断端口状态:
RST:表示端口未被过滤(Unfiltered)。
无响应:表示端口被过滤(Filtered)。
优点
防火墙检测:可以用来判断目标是否有防火墙阻挡。
无连接性:不需要建立连接,因此比其他方法更难被检测到。
适用场景
用于探测目标主机是否有防火墙或其他包过滤机制。
帮助定位防火墙规则或绕过特定安全机制。
详细对比
-sS 扫描开放端口
nmap -sS 192.168.1.1输出示例:
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https-sA 检测防火墙状态
nmap -sA 192.168.1.1输出示例:
PORT STATE
22/tcp unfiltered
80/tcp filtered
443/tcp filtered解释:
unfiltered:端口没有被防火墙阻止。filtered:端口被防火墙过滤。
总结
-sS(SYN 扫描) 是用于探测目标端口是否开放的有效方法,快速而隐蔽。-sA(ACK 扫描) 是用于检测防火墙状态或规则的工具,不直接判断端口是否开放。
根据实际需求选择合适的扫描方式:
扫描端口状态:使用
-sS。检测防火墙或过滤机制:使用
-sA。
数据包高级技术
数据包分片:
攻击者通过将数据包分解成小片段,使防火墙或 IPS 难以重组分析这些数据包,绕过深度包检测的能力。诱饵扫描:
攻击者利用伪造的多个虚假 IP 地址干扰 IDS/IPS,从而掩盖实际的扫描源,降低被溯源的风险。TCP ACK 扫描:
通过发送 ACK 包,攻击者可以探测防火墙的规则配置。
防火墙通常放行 ACK 包,因为它们用于确认已建立的连接,攻击者可以利用这一点识别哪些端口被过滤。伪造源地址和端口:
通过伪装合法的 IP 地址和端口(如 DNS 端口 53),攻击者可以让流量看起来像是合法服务的流量,
绕过防火墙或 IPS 的基于端口的过滤规则。
1.数据包分片
原理:将一个完整的数据包分成多个小片段,分片的数据包只有在目标主机才能重新组装完整信息。
目标:绕过深度包检测 (DPI, Deep Packet Inspection) 的防火墙或入侵检测/防御系统 (IDS/IPS)。
应用场景:
绕过防火墙规则:如果防火墙不能正确处理分片包,可能会忽略某些数据。
增加分析难度:分片数据可能需要耗费更多资源进行重组和解析。
2.诱饵扫描
原理:发送伪造的扫描流量,使安全设备(如 IDS/IPS)误认为扫描来自多个虚假源 IP,而实际扫描者隐藏在其中。
优势:
隐蔽性强:掩盖真实扫描源 IP。
干扰检测系统:让 IDS/IPS 分析多个虚假 IP,耗费资源。
应用:在渗透测试中迷惑防御系统,降低被溯源的可能性。
3.TCP ACK 扫描
原理:发送 ACK 包测试目标的响应行为。
工作机制:
ACK 包:用于确认已经建立的连接,通常被认为是“合法流量”。
防火墙规则通常放行 ACK 包(假设连接已经建立)。
结果解释:
RST 响应:端口未被过滤(Unfiltered)。
无响应:端口被过滤(Filtered)。
目标:检测防火墙的过滤规则,识别哪些端口流量被阻止。
4.伪造源地址和端口
原理:将数据包的源地址和端口伪装成可信的地址或端口,例如 DNS(53 端口)。
目的:
绕过基于 IP 地址或端口的过滤规则。
伪装成合法流量(如 DNS、HTTP)。
应用:欺骗防火墙或 IDS/IPS,让流量看起来像正常业务通信。
命令部分
SYN 扫描
sudo nmap -sS -n --disable-arp-ping 10.129.14.95 -p 21,22,25 --packet-trace -Pn-sS:SYN 扫描,快速探测端口状态。-n:不对目标 IP 进行 DNS 解析,加快扫描速度。--disable-arp-ping:禁用 ARP ping,直接发送扫描包。10.129.14.95:目标 IP 地址。-p 21,22,25:扫描特定的端口(21:FTP, 22:SSH, 25:SMTP)。--packet-trace:显示每个扫描包的发送和接收情况,便于调试。-Pn:假设目标主机存活,不进行 ping 测试。用途:探测目标主机指定端口(21, 22, 25)的状态(开放、关闭或被过滤)。
ACK 扫描
sudo nmap -sA -n --disable-arp-ping 10.129.14.95 -p 21,22,25 --packet-trace -Pn-sA:ACK 扫描,用于检测防火墙规则。其余参数含义与
-sS扫描一致。用途:检测目标防火墙是否对端口(21, 22, 25)进行过滤。
结果解释
SYN 扫描(
-sS):开放(Open):目标返回 SYN/ACK。
关闭(Closed):目标返回 RST。
被过滤(Filtered):无响应或返回 ICMP 错误。
ACK 扫描(
-sA):未被过滤(Unfiltered):目标返回 RST。
被过滤(Filtered):无响应。
这两种命令结合使用,可以帮助渗透测试者了解目标端口的状态及防火墙规则。
掩护扫描
-D RND:3:
启用 欺骗式扫描,伪造扫描源地址。
RND:3表示伪造 3 个随机 IP 地址,Nmap 会随机选择伪造的 IP 地址作为扫描源。这种技术用于迷惑目标主机和安全监控系统,隐藏真实扫描者的身份。

也可以指定使用那些伪装ip

当ip被封后,换源ip源网卡接口去扫描
nmap -n -0 10.129.14.95 -p445 -Pn -S 10.10.10.120 -e tun0
参数详解:
-n:禁用目标 IP 地址的 DNS 解析,直接使用 IP 地址扫描,提升扫描速度。
适合在无需域名解析或目标主机无 DNS 名称的场景。
-O:启用 操作系统指纹识别。
Nmap 通过发送特定的网络数据包分析目标的响应行为,推测目标主机的操作系统类型和版本(如 Windows、Linux)。
10.129.14.95:扫描目标的 IP 地址。
-p445:指定扫描目标的 445 端口。
端口 445 是 Windows 系统的常用端口,用于 SMB(Server Message Block)服务,该服务涉及文件共享、打印共享等。
-Pn:禁用主机存活检测(ping 检测),直接对目标主机执行扫描。
适合目标主机禁用了 ICMP 或使用了防火墙阻止 ping 请求。
-S 10.10.10.120:使用 伪造源地址 作为扫描请求的来源地址。
在发送扫描数据包时,Nmap 将源 IP 设置为
10.10.10.120。这种方式可以隐藏真实扫描者的 IP,迷惑目标主机和网络防御系统。
-e tun0:指定网络接口
tun0(通常为 VPN 或隧道接口)进行扫描。适合在 VPN 环境下使用,例如通过 OpenVPN 连接目标网络。
发现端口被过滤,尝试使用不同源IP 进行扫描
nmap -sS -n --disable-arp-ping 10.129.14.95 -p50000 --packet-trace -Pn
nmap -sS -n --disable-arp-ping 10.129.14.95 -p50000 --packet-trace -Pn --source-port 53
--source-port 53
指定使用源端口53,也就是使用dns的端口进行扫描
数据包分片
将大的数据包分片成更小的片段发送,使得防火墙或入侵检测系统(IDS/IPS),难以重组这些数据包,绕过深度包检测(DPI)。指定 MTU(最大传输单元),值可以精确控制每个数据包的大小。
nmap 192.168.100.119 -f -p135 --packet-trace

数据包跟踪日志
发送的分片数据包
分片数据包详情:
每个数据包的大小限制为 8 字节,Nmap 自动分片。
分片数据包如下所示:
数据包 1:
SENT (0.001s): 192.168.1.10 > 192.168.100.119 [Fragment 1/3] IP Header: [Source=192.168.1.10, Destination=192.168.100.119, Protocol=TCP, Fragment Offset=0, MF=1] TCP SYN: Port=135数据包 2:
SENT (0.002s): 192.168.1.10 > 192.168.100.119 [Fragment 2/3] IP Header: [Source=192.168.1.10, Destination=192.168.100.119, Protocol=TCP, Fragment Offset=8, MF=1]数据包 3:
SENT (0.003s): 192.168.1.10 > 192.168.100.119 [Fragment 3/3] IP Header: [Source=192.168.1.10, Destination=192.168.100.119, Protocol=TCP, Fragment Offset=16, MF=0]
目标响应
响应分片:
目标重组了分片并返回 SYN/ACK 确认,表明端口开放。
响应数据包:
RCVD (0.005s): 192.168.100.119 > 192.168.1.10 IP Header: [Source=192.168.100.119, Destination=192.168.1.10, Protocol=TCP] TCP SYN/ACK: Port=80
扫描细节
数据包分片:
数据包分片启用,发送的扫描包被分成 3 个片段,每个片段大小不超过 8 字节。
分片后目标主机重组了数据包,并正确解析了 SYN 请求。
扫描结果:
目标主机的端口 80 是开放的,运行的是 http 服务。
隐蔽性:
由于使用了分片,可能绕过简单的防火墙规则或入侵检测系统。
1. -f(启用数据包分片)
功能:
启用数据包分片,将数据包分成 8 字节 的小片段。
每个片段的大小固定为 8 字节。
2. --mtu <val>(指定分片大小)
功能:
启用数据包分片,但允许用户手动指定分片大小。
<val>是用户定义的分片大小(以字节为单位)。例如,
--mtu 16将每个分片大小设置为 16 字节。
使用场景:
当目标网络有特定的防火墙或 IDS/IPS 检测规则,可以调整分片大小以绕过这些规则。
提供了比
-f更灵活的控制。
命令示例:
nmap 192.168.100.119 --mtu 16 -p135
将扫描包分成 16 字节的片段发送。
主要区别
使用建议
如果没有明确的分片大小需求,使用
-f即可满足大多数隐蔽扫描场景。如果需要绕过目标网络中特定的防火墙规则(如特定的 MTU 限制或检测),则使用
--mtu <val>并根据需要调整分片大小。
综合示例
-f示例:nmap 192.168.100.119 -f -p80数据包分片为 8 字节。
输出:
SENT: [Fragment 1: 8 bytes] SENT: [Fragment 2: 8 bytes]
--mtu示例:nmap 192.168.100.119 --mtu 16 -p80数据包分片为 16 字节。
输出:
SENT: [Fragment 1: 16 bytes] SENT: [Fragment 2: 16 bytes]
总结:
-f是固定的 8 字节分片,简单快捷。--mtu是高级选项,可根据需求指定更灵活的分片大小,用于绕过更复杂的安全规则。
混淆流量
--data :附加自定义负载。
--data-length :填充随机数据。
nmap --data 53554343455353 192.168.100.119 -p80 --packet-trace
53554343455353 -> SUCCESS
nmap --data-string "Get /index.html HTTP/1.1" 192.168.100.119 -p80 --packet-trace
IP 选项字段
Nmap 的 --ip-options 参数允许用户自定义发送的数据包中的 IP 选项字段。IP 选项字段可以用于测试目标网络的响应行为,帮助绕过特定的网络安全设备或进行更详细的网络研究。

所有常见 IP 选项
以下是 IP 选项的详细列表,以及其作用和使用方法:
使用示例
1. 使用 R(Record Route)
记录数据包经过的路由器地址:
nmap --ip-options "R" 122.114.193.94 -p80 --packet-trace
2. 使用 T(Timestamp)
记录数据包经过的时间戳:
nmap --ip-options "T" 122.114.193.94 -p80 --packet-trace
3. 使用 U(Router Alert)
发送路由警报:
nmap --ip-options "U" 122.114.193.94 -p80 --packet-trace
4. 使用 S(Strict Source Route)
指定数据包通过的严格路由:
nmap --ip-options "S" 122.114.193.94 -p80 --packet-trace
5. 使用 L(Loose Source Route)
指定数据包通过的松散路由:
nmap --ip-options "L" 122.114.193.94 -p80 --packet-trace
6. 组合多个选项
可以将多个 IP 选项组合使用,例如同时记录路由和时间戳:
nmap --ip-options "RT" 122.114.193.94 -p80 --packet-trace
注意事项
网络设备兼容性:
某些网络设备可能会丢弃包含 IP 选项的数据包,导致目标无法响应。
某些防火墙可能会标记这些数据包为异常流量。
长度限制:
IP 选项字段的总长度不能超过 IP 头部的限制(通常是 40 字节)。
合法性:
请确保在合法授权的情况下使用此功能,避免干扰生产网络。
总结
--ip-options允许使用各种 IP 选项来研究目标网络的行为。常用选项包括
R(记录路由)、T(时间戳)和U(路由警报)。适用于网络调试、绕过防火墙和高级渗透测试场景。
伪造 MAC 地址
--spoof-mac:伪造 MAC 地址
(例如 --spoof-mac 0:11:22:33:44:55 或随机值)。

命令中指定了一个伪造的 MAC 地址 00:11:22:33:44:55。
nmap会根据给定的MAC地址查找其对应的厂商信息,在这个例子中,它识别到 00:1:22:33:4455 对应的厂商名称为"Cimsys"。
这通常是通过查找 MAC地址的前缓(称为OUl,Organizationaly Unique ldentifier)来确定的。OUI是由IEEE分配给各个厂商的,MAC 地址的前三个字节(即前24位)决定了厂商信息。


--badsum
--badsum 选项是一个调试和研究功能,用于在扫描时生成数据包,其中的 IP 校验和被故意设置为无效。这种无效的校验和数据包在标准网络设备中会被丢弃,但某些非标准设备可能会处理并响应这些数据包。
参数作用
功能:
生成一个校验和无效的 IP 数据包。
用于测试目标网络是否有异常的行为,例如:
是否有设备会接受校验和无效的数据包。
检测目标主机或中间设备是否存在漏洞或错误配置。
目标:
绕过某些安全设备(如防火墙、入侵检测系统)。
测试目标主机或网络设备是否存在对数据包校验的错误处理。
四. 实用工具与脚本
Nmap 脚本引擎(NSE)
分类与功能:
默认脚本:快速获取主机信息(如
default脚本集合)。漏洞检测脚本:如
http-vuln-cve2017-5638检测 Apache Struts 漏洞。暴力破解脚本:如
ftp-brute,针对 FTP 服务的密码暴力破解。
nmap 192.168.100.119 -p80 --packet-trace -max-parallelism 800 -Pn --script http-slowloris --script-args http-slowloris.runforever=true
参数解释:
-max-parallelism 800
最大并发连接数:
设置最大并发扫描任务数量为 800。
提高扫描速度,但可能会消耗大量网络带宽和系统资源。
如果目标或网络设备无法处理高并发请求,可能会出现丢包或其他异常。
--script http-slowloris
指定 NSE 脚本:
使用 Nmap 的 http-slowloris 脚本。
功能:
模拟 Slowloris 攻击。
通过持续发送部分 HTTP 请求占用目标服务器的连接资源,导致服务拒绝响应其他合法请求。
--script-args http-slowloris.runforever=true
指定脚本参数:
设置脚本的运行参数,启用
http-slowloris的runforever选项。功能:
指定攻击脚本持续运行,直到手动终止。
目标服务器会持续受到资源占用的压力。
命令的实际行为
向目标主机
192.168.100.119的 80 端口发送 http-slowloris 攻击。数据包跟踪功能 (
--packet-trace) 会记录所有网络交互,帮助调试和分析。高并发设置 (
-max-parallelism 800) 加快扫描进度,但也可能导致网络拥塞或目标过载。禁用存活检测 (
-Pn) 确保对目标主机进行直接攻击,绕过防火墙对 ICMP 流量的限制。脚本参数
http-slowloris.runforever=true使攻击持续进行,直到用户手动终止进程。
http-slowloris 脚本的原理
http-slowloris 是 Nmap NSE(Nmap Scripting Engine)中的一个脚本,用于模拟 Slowloris 攻击,其主要工作机制是:
发送部分 HTTP 请求:
发送不完整的 HTTP 请求(例如不包含完整的头部或主体)。
目标服务器会将连接保持打开状态,等待请求完成。
占用服务器资源:
同时发送多个不完整的请求,导致目标服务器的连接池资源耗尽。
其他合法用户的请求被拒绝,模拟出 拒绝服务(DoS)攻击。
特点:
攻击隐蔽,只需占用较少带宽即可对目标服务器造成压力。
适用于测试 Web 服务器在特定条件下的性能和安全性。
可能的扫描结果
目标响应正常:
如果目标服务器能够处理大量的 HTTP 请求,可能不会受到影响。
Nmap 会显示 HTTP 服务的相关信息。
目标超时或拒绝连接:
如果目标服务器因 Slowloris 攻击而耗尽资源,可能会拒绝进一步的连接。
网络中断或异常:
如果高并发 (
-max-parallelism) 导致网络拥塞或目标设备过载,可能会出现连接中断。
脚本开发与优化:
脚本语言:基于 Lua 语言,便于扩展与维护。
使用方法:
--script:运行特定脚本。--script-args:向脚本传递参数。
指纹库的构建与使用
文件路径:
/usr/share/nmap/nmap-service-probes。功能:
存储服务版本与特征。
数据库中的条目通过人工和自动采集方式生成。
自定义:新增特定服务的指纹条目,扩展工具能力。
拓展脚本
nmap -sV --script http-wordpress-brute --script-args 'userdb=users.txt,passdb=passwds.txt,http-wordpress-brute.hostname=domain.com,http-wordpress-brute.threads=3,brute.firstonly=true' 192.168.1.105
-sV
服务版本探测:
探测目标主机上开放端口的服务及其版本信息。
在这个命令中,用于确认 192.168.1.105 上的 HTTP 服务是否是 WordPress 网站。
--script http-wordpress-brute
使用 NSE(Nmap Scripting Engine)脚本:
http-wordpress-brute:该脚本专门用于对 WordPress 网站进行暴力破解。
通过尝试一组用户名和密码,检测目标 WordPress 网站的用户账户是否可以被暴力破解成功。
--script-args
用于向脚本传递参数,具体包含以下内容:
参数 1:userdb=users.txt
用户名字典文件:
从文件
users.txt中读取可能的用户名。
参数 2:passdb=passwds.txt
密码字典文件:
从文件
passwds.txt中读取可能的密码。
参数 3:http-wordpress-brute.hostname=domain.com
目标主机名:
明确目标 WordPress 网站的域名为
domain.com,适用于虚拟主机环境。
参数 4:http-wordpress-brute.threads=3
线程数:
设置脚本的并发线程数为 3,用于加快暴力破解速度。
参数 5:brute.firstonly=true
破解策略:
当找到第一个有效的用户名和密码组合后停止继续破解,节省时间和资源。
sudo nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt 192.168.1.105
-p 1433
指定端口:
仅扫描目标主机的 1433 端口。
端口 1433 是 Microsoft SQL Server(MSSQL)数据库服务的默认端口。
--script ms-sql-brute
使用 NSE(Nmap Scripting Engine)脚本:
ms-sql-brute:此脚本专门用于对 Microsoft SQL Server 进行暴力破解。
通过逐一尝试一组用户名和密码,检测目标 MSSQL 数据库是否可以通过暴力破解方式访问。
--script-args
为脚本提供运行时所需的参数。具体包括:
参数 1:userdb=customuser.txt
用户名字典文件:
从文件
customuser.txt中逐行读取可能的用户名。例如,该文件可能包含以下内容:
sa admin mssql
参数 2:passdb=custompass.txt
密码字典文件:
从文件
custompass.txt中逐行读取可能的密码。例如,该文件可能包含以下内容:
password123 admin123 mssql2023
命令的实际作用
扫描 1433 端口:
确认目标主机的 Microsoft SQL Server 服务是否在运行,并监听默认的 1433 端口。
暴力破解:
脚本会从
customuser.txt文件中读取用户名列表,并从custompass.txt文件中读取密码列表。对每个用户名,逐一尝试所有密码,测试能否成功登录到 MSSQL 数据库。
五. 攻防思维与逻辑拓展
攻防对抗中的流量操控
红队目标:
掌握流量特征并通过参数调整实现隐蔽探测。
基于目标环境,优化工具设置以提高绕过效率。
防御方措施:
建立动态规则库,通过行为检测异常流量。
加强对已知扫描技术的监控和响应。
案例与实战分析
案例 1:
使用数据包分片技术绕过简单防火墙。
成果:成功完成对目标开放端口的探测,未触发防御机制。
案例 2:
利用脚本
ftp-brute进行 FTP 服务密码暴力破解。结果:快速获取弱密码账户,扩大渗透范围。
案例 3:
通过
--badsum参数发送伪造校验和包,测试目标防御系统的鲁棒性。结果:确定目标对异常包的处理逻辑,制定后续绕过方案。
六. 补充知识与拓展
工具对比与优化建议
Masscan:
优势:扫描速度极快,适合大规模网络探测。
劣势:功能较单一,缺乏细粒度扫描能力。
Zmap:
优势:高效处理大范围 IP 扫描。
劣势:针对性较弱,不支持服务版本检测。
最新技术趋势
云环境扫描:针对动态分配 IP 的环境,优化工具适配性。
物联网安全:扩展指纹库支持,覆盖更多 IoT 设备类型。
评论区