Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
GyoiThon — GyoiThon은 머신러닝을 사용하는 성장 중인 침투 테스트 도구입니다. | Kitploit
도구/GitHubGitHub/gyoisamurai/gyoithon
ReconnaissanceVulnerability ScannersExploit FrameworksInformation GatheringWeb SecurityPenetration TestingMachine LearningSubdomain Enumeration
GitHubgyoisamurai/gyoithon

GyoiThon

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

저장소 보기
8263035년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GyoiThon: 차세대 침투 테스트 도구

Black Hat ASIA Arsenal 2018 Black Hat ASIA Arsenal 2019

일본어 페이지는 여기에 있습니다.

발표

  • 2018년 1월 25일: JANOG41
  • 2018년 3월 23일: Black Hat ASIA 2018 Arsenal
  • 2018년 8월 12일: DEFCON26 DemoLabs
  • 2018년 10월 24일: OWS in CSS2018
  • 2018년 11월 3일: AV TOKYO 2018 HIVE
  • 2018년 12월 22-23일: SECCON YOROZU 2018
  • 2019년 3월 28일: Black Hat ASIA 2019 Arsenal

문서

  • 설치
  • 사용법
  • 팁
  • 데모 (Youtube)

Slack

  • https://gyoithon.slack.com
    GyoiThon Slack에 가입하세요!!

새로운 기능!!

새로운 GyoiThon(버전 0.0.4)은 인터넷에 노출된 하위 도메인을 나열할 수 있습니다. 그리고 하위 도메인이 웹 서비스로 게시된 경우, GyoiThon은 비파괴 취약점 평가인 헬스 체크를 실행합니다.

참고
새로운 기능은 Google custom search API를 사용합니다. 따라서 새 기능을 사용하려면 Google Custom search의 API 키를 준비해야 합니다.
  • 예) 하위 도메인 목록화.
    먼저, 다음과 같이 domain_list.csv를 준비해야 합니다: ``` "Domain Name" mbsd.jp
root@kitploit:~
그리고 다음 명령어를 실행합니다. ```
root@kali:~/GyoiThon# python3 gyoithon.py -i --domain_list

결과적으로, 지정된 도메인과 연결된 서브도메인 목록을 얻을 수 있습니다.

  • 예) 서브도메인을 나열하고 상태 점검을 실행하는 경우.
    GyoiThon은 서브도메인을 나열하며, 해당 서브도메인이 웹 서비스(80 또는 443 포트가 열려 있는 경우)로 게시되어 있으면 비파괴적 취약점 평가인 상태 점검을 실행합니다.``` root@kali:~/GyoiThon# python3 gyoithon.py -i --domain_list --through_health_check --safety
root@kitploit:~
|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을 통해 식별된 제품에 대한 익스플로잇 모듈을 실행할 수 있습니다.  
 그 결과 **대상 웹 서버의 실제 취약점을 검사**할 수 있습니다.  

![Overview](https://raw.githubusercontent.com/gyoisamurai/GyoiThon/master/img/overview.png)

| 참고 |
|:-----|
| 관심이 있다면, **자신이 통제할 수 있는 환경에서 본인의 책임 하에 사용하시기 바랍니다**. |

## <a name='Installation'>설치</a>
1. GyoiThon 리포지토리를 git clone 합니다.```
root@kali:~# git clone https://github.com/gyoisamurai/GyoiThon.git
  1. python3-pip를 설치하세요.``` root@kali:# apt-get update root@kali:# apt-get install python3-pip
root@kitploit:~
3. 필요한 파이썬 패키지를 설치하세요.```
root@kali:~# cd GyoiThon
root@kali:~/GyoiThon# pip3 install -r requirements.txt
root@kali:~/GyoiThon# apt install python3-tk
  1. GyoiThon의 config.ini를 편집합니다.
    config.ini를 편집해야 합니다.
    자세한 내용은 Usage를 참조하십시오.

사용법

옵션 없이 기본 모드를 사용하거나 여러 옵션을 조합하여 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.

root@kitploit:~
### 준비.  
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@kitploit:~
| 참고 |
|:-----|
| 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

기본 모드는 다음과 같은 최소 정보를 수집합니다.

  1. 웹 크롤링을 통한 HTTP 응답 수집
  2. 문자열 패턴 매칭을 통한 제품/버전 식별
  3. 식별된 제품에 대한 CVE 번호 (NVD 기반) 검토
  4. 불필요한 HTML/JavaScript 주석 검토
  5. 불필요한 디버그 메시지 검토
  6. 로그인 페이지 검토
  • 크롤링 설정
    GyoiThon은 Python 라이브러리인 Scrapy를 사용합니다.
    config.ini의 매개변수를 변경하여 Scrapy 설정을 변경할 수 있습니다.
  • 검사 속도 설정
    검사 횟수와 HTTP 응답 크기는 검사 시간에 큰 영향을 미칩니다.
    config.ini의 매개변수를 변경하여 검사 속도를 조정할 수 있습니다.
