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

Usage

GyoiThonはオプション未指定のデフォルトモードの他、様々なオプションを組み合わせて調査することも可能である。

usage:
    gyoithon.py [-s] [-m] [-g] [-e] [-c] [-p] [-l <log_path>]
    gyoithon.py -h | --help
options:
    -s   Optional : Examine cloud service.
    -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のインストール手順はこちらをご参照ください。

事前準備

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

調査対象サーバに関する情報をhost.txtに記載する。
サーバ情報の記載形式は「Protocol_FQDN(or IP address)_Port number_Root Path」。
※「_」は半角スペース。

https gyoithon.example.com 443 /

調査対象サーバが複数存在する場合は、以下のように纏めて記載することで、1実行で全サーバの調査を行うことが可能である。

https gyoithon.example.com 443 /
http 192.168.220.129 80 /vicnum/
https www.example.com 443 /catalog/
Note
Root Pathの最初と最後には「/」を入れること。

2.設定ファイルの編集

ユーザが変更する可能性のあるパラメータは設定ファイル「config.ini」に定義されている。
設定ファイルの詳細を参照の上、適宜変更すること。

GyoiThonの実行

1.デフォルトモードで実行

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

デフォルトモードでは、以下に示す必要最低限の情報収集を行う。

  1. Web CrawlingによるHTTPレスポンスの収集
  2. シグネチャを用いた製品/バージョンの調査
  3. 特定した製品/バージョンの脆弱性調査(NVDを利用)
  4. 不要なコメントの調査
  5. 不要なデバッグメッセージの調査
  6. ログインページ有無の調査

なお、Web CrawlingにはPythonのライブラリ「Scrapy」を利用している。
config.iniの下記パラメータを変更することで、Scrapyの動作設定を変更することが可能である。

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

2.クラウドサービス調査モードで実行

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

-s」オプションを付けた場合、デフォルトモードの調査に加え、クラウドサービス利用有無の調査を行う。
なお、下記パラメータは実行前に必ず変更する必要がある。

カテゴリ 項目 解説
CloudChecker azure_ip_range Azure Datacenter IP Rangesの取得先URL。

本パラメータは、AzureサービスのIPアドレス範囲を定義したXMLが置かれたURLとなる。
本URLは数日に1回の頻度で変更されるため、GyoiThonを実行する前にMicrosoft Azure Datacenter IP Rangesのリンク「click here to download manually」のURLを取得し、本パラメータに設定する。

3.機械学習モードで実行

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

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

4.Google Hackingモードで起動

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

-g」オプションを付けた場合、デフォルトモードの調査に加え、Google Custom Search APIを用いた製品/バージョンの調査を行う。
Google API keySearch Engine IDを取得の上、設定ファイルの下記パラメータに設定する必要がある。

カテゴリ 項目 解説
GoogleHack api_key Google Custom Search APIのキー。
search_engine_id Google検索エンジンのID。
Note
Google Custom Search APIは1日100クエリまでは無料で利用可能である。しかし、それ以上のクエリを発行する場合は課金が必要となる。

5.デフォルトコンテンツ探索モードで実行

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

-e」オプションを付けた場合、デフォルトモードの調査に加え、CMSやWebサーバといった製品固有のデフォルトコンテンツ探索を行う。
なお、設定ファイルの下記パラメータを変更することで、コンテンツ探索の時間間隔を変更することが可能である。

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

6.Censys連携モードで実行

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

-c」オプションを付けた場合、デフォルトモードの調査に加え、Censysを利用した空きポート番号やサーバ証明書の調査を行う。
CensysのマイページからAPIキーとSecretキーを取得の上、設定ファイルの下記パラメータに設定する必要がある。

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

7.Metasploit連携モードで実行

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

-p」オプションを付けた場合、デフォルトモードの調査に加え、Penetration test frameworkのMetasploitを利用し、サーバへの侵入に繋がる脆弱性の有無を調査を行う。

事前にMetasploitのRPCサーバを起動した上で、設定ファイルの下記パラメータを設定する必要がある。

カテゴリ 項目 解説
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モジュールは実際の攻撃に近い動作をするため、監視によるアラートが上がる可能性がある。よって、必ず事前に監視やサーバ管理者等の関係者に周知し、自身の管理下にあるサーバに対して実行すること

8.蓄積ログ分析モードで実行

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

-l」オプションを付けた場合、(Web Crawlingは行わずに)事前に取得/蓄積されたHTTPレスポンスログに対して各種調査を行う。

本モードは、ScrapyでWeb CrawlingができないWebアプリケーションを想定している。
(Local Proxyを用いて手動でログを収集する等の)他手段で収集したHTTPレスポンスログを使用することで、デフォルトモードのWeb Crawlingと同じ調査が可能となる。

Note
ログファイルの拡張子は「.log」とすること。

「クラウドサービス調査モード」と「機械学習モード」の組み合わせ

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

「クラウドサービス調査モード」と「Google Hackingモード」の組み合わせ

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

「クラウドサービス調査モード」と「機械学習モード」と「Google Hackingモード」の組み合わせ

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

全オプションを付与

root@kali:~/GyoiThon# python3 gyoithon.py -s -m -g -e -c -p -l "Full path of stored logs"

レポートの確認

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.csv」。
レポートの各カラムは以下のとおり。

カラム 解説 記載例
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 特定した不要なメッセージ Warning: mysql_connect() ..snip.. in auth.php on line 38
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
Clone this wiki locally