
GyoiThon은 머신러닝을 사용하는 성장 중인 침투 테스트 도구입니다.

일본어 페이지는 여기에 있습니다.
새로운 GyoiThon(버전 0.0.4)은 인터넷에 노출된 하위 도메인을 나열할 수 있습니다. 그리고 하위 도메인이 웹 서비스로 게시된 경우, GyoiThon은 비파괴 취약점 평가인 헬스 체크를 실행합니다.
| 참고 |
|---|
| 새로운 기능은 Google custom search API를 사용합니다. 따라서 새 기능을 사용하려면 Google Custom search의 API 키를 준비해야 합니다. |
domain_list.csv를 준비해야 합니다: ```
"Domain Name"
mbsd.jp그리고 다음 명령어를 실행합니다. ```
root@kali:~/GyoiThon# python3 gyoithon.py -i --domain_list
결과적으로, 지정된 도메인과 연결된 서브도메인 목록을 얻을 수 있습니다.
|Index|도메인|서브도메인|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은 웹 서버를 위한 **정보 수집 도구**입니다.
GyoiThon은 대상 웹 서버에 **원격 접속**을 수행하여 **서버에서 운영 중인 제품**(CMS, 웹 서버 소프트웨어, 프레임워크, 프로그래밍 언어 등)을 **식별**합니다. 또한, 식별된 제품에 대해 Metasploit을 사용하여 **익스플로잇 모듈을 실행**할 수 있습니다. GyoiThon은 이러한 작업을 **완전 자동으로 수행**합니다.
GyoiThon의 주요 기능은 다음과 같습니다.
* 원격 접속/완전 자동
GyoiThon은 **원격 접속만**으로 대상 웹 서버의 정보를 **완전 자동으로** 수집할 수 있습니다. 작업을 위해 GyoiThon을 한 번만 실행하면 됩니다.
* 비파괴적 테스트
GyoiThon은 **정상적인 접근만**을 사용하여 대상 웹 서버의 정보를 수집할 수 있습니다.
단, 일부 옵션을 사용할 경우 익스플로잇 모듈 전송과 같은 비정상적인 접근을 수행할 수도 있습니다.
* 다양한 정보 수집
GyoiThon은 웹 크롤러, Google Custom Search API, Censys, 기본 콘텐츠 탐색기, 클라우드 서비스 검사 등 다양한 정보 수집 엔진을 갖추고 있습니다. **문자열 패턴 매칭**과 **머신러닝**을 사용하여 수집된 정보를 분석함으로써 대상 웹 서버에서 운영 중인 **제품/버전/CVE 번호**, **불필요한 HTML 주석**/**디버그 메시지**, **로그인 페이지** 등을 식별할 수 있습니다.
* 실제 취약점 검사
GyoiThon은 Metasploit을 통해 식별된 제품에 대한 익스플로잇 모듈을 실행할 수 있습니다.
그 결과 **대상 웹 서버의 실제 취약점을 검사**할 수 있습니다.

| 참고 |
|:-----|
| 관심이 있다면, **자신이 통제할 수 있는 환경에서 본인의 책임 하에 사용하시기 바랍니다**. |
## <a name='Installation'>설치</a>
1. GyoiThon 리포지토리를 git clone 합니다.```
root@kali:~# git clone https://github.com/gyoisamurai/GyoiThon.git
3. 필요한 파이썬 패키지를 설치하세요.```
root@kali:~# cd GyoiThon
root@kali:~/GyoiThon# pip3 install -r requirements.txt
root@kali:~/GyoiThon# apt install python3-tk
config.ini를 편집해야 합니다.옵션 없이 기본 모드를 사용하거나 여러 옵션을 조합하여 GyoiThon은 대상 웹 서버의 다양한 정보를 수집할 수 있습니다.``` 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`에 대상 웹 서버를 작성해야 합니다.
작성 형식은 `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/
| 참고 |
|:-----|
| Root Path의 시작과 끝에 `/`를 입력하세요. |
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 설정을 변경할 수 있습니다.config.ini의 매개변수를 변경하여 검사 속도를 조정할 수 있습니다.| Note |
|---|
| 검사 속도와 정확성은 상충 관계입니다. |
root@kali:~/GyoiThon# python3 gyoithon.py -s
By add `-s` option, GyoiThon identifies target web server uses cloud service or not in addition to default mode.
Before execution, you must change the below parameter of `config.ini`.
|Category|Parameter|Description|
|:----|:----|:----|
|CloudChecker|azure_ip_range|Source URL of Azure Datacenter IP Ranges. |
This parameter is source URL of Azure Datacenter IP range. This URL is changed a few per day. So, you must get the latest URL from link "click here to download manually" of page "[Microsoft Azure Datacenter IP Ranges](https://www.microsoft.com/en-us/download/confirmation.aspx?id=41653)" and set it to above parameter before execute GyoiThon.
#### 3. Machine Learning analysis mode.```
root@kali:~/GyoiThon# python3 gyoithon.py -m
-m 옵션을 추가하면, GyoiThon은 기본 모드 외에도 머신러닝(나이브 베이즈)을 사용하여 제품/버전을 식별합니다.
root@kali:~/GyoiThon# python3 gyoithon.py -g
By add `-g` option, GyoiThon identifies products/version using Google Custom Search API in addition to default mode. Before execution, you must set [API key](https://console.cloud.google.com/apis/dashboard) and [Search engine ID](https://support.google.com/customsearch/answer/2649143?hl=ja) to the below parameters.
|범주|매개변수|설명|
|:----|:----|:----|
|GoogleHack|api_key|Google Custom Search API의 API 키. |
||search_engine_id|Google 검색 엔진 ID. |
| 참고 |
|:-----|
| 하루 100회 쿼리의 무료 Google Custom Search API를 사용할 수 있습니다. 그러나 100회 이상의 쿼리를 사용하려면 Google Custom Search API 서비스 비용을 지불해야 합니다. |
#### 5. 기본 콘텐츠 모드 탐색.```
root@kali:~/GyoiThon# python3 gyoithon.py -e
By -e 옵션을 추가하면 GyoiThon은 기본 모드에 더해 CMS, 웹 서버 소프트웨어 등의 제품 기본 콘텐츠를 탐색합니다.
config.ini의 파라미터를 변경하면 탐색 설정을 변경할 수 있습니다.
| Category | Parameter | Description |
|---|---|---|
| ContentExplorer | delay_time | 탐색 지연 시간. 기본값은 1(초)입니다. |
| Note |
|---|
| 이 옵션을 사용할 경우, GyoiThon이 대상 웹 서버에 대해 수많은 접근(수백 건)을 수행하므로 서버에 부하가 발생할 수 있습니다. 또한 수많은 404 오류 로그가 접근 로그에 기록되므로 SOC(보안 운영 센터)에 탐지될 수 있습니다. 따라서 이 옵션을 사용할 경우 SOC, 관리자 등 관계자에게 사전에 알리고, 통제된 환경에서 자신의 책임 하에 사용하시기 바랍니다. |
root@kali:~/GyoiThon# python3 gyoithon.py -c
`-c` 옵션을 추가하면, GyoiThon은 [Censys](https://censys.io/)를 사용하여 열린 포트 번호와 서버 인증을 검사합니다.
실행 전에, 아래 매개변수에 API 키와 시크릿 키를 설정해야 합니다.
|카테고리|매개변수|설명|
|:----|:----|:----|
|Censys|api_id|Censys의 API 키. |
||secret|Censys의 시크릿 키. |
#### 7. Metasploit 협력 모드.```
root@kali:~/GyoiThon# python3 gyoithon.py -p
By add -p option, GyoiThon examines real vulnerabilities such as DoS and backdoor using Metasploit in addition to default mode.
Before execution, you must launch RPC server of Metasploit and set below parameters in config.ini.
| Note |
|---|
| 이 옵션을 사용하면 GyoiThon이 대상 웹 서버에 대해 익스플로잇을 실행하므로 서버 운영에 심각한 영향을 줄 수 있습니다. 또한 익스플로잇은 실제 공격과 유사하기 때문에 이 옵션이 SOC(Security Operation Center)에 탐지될 수 있습니다. 따라서 이 옵션을 사용하는 경우 SOC, 관리자 등 관련자에게 사전에 알리고, 통제된 환경에서 본인의 책임 하에 사용하시기 바랍니다. |
root@kali:~/GyoiThon# python3 gyoithon.py -l --log_path="Full path of stored logs"
`-l` 옵션을 추가하면 GyoiThon은 웹 크롤링 없이 저장된 HTTP 응답을 사용하여 다양한 검사를 수행합니다.
이 모드는 GyoiThon이 웹 크롤링을 실행할 수 없는 웹 애플리케이션을 가정합니다.
GyoiThon은 로컬 프록시 도구로 수집된 저장된 HTTP 응답을 사용하여 기본 모드의 웹 크롤링과 유사한 다양한 검사를 수행할 수 있습니다.
| 참고 |
|:-----|
| 로그 파일의 확장자는 `.log`입니다. |
#### <a name='complex_mode'>9. 여러 옵션의 조합</a>.
##### "클라우드 서비스 검사 모드"와 "머신 러닝 분석 모드"의 조합.```
root@kali:~/GyoiThon# python3 gyoithon.py -s -m
root@kali:~/GyoiThon# python3 gyoithon.py -s -g
##### "클라우드 서비스 모드 검사", "머신러닝 분석 모드" 및 "구글 해킹 모드"의 조합```
root@kali:~/GyoiThon# python3 gyoithon.py -s -m -g
root@kali:~/GyoiThon# python3 gyoithon.py -s -m -g -e -c -p -l --log_path="Full path of stored logs"
#### <a name='generating_sig'>10. 시그니처/훈련 데이터 모드 생성</a>.```
root@kali:~/GyoiThon# python3 gyoithon.py -d --category=CMS --vendor=joomla! [email protected]@_origin.tar.zip
By add -d option, GyoiThon generates signatures/train data for detecting Web products operated on the target Web Server.
The options is following.
After finished execution of GyoiThon, reports of each target are generated to the following path.
-d 옵션을 추가하면, GyoiThon은 대상 웹 서버에서 운영되는 웹 제품을 탐지하기 위한 시그니처/학습 데이터를 생성합니다.
옵션은 다음과 같습니다.
GyoiThon 실행이 완료된 후, 각 대상에 대한 보고서는 다음 경로에 생성됩니다.``` root@kali:~/GyoiThon/report# ls gyoithon_report_192.168.220.129_80_1082018338.csv gyoithon_report_192.168.220.129_80_bodgeit.csv gyoithon_report_192.168.220.129_80_cyclone.csv gyoithon_report_192.168.220.129_80_vicnum.csv gyoithon_report_192.168.220.129_80_WackoPicko.csv gyoithon_censys_report_www.gyoithon.example.com_443_test.csv
GyoiThon은 다음 두 가지 유형의 보고서를 생성합니다.
* `gyoithon_report_target FQDN(또는 IP 주소)_포트번호_루트경로.csv`
이는 주로 제품명, 버전, CVE 등을 포함하는 주요 보고서입니다.
보고서 형식은 `gyoithon_report_target FQDN(또는 IP 주소)_포트번호_루트경로.csv`입니다.
각 열의 세부 정보는 다음과 같습니다.
|열|설명|예시|
|:----|:----|:----|
|fqdn|대상 웹 서버의 FQDN|`www.gyoithon.example.com`|
|ip_addr|대상 웹 서버의 IP 주소|`192.168.220.129`|
|port|대상 웹 서버의 포트 번호|`80`|
|cloud_type|클라우드 서비스 이름(Azure, AWS, GCP 또는 Unknown)|`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, CMS, Framework 등)|`Web`|
|prod_vuln|식별된 제품에 따른 CVE 번호(CVSS 점수 내림차순)|`CVE-2017-3167, CVE-2017-3169, CVE-2017-7668` ...|
|origin_login|로그인 페이지 존재 여부(Log: 머신러닝 분석, Url: URL 문자열 패턴 매칭 분석)|`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|원시 데이터의 경로|`/usr/home/~snip~/http_192.168.220.129_80_20181112170525765.log`|
|date|검사 일자|`2018/11/12 17:05:25`|
* `gyoithon_censys_report_target FQDN(또는 IP 주소)_포트번호_루트경로.csv`
이는 Censys를 사용한 검색 결과 보고서로, 오픈 포트, 인증 정보 등을 포함합니다.
보고서 형식은 `gyoithon_censys_report_target FQDN(또는 IP 주소)_포트번호_루트경로.csv`입니다.
각 열의 세부 정보는 다음과 같습니다.
|열|설명|예시|
|:----|:----|:----|
|fqdn|대상 웹 서버의 FQDN|`www.gyoithon.example.com`|
|ip_addr|대상 웹 서버의 IP 주소|`192.168.220.129`|
|category|정보 카테고리|`Server Info` 또는 `Certification Info`|
|open_port|오픈 웹 포트|`443`|
|protocol|오픈 웹 포트의 프로토콜|`https`|
|sig_algorithm|인증의 서명 알고리즘|`SHA256-RSA`|
|cname|인증의 공통명|`www.gyoithon.example.com`|
|valid_start|인증의 유효 시작일|`2018-08-15T00:00:00Z`|
|valid_end|인증의 유효 종료일|`2019-09-16T12:00:00Z`|
|organization|인증의 조직명|`GyoiThon coorporation, Inc.`|
|date|검사 일자|`2018/11/22 11:19:36`|
| 참고 |
|:-----|
| Censys는 전체 인터넷을 조사하는 데 며칠에서 몇 주가 소요되므로 Censys에서 얻은 정보는 최신 상태가 아닐 수 있습니다.|
## <a name='Tips'>팁</a>
### 1. 새 시그니처(문자열 매칭 패턴)를 수동으로 추가하는 방법
`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
signature_product.txt이는 기본 모드에서 제품 식별을 위한 문자열 매칭 패턴입니다.
새로운 문자열 매칭 패턴을 추가하려면, 다음과 같은 형식으로 작성해야 합니다.```
Format: field1@field2@field3@field4@field5
|유형|필드#|설명|예시|
|:---|:---|:---|:---|
|필수|1|제품 카테고리.|`CMS`|
|필수|2|공급업체 이름.|`drupal`|
|필수|3|제품 이름.|`drupal`|
|선택|4|이 서명과 바인딩된 버전.|`8.0` |
|필수|5|제품 식별을 위한 정규식.|`.*(X-Generator: Drupal 8).*`|
선택 필드가 필요하지 않은 경우, 해당 필드에 `*`를 설정해야 합니다.
* 예시```
CMS@wordpress@wordpress@*@.*(WordPress ([0-9]+[\.0-9]*[\.0-9]*)).*
CMS@drupal@[email protected]@.*(X-Generator: Drupal 8).*
| 참고 |
|---|
| 제품 버전을 추출하려면 두 개의 정규식 그룹을 작성합니다(두 번째 정규식은 버전 추출에 사용됩니다). |
signature_default_content.txt이는 기본 콘텐츠 모드 탐색에서 제품 식별을 위한 문자열 매칭 패턴입니다.
새로운 문자열 매칭 패턴을 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2@field3@field4@field5@field6@field7@field8
|유형|필드#|설명|예시|
|:---|:---|:---|:---|
|필수|1|제품 카테고리.|`CMS`|
|필수|2|공급업체 이름.|`sixapart`|
|필수|3|제품 이름.|`movabletype`|
|선택|4|이 시그니처와 연결된 버전.|`*` |
|필수|5|탐색 경로|`/readme.html`|
|선택|6|제품 확인을 위한 정규식.|`.*(Movable Type).*`|
|선택|7|버전 식별을 위한 정규식.|`(v=([0-9]+[\.0-9]*[\.0-9]*))`|
|필수|8|로그인 페이지 여부.|로그인 페이지는 `1`, 로그인 페이지가 아니면 `0`|
선택 필드가 필요하지 않은 경우, 이 필드에 `*`를 설정해야 합니다.
* 예제```
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
| 참고 |
|---|
| 제품 버전을 추출하려면 두 개의 정규식 그룹을 작성합니다 (두 번째 정규식은 버전 추출에 사용됩니다). |
| 참고 |
|---|
GyoiThon이 Explore path만으로 제품을 확인할 수 없는 경우, Regex of to confirm product 필드를 지정해야 합니다. GyoiThon은 Explore path에 해당하는 URL에 접속하여 Regex of to confirm product를 사용하여 HTTP 응답을 검사합니다. 이 정규식이 일치하면 GyoiThon은 해당 제품이 존재한다고 판단합니다. |
signature_search_query.txt이는 Google Hacking 모드에서 제품 식별을 위한 Google 맞춤 검색 쿼리입니다.
새로운 쿼리를 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2@field3@field4@field5@field6@field7@field8
|Type|Field#|Description|Example|
|:---|:---|:---|:---|
|Optional|1|제품 카테고리.|`CMS`|
|Optional|2|벤더 이름.|`sixapart`|
|Optional|3|제품 이름.|`movabletype`|
|Optional|4|이 서명과 연동된 버전.|`*`|
|Required|5|Google Custom Search 질의|`inurl:/readme.html`|
|Optional|6|제품 확인을 위한 정규식.|`.*(Movable Type).*`|
|Optional|7|버전 식별을 위한 정규식.|`(v=([0-9]+[\.0-9]*[\.0-9]*))`|
|Optional|8|로그인 페이지 여부.|로그인 페이지는 `1`, 로그인 페이지가 아니면 `0`|
선택적 필드가 필요하지 않은 경우, 이 필드에 `*`를 설정해야 합니다.
* 예시```
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
| 참고 |
|---|
| 제품 버전을 추출하려면 두 개의 정규식 그룹을 작성합니다(두 번째 정규식은 버전 추출에 사용됩니다). |
| 참고 |
|---|
GyoiThon이 Google Custom Search query만으로 제품을 확인할 수 없는 경우, Regex of to confirm product 필드를 지정해야 합니다. GyoiThon은 Google Custom Search API 실행 결과에 포함된 URL에 접근하여 Regex of to confirm product를 사용하여 HTTP 응답을 검사합니다. 이 정규식이 일치하면 GyoiThon은 해당 제품이 존재한다고 판단합니다. |
signature_comment.txt이는 기본 모드에서 불필요한 주석을 식별하기 위한 문자열 일치 패턴입니다.
새로운 문자열 일치 패턴을 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1
|유형|필드#|설명|
|:---|:---|:---|
|필수|1|불필요한 주석의 Regex|
* 예시```
(user\s*=|[\"']user[\"']\s*:|user_id\s*=|[\"']user_id[\"']\s*:|id\s*=|[\"']id[\"']\s*:)
(select\s+[\s\r\n\w\d,\"']*\s+from)
signature_error.txt이것은 기본 모드에서 불필요한 디버그 메시지 식별을 위한 문자열 일치 패턴입니다.
새로운 문자열 일치 패턴을 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1
|유형|필드#|설명|
|:---|:---|:---|
|필수|1|불필요한 디버그 메시지의 정규 표현식.|
* 예시```
(ORA-[0-9a-zA-Z\.])
(fail|error|notice|parse|warning|fatal)[^\n]*line[^\n]*[0-9]+
signature_page_type_from_url.txt이것은 default mode에서 URL 기반 페이지 유형 식별을 위한 문자열 매칭 패턴입니다.
새로운 문자열 매칭 패턴을 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2
|Type|Field#|Description|
|:---|:---|:---|
|Required|1|페이지 유형.|
|Required|2|페이지 유형을 식별하는 정규식.|
* 예시```
Login@.*(login|log_in|logon|log_on|signin|sign_in).*
| 참고 |
|---|
| 위의 공급업체 이름과 제품 이름은 CPE 형식의 이름과 일치해야 합니다. |
modules/train_data/ 경로에는 머신러닝을 위한 두 개의 학습 데이터가 포함되어 있습니다.```
root@kali:~/GyoiThon/modules/train_data/ ls
train_cms_in.txt
train_page_type.txt
#### `train_cms_in.txt`
이는 <a name='machine_learning_mode'>머신러닝 모드</a>에서 머신러닝 분석을 위한 훈련 데이터입니다.
새로운 훈련 데이터를 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2@field3@field4
선택 필드가 필요하지 않으면 이 필드에 *를 설정해야 합니다.
|참고|
|:---|
|위의 벤더명과 제품명은 [CPE 형식](https://en.wikipedia.org/wiki/Common_Platform_Enumeration)의 이름과 일치해야 합니다.|
#### `train_page_type.txt`
이것은 <a name='default_mode'>기본 모드</a>에서 머신 러닝을 사용하여 페이지 유형을 식별하기 위한 학습 데이터입니다.
새로운 학습 데이터를 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2
| 유형 | Field# | 설명 |
|---|---|---|
| 필수 | 1 | 카테고리. |
| 필수 | 2 | 정규식으로 표현된 페이지의 기능. |
### 3. "Exploit 모듈 옵션"을 변경하는 방법.
GyoiThon이 익스플로잇을 수행할 때, **기본값**의 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은 프록시 서버를 통해 대상 서버에 접근할 수 있습니다.
프록시 서버를 사용하려면 config.ini에 프록시 서버 정보를 입력하십시오.
| Category | Parameter |
|---|
| Note |
|---|
| 현재, GyoiThon은 Basic Authentication만 구현되어 있습니다. |
| 인덱스 | 도메인 | 서브도메인 | IP 주소 | 접근 상태 (http) | 위치 (http) | 접근 상태 (https) | 위치 (https) | 후이즈 레코드 |
|---|
| 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 | - | - |
| Category | Parameter | Description |
|---|
| Spider | depth_limit | 크롤링 최대 깊이. 기본값은 2 레이어입니다. |
| delay_time | 크롤링 지연 시간. 기본값은 3(초)입니다. | |
| time_out | 스파이더 종료 옵션. 크롤링 타임아웃. 기본값은 600(초)입니다. | |
| item_count | 스파이더 종료 옵션. 최대 항목 수. 기본값은 300입니다. | |
| page_count | 스파이더 종료 옵션. 페이지당 최대 항목 수. 기본값은 0(제한 없음)입니다. | |
| error_count | 스파이더 종료 옵션. 최대 오류 수. 기본값은 0(제한 없음)입니다. |
| Category | Parameter | Description |
|---|
| Common | max_target_url | 최대 검사 URL 수. 웹 크롤링으로 수집된 URL 수가 이 매개변수 값을 초과하면 초과 URL은 폐기됩니다. 기본값은 100입니다. 0은 무제한입니다. |
| max_target_byte | 최대 검사 응답 크기. 응답 크기가 이 매개변수 값을 초과하면 초과 응답은 폐기됩니다. 기본값은 10000바이트입니다. 0은 무제한입니다. | |
| scramble | 웹 크롤링으로 수집된 URL 목록을 무작위로 정렬합니다. 기본값은 1(유효)입니다. 0은 유효하지 않습니다. |
| Category | Parameter | Description |
|---|
| Exploit | server_host | RPC 서버(msgrpc)에 할당된 IP 주소. |
| server_port | RPC 서버(msgrpc)에 할당된 포트 번호. | |
| msgrpc_user | msgrpc 인증을 위한 사용자 ID. | |
| msgrpc_pass | msgrpc 인증을 위한 비밀번호. | |
| LHOST | RPC 서버(msgrpc)에 할당된 IP 주소. |
| Option | Description | Example |
|---|
| --category | Product's category in signature/train data. | OS or WEB or FRAMEWORK or CMS. |
| --vendor | Product's vendor name in signature/train data. | wordpress, joomla!, drupal. |
| --package | Importing target package file name. You have to separate three fields that product name, version and extension using @. | [email protected]@.tar.gz, [email protected]@_origin.tar.zip, [email protected]@.tar.gz. |
| 옵션 | 설명 | 예시 |
|---|
| --category | 시그니처/학습 데이터에서 제품의 카테고리입니다. | OS 또는 WEB 또는 FRAMEWORK 또는 CMS. |
| --vendor | 시그니처/학습 데이터에서 제품의 벤더 이름입니다. | wordpress, joomla!, drupal. |
| --package | 가져올 대상 패키지 파일 이름입니다. 제품 이름, 버전, 확장자 세 가지 필드를 @로 구분해야 합니다. | [email protected]@.tar.gz, [email protected]@_origin.tar.zip, [email protected]@.tar.gz. |
| Type | Field# | Description | 예시 |
|---|
| 필수 | 1 | 벤더 이름. | joomla |
| 필수 | 2 | 제품 이름. | joomla\! |
| 선택 | 3 | 이 학습 데이터와 연결된 버전. | * |
| 필수 | 4 | 정규식으로 표현된 제품 기능. | (Set-Cookie: [a-z0-9]{32}=.*); |
| Description |
|---|
| Common | proxy | 프록시 서버 정보. 형식은 scheme://hostname:port입니다 (예: http://proxy-example:8083). |
| proxy_user | 프록시 인증이 필요하면 인증 사용자를 입력하십시오. | |
| proxy_pass | 프록시 인증이 필요하면 인증 비밀번호를 입력하십시오. |