Luzze19/Automated_pentest_framework
GitHub: Luzze19/Automated_pentest_framework
这是一个基于Python开发的自动化渗透测试教育框架,旨在模拟从主机发现、端口扫描到漏洞利用及权限提升的完整攻击链,并能自动生成评估报告。
Stars: 0 | Forks: 0
# NetPwn 框架
一个基于 Python 的教育性渗透测试框架,用于在本地网络上进行攻击阶段的实际探索。该项目覆盖了完整的攻击杀伤链:从发现到权限提升,并自动生成最终报告。
## 项目目标
本项目旨在通过从零开始实现本地网络攻击的各个阶段,来展示对渗透测试中使用的攻击技术的实际理解,而不依赖现有的框架(如 Metasploit)。
## 测试环境
该框架完全在一个隔离环境中开发和测试,该环境包含:
- **攻击机:** 配有无线接口 `wlan0` 的 Kali Linux
- **Linux 目标机:** 运行着故意配置了命令注入和文件上传漏洞的 PHP Web 应用程序的 Ubuntu(端口 80)。同时引入了 Sudo 配置错误和可访问的 cron 任务,以模拟现实的权限提升场景。
- **Windows 目标机:** 开放了 WinRM (5985) 和 RDP (3389) 端口的 Windows 11,SMB 共享上配置了弱凭据,以及一个指向可写路径并以 SYSTEM 身份运行的计划任务。
目标计算机上存在的所有漏洞都是为了测试框架而故意引入的。未涉及任何真实的或生产系统。
## 项目结构
```
.
├── main.py # Entry point and pipeline orchestration
├── discover.py # ARP discovery on the subnet
├── scanner.py # SYN scan and port-based OS fingerprinting
├── os_detection.py # Advanced fingerprinting via TTL and TCP Window size
├── enum_linux.py # Linux service enumeration (SSH, HTTP, HTTPS)
├── enum_windows.py # Windows service enumeration (SMB, RDP, WinRM, RPC)
├── exploit_linux.py # Linux exploitation (command injection, file upload, SSH brute force)
├── exploit_windows.py # Windows exploitation (SMB anonymous/authenticated, WinRM, RDP)
├── privilege_escalation_linux.py # Linux privilege escalation (sudo, SUID, PATH, cron)
├── privilege_escalation_windows.py # Windows privilege escalation (privileges, AIE, services, scheduled tasks)
├── report.py # Text report generation for Linux and Windows
├── utils.py # Shared utilities (I/O, parsing, WinRM helper)
└── logger.log # Runtime log file
```
## 执行流水线
```
ARP Discovery
│
▼
SYN Scan + OS Fingerprinting (port-based)
│
▼
TCP Fingerprinting (TTL + Window size)
│
▼
Service Enumeration (per OS)
│
▼
Exploitation (per OS)
│
▼
Privilege Escalation (per OS)
│
▼
Final Report (report_linux.txt / report_windows.txt)
```
## 环境要求
- Python 3.10+
- Kali Linux(或任何支持 raw socket 的发行版)
- 需要 Root 权限(Scapy 需要)
- 需要的外部工具:`smbclient`, `evil-winrm`, `xfreerdp`
### Python 依赖
```
# 创建并激活虚拟环境
python3 -m venv venv
source venv/bin/activate
# 安装依赖
pip install scapy paramiko requests impacket cryptography pywinrm
# 代码质量的可选工具
pip install black flake8
```
## 使用方法
```
sudo ./venv/bin/python main.py \
--subnet 192.168.1.0/24 \
--interface wlan0 \
--ip-low 192.168.1.50 \
--ip-upper 192.168.1.80 \
--loglevel DEBUG
```
### 可用参数
| 参数 | 必需 | 描述 |
|---|---|---|
| `--subnet` | ✅ | 要扫描的子网(例如 `192.168.1.0/24`) |
| `--interface` | ✅ | 要使用的网络接口(例如 `wlan0`) |
| `--ip-low` | ✅ | 范围下限(例如 `192.168.1.50`) |
| `--ip-upper` | ✅ | 范围上限(例如 `192.168.1.80`) |
| `--timeout` | ❌ | ARP 发现超时时间(秒)(默认:30) |
| `--exclude-router` | ❌ | 从发现中排除默认网关 |
| `--logfile` | ❌ | 日志文件路径(默认:`logger.log`) |
| `--loglevel` | ❌ | 日志级别:DEBUG, INFO, WARNING(默认:INFO) |
## 生成的输出
执行结束时,框架会生成以下文件:
| 文件 | 内容 |
|---|---|
| `host_discovered.json` | ARP 阶段发现的主机 |
| `scanner_result.json` | 每个目标的开放端口和操作系统猜测 |
| `os_result.json` | 精细化的操作系统指纹识别结果 |
| `enum_linux.json` | Linux 枚举结果 |
| `enum_windows.json` | Windows 枚举结果 |
| `exploit_linux.json` | Linux 漏洞利用尝试 |
| `exploit_windows.json` | Windows 漏洞利用尝试 |
| `privilege_escalation_linux.json` | Linux 权限提升结果 |
| `privilege_escalation_windows.json` | Windows 权限提升结果 |
| `report_linux.txt` | Linux 目标的最终报告 |
| `report_windows.txt` | Windows 目标的最终报告 |
| `logger.log` | 完整的执行日志 |
## 实现的技术
### Linux
- **命令注入** — 使用 `|`, `;`, `&&` 操作符在有漏洞的 PHP 端点上进行测试
- **文件上传** — 双扩展名 Webshell 上传及远程执行验证
- **SSH 暴力破解** — 针对常见凭据的字典攻击
- **Sudo 配置错误** — 通过 `sudo -l` 检测 `NOPASSWD` 二进制文件
- **SUID 二进制文件** — 通过 `find -perm -4000` 搜索 SUID 位二进制文件
- **PATH 劫持** — 识别 PATH 中可写的目录
- **Cron 任务** — 分析 `/etc/crontab` 和 root 执行的可写脚本
### Windows
- **SMB 匿名枚举** — 无凭据的共享列表
- **SMB 认证访问** — 使用弱凭据访问及读取文件
- **WinRM 认证** — 通过 evil-winrm 进行远程访问
- **RDP 认证** — 通过 xfreerdp 验证凭据
- **Windows 权限枚举** — 检测启用的高风险权限
- **AlwaysInstallElevated** — HKCU/HKLM 注册表项验证
- **不带引号的服务路径** — 识别具有不带引号路径的自动启动服务
- **计划任务** — 检测指向可写路径的 SYSTEM 任务
## 潜在的未来改进
该框架以 `sudo` 权限运行,这为使用 Linux capabilities 加强其安全模型提供了机会。具体而言:
- **发现后丢弃 capabilities:** 一旦 ARP 阶段(需要 `CAP_NET_RAW`)完成,该进程可以在进入后续阶段之前丢弃高权限。
- **选择性 `CAP_NET_RAW`:** 仅将该 capability 分配给 venv Python 二进制文件,而不是以 root 身份运行整个进程:
sudo setcap cap_net_raw+eip ./venv/bin/python3
- **最小权限原则:** 将需要 raw socket 的扫描阶段与流水线的其余部分分开,后者可以作为普通用户运行。
这些改进在当前版本中尚未实现,因为本项目的重点是展示攻击技术,但它们代表了迈向更安全设计的自然下一步。
## 可移植性说明
- Windows 权限提升检查包括对**意大利语输出**的支持(例如 `"Esegui come utente"`, `"Nome attività"`),这是在意大利语言环境的 Windows 11 虚拟机上进行测试所必需的。对于英语系统,英语检查也已并行存在。
- 测试期间使用的实验室凭据已在推送前直接在源文件中**替换为通用值**。存储库中不包含任何真实凭据。
## 使用的技术
- [Scapy](https://scapy.net/) — 数据包制作和 ARP/SYN 扫描
- [Paramiko](https://www.paramiko.org/) — SSH 客户端
- [Impacket](https://github.com/fortra/impacket) — SMB 协商
- [cryptography](https://cryptography.io/) — RDP 证书解析
- [pywinrm](https://github.com/diyan/pywinrm) — WinRM 客户端
- [requests](https://requests.readthedocs.io/) — HTTP 漏洞利用
## 作者
本项目出于教育目的开发,作为攻击性网络安全学习路径的一部分。
标签:ARP发现, Python, RDP, SMB, SYN扫描, WinRM, 代码生成, 命令注入, 域名解析, 威胁模拟, 字符串匹配, 提权, 操作系统指纹识别, 攻击链, 教育框架, 数据展示, 数据统计, 文件上传, 无后门, 本地网络, 渗透测试工具, 端口扫描, 红队, 网络安全, 网络调试, 自动化, 自然语言处理, 逆向工具, 错误配置检测, 隐私保护