
Github에서 콘텐츠를 고급 마이닝하기 위한 도구
+---------------------------------------------------+
| 개발자는 이 프로그램으로 인해 발생하는 오용이나 |
| 손해에 대해 어떠한 책임도 지지 않으며, |
| 책임을 지지 않습니다. |
+---------------------------------------------------+
GitMiner v3는 공개 GitHub 저장소에서 민감한 정보를 발견하기 위해 설계된 모듈형 도구입니다. 고급 dork 쿼리, 정규식 패턴 매칭을 사용하며 포괄적인 위협 인텔리전스 보고서를 생성합니다.
이 프로젝트는 원본 Gitminer 스크립트의 완전한 리팩토링으로, 유지보수성, 확장성 및 전문적인 소프트웨어 아키텍처 원칙에 중점을 둡니다.
프로젝트는 관심사를 분리하고 명확성을 높이기 위해 모듈형 구조로 구성되어 있습니다.
gitminer_v3/
├── config/ # 구성 파일
│ ├── paths.yaml # 디렉터리, 파일 및 API 경로
│ ├── labels.yaml # 매개변수에 대한 정규식-레이블 매핑
│ └── patterns.yaml # 비밀 탐지를 위한 정규식 패턴
├── data/ # 영구 데이터 저장소
│ └── gitminer_history.sqlite # 기록용 SQLite 데이터베이스
├── gitminer/ # 주요 Python 패키지
│ ├── __init__.py
│ ├── config_manager.py # 모든 구성을 로드하고 관리
│ ├── github_client.py # 모든 GitHub API 상호 작용 처리
│ ├── file_manager.py # 파일 다운로드 및 저장 관리
│ ├── pattern_analyzer.py # 비밀 탐지를 위해 파일 스캔
│ ├── database.py # SQLite 데이터베이스 작업 관리
│ ├── report_generator.py # Markdown 보고서 생성
│ └── utils.py # 공용 유틸리티 함수
├── raw/ # GitHub에서 다운로드한 파일 저장
├── reports/ # 생성된 위협 인텔리전스 보고서 저장
├── gitminer_v3.py # 주요 실행 스크립트
├── requirements.txt # Python 종속성
└── README.md # 이 파일
public_repo 범위의 GitHub Personal Access Token (PAT)저장소를 클론하거나 소스 코드를 다운로드합니다.
GitHub 토큰 설정: GitMiner는 API와 상호 작용하기 위해 GitHub 토큰이 필요합니다. 환경 변수로 설정해야 합니다.
export GITHUB_TOKEN="your_github_personal_access_token_here"
필요한 Python 패키지 설치:
pip install -r requirements.txt
GitMiner의 동작은 config/ 디렉터리의 파일에 의해 제어됩니다.
paths.yaml이 파일은 모든 중요한 경로와 API 설정을 정의합니다.
directories: 원시 파일, 보고서 및 데이터를 저장할 위치를 지정합니다.files: 데이터베이스 및 기본 CSV 출력의 이름을 정의합니다.github: URL, 시간 제한 및 기본 결과 제한과 같은 GitHub API 설정을 포함합니다.labels.yaml이 파일은 정규식 패턴을 사람이 읽을 수 있는 레이블에 매핑합니다. 주로 코드에서 매개변수 이름(예: ftp_user, api_key)을 식별하는 데 사용됩니다.
# 형식: "regex_pattern": "LABEL_NAME"
"(?i)(api[_\\- ]?key|apikey)": "API_KEY"
"(?i)(password|passwd)": "PASSWORD"
patterns.yaml이 파일은 키, 토큰 및 자격 증명과 같은 민감한 값을 탐지하는 데 사용되는 핵심 정규식 패턴을 포함합니다.
# 형식: PATTERN_NAME: "regex_pattern"
GITHUB_TOKEN: "ghp_[A-Za-z0-9_]{36,255}"
AWS_ACCESS_KEY_ID: "AKIA[0-9A-Z]{16}"
기본 스크립트 gitminer_v3.py는 모든 작업의 진입점입니다.
단일 dork로 검색하고 보고서 생성:
python3 gitminer_v3.py -d "filename:.env DB_PASSWORD" --report
여러 dork가 포함된 파일로 검색:
dorks.txt라는 파일을 생성합니다:
filename:wp-config.php DB_PASSWORD
filename:settings.py SECRET_KEY
extension:pem private
그런 다음 명령을 실행합니다:
python3 gitminer_v3.py -d dorks.txt -m 500 --report
다운로드된 모든 파일 목록을 CSV로 내보내기:
python3 gitminer_v3.py -d dorks.txt -o downloaded_files.csv
분석 없이 파일만 다운로드:
python3 gitminer_v3.py -d dorks.txt --no-analyze
GitMiner는 raw/, reports/ 및 data/ 디렉터리에 저장된 여러 유형의 출력을 생성합니다.
GitHub에서 다운로드된 모든 파일은 dork 키워드와 저장소 이름별로 구성되어 raw/ 디렉터리에 저장됩니다.
raw/
└── DB_PASSWORD/
└── someuser_some-repo/
└── .env
--report 플래그를 사용하면 각 dork에 대해 상세한 Markdown 보고서가 생성되어 reports/ 디렉터리에 저장됩니다. 이러한 보고서에는 다음이 포함됩니다:
data/gitminer_history.sqlite 파일에는 모든 작업의 전체 기록이 포함되어 있습니다:
search_history: 수행된 모든 dork 검색 기록.downloaded_files: 다운로드된 모든 파일의 메타데이터.findings: 발견된 모든 비밀의 상세 기록.이 데이터베이스는 장기 추적 및 고급 분석에 사용할 수 있습니다.
GitMiner v3는 쉽게 확장할 수 있도록 설계되었습니다.
config/patterns.yaml에 새 항목을 추가하기만 하면 됩니다.config/labels.yaml에 새 정규식-레이블 쌍을 추가합니다.gitminer/ 패키지의 모듈형 객체 지향 코드는 잘 문서화되어 있으며 쉽게 수정하거나 확장할 수 있습니다.이 프로젝트는 오픈 소스이며 개인적 및 교육적 용도로 사용할 수 있습니다. 책임감 있고 윤리적으로 사용하십시오. 저자는 이 도구의 오용에 대해 책임을 지지 않습니다.
| 인수 | 약어 | 설명 | 필수 |
|---|
--dorks | -d | dork가 포함된 파일(줄당 하나) 또는 단일 dork 문자열. | 예 |
--token | -t | GitHub 토큰(GITHUB_TOKEN 환경 변수 재정의). | 아니요 |
--max-results | -m | dork당 가져올 최대 결과 수. (기본값: 200) | 아니요 |
--per-page | -p | API의 페이지당 결과 수. (기본값: 30, 최대: 100) | 아니요 |
--output-csv | -o | 다운로드된 파일 요약을 CSV 파일로 내보냅니다. | 아니요 |
--report | 상세한 Markdown 위협 인텔리전스 보고서를 생성합니다. | 아니요 | |
--no-analyze | 로컬 파일 분석 단계를 건너뜁니다(파일만 다운로드). | 아니요 |