
GyoiThon は、機械学習を使用した成長中の侵入テストツールです。

日本語ページはこちら。
新しいGyoiThon(バージョン0.0.4)は、インターネット上に公開されているサブドメインを一覧表示できます。また、そのサブドメインがWebサービスとして公開されている場合、GyoiThonは非破壊的な脆弱性評価であるヘルスチェックを実行します。
| 注意 |
|---|
| 新機能はGoogleカスタム検索APIを使用します。そのため、新機能を使用する場合は、Googleカスタム検索のAPIキーを用意する必要があります。 |
domain_list.csvを用意する必要があります: ```
"Domain Name"
mbsd.jpそして、次のコマンドを実行します。 ```
root@kali:~/GyoiThon# python3 gyoithon.py -i --domain_list
その結果、指定されたドメインに関連するサブドメインのリストが得られます。
| 番号 | ドメイン | サブドメイン | IPアドレス | アクセス状態 (http) | ロケーション (http) | アクセス状態 (https) | ロケーション (https) | Whoisレコード |
|---|---|---|---|---|---|---|---|---|
| 1 | mbsd.jp | mbsd.jp | ['40.115.251.148'] | 301 | https://www.mbsd.jp/ | 301 | https://www.mbsd.jp/ | *** |
| 2 | mbsd.jp | www.mbsd.jp | ['40.115.251.148'] | 301 | https://www.mbsd.jp/ | 200 | - | - |
| 3 | mbsd.jp | www2.mbsd.jp | ['40.115.251.148'] | 301 | https://www.mbsd.jp/ | 200 | - | - |
|インデックス|ドメイン|サブドメイン|IPアドレス|アクセス状態(http)|ロケーション(http)|アクセス状態(https)|ロケーション(https)|Whoisレコード|評価結果|
|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:|
|1|mbsd.jp|mbsd.jp|['40.115.251.148']|301|https://www.mbsd.jp/|301|https://www.mbsd.jp/|***|***|
|2|mbsd.jp|www.mbsd.jp|['40.115.251.148']|301|https://www.mbsd.jp/|200|-|-|***|
|3|mbsd.jp|www2.mbsd.jp|['40.115.251.148']|301|https://www.mbsd.jp/|200|-|-|***|
## 概要
GyoiThonはWebサーバの**インテリジェンス収集ツール**です。
GyoiThonは対象のWebサーバに**リモートアクセス**し、CMS、Webサーバソフトウェア、フレームワーク、プログラミング言語などの**サーバ上で稼働している製品を特定**します。そして、Metasploitを使用して特定した製品に対して**エクスプロイトモジュールを実行**できます。GyoiThonは上記のアクションを**完全自動で実行**します。
GyoiThonの主な機能は以下の通りです。
* リモートアクセス/完全自動
GyoiThonは、**リモートアクセス**のみを使用して対象Webサーバの情報を**完全自動で**収集できます。操作のためにGyoiThonを一度実行するだけで済みます。
* 非破壊テスト
GyoiThonは、**通常のアクセスのみ**を使用して対象Webサーバの情報を収集できます。
ただし、一部のオプションを使用すると、GyoiThonはエクスプロイトモジュールの送信などの異常なアクセスを実行します。
* 多様な情報の収集
GyoiThonには、Webクローラー、Google Custom Search API、Censys、デフォルトコンテンツの探索、クラウドサービスの調査など、さまざまなインテリジェンス収集エンジンがあります。収集した情報を**文字列パターンマッチング**と**機械学習**を用いて分析することで、GyoiThonは対象Webサーバで稼働している**製品/バージョン/CVE番号**、**不要なHTMLコメント**/**デバッグメッセージ**、**ログインページ**などを特定できます。
* 実際の脆弱性の調査
GyoiThonはMetasploitを使用して特定された製品に対してエクスプロイトモジュールを実行できます。
その結果、**対象Webサーバの実際の脆弱性を調査**できます。

| 注意 |
|:-----|
| ご興味があれば、**ご自身の管理下の環境で自己責任でご利用ください**。 |
## <a name='Installation'>インストール</a>
1. GyoiThonのリポジトリをgit cloneします。```
root@kali:~# git clone https://github.com/gyoisamurai/GyoiThon.git
3. 必要なPythonパッケージをインストールしてください。```
root@kali:~# cd GyoiThon
root@kali:~/GyoiThon# pip3 install -r requirements.txt
root@kali:~/GyoiThon# apt install python3-tk
config.ini を編集する必要があります。オプションなしのデフォルトモードや、複数のオプションの組み合わせを使用することで、GyoiThonは対象Webサーバの様々な情報を収集できます。``` usage: .\gyoithon.py [-s] [-m] [-g] [-e] [-c] [-p] [-l --log_path=] [--no-update-vulndb] .\gyoithon.py [-d --category= --vendor= --package=] .\gyoithon.py [-i] .\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. -d Optional : Development of signature and train data. -i Optional : Explore relevant FQDN with the target FQDN. -h --help Show this help message and exit.
### 準備.
1. 対象ファイル `host.txt` を編集します。
`host.txt` に対象のWebサーバーを記述する必要があります。
記述形式は `protocol FQDN(またはIPアドレス) Port Crawling_root_path` です。
* 例.```
https gyoithon.example.com 443 /
複数のターゲット情報を指定したい場合は、以下に記述する必要があります。``` https gyoithon.example.com 443 / http 192.168.220.129 80 /vicnum/ https www.example.com 443 /catalog/
| 注意 |
|:-----|
| ルートパスの先頭と末尾に`/`を挿入します。 |
2. 設定ファイル`config.ini`を編集します。
ユーザーが変更するパラメータは設定ファイル`config.ini`に定義されています。
パラメータを変更する場合は、`config.ini`を編集してください。
`config.ini`の詳細は[こちら](https://github.com/gyoisamurai/GyoiThon/wiki/Configure)です。
### GyoiThonの実行。
#### <a name='default_mode'>1. デフォルトモード。</a>```
root@kali:~/GyoiThon# python3 gyoithon.py
デフォルトモードでは、以下の最小限の情報を収集します。
Scrapyを使用しています。config.iniのパラメータを変更することで、Scrapyの設定を変更できます。| カテゴリ | パラメータ | 説明 |
|---|---|---|
| Spider | depth_limit | クローリングの最大深度。デフォルト値は2層です。 |
| delay_time | クローリングの遅延時間。デフォルト値は3(秒)です。 | |
| time_out | スパイダー終了オプション。クローリングのタイムアウト。デフォルト値は600(秒)です。 | |
| item_count | スパイダー終了オプション。最大アイテム数。デフォルト値は300です。 | |
| page_count | スパイダー終了オプション。1ページあたりの最大アイテム数。デフォルト値は0(制限なし)です。 | |
| error_count | スパイダー終了オプション。最大エラー数。デフォルト値は0(制限なし)です。 |
config.iniのパラメータを変更することで、検査速度を調整できます。| カテゴリ | パラメータ | 説明 |
|---|---|---|
| 共通 | max_target_url | 最大検査URL数。Webクローリングで収集したURL数がこのパラメータ値を超えた場合、超過分は破棄されます。デフォルト値は100です。0は無制限です。 |
| max_target_byte | 最大検査レスポンスサイズ。レスポンスサイズがこのパラメータ値を超えた場合、超過分は破棄されます。デフォルト値は10000バイトです。0は無制限です。 | |
| scramble | Webクローリングで収集したURLリストをランダムに並び替えます。デフォルト値は1(有効)です。0は無効です。 |
| 注意 |
|---|
| 検査速度と精度はトレードオフの関係にあります。 |
root@kali:~/GyoiThon# python3 gyoithon.py -s
`-s` オプションを追加することで、GyoiThon はデフォルトモードに加えて、対象の Web サーバーがクラウドサービスを使用しているかどうかを識別します。
実行前に、`config.ini` の以下のパラメータを変更する必要があります。