Denarzai/nmap-wireshark-network-analysis
GitHub: Denarzai/nmap-wireshark-network-analysis
一个结合 Nmap 网络侦察与 Wireshark 流量分析的网络安全实验项目,通过扫描 Metasploitable2 靶机并捕获对应流量,帮助使用者从攻防双视角理解网络侦察的全过程。
Stars: 0 | Forks: 0
# 网络扫描与流量分析 — Nmap + Wireshark
一个针对故意遗留漏洞的机器 (Metasploitable2) 的实践型网络安全项目,攻击发起方为 Kali Linux 攻击机。该项目使用 Nmap 映射目标的攻击面,在 Wireshark 中捕获并分析由此产生的流量,确认一个可利用的漏洞,并从防御者的视角记录了相同活动的表象。
**工具:** Nmap 7.95 · Wireshark · Kali Linux · Metasploitable2 · VMware
**领域:** 攻击性侦察 / 枚举 · 防御性流量分析 · 网络安全
## 目录
- [概述](#overview)
- [测试环境](#test-environment)
- [方法论](#methodology)
- [关键发现](#key-findings)
- [流量分析 (Wireshark)](#traffic-analysis-wireshark)
- [检测与防御](#detection--defence)
- [复现结果](#reproducing-the-results)
- [仓库结构](#repository-layout)
- [参考文献](#references)
- [作者与贡献](#authors--contribution)
- [免责声明](#disclaimer)
## 概述
本项目的目标是端到端地实践安全评估的侦察阶段:发现活动主机、枚举其开放端口及背后的软件、识别操作系统指纹、运行脚本化漏洞检查,以及——至关重要的是——观察上述每个动作在网络层面留下的痕迹。
Nmap 被用作扫描和枚举工具。Wireshark 并行运行以捕获每次扫描产生的数据包,从而将每一个攻击行为与具体、可观察到的流量模式联系起来。这种结合正是本项目的核心理念:攻击者的扫描和防御者的警报是同一批数据包的两种视角。
## 测试环境
VMware 内部隔离 NAT 网络上的两台虚拟机。

| 组件 | 详情 |
|---|---|
| 攻击者 | Kali Linux (VMware) |
| 攻击者 IP | `192.168.159.129` |
| 目标 | Metasploitable2 |
| 目标 IP | `192.168.159.131` |
| 网络模式 | NAT (隔离) |
| 扫描器 | Nmap 7.95 |
| 捕获 | Wireshark |
在任何扫描之前,已使用 ICMP (`ping`) 确认连通性,确保两台机器位于同一子网且环境是自包含的。工具安装和适配器/IP 配置的截图位于 [`screenshots/01-setup/`](screenshots/01-setup)。
## 方法论
下面的每次扫描对应侦察的一个阶段。命令是本项目期间运行的确切命令;完整输出记录在相关截图中,命令参考位于 [`docs/nmap-commands.md`](docs/nmap-commands.md)。
### 1. 主机发现
```
nmap -sn 192.168.159.131
```
在执行全面扫描之前,使用 ICMP / ARP 探针确认主机处于活动状态。 → [`02-nmap/01-host-discovery-sn.png`](screenshots/02-nmap/01-host-discovery-sn.png)
### 2. SYN 端口扫描
```
nmap -sS 192.168.159.131
```
一种从不完成 TCP 握手的半开扫描。揭示了 **23 个开放的 TCP 端口**。 → [`02-nmap/02-syn-scan-sS.png`](screenshots/02-nmap/02-syn-scan-sS.png)
### 3. 服务与版本检测
```
nmap -Pn -sV 192.168.159.131
```
识别每个开放端口背后的软件及版本——这是将服务与已知 CVE 进行匹配的输入。 → [`02-nmap/03-service-version-sV.png`](screenshots/02-nmap/03-service-version-sV.png)
### 4. 操作系统检测
```
nmap -O 192.168.159.131
```
TCP/IP 协议栈指纹识别。目标的指纹被识别为 Linux / Unix (Metasploitable 运行的是旧的 Ubuntu 内核)。 → [`02-nmap/04-os-detection-O.png`](screenshots/02-nmap/04-os-detection-O.png)
### 5. NSE 脚本
```
nmap --script banner 192.168.159.131 # service banners
nmap --script vuln 192.168.159.131 # known-vulnerability checks
nmap --script discovery 192.168.159.131 # SMB shares, DNS, host metadata
```
Banner 直接暴露了软件版本;`vuln` 类别产生了本项目最显著的结果(见下文)。
→ [`05-nse-banner.png`](screenshots/02-nmap/05-nse-banner.png) · [`06-nse-vuln.png`](screenshots/02-nmap/06-nse-vuln.png) · [`07-nse-discovery.png`](screenshots/02-nmap/07-nse-discovery.png)
## 关键发现
### 开放端口与服务 (`-sV`)
| 端口 | 服务 | 检测到的版本 |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 22/tcp | ssh | OpenSSH 4.7p1 Debian 8ubuntu1 |
| 23/tcp | telnet | Linux telnetd |
| 25/tcp | smtp | Postfix smtpd |
| 53/tcp | domain | ISC BIND 9.4.2 |
| 80/tcp | http | Apache httpd 2.2.8 (Ubuntu) DAV/2 |
| 111/tcp | rpcbind | 2 (RPC #100000) |
| 139/tcp | netbios-ssn | Samba smbd 3.X – 4.X |
| 445/tcp | netbios-ssn | Samba smbd 3.X – 4.X |
| 512/tcp | exec | netkit-rsh rexecd |
| 513/tcp | login | rlogin |
| 514/tcp | shell | rsh |
| 1099/tcp | java-rmi | GNU Classpath grmiregistry |
| 1524/tcp | bindshell | Metasploitable root shell |
| 2049/tcp | nfs | 2 – 4 (RPC #100003) |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
| 3306/tcp | mysql | MySQL 5.0.51a-3ubuntu5 |
| 5432/tcp | postgresql | PostgreSQL DB 8.3.0 – 8.3.7 |
| 5900/tcp | vnc | VNC protocol 3.3 |
| 6000/tcp | X11 | (access denied) |
| 6667/tcp | irc | UnrealIRCd |
| 8009/tcp | ajp13 | Apache Jserv (Protocol v1.3) |
| 8180/tcp | http | Apache Tomcat/Coyote JSP 1.1 |
### 确认可利用的漏洞
`--script vuln` 的运行不仅仅是标记了一个版本——它**证明**了 FTP 服务被植入了后门:
- **vsftpd 2.3.4 后门 — CVE-2011-2523**
Nmap 的 `ftp-vsftpd-backdoor` 脚本触发了后门并运行了 `id`,返回了 `uid=0(root) gid=0(root)`。这是目标机器上**以 root 身份**进行的未经身份验证的远程命令执行。
它还标记了邮件服务上的一个传输安全弱点:
- **匿名 Diffie-Hellman 密钥交换 (端口 25, SMTP/TLS)**
`ssl-dh-params` 脚本报告了匿名 DH 密码套件 (`TLS_DH_anon_WITH_AES_256_CBC_SHA`),该套件不提供身份验证,并且会暴露于主动的中间人攻击。
→ [`screenshots/02-nmap/06-nse-vuln.png`](screenshots/02-nmap/06-nse-vuln.png)
### 额外的攻击面 (基于版本识别)
除了上述通过扫描确认的发现外,根据报告的版本,有几个服务已知存在严重的 CVE —— 例如 139/445 端口上 Samba 的 `usermap_script` RCE (CVE-2007-2447),6667 端口上的 UnrealIRCd 后门 (CVE-2010-2075),以及 512–514 端口上明文传输凭据的传统 r-services (rexec/rlogin/rsh)。这些被列为暴露风险,而不是本项目中实际运行的漏洞利用。
## 流量分析 (Wireshark)
每次扫描都被实时捕获。关键在于仅从数据包中识别出侦察行为——这正是分析师或 IDS 实际看到的内容。
| 活动 | Wireshark 过滤器 | 捕获文件 |
|---|---|---|
| 主机发现 (ping) | `icmp` | [icmp](screenshots/03-wireshark/02-icmp-host-discovery.png) |
| SYN 扫描 | `tcp.flags.syn==1` | [syn](screenshots/03-wireshark/03-syn-scan-capture.png) |
| SYN/ACK 响应 | `tcp.flags.syn==1 && tcp.flags.ack==1` | — |
| 漏洞 / 发现脚本 | `tcp` | [tcp](screenshots/03-wireshark/04-tcp-vuln-capture.png) |
| SMB 枚举 | `smb` | [smb](screenshots/03-wireshark/06-smb-capture.png) |
| HTTP 流量 | `http` | [http](screenshots/03-wireshark/07-http-capture.png) |
完整的过滤器速查表位于 [`docs/wireshark-filters.md`](docs/wireshark-filters.md)。
**数据包揭示了什么**
- **ICMP** — 爆发的 Echo Request / Echo Reply 对是主机发现的特征。([防御者视角](screenshots/03-wireshark/08-icmp-defender-view.png))
- **ARP** — 当 ICMP 被阻止时,Nmap 会回退到 ARP;跨子网的顺序 ARP 请求表明存在内部扫描。([防御者视角](screenshots/03-wireshark/09-arp-defender-view.png))
- **SYN 扫描** — 短时间内向多个端口发送大量 SYN 数据包,并伴随 SYN/ACK (开放) 或 RST (关闭) 回复,在没有完成握手的情况下暴露了端口状态。([防御者视角](screenshots/03-wireshark/10-syn-defender-view.png))
## 检测与防御
从防御者的角度来看,捕获的模式可直接对应到缓解措施:
- 关闭或过滤未使用的端口;禁用传统服务 (telnet, rexec/rlogin/rsh, finger),转而使用经过身份验证的加密替代方案。
- 为生命周期结束 (EOL) 的软件打补丁或将其替换 —— vsftpd 2.3.4 后门以及过时的 Samba/Apache/MySQL 版本是此处的直接风险。
- 部署针对扫描特征的 IDS/IPS 规则:高速 SYN 扇出、顺序 ARP 请求和 ICMP 扫描。
- 实施强 TLS 配置 (禁用匿名和 export 级别的 DH 密码套件)。
- 对网络进行分段,以便单个受损主机无法访问所有内容。
- 监控并保留数据包捕获 / 流量日志,以便在侦察演变为漏洞利用之前使其可见。
## 复现结果
由于原始扫描输出和捕获文件特定于环境,因此该仓库附带了一个脚本,可重新生成它们,而不是提交陈旧的文件。在 Kali 攻击者虚拟机上针对您自己的 Metasploitable2 目标运行它:
```
# 从 Kali 攻击机,在隔离的测试网络内
sudo ./scripts/recon.sh 192.168.159.131
```
`recon.sh` 运行完整的扫描序列,将 Nmap 输出以 normal / XML / grepable 格式保存在 `output/` 下,并使用 `tcpdump` 将流量捕获到 `.pcap` 文件中。
然后,您可以将 XML 转换为整洁的汇总表:
```
python3 scripts/parse_nmap.py output/sV.xml
```
要将源报告中的截图提取到 [`screenshots/`](screenshots) 目录树中 (如果您克隆的是已包含完整内容的仓库,则此步骤已完成):
```
python3 scripts/setup_screenshots.py
```
## 仓库结构
```
.
├── README.md
├── LICENSE
├── docs/
│ ├── nmap-commands.md # exact commands + purpose
│ └── wireshark-filters.md # display-filter cheat sheet
├── scripts/
│ ├── recon.sh # reproduces the full scan + pcap capture
│ ├── parse_nmap.py # nmap XML -> markdown summary table
│ └── setup_screenshots.py # extracts report images into screenshots/
├── screenshots/
│ ├── 01-setup/ # install, adapters, IPs, topology
│ ├── 02-nmap/ # each scan's output
│ └── 03-wireshark/ # captured traffic per filter
└── report/
└── (original project report, .docx)
```
## 参考文献
- Lyon, G. F. — *Nmap Network Scanning* (官方 Nmap 项目指南)。 https://nmap.org/book/
- The Nmap Project — *Nmap Reference Guide*。 https://nmap.org/docs.html
- Wireshark Foundation — *Wireshark User Guide*。 https://www.wireshark.org/docs/
- NIST SP 800-115 — *Technical Guide to Information Security Testing and Assessment*。
- NIST SP 800-94 — *Guide to Intrusion Detection and Prevention Systems (IDPS)*。
- MITRE — CVE-2011-2523 (vsftpd 2.3.4 backdoor)。 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2523
- RFCs: 791 (IP), 793 (TCP), 826 (ARP)。
## 免责声明
所有扫描和漏洞利用均在一个为此目的而构建的虚拟机 (Metasploitable2) 上的私人、隔离测试环境中进行。在您不拥有或没有明确书面测试许可的系统上运行这些工具或技术是违法的。请仅在您控制的环境中使用。
标签:CTI, Facebook API, 应用安全, 插件系统, 数据统计, 端口扫描, 网络安全, 逆向工具, 隐私保护