Note
검사 속도와 정확성은 상충 관계입니다.

2. 클라우드 서비스 검사 모드.```

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

root@kitploit:~
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은 기본 모드 외에도 머신러닝(나이브 베이즈)을 사용하여 제품/버전을 식별합니다.

4. Google 해킹 모드.```

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

root@kitploit:~
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의 파라미터를 변경하면 탐색 설정을 변경할 수 있습니다.

CategoryParameterDescription
ContentExplorerdelay_time탐색 지연 시간. 기본값은 1(초)입니다.
Note
이 옵션을 사용할 경우, GyoiThon이 대상 웹 서버에 대해 수많은 접근(수백 건)을 수행하므로 서버에 부하가 발생할 수 있습니다. 또한 수많은 404 오류 로그가 접근 로그에 기록되므로 SOC(보안 운영 센터)에 탐지될 수 있습니다. 따라서 이 옵션을 사용할 경우 SOC, 관리자 등 관계자에게 사전에 알리고, 통제된 환경에서 자신의 책임 하에 사용하시기 바랍니다.

6. Censys 협력 모드.```

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

root@kitploit:~
`-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, 관리자 등 관련자에게 사전에 알리고, 통제된 환경에서 본인의 책임 하에 사용하시기 바랍니다.

8. 저장된 로그 기반 분석 모드.```

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

root@kitploit:~
`-l` 옵션을 추가하면 GyoiThon은 웹 크롤링 없이 저장된 HTTP 응답을 사용하여 다양한 검사를 수행합니다.

이 모드는 GyoiThon이 웹 크롤링을 실행할 수 없는 웹 애플리케이션을 가정합니다.  
GyoiThon은 로컬 프록시 도구로 수집된 저장된 HTTP 응답을 사용하여 기본 모드의 웹 크롤링과 유사한 다양한 검사를 수행할 수 있습니다.

| 참고 |
|:-----|
| 로그 파일의 확장자는 `.log`입니다. |

#### <a name='complex_mode'>9. 여러 옵션의 조합</a>.  
##### "클라우드 서비스 검사 모드"와 "머신 러닝 분석 모드"의 조합.```
root@kali:~/GyoiThon# python3 gyoithon.py -s -m
"Examination of cloud services mode"와 "Google Hacking mode"의 조합.```

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

root@kitploit:~
##### "클라우드 서비스 모드 검사", "머신러닝 분석 모드" 및 "구글 해킹 모드"의 조합```
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"

root@kitploit:~
#### <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.

Check report.

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

root@kitploit:~
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

root@kitploit:~
|유형|필드#|설명|예시|
|:---|:---|:---|:---|
|필수|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

root@kitploit:~
|유형|필드#|설명|예시|
|:---|:---|:---|:---|
|필수|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

root@kitploit:~
|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

root@kitploit:~
|유형|필드#|설명|
|:---|:---|:---|
|필수|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

root@kitploit:~
|유형|필드#|설명|
|:---|:---|:---|
|필수|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

root@kitploit:~
|Type|Field#|Description|
|:---|:---|:---|
|Required|1|페이지 유형.|
|Required|2|페이지 유형을 식별하는 정규식.|

* 예시```
Login@.*(login|log_in|logon|log_on|signin|sign_in).*
참고
위의 공급업체 이름과 제품 이름은 CPE 형식의 이름과 일치해야 합니다.

2. 학습 데이터를 수동으로 추가하는 방법.

modules/train_data/ 경로에는 머신러닝을 위한 두 개의 학습 데이터가 포함되어 있습니다.``` root@kali:~/GyoiThon/modules/train_data/ ls train_cms_in.txt train_page_type.txt

root@kitploit:~
#### `train_cms_in.txt`  
이는 <a name='machine_learning_mode'>머신러닝 모드</a>에서 머신러닝 분석을 위한 훈련 데이터입니다.  
새로운 훈련 데이터를 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2@field3@field4

