VPN整体侦察、测试、枚举与利用工具包
🚩 这是 vortex 的公共仓库,如需最新版本和更新,请考虑通过 https://porchetta.industries/ 支持我们
VPN 总体侦察、测试、枚举与利用工具包
如果您想赞助本项目并获得 vortex 的最新更新、问题修复和新功能,请通过 https://porchetta.industries/ 支持我们
欢迎加入 Discord!
一个非常简单的Python框架,灵感来源于 [SprayingToolkit][1],旨在自动化检测、枚举和攻击常见 O365 及 VPN 端点(如 Cisco、Citrix、Fortinet、Pulse 等)所需的大部分流程。
使 VPN 喷洒阶段变得更快、更简单。此外,由于其灵活性,该工具可以很容易地添加到现有的 OSINT 工作流中。
Vortex 主要协助执行以下任务:
使用 pip3 安装先决条件如下:``` sudo -H pip3 install -r requirements.txt
### 使用 Virtualenv 安装
否则,您可以使用虚拟环境安装先决条件:
###### 在 Windows 上```
virtualenv venv
venv\Scripts\activate
pip install -r requirements.txt
python3 -m virtualenv venv source venv/bin/activate pip install -r requirements.txt
## 使用方法
使用该工具非常直接,但有一个工作流程需要遵循。该工具使用一个SQLite数据库来存储当前攻击的相关信息。
### 工作空间
工作空间表示该工具使用的数据库文件。名称应只是一个简单的标签,用于标识当前的攻击、项目或目标。
每个工作空间会分配一个SQLite数据库。当你指定一个工作空间名称时,例如:```
python manage.py -w workspace1
你实际表达的是“我希望操作 workspace1.db 文件”。
为了正常运行,Vortex 需要使用正确的模式初始化数据库。
为此,唯一需要做的就是执行命令:```
python manage.py -w workspace1 db -c init
如果用户尝试跳过此阶段,Vortex 将直接在屏幕上打印首先需要启动的正确命令。```
[-] Workspace not initialized. Please initialise it using:
python manage.py -w workspace1 db -c init
相反,当针对一个现有的、已初始化的数据库运行相同的命令时,Vortex 会在覆盖数据库文件之前要求确认:``` [-] The DB file exists and it was initialised, overwrite? [y|n] $> y
### 操作与命令
Vortex 接受一个位置参数,即'操作'(Action),以及其他键值参数。
其中最重要的是命令参数(`-c cmd`)。与操作值结合,
命令定义了 Vortex 应执行的操作。
可以通过帮助查看支持的操作列表:```
python manage.py -h
Vortex: VPN Overall Reconnaissance, Enumeration and eXploitation
positional arguments:
{db,domain,import,office,profile,search,tor,validate,vpn}
Action to execute
optional arguments:
-h, --help show this help message and exit
-w WORKSPACE, --workspace WORKSPACE
Workspace to use
-c COMMAND, --command COMMAND
Command for the action
-D DOMAIN, --domain DOMAIN
Domain under attack
-C COMPANY, --company COMPANY
Company under attack
-l LOCATION, --location LOCATION
Location of the company under attack (IE, UK, US, ...)
-u URL, --url URL VPN Endpoint Origin (schema://domain:port)
-t ENDPOINT_TYPE, --endpoint-type ENDPOINT_TYPE
Target Endpoint Type
-U USER, --user USER User name
-E EMAIL, --email EMAIL
User email
-N NAME, --name NAME User full name
-R ROLE, --role ROLE User job
-s SQL, --sql SQL SQL statement
-O EXPORT_FILE, --export-file EXPORT_FILE
Export file
-Q QUOTES, --quotes QUOTES
Produce an Excel safe CSV
-nh, --no-headers Remove CSV headers
-k KEYWORDS, --keywords KEYWORDS
Search keywords
-P PASSWORDS_FILE, --passwords-file PASSWORDS_FILE
Password file for spraying
-L, --leaks Use leaks for spraying
-I IMPORT_FILE, --import-file IMPORT_FILE
Import file
从帮助信息中可以看出,每个动作所支持的命令列表在任何地方都没有明确指定。这是因为没有必要直接指定一个命令。实际上,如果没有指定命令,Vortex 会要求用户从该动作可用的命令中选择一个。``` python manage.py -w workspace1 db
,d#####F^ ,yy############yy ^9#######, ,######" y###################by ^9######, ######^ y#####F"" ^"9######y "######] d#####^ ,#####" by klezVirus ^9#####, ^######, ,#####] ,####F yy#######y, ^9####b ^###### [##### ####F ,###F""'"9####, 9####] 9##### #####F [#### ,##F^ yy "###b 9####, ^#####] #####] [###] ### dF""#b ^###] ^####] #####] 9####b [#### 9##, 9bd [#] [##b ##### [##### [##### ####, 9##y, ,y##^ d##F ##### [####] #####b ^####y ^"#####" d###^ ,####] d##### [#####, ^####by ,d###^ d####^ #####F 9#####y "#####byyyyyyd####F^ d####F [#####9 9#####b, ""############"^ ,d####F ,###### ^######b, ""'""'"^ ,d#####F d#####F
[*] Select a command: 0 : init 1 : sql 2 : add-endpoint 3 : add-user 4 : drop-user 5 : truncate-table 6 : export $>
同样适用于特定例程所需的参数。如果某个参数在运行时难以输入,Vortex会友好地提醒用户该参数是必需的。否则,Vortex将引导用户选择或输入必要的参数。
例如,如果用户想要导出特定的表甚至某一列,唯一需要做的就是启动导出命令,如下面的图片所示:

