这就像打保龄球时加上了护栏。 - @ippsec
AutoRecon
AutoRecon 是一款多线程网络侦察工具,可对服务进行自动枚举。它旨在作为一款节省时间的工具,用于 CTF(夺旗赛)和其他渗透测试环境(例如 OSCP)。它在真实世界的渗透项目(engagement)中可能也很有用。
该工具的工作方式是首先执行端口扫描/服务探测扫描。根据这些初步结果,该工具将使用多种不同的工具对这些服务启动进一步的枚举扫描。例如,如果发现了 HTTP 服务,它就会启动 feroxbuster
(以及许多其他工具)。
该工具中的所有内容都是高度可配置的。默认配置不执行任何自动化的漏洞利用,以确保该工具符合 OSCP 的考试规则。如果您希望向配置中添加自动漏洞利用工具,您将自行承担风险。对于因滥用此工具而导致的负面行为,作者概不负责。
免责声明:虽然 AutoRecon 致力于执行尽可能多的服务识别和枚举,但不能保证每个服务都会被识别,也不能保证每个服务都会被完全枚举。AutoRecon 的用户(尤其是学生)应在运行 AutoRecon 的同时进行自己的人工枚举。请勿在考试、CTF 或其他项目中单独依赖此工具。
📜 起源
AutoRecon 的灵感来源于作者在 OSCP 实验中使用的三个工具:Reconnoitre、ReconScan 和 bscan。虽然这三个工具都很有用,但没有一个能单独满足我所期望的功能。AutoRecon 结合了上述工具的最佳特性,同时还实现了许多新功能,以帮助测试人员对多个目标进行枚举。
✨ 特性
- 支持多种目标格式,包括 IP 地址、IP 范围(CIDR 表示法)和可解析的主机名。同时也支持 IPv6。
- 可以并发扫描多个目标,如果有多核处理器,则会加以利用。
- 先进的插件系统,可以轻松创建新的扫描。
- 可定制的端口扫描插件,使您的初始扫描更加灵活。
- 可定制的服务扫描插件,用于进一步的枚举。
- 为那些自动化意义不大的情况提供建议的手动后续命令。
- 能够将端口扫描限制为 TCP/UDP 端口的组合。
- 能够通过提供有关应开放服务的信息来跳过端口扫描阶段。
- 全局和每次扫描的模式匹配功能,可从噪音中高亮并提取重要信息。
- 直观的目录结构,便于结果收集。
- 对运行的命令进行完整日志记录,如果失败则记录错误。
- 强大的配置文件让您每次都能使用自己喜欢的设置。
- 标签系统让您可以包含或排除某些插件。
- 全局和针对单个目标的超时设置,以防您的时间有限。
- 四级详细输出模式,可通过命令行选项控制,也可在扫描过程中使用上/下箭头键调整。
- 彩色输出,用于区分不同的信息片段。出于无障碍性考虑,可以关闭此功能。
🔧 安装
有三种安装 AutoRecon 的方法:pipx、pip 和手动安装。在使用任何一种方法安装之前,需要满足某些要求。如果您最近没有刷新过 apt 缓存,请运行以下命令以安装最新的可用软件包:
Bash
sudo apt update
🐍 Python 3
AutoRecon 需要使用 Python 3.8+ 和 pip,可以在 Kali Linux 上使用以下命令安装:
Bash
sudo apt install python3
sudo apt install python3-pip
📦 依赖包
AutoRecon 中使用的几个命令引用了 SecLists 项目,目录位于 /usr/share/seclists/
。您可以手动将 SecLists 项目下载到此目录(https://github.com/danielmiessler/SecLists),或者如果您正在使用 Kali Linux(强烈推荐),可以运行以下命令:
Bash
sudo apt install seclists
如果您不安装 SecLists,AutoRecon 仍然可以运行,但有几个命令可能会失败,一些手动命令也可能无法运行。
此外,根据您的操作系统,可能需要安装以下命令:
curl
dnsrecon
enum4linux
feroxbuster
gobuster
impacket-scripts
nbtscan
nikto
nmap
onesixtyone
oscanner
redis-tools
smbclient
smbmap
snmpwalk
sslscan
svwar
tnscmd10g
whatweb
在 Kali Linux 上,您可以使用以下命令确保这些都已安装:
Bash
sudo apt install seclists curl dnsrecon enum4linux feroxbuster gobuster impacket-scripts nbtscan nikto nmap onesixtyone oscanner redis-tools smbclient smbmap snmp sslscan sipvicious tnscmd10g whatweb
🥇 安装方法 #1:pipx(推荐)
推荐您使用 pipx
来安装 AutoRecon。pipx 会将 AutoRecon 安装在自己的虚拟环境中,并使其在全局上下文中可用,从而避免了软件包依赖冲突和由此导致的不稳定性。首先,使用以下命令安装 pipx:
Bash
sudo apt install python3-venv
python3 -m pip install --user pipx
python3 -m pipx ensurepath
运行这些命令后,您需要重新加载您的 ~/.bashrc
或 ~/.zshrc
文件(或打开一个新标签页)才能使用 pipx。
使用以下命令安装 AutoRecon:
Bash
pipx install git+https://github.com/Tib3rius/AutoRecon.git
请注意,如果您想使用 sudo
运行 AutoRecon(对于更快的 SYN 扫描和 UDP 扫描是必需的),您必须使用以下示例之一:
Bash
sudo env "PATH=$PATH" autorecon [OPTIONS]
sudo $(which autorecon) [OPTIONS]
🥈 安装方法 #2:pip
或者,您可以使用 pip
来安装 AutoRecon,命令如下:
Bash
python3 -m pip install git+https://github.com/Tib3rius/AutoRecon.git
请注意,如果您想使用 sudo
运行 AutoRecon(对于更快的 SYN 扫描和 UDP 扫描是必需的),您将必须以 root 用户(或使用 sudo)运行上述命令。
与 pipx
类似,如果使用 pip
安装,您只需执行 autorecon
即可运行 AutoRecon。
🥉 安装方法 #3:手动安装
如果您不想使用 pip
或 pipx
,您仍然可以手动安装并作为脚本执行 autorecon.py
。在 AutoRecon 目录中,安装依赖项:
Bash
python3 -m pip install -r requirements.txt
然后您就可以运行 autorecon.py
脚本了:
Bash
python3 autorecon.py [OPTIONS] 127.0.0.1
🚀 升级
pipx
当使用 pipx 安装 AutoRecon 时,升级是最简单的,这也是推荐该方法的原因。只需运行以下命令:
Bash
pipx upgrade autorecon
pip
如果您使用 pip 安装了 AutoRecon,您需要先卸载 AutoRecon,然后使用相同的安装命令重新安装:
Bash
python3 -m pip uninstall autorecon
python3 -m pip install git+https://github.com/Tib3rius/AutoRecon.git
手动安装
如果您是手动安装 AutoRecon,只需切换到 AutoRecon 目录并运行以下命令:
Bash
git pull
假设您没有修改 AutoRecon 目录中的任何内容,这应该会从 GitHub 仓库拉取最新的代码,之后您可以像往常一样使用 autorecon.py
脚本运行 AutoRecon。
插件
插件更新过程正在开发中。在此之前,升级后,请删除 ~/.local/share/AutoRecon
目录,然后带任意参数运行 AutoRecon,以重新生成最新文件。
📖 用法
AutoRecon 使用 Python 3 的特定功能,不支持 Python 2。
usage: autorecon [-t TARGET_FILE] [-p PORTS] [-m MAX_SCANS] [-mp MAX_PORT_SCANS] [-c CONFIG_FILE] [-g GLOBAL_FILE] [--tags TAGS]
[--exclude-tags TAGS] [--port-scans PLUGINS] [--service-scans PLUGINS] [--reports PLUGINS] [--plugins-dir PLUGINS_DIR]
[--add-plugins-dir PLUGINS_DIR] [-l [TYPE]] [-o OUTPUT] [--single-target] [--only-scans-dir] [--no-port-dirs]
[--heartbeat HEARTBEAT] [--timeout TIMEOUT] [--target-timeout TARGET_TIMEOUT] [--nmap NMAP | --nmap-append NMAP_APPEND]
[--proxychains] [--disable-sanity-checks] [--disable-keyboard-control] [--force-services SERVICE [SERVICE ...]] [--accessible]
[-v] [--version] [--curl.path VALUE] [--dirbuster.tool {feroxbuster,gobuster,dirsearch,ffuf,dirb}]
[--dirbuster.wordlist VALUE [VALUE ...]] [--dirbuster.threads VALUE] [--dirbuster.ext VALUE]
[--onesixtyone.community-strings VALUE] [--global.username-wordlist VALUE] [--global.password-wordlist VALUE]
[--global.domain VALUE] [-h]
[targets ...]
网络侦察工具,用于端口扫描并自动枚举在多个目标上发现的服务。
位置参数:
targets 要扫描的IP地址 (例如 10.0.0.1), CIDR 表示法 (例如 10.0.0.1/24), 或可解析的主机名 (例如 foo.bar)。
可选参数:
-t TARGET_FILE, --target-file TARGET_FILE
从文件中读取目标。
-p PORTS, --ports PORTS
要扫描的以逗号分隔的端口/端口范围列表。通过在列表前添加 T:/U: 来指定TCP/UDP端口。要同时扫描TCP/UDP,将端口放在开头或指定 B:,例如 53,T:21-25,80,U:123,B:123。默认值: None
-m MAX_SCANS, --max-scans MAX_SCANS
要运行的最大并发扫描数。默认值: 50
-mp MAX_PORT_SCANS, --max-port-scans MAX_PORT_SCANS
要运行的最大并发端口扫描数。默认值: 10 (除非指定,否则约为 max-scans 的 20%)
-c CONFIG_FILE, --config CONFIG_FILE
AutoRecon 的配置文件位置。默认值: ~/.config/AutoRecon/config.toml
-g GLOBAL_FILE, --global-file GLOBAL_FILE
AutoRecon 的全局文件位置。默认值: ~/.config/AutoRecon/global.toml
--tags TAGS 用于确定应包含哪些插件的标签。用加号 (+) 分隔标签以将它们组合在一起。用逗号 (,) 分隔组以创建多个组。要包含一个插件,它必须至少在一个组中拥有所有指定的标签。默认值: default
--exclude-tags TAGS 用于确定应排除哪些插件的标签。用加号 (+) 分隔标签以将它们组合在一起。用逗号 (,) 分隔组以创建多个组。要排除一个插件,它必须至少在一个组中拥有所有指定的标签。默认值: None
--port-scans PLUGINS 为列出的 PortScan 插件(逗号分隔)覆盖 --tags / --exclude-tags。默认值: None
--service-scans PLUGINS
为列出的 ServiceScan 插件(逗号分隔)覆盖 --tags / --exclude-tags。默认值: None
--reports PLUGINS 为列出的 Report 插件(逗号分隔)覆盖 --tags / --exclude-tags。默认值: None
--plugins-dir PLUGINS_DIR
插件目录的位置。默认值: ~/.local/share/AutoRecon/plugins
--add-plugins-dir PLUGINS_DIR
要添加到主插件目录的附加插件目录的位置。默认值: None
-l [TYPE], --list [TYPE]
列出所有插件或特定类型的插件。例如 --list, --list port, --list service
-o OUTPUT, --output OUTPUT
结果的输出目录。默认值: results
--single-target 仅扫描单个目标。不会创建以目标命名的目录。相反,目录结构将在输出目录内创建。默认值: False
--only-scans-dir 仅为结果创建 "scans" 目录。其他目录(例如 exploit, loot, report)将不会被创建。默认值: False
--no-port-dirs 不为端口创建目录(例如 scans/tcp80, scans/udp53)。而是将所有结果存储在 "scans" 目录本身。默认值: False
--heartbeat HEARTBEAT
指定扫描状态消息的心跳间隔(以秒为单位)。默认值: 60
--timeout TIMEOUT 指定 AutoRecon 应运行的最长时间(以分钟为单位)。默认值: None
--target-timeout TARGET_TIMEOUT
指定在放弃并转到下一个目标之前,应扫描一个目标的最长时间(以分钟为单位)。默认值: None
--nmap NMAP 覆盖扫描中的 {nmap_extra} 变量。默认值: -vv --reason -Pn -T4
--nmap-append NMAP_APPEND
追加到扫描中的默认 {nmap_extra} 变量。默认值:
--proxychains 如果您通过 proxychains 运行 AutoRecon,请使用此选项。默认值: False
--disable-sanity-checks
禁用本会阻止扫描运行的健全性检查。默认值: False
--disable-keyboard-control
如果您在 SSH 或 Docker 中,禁用键盘控制 ([s]tatus, Up, Down)。
--force-services SERVICE [SERVICE ...]
一个以空格分隔的服务列表,样式如下: tcp/80/http tcp/443/https/secure
--accessible 尝试使 AutoRecon 的输出对屏幕阅读器更易于访问。默认值: False
-v, --verbose 启用详细输出。重复以获得更详细的输出。
--version 打印 AutoRecon 版本并退出。
-h, --help 显示此帮助消息并退出。
插件参数:
这些是某些插件的可选参数。
--curl.path VALUE 要在 Web 服务器上 curl 的路径。默认值: /
--dirbuster.tool {feroxbuster,gobuster,dirsearch,ffuf,dirb}
用于目录爆破的工具。默认值: feroxbuster
--dirbuster.wordlist VALUE [VALUE ...]
目录爆破时使用的字典。用空格分隔多个字典。默认值: ['~/.local/share/AutoRecon/wordlists/dirbuster.txt']
--dirbuster.threads VALUE
目录爆破时使用的线程数。默认值: 10
--dirbuster.ext VALUE
您希望模糊测试的扩展名(无点,逗号分隔)。默认值: txt,html,php,asp,aspx,jsp
--onesixtyone.community-strings VALUE
包含要尝试的 community strings 列表的文件。默认值: /usr/share/seclists/Discovery/SNMP/common-snmp-community-strings-onesixtyone.txt
全局插件参数:
这些是所有插件都可以使用的可选参数。
--global.username-wordlist VALUE
用户名字典,用于暴力破解。默认值: /usr/share/seclists/Usernames/top-usernames-shortlist.txt
--global.password-wordlist VALUE
密码字典,用于暴力破解。默认值: /usr/share/seclists/Passwords/darkweb2017-top100.txt
--global.domain VALUE
要使用的域名(如果已知)。用于 DNS 和/或 Active Directory。默认值: None
🗣️ 详细级别
AutoRecon 支持四个详细级别:
- (无) 最小化输出。AutoRecon 将在扫描目标开始/结束时进行通告。
- (-v) 详细输出。AutoRecon 将额外通告插件何时开始运行,并报告开放端口和已识别的服务。
- (-vv) 非常详细的输出。AutoRecon 将额外指定插件正在运行的确切命令,高亮显示命令输出中匹配的任何模式,并在插件结束时进行通告。
- (-vvv) 极其详细的输出。AutoRecon 将输出所有内容。真的是所有当前正在运行的命令的每一行。当并发扫描多个目标时,这可能会导致大量的输出。不建议使用 -vvv,除非您绝对需要查看命令的实时输出。
注意:您可以在扫描过程中通过按上/下箭头键来更改 AutoRecon 的详细级别。
📁 结果
默认情况下,结果将存储在 ./results
目录中。每个目标都会创建一个新的子目录。该子目录的结构如下:
.
├── exploit/
├── loot/
├── report/
│ ├── local.txt
│ ├── notes.txt
│ ├── proof.txt
│ └── screenshots/
└── scans/
├── _commands.log
├── _manual_commands.txt
├── tcp80/
├── udp53/
└── xml/
- exploit 目录用于存放您为目标下载/编写的任何漏洞利用代码。
- loot 目录用于存放您在目标上发现的任何战利品(例如哈希、有趣的文件)。
- report 目录包含一些自动生成的对报告有用的文件和目录:
local.txt
可用于存储在目标上找到的local.txt
标志。notes.txt
应包含一个基本模板,您可以在其中为每个发现的服务编写笔记。proof.txt
可用于存储在目标上找到的proof.txt
标志。screenshots
目录用于存放您用于记录目标利用过程的截图。
- scans 目录是 AutoRecon 执行的所有扫描结果的存放地。这包括端口扫描/服务探测扫描,以及任何服务枚举扫描。它还包含另外两个文件:
_commands.log
包含了 AutoRecon 对目标运行的每个命令的列表。如果其中一个命令失败,而您想修改后再次运行它,这将非常有用。_manual_commands.txt
包含了任何被认为“过于危险”而不能自动运行的命令,原因可能是它们太具侵入性,需要根据人工分析进行修改,或者在有人监控时效果更好。
默认情况下,会为每个开放端口创建目录(例如 tcp80
、udp53
),在这些端口上发现的服务的扫描结果会存储在各自的目录中。您可以使用 --no-port-dirs
命令行选项禁用此行为,扫描结果将改为存储在 scans
目录本身。
如果扫描导致错误,一个名为 _errors.log
的文件也会出现在 scans
目录中,并附带一些细节以提醒用户。
如果输出与定义的模式匹配,一个名为 _patterns.log
的文件也会出现在 scans
目录中,并包含有关匹配输出的详细信息。
scans/xml
目录将任何 XML 输出(例如来自 Nmap 扫描的输出)与主扫描输出分开存储,这样 scans
目录本身就不会变得过于杂乱。
🌟 用户评价
在我的 OSCP 考试期间,AutoRecon 是无价之宝,它把我从自己手动执行主动信息收集命令的繁琐工作中解救出来。我能够在开始攻击一个目标时,所有我需要的信息都清晰地摆在我面前。我强烈推荐这个工具给任何在 PWK 实验室、OSCP 考试,或其他环境如 VulnHub 或 HTB 中的人。对于刚开始 OffSec 之旅的新手和经验丰富的老手来说,这都是一个很棒的工具。只是要确保在这两个阶段之间的某个时候,你花时间去了解其“底层”发生了什么,以及它如何/为什么扫描它所扫描的内容。
- b0ats (拿下了全部 5 台考试主机)
哇,真是个好发现!在使用 AutoRecon 之前,ReconScan 是我攻击目标的首选枚举脚本,因为它在发现开放端口后会自动运行枚举命令。唯一缺少的是自动为渗透测试人员在项目期间可能需要的关键目录(exploit、loot、report、scans)进行创建。Reconnoitre 能做到这一点,但不会自动为你运行那些命令。我原以为 ReconScan 是最棒的,直到我尝试了 AutoRecon。它太棒了!它结合了 Reconnoitre(自动创建目录)和 ReconScan(自动执行枚举命令)的最佳特性。我所要做的就是在单个或一组目标上运行它,然后就可以开始查看它已经收集的信息,同时它会继续进行其余的扫描。事实胜于雄辩 :) 通过了 OSCP 考试!感谢 Tib3rius!
- werk0ut
一个朋友向我推荐了 AutoRecon,所以我在 PWK 实验室里试了一下。AutoRecon 会启动我们都一直使用的常用工具,无论是 nmap 还是 nikto,并且还会根据你正在攻击的目标创建一个很好的子文件夹系统。AutoRecon 最强的特性是速度;在 OSCP 考试中,当我在处理另一个目标时,我让这个工具在后台运行,几分钟之内,所有 AutoRecon 的输出就已经等着我了。AutoRecon 会创建一个包含你应该手动尝试的命令的文件,其中一些可能需要调整(例如,hydra 暴力破解命令)。有这样一个额外的检查清单是很好的。
- tr3mb0 (拿下了 4/5 台考试主机)
在参加 OSCP 和建立我的渗透测试方法论时,接触到 AutoRecon 对我来说是一个彻底的游戏规则改变者。AutoRecon 是一个多线程侦察工具,它结合并自动化了流行的枚举工具,为你完成了大部分繁重的工作。没有比这更好的了!在我的 OSCP 考试主机上运行 AutoRecon 后,我得到了一个信息宝库,帮助我开始了对每台主机的攻击,并一次性通过。这个工具最好的部分是它会根据初始端口扫描自动启动进一步的枚举扫描(例如,如果检测到 SMB,就运行 enum4linux)。唯一不好的地方是我没有更早地使用这个工具!谢谢 Tib3rius。
- rufy (拿下了 4/5 台考试主机)
AutoRecon 允许安全研究员迭代地扫描主机并识别潜在的攻击向量。它真正的力量在于,当攻击者正在处理另一台主机时,它可以在后台执行扫描。我能够启动我的扫描,完成我正在处理的特定主机 - 然后回来发现所有相关的扫描都已完成。然后我能够立即开始尝试获取初始访问权限,而不是手动执行主动扫描过程。我将在未来的渗透测试和 CTF 中继续使用 AutoRecon,并强烈建议你也这样做。
- waar (拿下了 4.99/5 台考试主机)
“如果你每天必须做一项任务超过两次,你就需要将它自动化。” 这是一位老老板给我的建议。AutoRecon 将这一教训铭记于心。无论你是在参加考试,还是在 PWK 实验室,你都可以启动 AutoRecon,让它发挥它的魔力。在我上次考试中,当我处理缓冲区溢出时,我就让它在运行。等我完成时,我需要的所有枚举数据都已准备好供我查阅。10/10 推荐给任何刚接触 CTF 的人,以及已经从事这一行很久的人。
- whoisflynn
我太爱这个工具了,所以我写了它。
- Tib3rius (拿下了全部 5 台考试主机)
我强烈推荐任何准备考 OSCP、打 CTF 或在 HTB 上玩的人都来试试这个工具。在使用它到 PWK 实验室之前,我已经在 HTB 上使用 AutoRecon 一个月了,它帮助我通过了 OSCP 考试。如果你在确定枚举方法论方面有困难,我鼓励你遵循这个脚本使用的流程和技术。它省去了你可能已经习惯的大量繁琐工作,同时提供了组织良好的子目录,方便快速查阅,让你不会手忙脚乱。它提供的手动命令对于那些在你已经无计可施时需要特殊处理的特定情况非常有用。这是一个非常有价值的工具,强烈推荐。
- d0hnuts (拿下了全部 5 台考试主机)
Autorecon 不仅仅是另一个工具,它是一个用于渗透项目(engagement)的侦察关联框架。这帮助我在处理其他目标时启动了一大堆扫描。这在时间管理上非常有帮助。它帮助我在 pwk 考试中拿下了 4/5 的机器!结果:通过!
- Wh0ami (拿下了 4/5 台考试主机)
我第一次听说 AutoRecon 时,我问自己是否真的需要这个,我的枚举方法还可以……我抱着开放的心态尝试了一下,立刻就被它生成的信息量给震惊了。一旦我习惯了它,并开始阅读输出,我意识到我错过了多少东西。我在 OSCP 考试中使用了它,它找到了我本来永远也找不到的东西。我坚信,没有 AutoRecon 我会失败。这是一个很棒的工具,我对 Tib3rius 能创造出这样的东西印象深刻。绝对是我已经在向其他人推荐的东西,包括你!
- othornew
AutoRecon 在我的 OSCP 考试中帮我节省了宝贵的时间,让我可以花更少的时间扫描系统,而花更多的时间攻破它们。这个软件物超所值!
- TorHackr
这个神奇的工具让枚举变得轻而易举,只需启动它,然后看着多线程的美妙之处吐出大量信息,而这些信息本来需要执行大量命令才能获得。我确信,在 OSCP 考试中仅使用 AutoRecon,一半的努力就已经完成了。强烈推荐!
- Arman (解决了 4.5/5 台考试主机)
Comments NOTHING