-
Notifications
You must be signed in to change notification settings - Fork 285
Howto
シグネチャはPath「signatures
」に格納されている。
root@kali:~/GyoiThon/signatures/ ls
signature_product.txt
signature_default_content.txt
signature_search_query.txt
signature_comment.txt
signature_error.txt
signature_page_type_from_url.txt
このファイルには、Web Crawlingで取得したHTTPレスポンスから製品を特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1@field2@field3@field4@field5
Type | Field# | Description | Example |
---|---|---|---|
必須 | 1 | 製品カテゴリ | CMS |
必須 | 2 | ベンダ名 | drupal |
必須 | 3 | 製品名 | drupal |
任意 | 4 | このシグネチャに紐付く製品バージョン | 8.0 |
必須 | 5 | 製品特定の正規表現 | .*(X-Generator: Drupal 8).* |
任意
のフィールドを使用しない場合は、*
を入力すること。
- Example
CMS@wordpress@wordpress@*@.*(WordPress ([0-9]+[\.0-9]*[\.0-9]*)).*
CMS@drupal@drupal@8.0@.*(X-Generator: Drupal 8).*
Note |
---|
正規表現でバージョン情報まで取得する場合は、2つの正規表現グループを記述する必要がある。この時、2つ目の正規表現グループは、バージョン情報のみを取得するために使用される。 |
このファイルには、デフォルトコンテンツ探索で製品を特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1@field2@field3@field4@field5@field6@field7@field8
Type | Field# | Description | Example |
---|---|---|---|
必須 | 1 | 製品カテゴリ | CMS |
必須 | 2 | ベンダ名 | sixapart |
必須 | 3 | 製品名 | movabletype |
任意 | 4 | このシグネチャに紐付く製品バージョン | * |
必須 | 5 | 探索Path | /readme.html |
任意 | 6 | 製品確認の正規表現 | .*(Movable Type).* |
任意 | 7 | 製品のバージョン情報を取得する正規表現 | (v=([0-9]+[\.0-9]*[\.0-9]*)) |
必須 | 8 | このPathがログイン画面か否か | ログイン画面=1 , ログイン画面ではない=0
|
任意
のフィールドを使用しない場合は、*
を入力すること。
- Example
Web@apache@http_server@*@/server-status@*@Version:.*(Apache/([0-9]+[\.0-9]*[\.0-9]*))@0
CMS@sixapart@movabletype@*@/readme.html@.*(Movable Type).*@(v=([0-9]+[\.0-9]*[\.0-9]*))@0
Note |
---|
正規表現でバージョン情報まで取得する場合は、2つの正規表現グループを記述する必要がある。この時、2つ目の正規表現グループは、バージョン情報のみを取得するために使用される。 |
Note |
---|
もし「探索Path 」の検出のみで製品を確定できない場合は、「製品確認の正規表現 」を指定する必要がある。これが指定されている場合、GyoiThonは探索Pathにアクセスして得られたHTTPレスポンスを「製品確認の正規表現 」を用いて解析する。HTTPレスポンスに本正規表現がマッチした場合、GyoiThonは該当製品が存在すると判断する。 |
このファイルには、Google Custom Searchで製品を特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1@field2@field3@field4@field5@field6@field7@field8
Type | Field# | Description | Example |
---|---|---|---|
任意 | 1 | 製品カテゴリ | CMS |
任意 | 2 | ベンダ名 | sixapart |
任意 | 3 | 製品名 | movabletype |
任意 | 4 | このシグネチャに紐付く製品バージョン | * |
必須 | 5 | Google Custom Searchクエリ | inurl:/readme.html |
任意 | 6 | 製品確認の正規表現 | .*(Movable Type).* |
任意 | 7 | 製品のバージョン情報を取得する正規表現 | (v=([0-9]+[\.0-9]*[\.0-9]*)) |
任意 | 8 | このPathがログイン画面か否か | ログイン画面=1 , ログイン画面ではない=0
|
任意
のフィールドを使用しない場合は、*
を入力すること。
- Example
Web@apache@http_server@*@inurl:/server-status@*@Version:.*(Apache/([0-9]+[\.0-9]*[\.0-9]*))@0
CMS@sixapart@movabletype@*@inurl:/readme.html@.*(Movable Type).*@(v=([0-9]+[\.0-9]*[\.0-9]*))@0
*@*@*@*@filetype:bak@*@*@0
Note |
---|
正規表現でバージョン情報まで取得する場合は、2つの正規表現グループを記述する必要がある。この時、2つ目の正規表現グループは、バージョン情報のみを取得するために使用される。 |
Note |
---|
もし「Google Custom Searchクエリ 」のヒットのみで製品を確定できない場合は、「製品確認の正規表現 」を指定する必要がある。これが指定されている場合、GyoiThonは「Google Custom Searchクエリ 」で得られたURLにアクセスし、HTTPレスポンスを取得する。そして、このHTTPレスポンスを「製品確認の正規表現 」で解析し、正規表現がマッチした場合にGyoiThonは該当製品が存在すると判断する。 |
このファイルには、不要なコメントを特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1
Type | Field# | Description |
---|---|---|
必須 | 1 | 不要なコメントを特定する正規表現 |
- Example
(user\s*=|[\"']user[\"']\s*:|user_id\s*=|[\"']user_id[\"']\s*:|id\s*=|[\"']id[\"']\s*:)
(select\s+[\s\r\n\w\d,\"']*\s+from)
このファイルには、不要なデバッグメッセージを特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1
Type | Field# | Description |
---|---|---|
必須 | 1 | 不要なデバッグメッセージを特定する正規表現 |
- Example
(ORA-[0-9a-zA-Z\.])
(fail|error|notice|parse|warning|fatal)[^\n]*line[^\n]*[0-9]+
このファイルには、URLの文字列を基に画面種別を特定するシグネチャが定義されている。
新たなシグネチャを追加する場合は、以下の形式に従って追加する。
Format: field1@field2
Type | Field# | Description |
---|---|---|
必須 | 1 | 画面種別 |
必須 | 2 | 画面種別を特定する正規表現 |
- Example
Login@.*(login|log_in|logon|log_on|signin|sign_in).*
Note |
---|
上述したベンダ名 と製品名 は、必ずCPE形式に準拠すること(CPE形式のベンダ名・製品名でNVDからCVE番号を検索するため)。 |
機械学習のための学習データはPath「modules/train_data/
」に格納されている。
root@kali:~/GyoiThon/modules/train_data/ ls
train_cms_in.txt
train_page_type.txt
このファイルには、機械学習で製品を推定する学習データが定義されている。
新たな学習データを追加する場合は、以下の形式に従って追加する。
Format: field1@field2@field3@field4
Type | Field# | Description | Example |
---|---|---|---|
必須 | 1 | ベンダ名 | joomla |
必須 | 2 | 製品名 | joomla\! |
任意 | 3 | この学習データに紐付く製品バージョン | * |
必須 | 4 | 正規表現で記述した製品の特徴量 | (Set-Cookie: [a-z0-9]{32}=.*); |
任意
のフィールドを使用しない場合は、*
を入力すること。
- Example
joomla@joomla\!@*@(Set-Cookie: [a-z0-9]{32}=.*);
joomla@joomla\!@*@(Set-Cookie: .*=[a-z0-9]{26,32});
heartcore@heartcore@*@(Set-Cookie:.*=[A-Z0-9]{32});.*
heartcore@heartcore@*@(<meta name=["']author["'] content=["']{2}).*
Note |
---|
上述したベンダ名 と製品名 は、必ずCPE形式に準拠すること(CPE形式のベンダ名・製品名でNVDからCVE番号を検索するため)。 |
このファイルには、機械学習で画面種別を特定する学習データが定義されている。
新たな学習データを追加する場合は、以下の形式に従って追加する。
Format: field1@field2
Type | Field# | Description |
---|---|---|
必須 | 1 | 画面種別 |
必須 | 2 | 正規表現で記述した製品の特徴量 |
- Example
Login@.*(<input.*type=[\"']text[\"'].*name=[\"']user|uid|username|user_name|name[\"']).*>
Login@.*(<input.*type=[\"']password[\"']).*>
GyoiThonがExploitを実行する場合、通常はデフォルトのExploitモジュールオプションを使用する。
もしオプションの値を変更したい場合は、「exploit_tree.json
」ファイルの「user_specify
」項目に任意の値を設定する。
root@kali:~/GyoiThon/modules/data/ ls
exploit_tree.json
root@kali:~/GyoiThon/modules/data/ vim exploit_tree.json
...snip...
"unix/webapp/joomla_media_upload_exec": {
"targets": {
"0": [
"generic/custom",
"generic/shell_bind_tcp",
"generic/shell_reverse_tcp",
...snip...
"TARGETURI": {
"type": "string",
"required": true,
"advanced": false,
"evasion": false,
"desc": "The base path to Joomla",
"default": "/joomla",
"user_specify": "/my_original_dir/"
},
上記の例は、Exploitモジュール「exploit/unix/webapp/joomla_media_upload_exec
」のオプション項目「TARGETURI
」を、「/joomla
」から「/my_original_dir/
」に変更した様子を示している。
GyoiThonは対象サーバにProxyサーバ経由でアクセスすることが可能である。
Proxyを使用する場合は、config.ini
の以下の項目を変更する。
Category | Parameter | Description |
---|---|---|
Common | proxy | Proxyサーバ情報を「scheme://host:port 」形式で記述する (ex: http://proxy-example:8083 )。 |
proxy_user | Proxy認証が必要な場合、認証用のユーザIDを記述する。 | |
proxy_pass | Proxy認証が必要な場合、認証用のパスワードを記述する。 |
Note |
---|
現在、GyoiThonはBasic認証にのみ対応している。 |