这种行为使得Vortex非常易于使用。
### 通用工作流程
Vortex被设计为遵循特定的操作工作流程,总结如下模式:

### 操作
#### 收集用户
收集特定目标的有效用户可以通过三种不同的数据源完成:
* LinkedIn
由于违反LinkedIn用户政策,该数据源已被移除。您仍然可以使用[GoMapEnum](https://github.com/nodauf/GoMapEnum)在LinkedIn上操作,然后使用`import`命令导入电子邮件地址。
再次提醒,使用此功能违反了LinkedIn用户协议,如LinkedIn用户协议第[8.2](https://www.linkedin.com/legal/user-agreement#dos)点所述:
> 您同意不会:[...]
> 2. 开发、支持或使用软件、设备、脚本、机器人或任何其他手段或过程(包括爬虫、浏览器插件和附加组件或任何其他技术)来抓取服务或以其他方式复制服务中的个人资料及其他数据;
* CrossLinked
为了部分替代上述功能,该工具嵌入了[CrossLinked](https://github.com/m8r0wn/CrossLinked)的改编版本。该工具将尝试使用Google和Bing检测公司的员工。当然,这不如直接在LinkedIn上搜索,但它相当有用。
为了正确操作,该工具将询问用户应使用哪种用户名格式(例如 john.doe、j.doe 或 d.john),以及目标域使用的标准域名是什么。```
python manage.py -w workspace1 search -c crosslinked -D evilcorp.com -C "Evil Corporation"
,d#####F^ ,yy############yy ^9#######,
,######" y###################by ^9######,
######^ y#####F"" ^"9######y "######]
d#####^ ,#####" by klezVirus ^9#####, ^######,
,#####] ,####F yy#######y, ^9####b ^######
[##### ####F ,###F""'"9####, 9####] 9#####
#####F [#### ,##F^ yy "###b 9####, ^#####]
#####] [###] ### dF""#b ^###] ^####] #####]
9####b [#### 9##, 9bd [#] [##b ##### [#####
[##### ####, 9##y, ,y##^ d##F ##### [####]
#####b ^####y ^"#####" d###^ ,####] d#####
[#####, ^####by ,d###^ d####^ #####F
9#####y "#####byyyyyyd####F^ d####F [#####9
9#####b, ""############"^ ,d####F ,######
^######b, ""'""'"^ ,d#####F d#####F
[+] Select a format for usernames
0: firstlast
1: lastfirst
2: first.last
3: last.first
4: last.f
5: flast
6: lfirst
7: f.last
8: l.first
9: first
10: last
$> 2
[*] Starting search on Google and Bing with CrossLinked
[>] Searching google for valid employee names at "Evil Corporation"
[>] Searching bing for valid employee names at "Evil Corporation"
[>] Found 133 LinkedIn accounts!
[*] Updating DB ...
[+] Done!
该数据源使用一个精简修改版的theHarvester运行。 该工具将尝试从Google(被动收集)中使用Google Dorks提取姓名/电子邮件,并从公司网站(主动收集)中提取。``` python manage.py -w workspace1 search -c google -D evilcorp.com
[] Starting passive/active search on Google [] (PASSIVE) Searching for emails NOT within the domain's site: evilcorp.com -site:evilcorp.com [*] (ACTIVE) Searching for emails within the domain's sites: evilcorp.com [+] Scraping any emails from: https://evilcorp.com [+] Scraping any emails from: https://www.facebook.com/EvilCorp/ ...
[email protected] [email protected] [>] Found 2 mail [*] Updating DB ... [+] Done!
* PwnDB
此源使用移植自[sn0int](https://github.com/kpcyrd/sn0int)的版本运行。
**注意**:此功能需要连接到TOR网络。在Windows上,可以使用Vortex附带的嵌入版本。而在Linux上,则需要安装tor包(例如在Kali上执行`sudo apt-get install tor`)。