目 录CONTENT

文章目录
HTB

HTB靶场-APTLabs-20240914

Administrator
2025-01-10 / 0 评论 / 0 点赞 / 12 阅读 / 0 字

红队笔记详细整理与拓展

一. 整体框架与背景

红队行动的目标与工具的重要性

  • 红队行动的目的是通过模拟攻击行为,全面检测目标系统的安全性,并挖掘潜在漏洞。

  • Nmap 是红队行动中不可或缺的核心工具,具备高效灵活的网络扫描和信息收集功能,适用于多种复杂场景。

  • 目标:不仅掌握工具使用,还需理解其背后设计逻辑和操作原理,以提升对攻防场景的适应能力。

内容结构与重点说明

  • 本次笔记覆盖:

    1. Nmap 的功能详细解析与案例分析。

    2. 扫描技术的拓展与对抗策略。

    3. 高级功能参数解析与脚本开发。

    4. 针对防御机制的绕过与免杀技术。

二. 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 的强大工具。


    功能

    1. XML 转换
      将 XML 文档转换为所需格式。

    2. 处理 XSLT
      使用 XSLT 样式表指定的规则对 XML 进行解析和转换。

    3. 支持 XPath
      支持在 XSLT 样式表中使用 XPath 表达式进行节点查询和选择。

    4. 可扩展性
      支持扩展功能,如外部参数和文档合并。


    常用语法

    xsltproc [选项] 样式表文件.xml 输入文件.xml

    参数说明:

    • 样式表文件.xml:XSLT 样式表文件,定义了如何处理和转换 XML。

    • 输入文件.xml:需要转换的 XML 文档。


    常用选项

    选项

    功能

    -o 输出文件

    将结果输出到指定文件,而不是标准输出(stdout)。

    --param name value

    向 XSLT 样式表传递参数。

    --stringparam name value

    向样式表传递字符串类型的参数。

    --path path

    指定文件查找路径。

    --novalid

    禁用 DTD 验证,通常可提升性能。

    --noout

    不输出转换结果,只检查样式表和输入文件的有效性。

    --verbose

    显示详细的处理过程信息,便于调试。

    --help

    显示 xsltproc 的帮助信息。


    1. 基本用法

    将 XML 文件根据样式表转换为 HTML:

    xsltproc style.xsl input.xml > output.html
    

    2. 将输出保存到指定文件

    xsltproc -o output.html style.xsl input.xml
    

    3. 禁用 DTD 验证

    如果 XML 文件有 DTD,但无需验证:

    xsltproc --novalid style.xsl input.xml
    

    4. 向样式表传递参数

    假设样式表需要一个名为 param1 的参数:

    xsltproc --param param1 "'value1'" style.xsl input.xml
    

    5. 指定文件查找路径

    如果 XML 文件或样式表引用了外部文件:

    xsltproc --path /path/to/files style.xsl input.xml
    

    使用场景

    1. 动态网页生成
      使用 XML 和 XSLT 动态生成 HTML 页面。

    2. 批量数据转换
      在数据处理流程中将 XML 转换为其他格式,如 CSV、JSON。

    3. 报告生成
      通过 XSLT 样式表生成定制化的报告。

    4. 调试 XML/XSLT
      通过 --verbose--noout 查看转换过程中可能出现的问题。


    常见问题与解决方法

    1. 找不到外部资源

      • 使用 --path 指定正确路径。

      • 确保网络资源可访问。

    2. 样式表错误或转换失败

      • 检查 XSLT 文件是否有效。

      • 使用 --verbose 查看详细日志。

    3. 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 地址。

  1. 数据包分片

    • 参数:--mtu 指定分片大小,将大包拆分为多个小包以绕过检测。

    • 应用场景:针对流量重组能力较弱的防火墙。

  2. 伪造源地址与混淆

    • 参数:

      • -D:掩护模式,使用多个虚假 IP 混淆扫描来源。

      • --spoof-mac:伪造 MAC 地址,增加追踪难度。

  3. 时间与频率调整

    • 参数:

      • --scan-delay:控制探测之间的时间间隔,降低扫描流量特征。

      • --max-rate:限制最大扫描速率,防止触发检测规则。

  4. 标志位调整与自定义扫描

    • 参数:--scanflags 自定义标志位组合以实现特定目标。

    • 技术优势:通过标志位微调,生成新的扫描模式。

Nmap 中 -sS-sA 的区别


1. -sS(SYN 扫描)

工作原理

  • -sS 是 Nmap 默认的扫描方式之一,也称为 半开放扫描(Half-Open Scan)

  • 它通过发送 TCP 的 SYN 包 开始扫描,而不会完成完整的 TCP 三次握手。

  1. 向目标端口发送一个 SYN 包。

  2. 根据目标的响应判断端口状态:

    • SYN/ACK:端口开放(Open)。

    • RST:端口关闭(Closed)。

    • 无响应:端口被过滤(Filtered)。

  3. 如果收到 SYN/ACK,Nmap 会发送一个 RST 包 终止连接,避免建立完整的 TCP 连接。

