
VPN全体偵察、テスト、列挙、およびエクスプロイトツールキット
🚩 こちらはvortexの公開リポジトリです。最新バージョンとアップデートについては、https://porchetta.industries/ からのサポートをご検討ください。
VPN総合偵察、テスト、列挙、エクスプロイトツールキット
このプロジェクトをスポンサーしていただき、vortexの最新アップデート、最新の修正、最新機能を入手したい場合は、https://porchetta.industries/ でサポートをお願いします。
Discordで遊びに来てください!
[SprayingToolkit][1]に触発された、非常にシンプルなPythonフレームワークです。 一般的な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データベースを使用します。
### ワークスペース
ワークスペースは、ツールが使用するデータベースファイルを表します。名前は、現在の攻撃、プロジェクト、ターゲットをラベル付けするための単純な名前にする必要があります。
各ワークスペースには1つのSQLiteデータベースが割り当てられます。ワークスペース名を指定する場合、例:```
python manage.py -w workspace1
実際に言っているのは、「workspace1.db ファイルを操作したい」ということです。
正しく動作するためには、Vortex は正しいスキーマで DB を初期化する必要があります。 そのためには、以下のコマンドを実行するだけです: vortex workspace init``` python manage.py -w workspace1 db -c init
ユーザーがこのフェーズをスキップしようとすると、Vortexは最初に起動する正しいコマンドを画面に表示します。```
[-] Workspace not initialized. Please initialise it using:
python manage.py -w workspace1 db -c init
代わりに、既存の初期化済みDBに対して同じコマンドを実行する場合、VortexはDBファイルを上書きする前に確認を求めます:``` [-] The DB file exists and it was initialised, overwrite? [y|n] $> y
### アクションとコマンド
Vortexは1つの位置引数('Action')と、その他のキー付き値で動作します。
それらの中で最も重要なのは、コマンド引数(`-c cmd`)です。アクション値と組み合わせることで、コマンドはVortexが何を行うべきかを定義します。
サポートされているアクションの一覧は、Helpから確認できます。```
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は特定の操作ワークフローに従うように設計されており、以下のスキーマにまとめられています:

### 操作
#### ユーザーの収集
特定のターゲットに対する有効なユーザーの収集は、以下の3つの異なるソースを使用して行えます:
* 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!