
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
결과적으로, 지정된 도메인과 연결된 서브도메인 목록을 얻을 수 있습니다.
| 인덱스 | 도메인 | 서브도메인 | 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 | - | - |
|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 설정을 변경할 수 있습니다.| Category | Parameter | Description |
|---|---|---|
| Spider | depth_limit | 크롤링 최대 깊이. 기본값은 2 레이어입니다. |
| delay_time | 크롤링 지연 시간. 기본값은 3(초)입니다. | |
| time_out | 스파이더 종료 옵션. 크롤링 타임아웃. 기본값은 600(초)입니다. | |
| item_count | 스파이더 종료 옵션. 최대 항목 수. 기본값은 300입니다. | |
| page_count | 스파이더 종료 옵션. 페이지당 최대 항목 수. 기본값은 0(제한 없음)입니다. | |
| error_count | 스파이더 종료 옵션. 최대 오류 수. 기본값은 0(제한 없음)입니다. |
config.ini의 매개변수를 변경하여 검사 속도를 조정할 수 있습니다.| Category | Parameter | Description |
|---|---|---|
| Common | max_target_url | 최대 검사 URL 수. 웹 크롤링으로 수집된 URL 수가 이 매개변수 값을 초과하면 초과 URL은 폐기됩니다. 기본값은 100입니다. 0은 무제한입니다. |
| max_target_byte | 최대 검사 응답 크기. 응답 크기가 이 매개변수 값을 초과하면 초과 응답은 폐기됩니다. 기본값은 10000바이트입니다. 0은 무제한입니다. | |
| scramble | 웹 크롤링으로 수집된 URL 목록을 무작위로 정렬합니다. 기본값은 1(유효)입니다. 0은 유효하지 않습니다. |
| Note |
|---|
| 검사 속도와 정확성은 상충 관계입니다. |