优点

  • 速度快:因为不需要完成三次握手,减少了时间开销。

  • 隐蔽性强:目标系统可能不会记录此类扫描日志(比完整连接扫描隐蔽)。

适用场景

  • 用于探测目标主机上哪些端口开放。

  • 适合在需要快速扫描且隐蔽性要求较高的情况下使用。


2. -sA(ACK 扫描)

工作原理

  • -sAACK 扫描,它的主要目的是 检测端口的防火墙状态,而非直接探测端口是否开放。

  1. 向目标端口发送一个 TCP 的 ACK 包。

  2. 根据目标的响应判断端口状态:

    • RST:表示端口未被过滤(Unfiltered)。

    • 无响应:表示端口被过滤(Filtered)。

优点

  • 防火墙检测:可以用来判断目标是否有防火墙阻挡。

  • 无连接性:不需要建立连接,因此比其他方法更难被检测到。

适用场景

  • 用于探测目标主机是否有防火墙或其他包过滤机制。

  • 帮助定位防火墙规则或绕过特定安全机制。


详细对比

特性

-sS(SYN 扫描)

-sA(ACK 扫描)

扫描目的

探测端口是否开放

检测防火墙状态

发送的包

SYN 包

ACK 包

响应判断

SYN/ACK(开放)、RST(关闭)、无响应(过滤)

RST(未过滤)、无响应(过滤)

隐蔽性

较高(不会建立完整连接)

高(ACK 包不像 SYN 扫描容易触发警报)

速度

较快

使用场景

探测目标的端口状态

确定防火墙或包过滤器是否存在

对日志的影响

可能不会记录在日志中

不会被视为端口扫描行为


-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

数据包高级技术

  1. 数据包分片
    攻击者通过将数据包分解成小片段,使防火墙或 IPS 难以重组分析这些数据包,绕过深度包检测的能力。

  2. 诱饵扫描
    攻击者利用伪造的多个虚假 IP 地址干扰 IDS/IPS,从而掩盖实际的扫描源,降低被溯源的风险。

  3. TCP ACK 扫描
    通过发送 ACK 包,攻击者可以探测防火墙的规则配置。
    防火墙通常放行 ACK 包,因为它们用于确认已建立的连接,攻击者可以利用这一点识别哪些端口被过滤。

  4. 伪造源地址和端口
    通过伪装合法的 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

参数详解:

  1. -n

    • 禁用目标 IP 地址的 DNS 解析,直接使用 IP 地址扫描,提升扫描速度。

    • 适合在无需域名解析或目标主机无 DNS 名称的场景。

  2. -O

    • 启用 操作系统指纹识别

    • Nmap 通过发送特定的网络数据包分析目标的响应行为,推测目标主机的操作系统类型和版本(如 Windows、Linux)。

  3. 10.129.14.95

    • 扫描目标的 IP 地址。

  4. -p445

    • 指定扫描目标的 445 端口

    • 端口 445 是 Windows 系统的常用端口,用于 SMB(Server Message Block)服务,该服务涉及文件共享、打印共享等。

  5. -Pn

    • 禁用主机存活检测(ping 检测),直接对目标主机执行扫描。

    • 适合目标主机禁用了 ICMP 或使用了防火墙阻止 ping 请求。

  6. -S 10.10.10.120

    • 使用 伪造源地址 作为扫描请求的来源地址。

    • 在发送扫描数据包时,Nmap 将源 IP 设置为 10.10.10.120

    • 这种方式可以隐藏真实扫描者的 IP,迷惑目标主机和网络防御系统。

  7. -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 <val>

分片大小

固定为 8 字节

用户可自定义大小(例如 16、24、32 字节)

灵活性

固定分片,灵活性较低

灵活性高,可根据需求指定大小

适用场景

通用分片需求,快速启用分片

高级场景,需调整分片大小绕过检测规则

复杂度

简单,直接启用分片

较复杂,需要用户了解目标网络的要求


使用建议

  • 如果没有明确的分片大小需求,使用 -f 即可满足大多数隐蔽扫描场景。

  • 如果需要绕过目标网络中特定的防火墙规则(如特定的 MTU 限制或检测),则使用 --mtu <val> 并根据需要调整分片大小。


综合示例

  1. -f 示例:

    nmap 192.168.100.119 -f -p80
    • 数据包分片为 8 字节。

    • 输出:

      SENT: [Fragment 1: 8 bytes]
      SENT: [Fragment 2: 8 bytes]
  2. --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 选项的详细列表,以及其作用和使用方法:

符号

选项名称

功能描述

R

Record Route (RR)