선택 필드가 필요하지 않으면 이 필드에 *를 설정해야 합니다.

  • 예시``` 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}).
root@kitploit:~
|참고|
|:---|
|위의 벤더명과 제품명은 [CPE 형식](https://en.wikipedia.org/wiki/Common_Platform_Enumeration)의 이름과 일치해야 합니다.|

#### `train_page_type.txt`  
이것은 <a name='default_mode'>기본 모드</a>에서 머신 러닝을 사용하여 페이지 유형을 식별하기 위한 학습 데이터입니다.  
새로운 학습 데이터를 추가하려면 다음 형식으로 작성해야 합니다.```
Format: field1@field2
유형Field#설명
필수1카테고리.
필수2정규식으로 표현된 페이지의 기능.
  • 예시``` Login@.*(<input.type=["']text["'].name=["']user|uid|username|user_name|name["']).> Login@.(<input.type=["']password["']).>
root@kitploit:~
### 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/"로 변경하는 것입니다.

4. 프록시 서버를 통한 접근 방법.

GyoiThon은 프록시 서버를 통해 대상 서버에 접근할 수 있습니다.
프록시 서버를 사용하려면 config.ini에 프록시 서버 정보를 입력하십시오.

CategoryParameter
Note
현재, GyoiThon은 Basic Authentication만 구현되어 있습니다.

운영 환경 확인

  • Kali Linux 2018.2 (Metasploit용)
    • CPU: Intel(R) Core(TM) i5-5200U 2.20GHz
    • 메모리: 8.0GB
    • Metasploit Framework 4.16.48-dev
    • Python 3.6.6

라이선스

Apache License 2.0

문의하기

[email protected]

  • Masafumi Masuya
    https://twitter.com/gyoizamurai
  • Toshitsugu Yoneyama
    https://twitter.com/yoneyoneyo
  • Isao Takaesu
    https://twitter.com/bbr_bbq
도구 다운로드
인덱스도메인서브도메인IP 주소접근 상태 (http)위치 (http)접근 상태 (https)위치 (https)후이즈 레코드
1mbsd.jpmbsd.jp['40.115.251.148']301https://www.mbsd.jp/301https://www.mbsd.jp/***
2mbsd.jpwww.mbsd.jp['40.115.251.148']301https://www.mbsd.jp/200--
3mbsd.jpwww2.mbsd.jp['40.115.251.148']301https://www.mbsd.jp/200--
CategoryParameterDescription
Spiderdepth_limit크롤링 최대 깊이. 기본값은 2 레이어입니다.
delay_time크롤링 지연 시간. 기본값은 3(초)입니다.
time_out스파이더 종료 옵션. 크롤링 타임아웃. 기본값은 600(초)입니다.
item_count스파이더 종료 옵션. 최대 항목 수. 기본값은 300입니다.
page_count스파이더 종료 옵션. 페이지당 최대 항목 수. 기본값은 0(제한 없음)입니다.
error_count스파이더 종료 옵션. 최대 오류 수. 기본값은 0(제한 없음)입니다.
CategoryParameterDescription
Commonmax_target_url최대 검사 URL 수. 웹 크롤링으로 수집된 URL 수가 이 매개변수 값을 초과하면 초과 URL은 폐기됩니다. 기본값은 100입니다. 0은 무제한입니다.
max_target_byte최대 검사 응답 크기. 응답 크기가 이 매개변수 값을 초과하면 초과 응답은 폐기됩니다. 기본값은 10000바이트입니다. 0은 무제한입니다.
scramble웹 크롤링으로 수집된 URL 목록을 무작위로 정렬합니다. 기본값은 1(유효)입니다. 0은 유효하지 않습니다.
CategoryParameterDescription
Exploitserver_hostRPC 서버(msgrpc)에 할당된 IP 주소.
server_portRPC 서버(msgrpc)에 할당된 포트 번호.
msgrpc_usermsgrpc 인증을 위한 사용자 ID.
msgrpc_passmsgrpc 인증을 위한 비밀번호.
LHOSTRPC 서버(msgrpc)에 할당된 IP 주소.
OptionDescriptionExample
--categoryProduct's category in signature/train data.OS or WEB or FRAMEWORK or CMS.
--vendorProduct's vendor name in signature/train data.wordpress, joomla!, drupal.
--packageImporting 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.
TypeField#Description예시
필수1벤더 이름.joomla
필수2제품 이름.joomla\!
선택3이 학습 데이터와 연결된 버전.*
필수4정규식으로 표현된 제품 기능.(Set-Cookie: [a-z0-9]{32}=.*);
Description
Commonproxy프록시 서버 정보. 형식은 scheme://hostname:port입니다 (예: http://proxy-example:8083).
proxy_user프록시 인증이 필요하면 인증 사용자를 입력하십시오.
proxy_pass프록시 인증이 필요하면 인증 비밀번호를 입력하십시오.