
一款专为OSCP实验室设计的信息收集与服务枚举自动化侦察工具,同时创建目录结构以存储每个主机的结果、发现和利用,推荐执行的命令以及用于存储战利品和标志的目录结构。
欢迎贡献!
Reconnoitre 是我多年来一直维护的备受喜爱的工具,但在我看来,它的功能远不如在 Interlace 中构建自己的枚举方法。我强烈建议任何希望超越OSCP进入信息安全领域的人花些时间研究这个项目。
本工具主要基于 Mike Czumak (T_v3rn1x) 公开发布的 OSCP 审查文章(链接),同时也深受 Re4son 的 mix-recon(链接)的影响和代码借鉴。虚拟主机扫描最初改编自 teknogeek 的工作,并深受 jobertabma 的虚拟主机发现脚本(链接)的影响。进一步的虚拟主机扫描代码改编自我与 Tim Kent 的一个项目,可在此处获得(链接)。
要安装 Reconnoitre,首先在您希望存放的位置执行以下命令以获取仓库的本地副本:
git clone https://github.com/codingo/Reconnoitre.git
之后,使用以下命令运行 setup.py:
python3 setup.py install
setup 运行完成后,Reconnoitre 将位于您的路径中(作为 reconnoitre),您可以在任何地方通过以下命令启动它:
reconnoitre <参数>
本工具可自由用于个人用途并复制,但应注明 Mike Czumak 的贡献,他最初开始了这一自动化工作。
注意:以下是一些示例,旨在让您了解本工具的潜在用例。您可以根据扫描目标增删命令行参数。
reconnoitre -t 192.168.1.5 -o /root/Documents/labs/ --services
示例输出如下:
root@kali:~/# reconnoitre -t 192.168.1.5 --services -o /root/Documents/labs/
__
|"""\-= RECONNOITRE
(____) An OSCP scanner
[#] Performing service scans
[*] Loaded single target: 192.168.1.5
[+] Creating directory structure for 192.168.1.5
[>] Creating scans directory at: /root/Documents/labs/192.168.1.5/scans
[>] Creating exploit directory at: /root/Documents/labs/192.168.1.5/exploit
[>] Creating loot directory at: /root/Documents/labs/192.168.1.5/loot
[>] Creating proof file at: /root/Documents/labs/192.168.1.5/proof.txt
[+] Starting quick nmap scan for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found HTTP service on 192.168.1.5:80
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[*] TCP quick scan completed for 192.168.1.5
[+] Starting detailed TCP/UDP nmap scans for 192.168.1.5
[+] Writing findings for 192.168.1.5
[>] Found MS SMB service on 192.168.1.5:445
[>] Found RDP service on 192.168.1.5:3389
[>] Found HTTP service on 192.168.1.5:80
[*] TCP/UDP Nmap scans completed for 192.168.1.5
这还会在每个目标的扫描文件夹中写入以下建议文件:
[*] Found HTTP service on 192.168.1.50:80
[>] Use nikto & dirb / dirbuster for service enumeration, e.g
[=] nikto -h 192.168.1.50 -p 80 > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_nikto.txt
[=] dirb http://192.168.1.50:80/ -o /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirb.txt -r -S -x ./dirb-extensions/php.ext
[=] java -jar /usr/share/dirbuster/DirBuster-1.0-RC1.jar -H -l /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -r /root/Documents/labs/192.168.1.50/scans/192.168.1.50_dirbuster.txt -u http://192.168.1.50:80/
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/common.txt -u http://192.168.1.50:80/ -s '200,204,301,302,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_common.txt -t 50
[=] gobuster -w /usr/share/seclists/Discovery/Web_Content/cgis.txt -u http://192.168.1.50:80/ -s '200,204,301,307,403,500' -e > /root/Documents/labs/192.168.1.50/scans/192.168.1.50_gobuster_cgis.txt -t 50
[>] Use curl to retreive web headers and find host information, e.g
[=] curl -i 192.168.1.50
[=] curl -i 192.168.1.50/robots.txt -s | html2text
[*] Found MS SMB service on 192.168.1.5:445
[>] Use nmap scripts or enum4linux for further enumeration, e.g
[=] nmap -sV -Pn -vv -p445 --script="smb-* -oN '/root/Documents/labs/192.168.1.5/nmap/192.168.1.5_smb.nmap' -oX '/root/Documents/labs/192.168.1.5/scans/192.168.1.5_smb_nmap_scan_import.xml' 192.168.1.5
[=] enum4linux 192.168.1.5
[*] Found RDP service on 192.168.1.5:3389
[>] Use ncrackpassword cracking, e.g
[=] ncrack -vv --user administrator -P /root/rockyou.txt rdp://192.168.1.5
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --hostnames
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services --quick
这将在目标范围内扫描所有服务,为存活主机创建文件结构,并根据这些机器上发现的服务写入其他命令的建议。删除 --quick 将进行更深入的探测,但会大大延长执行时间。
reconnoitre -t 192.168.1.1-252 -o /root/Documents/testing/ --pingsweep --services
本工具进行主机和服务扫描的基本要求是安装 nbtscan 和 nmap。如果您不使用主机扫描,而只想执行 ping 扫描和服务扫描,则只需安装 nmap 即可。生成的 findings.txt 通常会推荐其他工具,如果您未使用 Kali Linux,这些工具可能无法在您的发行版中使用。所有依赖和建议均原生支持 Kali Linux,这是使用本工具的推荐(但非必需)发行版。
除这些依赖外,输出中常会引用您可能需要查找的字典。如果您正在准备 OSCP,可以在 g0tmilk 的“推荐工具列表”线程中找到它们。否则,您可以在线找到大部分字典,或者它们已存在于 Kali Linux 安装中。
首先,如果您尚未安装 Docker,请先安装 Docker。Docker 安装
基本用法:
cd <Reconnoitre 目录>
docker build -t reconnoitre .
docker run reconnoitre -o outputdir -t 127.0.0.1
如果您希望文件存在于本地,可以将目录挂载到 Docker 容器中:
cd <Reconnoitre 目录>
docker build -t reconnoitre .
mkdir /path/to/dir
docker run -v /path/to/dir:/outputdir --services -o outputdir -t 127.0.0.1
| 参数 | 描述 |
|---|
| -h, --help | 显示帮助信息并退出 |
| -t TARGET_HOSTS | 设置目标地址范围或单个主机,也可以是包含主机的文件。 |
| -o OUTPUT_DIRECTORY | 设置结果写入的目标目录。 |
| -w WORDLIST | 可选地指定您自己的字典,用于预编译命令或执行的攻击。 |
| --pingsweep | 通过执行 ping 扫描发现存活主机,并在 OUTPUT_DIRECTORY 中写入新的 target.txt 文件。 |
| --dns, --dnssweep | 从目标列表中查找 DNS 服务器。 |
| --snmp | 从目标列表中查找响应 SNMP 请求的主机。 |
| --services | 对目标执行服务扫描,并写入进一步的命令建议。 |
| --hostnames | 尝试发现目标主机名并写入 hostnames.txt。 |
| --virtualhosts | 尝试使用指定的字典发现虚拟主机。可以通过发现的主机名进行扩展。 |
| --ignore-http-codes | 逗号分隔的 HTTP 状态码列表,虚拟主机扫描时将忽略这些状态码。 |
| --ignore-content-length | 忽略指定内容长度的响应。当服务器对每个虚拟主机猜测都返回静态页面时可能有用。 |
| --quiet | 抑制横幅和标题,将输出限制为可 grep 的结果。 |
| --quick | 在快速扫描并写入第一轮建议后立即跳转到下一个目标。 |
| --no-udp | 禁用 UDP 服务扫描(默认启用)。 |