记录路由:记录数据包通过的路由器地址(最多 9 个)。

T

Timestamp (TS)

时间戳:记录数据包通过的路由器的时间戳(最多 9 个)。

U

Router Alert

路由器警告:通知路由器该数据包需要特殊处理。

S

Strict Source Route (SSR)

严格源路由:指定数据包必须严格按照指定的路由发送。

L

Loose Source Route (LSR)

松散源路由:指定数据包可以通过指定的路由器,但允许使用其他路由。

D

Debug Option

调试选项:允许将特定的调试数据附加到 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

注意事项

  1. 网络设备兼容性

    • 某些网络设备可能会丢弃包含 IP 选项的数据包,导致目标无法响应。

    • 某些防火墙可能会标记这些数据包为异常流量。

  2. 长度限制

    • IP 选项字段的总长度不能超过 IP 头部的限制(通常是 40 字节)。

  3. 合法性

    • 请确保在合法授权的情况下使用此功能,避免干扰生产网络。


总结

  • --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-slowlorisrunforever 选项。

    • 功能

      • 指定攻击脚本持续运行,直到手动终止。

      • 目标服务器会持续受到资源占用的压力。


命令的实际行为

  • 向目标主机 192.168.100.11980 端口发送 http-slowloris 攻击。

  • 数据包跟踪功能 (--packet-trace) 会记录所有网络交互,帮助调试和分析。

  • 高并发设置 (-max-parallelism 800) 加快扫描进度,但也可能导致网络拥塞或目标过载。

  • 禁用存活检测 (-Pn) 确保对目标主机进行直接攻击,绕过防火墙对 ICMP 流量的限制。

  • 脚本参数 http-slowloris.runforever=true 使攻击持续进行,直到用户手动终止进程。


http-slowloris 脚本的原理

http-slowloris 是 Nmap NSE(Nmap Scripting Engine)中的一个脚本,用于模拟 Slowloris 攻击,其主要工作机制是:

  1. 发送部分 HTTP 请求

    • 发送不完整的 HTTP 请求(例如不包含完整的头部或主体)。

    • 目标服务器会将连接保持打开状态,等待请求完成。

  2. 占用服务器资源

    • 同时发送多个不完整的请求,导致目标服务器的连接池资源耗尽。

    • 其他合法用户的请求被拒绝,模拟出 拒绝服务(DoS)攻击

  3. 特点

    • 攻击隐蔽,只需占用较少带宽即可对目标服务器造成压力。

    • 适用于测试 Web 服务器在特定条件下的性能和安全性。


可能的扫描结果

  1. 目标响应正常

    • 如果目标服务器能够处理大量的 HTTP 请求,可能不会受到影响。

    • Nmap 会显示 HTTP 服务的相关信息。

  2. 目标超时或拒绝连接

    • 如果目标服务器因 Slowloris 攻击而耗尽资源,可能会拒绝进一步的连接。

  3. 网络中断或异常

    • 如果高并发 (-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
      

命令的实际作用

  1. 扫描 1433 端口

    • 确认目标主机的 Microsoft SQL Server 服务是否在运行,并监听默认的 1433 端口。

  2. 暴力破解

    • 脚本会从 customuser.txt 文件中读取用户名列表,并从 custompass.txt 文件中读取密码列表。

    • 对每个用户名,逐一尝试所有密码,测试能否成功登录到 MSSQL 数据库。

五. 攻防思维与逻辑拓展

攻防对抗中的流量操控

  • 红队目标:

    • 掌握流量特征并通过参数调整实现隐蔽探测。

    • 基于目标环境,优化工具设置以提高绕过效率。

  • 防御方措施:

    • 建立动态规则库,通过行为检测异常流量。

    • 加强对已知扫描技术的监控和响应。

案例与实战分析

  1. 案例 1

    • 使用数据包分片技术绕过简单防火墙。

    • 成果:成功完成对目标开放端口的探测,未触发防御机制。

  2. 案例 2

    • 利用脚本 ftp-brute 进行 FTP 服务密码暴力破解。

    • 结果:快速获取弱密码账户,扩大渗透范围。

  3. 案例 3

    • 通过 --badsum 参数发送伪造校验和包,测试目标防御系统的鲁棒性。

    • 结果:确定目标对异常包的处理逻辑,制定后续绕过方案。

六. 补充知识与拓展

工具对比与优化建议

  • Masscan

    • 优势:扫描速度极快,适合大规模网络探测。

    • 劣势:功能较单一,缺乏细粒度扫描能力。

  • Zmap

    • 优势:高效处理大范围 IP 扫描。

    • 劣势:针对性较弱,不支持服务版本检测。

最新技术趋势

  • 云环境扫描:针对动态分配 IP 的环境,优化工具适配性。

  • 物联网安全:扩展指纹库支持,覆盖更多 IoT 设备类型。

0

评论区