Skip to content
GyoiThon edited this page Nov 13, 2018 · 22 revisions

Usage

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.

事前準備

1.ターゲットファイルの編集

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は最初と最後に必ず「/」を入れること。

2.設定ファイルの編集

GyoiThonの動的パラメータはconfig.iniに定義されている。
最低限、以下のパラメータを適宜変更すること。

カテゴリ 項目 解説
CloudChecker azure_ip_range Azure Datacenter IP Rangesの取得先URL。頻繁にURLが変更されるため、1日の初回起動時にMicrosoftのページに記載されているリンク「click here to download manually」のURLを設定する。

config.iniの詳細は「設定ファイルの詳細」を参照のこと。

GyoiThonの実行

1.デフォルトモードで起動

GyoiThonはオプション指定により様々な情報収集や脆弱性調査を行うことが可能であるが、以下のようにオプション無しで起動した場合、必要最低限の情報収集のみを行う。

root@kali:~/GyoiThon# python3 gyoithon.py

本モードでは、以下の動作を実行する。

  1. 最新の脆弱性情報をNVD(NATIONAL VULNERABILITY DATABASE)から収集
  2. クラウドサービス利用有無の調査
  3. Web CrawlingによるHTTPレスポンスの収集
  4. シグネチャを用いた製品/バージョンの調査
  5. 特定した製品/バージョンの脆弱性調査
  6. 不要なコメントの調査
  7. 不要なデバッグメッセージの調査
  8. ログインページ有無の調査

なお、Web CrawlingにはPythonのライブラリ「Scrapy」を利用している。
設定ファイルの以下の項目を変更することで、Scrapyの設定を変更することが可能である。

カテゴリ 項目 解説
Spider depth_limit Crawlingで探索する最大階層。デフォルトは「2階層」。
delay_time Crawlingの時間間隔。デフォルトは「3秒」。

2.機械学習モードで起動

-m」オプションを付与した場合、デフォルトモードの調査に加え、製品/バージョンの調査に機械学習(Naive Bayes)を利用する。

root@kali:~/GyoiThon# python3 gyoithon.py -m

3.Google Hackingモードで起動

-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。

4.デフォルトコンテンツ探索モードで起動

-e」オプションを付与した場合、デフォルトモードの調査に加え、CMSやWebサーバ等の製品固有のデフォルトコンテンツ探索を行う。

root@kali:~/GyoiThon# python3 gyoithon.py -e

設定ファイルの以下の項目を変更することで、コンテンツ探索の時間間隔を変更することが可能である。

カテゴリ 項目 解説
ContentExplorer delay_time コンテンツ探索の時間間隔。デフォルトは「1秒」。
Note
本モードは数百ものコンテンツ探索を行うため、Webサーバ側に負荷がかかる可能性がある。また、アクセスログに大量の404エラーログが記録されることで、監視によるアラートが上がる可能性がある。よって、自身の管理下にあるサーバに対し、事前に監視等に周知した上で実行することを推奨する。

5.Censys連携モードで起動

-c」オプションを付与した場合、デフォルトモードの調査に加え、Censysを利用した空きポート番号やサーバ証明書の調査を行う。

root@kali:~/GyoiThon# python3 gyoithon.py -c

なお、Censysを利用するためには、事前にCensysへのユーザ登録を行い、APIキーやシークレットキーを取得する必要がある。
これらの情報を取得後、設定ファイルの以下の項目に設定することでCensys連携モードを利用することが可能となる。

カテゴリ 項目 解説
Censys api_id CensysのAPIのキー。
secret Censysのシークレットキー。
Note
2018年11月13日時点では、空きポート番号とサーバ証明書情報をコンソールに表示するのみに留まっている。今後、更なる情報を収集できるように拡張予定である。

6.Metasploit連携モードで起動

-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モジュールは実際の攻撃に近い動作をするため、監視によるアラートが上がる可能性がある。よって、自身の管理下にあるサーバに対し、事前に監視等に周知した上で実行することを推奨する。

7.蓄積ログ分析モードで起動

-l」オプションを付与した場合、Web CrawlingによるHTTPレスポンス収集に代わり、事前に蓄積されたHTTPレスポンスログを対象として各種情報の調査を行う。

root@kali:~/GyoiThon# python3 gyoithon.py -l "Full path of stored logs"

(Webアプリケーションの特性上)ScrapyでHTTPレスポンスログが収集できない場合、他の手段で収集したHTTPレスポンスログを使用することを想定したモード。

Clone this wiki locally