
非同期の列挙&脆弱性スキャナー。すべてのホストですべてのツールを実行します。
celerystalkは、非同期ジョブ(タスク)を使用してネットワークスキャン/列挙プロセスを自動化し、実行するツールを完全に制御できるようにします。

インタラクティブデモ: Bug Bounty Mode (HackerOne)
インタラクティブデモ: 脆弱性評価 / PenTest モード (引退した HackTheBox.eu マシン)
| フェーズ | コマンド | 使用するツールの例 |
|---|---|---|
| DNS 偵察/列挙 | ./celerystalk subdomains -d domain1,domain2 | Amass, sublist3r |
| スコープの定義、nmap/nessus のインポート | ./celerystalk import [scan_data,scope_files,etc.] | celerystalk |
| ポートスキャン | ./celerystalk nmap | nmap |
| ディレクトリとファイルの列挙、脆弱性の特定 | ./celerystalk scan | Gobuster, Nikto, Photon, sqlmap, wpscan, hydra, medusa, wappalyzer, whatweb, etc. |
| スクリーンショット | ./celerystalk sceenshots | Aquatone |
| 分析 | ./celerystalk report | celerystalk |
celerystalk は:
celerystalk は root としてインストールおよび実行する必要があります``` git clone https://github.com/sethsec/celerystalk.git cd celerystalk/setup ./install.sh cd .. ./celerystalk -h
## Dockerhubからdockerコンテナを使用する```
docker pull sethsec/celerystalk:latest
docker run -p 27007:27007 -ti celerystalk
docker build -t celerystalk https://github.com/sethsec/celerystalk.git docker run -p 27007:27007 -ti celerystalk
## celerystalkの使用方法 - 基本
### [URLモード] - URL(またはファイル内の複数のURL)をスキャンする方法
#### スコープやnmapなどをインポートすることなく、有効な全てのツールをURLまたはファイル内の複数のURLに対して起動する。```
# ./celerystalk scan -u url or filename # Run all enabled commands against specified url(s)
# ./celerystalk query watch (then Ctrl+c) # Wait for scans to finish
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
#### または、スコープ内にあるホストのリストをインポートして、celerystalk に nmap を実行させる```
# ./celerystalk import -S scope.txt # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk nmap # Nmap all in-scope hosts (reads options from config.ini)
## Advanced Usage: Bug Bounty モード vs Vulnerability Assessment モード
ワークスペースのインスタンス化時にモードを定義します。デフォルトのワークスペースはVAPTモードですが、手動で作成したワークスペースには2つのオプションがあります。
* スコープ内のIPアドレス/範囲/CIDRから始める場合は、Vulnerability Assessment and PenTest (VAPT) モードを使用します。
* スコープ内のドメインから始める場合は、Bug Bounty (BB) モードを使用します。
### [Bug Bounty モード]
* BBモードでは、celerystalkで見つかった、または手動でインポートされたすべてのサブドメインがスコープ内としてマークされます。
#### サブドメインの検索、スコープ外ホストの定義、その他すべてのスキャン```
# ./celerystalk workspace create -o /dir -m bb # Create default workspace and set output dir
# ./celerystalk subdomains -d company.com,dom.net # Find subdomains and determine if in scope
# ./celerystalk import -S scope.txt (optional) # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk import -O out_scope.txt (optional) # Define HOSTS/IPs that are out of scope
# ./celerystalk nmap (optional) # Nmap all in-scope hosts (reads options from config.ini)
# ./celerystalk import -f client.xml (optional) # If you would rather import an nmap file you already ran
# ./celerystalk scan [--noIP] # Run all enabled commands against all in scope hosts
# ./celerystalk query watch (then Ctrl+c) # Wait for scans to finish
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
注意: 最初にサブドメインコマンドを実行してからスコープを定義するか、スコープを定義してサブドメインをインポートすることができます。
**注記:** 最初にサブドメインコマンドを実行してからスコープを定義するか、スコープを定義してサブドメインをインポートすることができます。
#### スコープ内のホストリストをインポートし、celerystalk で nmap を実行して結果を解析させる```
# ./celerystalk workspace create -o /dir -m vapt # Create default workspace and set output dir
# ./celerystalk import -S client-inscope-list.txt # Import IP/CIDR/Ranges and mark as in scope
# ./celerystalk import -O out_scope.txt (optional) # Define HOSTS/IPs that are out of scope
# ./celerystalk nmap # Nmap all in-scope hosts (reads options from config.ini)
# ./celerystalk query watch (then Ctrl+c) # Watch nmap scans as they move from pending > running > complete
# ./celerystalk subdomains -d client.com,client.net # Find subdomains and determine if in scope
# ./celerystalk scan # Run all enabled commands
# ./celerystalk query watch (then Ctrl+c) # Watch scans as they move from pending > running > complete
# ./celerystalk screenshots # Take screenshots
# ./celerystalk report # Generate report
注記: 最初にサブドメインコマンドを実行してからスコープを定義するか、スコープを定義してサブドメインをインポートすることができます。
詳細については、Wiki の 設定 ページを参照してください。
他の操作を行う前に、ワークスペースを作成する必要があります。
#### import
このコマンドを使用すると、ポートとホストのデータを celerystalk にインポートでき、スコープ内とスコープ外を定義できます。
| オプション | 説明 |
| --- | --- |
| -f scan.xml | <b>Nmap/Nessus xml</b><br><ul><li>このファイルからすべてのIPアドレスをホストテーブルに追加し、スキャン対象としてすべてスコープ内にマークします。</li><li>すべてのポートとサービス種類をサービステーブルに追加します。</li></ul> |
| -S scope.txt | <b>スコープファイル</b><br><ul><li>ステージングされていないファイルの差分を表示します。</li></ul>|
| -D subdomains.txt | <b>(サブ)ドメインファイル</b><br><ul><li>celerystalk は、各サブドメインのIPを解決し、そのIPがデータベース内にあるかどうかを確認することで、サブドメインがスコープ内かどうかを判断します。一致する場合、そのドメインはスコープ内としてマークされ、スキャンされます。</li></ul>|```
Import Nmap XML file: ./celerystalk import -f /assessments/nmap.xml
Import Nessus file: ./celerystalk import -f /assessments/scan.nessus
Import list of Domains: ./celerystalk import -D <file>
Import list of IPs/Ranges: ./celerystalk import -S <file>
Specify workspace: ./celerystalk import -f <file>
Import multiple files: ./celerystalk import -f nmap.xml -S scope.txt -D domains.txt
このコマンドは、設定ファイル内のすべてのサブドメイン検索ツールを実行します。必要に応じて、celerystalkの外部でこの処理を行い、importコマンドでサブドメインをインポートすることもできます。
| Option | Description |
|---|---|
| -d domain1,domain2,etc | Amass、Sublist3rなどを実行し、ドメインをDBに保存
|
| Find subdomains: celerystalk subdomains -d domain1.com,domain2.com |
#### nmap
このコマンドは、config.iniファイルに指定されたオプションを使用してnmapを実行します。代わりに、nmap XMLファイルまたは.nessusファイルからポートスキャンデータをインポートすることもできます。
| オプション | 説明 |
| --- | --- |
| オプションなし | configからnmapコマンドを読み込み、スコープ内のホストの全サービスをスキャンします
| -c [filename] | celerystalk設定ファイルを指定 [デフォルト: ./config.ini]
#### scan
このコマンドはタスクをceleryに送信し、celeryが非同期に実行して出力を指定の出力ディレクトリに記録します。
| オプション | 説明 |
| --- | --- |
| オプションなし | <b>スコープ内の全ホストをスキャン</b><ul><li>DBを読み込み、スコープ内のすべてのIPとサブドメインをスキャンします。</li><li>IPに対しては有効な全ツールを起動しますが、バーチャルホストに対してはhttp/http固有のツールのみ起動します。</li></ul> |
| --noIP | IPでホストをスキャンしない(vhostのみスキャン)
| -t ip,vhost,cidr | <b>DBまたはスキャンファイルから特定のターゲットをスキャン</b><ul><li>スコープ内のIPやサブドメインの一部をスキャンします。</li></ul> |
| -s | <b>シミュレーション</b><br> すべてのタスクをceleryに送信しますが、すべてのコマンドの前に#を付けて実行し、無効化します。</li></ul> |
| -c [filename] | celerystalk設定ファイルを指定 [デフォルト: ./config.ini] |
| -u [URL] | 特定のURLをスキャンします(まだDBに登録されていなくても) |```
Scan all in scope hosts: ./celerystalk scan
Scan subset of DB hosts: ./celerystalk scan -t 10.0.0.1,10.0.0.3
./celerystalk scan -t 10.0.0.100-200
./celerystalk scan -t 10.0.0.0/24
./celerystalk scan -t sub.domain.com
Simulation mode: ./celerystalk scan -s
このコマンドは、既にスキャンされたホストを再スキャンします。
| オプション | 説明 |
|---|---|
| no option | DB内のスコープ内ホストごとに、celerystalkが再スキャンするかどうかを確認します |
| -t ip,vhost,cidr | スコープ内IPやサブドメインのサブセットをスキャンします。 |
| -s | すべてのタスクをceleryに送信しますが、すべてのコマンドは先頭に#が付与され無効化されます。 |
./celerystalk rescan -c myconfig.ini
Rescan some hosts ./celerystalk rescan -t 1.2.3.4,sub.domain.com
Simulation mode: ./celerystalk rescan -s
#### query
タスクキューのステータスを好きな頻度で非同期に確認できます。ウォッチモードは実際にlinuxのwatchコマンドを実行するため、端末バッファを一杯にすることがありません。
| オプション | 説明 |
| --- | --- |
| no options | 現在のワークスペース内のすべてのタスクを表示します |
| watch | コマンドをunixのwatchコマンドに送信し、2秒ごとに更新されたステータスを取得できます。 |
| brief | ステータスごとに5件の結果に制限します(pending/running/completed/cancelled/paused) |
| summary | タスク自体ではなく、数字のみのバナーを表示します |```
Query Tasks: ./celerystalk query
./celerystalk query watch
./celerystalk query brief
./celerystalk query summary
./celerystalk query summary watch
現在実行中またはキュー内にある任意のタスクをキャンセル/一時停止/再開します。
./celerystalk <verb> all #Cancel/Pause/Resume all tasks from current workspaces
#### スクリーンショット
| オプション | 説明 |
| --- | --- |
| オプションなし | 既知のすべてのパスのスクリーンショットを取得します |```
./celerystalk screenshots
レポートを実行します。これにより、すべてのツール出力をHTMLファイルとテキストファイルに結合します。好きなだけ実行できます。レポートを実行するたびに、前のレポートは上書きされます。
| オプション | 説明 |
|---|---|
| オプションなし | スキャンされた全てのスコープ内ホストのレポートを作成します |
| Create Report: ./celerystalk report #Create a report for all scanned hosts in current workspace |
#### db
celerystalk データベースに保存されているワークスペース、ホスト、サービス、またはパスを一覧表示またはエクスポートします
| オプション | 説明 |
| --- | --- |
| workspaces | 既知のすべてのワークスペースと各ワークスペースに関連付けられた出力ディレクトリを表示します |
| workspace | workspaces と同じ |
| services | 既知のすべてのオープンポートと IP ごとのサービス種類を表示します |
| ports | ports と同じ。 |
| hosts | すべてのホスト(IP アドレスとサブドメイン/バーチャルホスト)を表示し、スコープ内かどうか、スキャンが送信されたかどうかを表示します |
| vhosts | hosts コマンドと同じですが、IP アドレスである vhost を除外します。 |
| paths | vhost によって識別されたすべてのパスを表示します |
| paths_only | データベース内のパスの改行区切りリストを表示します。別のツールにパイプするのに便利です |
| export | services、hosts、および paths テーブルをエクスポートします |
| export_paths_only | データベース内のパスの改行区切りリストのみをファイルにエクスポートします。```
Show workspaces: ./celerystalk db workspaces
./celerystalk db workspace
Show services: ./celerystalk db services
./celerystalk db ports
Show hosts: ./celerystalk db hosts
Show vhosts only ./celerystalk db vhosts
Show paths: ./celerystalk db paths
Show paths (no table) ./celerystalk db paths_only
Show tasks: ./celerystalk db tasks
Export tables to csv ./celerystalk db export
Export paths to txt ./celerystalk db export_paths_only
管理機能
## 使用方法```
Usage:
celerystalk workspace ([create]|[switch]) [-w workspace_name] [-o <output_dir>] [-m <mode>] [-h]
celerystalk import [-f <nmap_file>] [-S scope_file] [-D subdomains_file] [-O outOfScope.txt] [-u <url>] [-h]
celerystalk subdomains [-d <domains>] [-c <config_file>] [-s] [-h]
celerystalk nmap [-t <targets>] [-c <config_file>] [-s] [-h]
celerystalk scan [-t <targets>] [--noIP] [-c <config_file>] [-s] [-h]
celerystalk scan -u <url> [-c <config_file>] [-s] [-h]
celerystalk rescan [-t <targets>] [-c <config_file>] [-s] [-h]
celerystalk query ([full] | [summary] | [brief]) [watch] [-h]
celerystalk query [watch] ([full] | [summary] | [brief]) [-h]
celerystalk report [-h]
celerystalk screenshots [-h]
celerystalk cancel ([all]|[<task_ids>]) [-h]
celerystalk pause ([all]|[<task_ids>]) [-h]
celerystalk resume ([all]|[<task_ids>]) [-h]
celerystalk db ([workspaces]|[workspace]|[services]|[ports]|[hosts]|[vhosts]|[paths]|[paths_only]|[tasks]) [-h]
celerystalk db export [-h]
celerystalk admin ([start]|[stop]|[restart]|[reset]|[backup]|[restore]) [-f <restore_file>] [-h]
celerystalk interactive [-h]
celerystalk (help | -h | --help)
Options:
-h --help Show this screen
-v --version Show version
-f <nmap_file> Nmap xml import file
-c <config_file> Specify a non-default configuration file by name
-o <output_dir> Output directory
-m <mode> vapt = VulnAssmt/PenTest, bb = Bug Bounty
-S <scope_file> Scope import file
-O <outscope_file> Out of scope hosts file
-D <subdomains_file> Subdomains import file
-t <targets> Target(s): IP, IP Range, CIDR
-u <url> URL to parse and scan with all configured tools
-w <workspace> Workspace
-d --domains Domains to scan for vhosts
-s --simulation Simulation mode. Submit tasks comment out all commands
--noIP Only scan targets by DNS hostname (Don't scan the IP address)
Context specific help with examples:
./celerystalk workspace -h
./celerystalk subdomains -h
./celerystalk import -h
./celerystalk nmap -h
./celerystalk scan -h
./celerystalk rescan -h
./celerystalk query -h
./celerystalk pause -h
./celerystalk resume -h
./celerystalk cancel -h
./celerystalk db -h
./celerystalk screenshots -h
./celerystalk report -h
./celerystalk admin -h
このプロジェクトは多くの優れたツールに触発されました:
@offensivesecurity と @hackthebox_eu には、ラボネットワークの提供に感謝します。
また、以下の方々に感謝します:
| オプション | 説明 |
|---|
| no options | 現在のワークスペースを表示 |
| create | 新しいワークスペースを作成 |
| -w | 新しいワークスペース名を定義 |
| -o | ワークスペースに割り当てられた出力ディレクトリを定義 |
| -m | モード [vapt \ bb] |
| Create default workspace ./celerystalk workspace create -o /assessments/client -m bb | |
| Create named workspace ./celerystalk workspace create -o /assessments/client -w client -m vapt | |
| Switch to another workspace ./celerystalk workspace client |
| -c [filename] | celerystalk設定ファイルを指定します [デフォルト: ./config.ini] |
| Rescan all hosts: ./celerystalk rescan |
| オプション | 説明 |
|---|
| cancel |
|
| pause |
|
| resume |
|
| Cancel/Pause/Resume Tasks: ./celerystalk 5,6,10-20 #Cancel/Pause/Resume tasks 5, 6, and 10-20 from current workspace |
| Options | Description |
|---|
| start | Celery & Redis プロセスを起動 |
| stop | Celery & Redis プロセスを停止 |
| restart | Celery & Redis プロセスを再起動 |
| reset | DBを破棄、Redisをフラッシュ、最初からやり直す |
| backup | DBとすべてのワークスペースデータディレクトリをバックアップ |
| restore | DBとすべてのワークスペースデータディレクトリを復元 |
| -f [filename] | 復元ファイル名 |
| Examples: | |
| ./celerystalk admin start | |
| ./celerystalk admin stop | |
| ./celerystalk admin restart | |
| ./celerystalk admin reset | |
| ./celerystalk admin backup -f | |
| ./celerystalk admin restore -f |