-
Notifications
You must be signed in to change notification settings - Fork 285
Usage
GyoiThonはオプション未指定のデフォルトモードの他、以下のオプションを付けることで様々な情報収集や脆弱性調査を行うことが可能である。
usage:
gyoithon.py [-m] [-g] [-e] [-c] [-p] [-l <log_path>]
gyoithon.py -h | --help
options:
-m Optional : Analyze HTTP response for identify product/version using Machine Learning.
-g Optional : Google Custom Search for identify product/version.
-e Optional : Explore default path of product.
-c Optional : Discover open ports and wrong ssl server certification using Censys.
-p Optional : Execute exploit module using Metasploit.
-l Optional : Analyze log based HTTP response for identify product/version.
-h --help Show this help message and exit.
GyoiThonが調査する対象サーバをhost.txt
に記載する。
記載形式は「Protocol_FQDN(or IP address)_Port number_Root Path
」とする。
※「_
」は半角スペース。
http 192.168.220.129 80 /vicnum/
https gyoithon.example.com 443 /
https www.example.com 443 /catalog/
調査対象が複数存在する場合は、上記のように改行区切りで記載する。
Note |
---|
Root Path は最初と最後に必ず「/ 」を入れること。 |
GyoiThonの動的パラメータはconfig.ini
に定義されている。
最低限、以下のパラメータを適宜変更すること。
カテゴリ | 項目 | 解説 |
---|---|---|
CloudChecker | azure_ip_range | Azure Datacenter IP Rangesの取得先URL。頻繁にURLが変更されるため、1日の初回起動時にMicrosoftのページに記載されているリンク「click here to download manually」のURLを設定する。 |
config.ini
の詳細は「設定ファイルの詳細」を参照のこと。
GyoiThonはオプション指定により様々な情報収集や脆弱性調査を行うことが可能であるが、以下のようにオプション無しで起動した場合、必要最低限の情報収集のみを行う。
root@kali:~/GyoiThon# python3 gyoithon.py
本モードでは、以下の動作を実行する。
- 最新の脆弱性情報をNVD(NATIONAL VULNERABILITY DATABASE)から収集
- クラウドサービス利用有無の調査
- Web CrawlingによるHTTPレスポンスの収集
- シグネチャを用いた製品/バージョンの調査
- 特定した製品/バージョンの脆弱性調査
- 不要なコメントの調査
- 不要なデバッグメッセージの調査
- ログインページ有無の調査
なお、Web CrawlingにはPythonのライブラリ「Scrapy
」を利用している。
設定ファイルの以下の項目を変更することで、Scrapyの設定を変更することが可能である。
カテゴリ | 項目 | 解説 |
---|---|---|
Spider | depth_limit | Crawlingで探索する最大階層。デフォルトは「2階層」。 |
delay_time | Crawlingの時間間隔。デフォルトは「3秒」。 |
「-m
」オプションを付与した場合、デフォルトモードの調査に加え、製品/バージョンの調査に機械学習(Naive Bayes)を利用する。
root@kali:~/GyoiThon# python3 gyoithon.py -m
「-g
」オプションを付与した場合、デフォルトモードの調査に加え、製品/バージョンの調査にGoogle Custom Search APIを利用する。
root@kali:~/GyoiThon# python3 gyoithon.py -g
なお、Google Custom Search APIを利用するためには、事前にGoogle APIキーや検索エンジンIDを取得する必要がある。
これらの情報を取得後、設定ファイルの以下の項目に設定することでGoogle Hackingモードを利用することが可能となる。
カテゴリ | 項目 | 解説 |
---|---|---|
GoogleHack | api_key | Google Custom Search APIのキー。 |
search_engine_id | Google検索エンジンのID。 |
「-e
」オプションを付与した場合、デフォルトモードの調査に加え、CMSやWebサーバ等の製品固有のデフォルトコンテンツ探索を行う。
root@kali:~/GyoiThon# python3 gyoithon.py -e
設定ファイルの以下の項目を変更することで、コンテンツ探索の時間間隔を変更することが可能である。
カテゴリ | 項目 | 解説 |
---|---|---|
ContentExplorer | delay_time | コンテンツ探索の時間間隔。デフォルトは「1秒」。 |
Note |
---|
本モードは数百ものコンテンツ探索を行うため、Webサーバ側に負荷がかかる可能性がある。また、アクセスログに大量の404エラーログが記録されることで、監視によるアラートが上がる可能性がある。よって、自身の管理下にあるサーバに対し、事前に監視等に周知した上で実行することを推奨する。 |
「-c
」オプションを付与した場合、デフォルトモードの調査に加え、Censysを利用した空きポート番号やサーバ証明書の調査を行う。
root@kali:~/GyoiThon# python3 gyoithon.py -c
なお、Censysを利用するためには、事前にCensysへのユーザ登録を行い、APIキーやシークレットキーを取得する必要がある。
これらの情報を取得後、設定ファイルの以下の項目に設定することでCensys連携モードを利用することが可能となる。
カテゴリ | 項目 | 解説 |
---|---|---|
Censys | api_id | CensysのAPIのキー。 |
secret | Censysのシークレットキー。 |
Note |
---|
2018年11月13日時点では、空きポート番号とサーバ証明書情報をコンソールに表示するのみに留まっている。今後、更なる情報を収集できるように拡張予定である。 |
「-p
」オプションを付与した場合、デフォルトモードの調査に加え、ペネトレーションテストフレームワークのMetasploitを利用し、サーバへの侵入に繋がる脆弱性の有無調査を行う。
root@kali:~/GyoiThon# python3 gyoithon.py -p
設定ファイルの以下の項目を変更することで、Metasploit連携の各種オプションを変更することが可能である。
カテゴリ | 項目 | 解説 |
---|---|---|
Exploit | server_host | Metasploitのmsgrpc に割り当てたIPアドレス。 |
server_port |
msgrpc に割り当てたポート番号。 |
|
msgrpc_user |
msgrpc の認証に使用するユーザID。 |
|
msgrpc_pass |
msgrpc の認証に使用するパスワード。 |
|
LHOST | 上記server_host と同様。 |
|
LPORT | 上記server_port と同様。 |
Note |
---|
本モードはMetasploitに備わっているExploitモジュールを実行するため、Webサーバ側の稼働に影響を与える可能性が高い。また、Exploitモジュールは実際の攻撃に近い動作をするため、監視によるアラートが上がる可能性がある。よって、自身の管理下にあるサーバに対し、事前に監視等に周知した上で実行することを推奨する。 |
「-l
」オプションを付与した場合、Web CrawlingによるHTTPレスポンス収集に代わり、事前に蓄積されたHTTPレスポンスログを対象として各種情報の調査を行う。
root@kali:~/GyoiThon# python3 gyoithon.py -l "Full path of stored logs"
(Webアプリケーションの特性上)ScrapyでHTTPレスポンスログが収集できない場合、他の手段で収集したHTTPレスポンスログを使用することを想定したモード。
GyoiThonを実行すると、以下のPathに対象毎のレポートが生成される。
root@kali:~/GyoiThon/report# ls
gyoithon_report_192.168.220.129_1082018338.csv
gyoithon_report_192.168.220.129_bodgeit.csv
gyoithon_report_192.168.220.129_cyclone.csv
gyoithon_report_192.168.220.129_vicnum.csv
gyoithon_report_192.168.220.129_WackoPicko.csv
レポート名の形式は「gyoithon_report_
(固定)+ FQDN(or IP address)
+ Root Path
」となる。
また、レポートの各カラムは以下となる。
カラム | 解説 | 記載例 |
---|---|---|
fqdn | 対象サーバのFQDN | www.gyoithon.example.com |
ip_addr | 対象サーバのIPアドレス | 192.168.220.129 |
port | 対象サーバのポート番号 | 80 |
cloud_type | 利用しているクラウドサービス(Azure or AWS or GCP) | AWS |
method | GyoiThonの調査手法名 | Crawling |
url | アクセスしたURL | http://192.168.220.129:80/WackoPicko/admin/index.php?page=login |
vendor_name | 特定した製品のベンダー名 | apache |
prod_name | 製品名 | http_server |
prod_version | 製品のバージョン | 2.2.14 |
prod_trigger | 製品特定時のトリガ(証跡) | Apache/2.2.14 |
prod_type | 製品カテゴリ(Web or CMS or Framework etc..) | Web |
prod_vuln | 該当するCVE番号(CVSSスコアの高い順に3個) | CVE-2017-3167, CVE-2017-3169, CVE-2017-7668 |
origin_login | Webアプリ独自のログイン画面有無(機械学習による推定とURL文字列判定の2パターン) | Log : 37.5 %\nUrl : 100.0 % |
origin_login_trigger | ログイン画面判定時のトリガ(証跡) | Log : name",<input type="password"\nUrl : login |
wrong_comment | 特定した不要なコメント | パスワードは「password1234」です。 |
error_msg | 特定した不要なメッセージ | Error |
server_header | HTTPレスポンスのServerヘッダ値 | Server: Apache/2.2.14 (Ubuntu) mod_mono/2.4.3 PHP/5.3.2 |
log | 生ログのPath | /usr/home/~snip~/http_192.168.220.129_80_20181112170525765.log |
date | 調査日時 | 2018/11/12 17:05:25 |