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, 代码生成, 命令注入, 域名解析, 威胁模拟, 字符串匹配, 提权, 操作系统指纹识别, 攻击链, 教育框架, 数据展示, 数据统计, 文件上传, 无后门, 本地网络, 渗透测试工具, 端口扫描, 红队, 网络安全, 网络调试, 自动化, 自然语言处理, 逆向工具, 错误配置检测, 隐私保护