
gitGraber: 다양한 온라인 서비스(Google, Amazon, Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe...)에 대해 실시간으로 GitHub를 모니터링하여 민감한 데이터를 검색하고 찾아냅니다.

gitGraber는 Python3로 개발된 도구로, GitHub를 모니터링하여 Google, Amazon (AWS), Paypal, Github, Mailgun, Facebook, Twitter, Heroku, Stripe, Twilio 등의 다양한 온라인 서비스에서 실시간으로 민감한 데이터를 검색하고 찾습니다.

gitGraber는 리포지토리의 기록을 확인하도록 설계되지 않았다는 점을 이해하는 것이 중요합니다. 많은 도구가 이미 이를 훌륭하게 수행할 수 있습니다. gitGraber는 원래 GitHub에서 마지막으로 인덱싱된 파일을 모니터링하고 파싱하기 위해 개발되었습니다. gitGraber가 흥미로운 내용을 찾으면 Slack 채널로 알림을 받게 됩니다. 명령줄에서 직접 결과를 확인하는 용도로도 사용할 수 있습니다.
경험상, 유출은 조직 자체에서만 발생하는 것이 아니라, 반드시 특정 조직에서 일한다는 '프로필'을 가지고 있지 않은 서비스 제공업체와 직원으로부터도 발생한다고 확신합니다.
정규식은 가능한 한 정확해야 합니다. 때로는 오탐지가 발생할 수 있으니, 리콘을 개선하고 패턴 탐지를 위한 새 정규식을 추가하는 데 기여해 주시기 바랍니다.
gitGraber가 찾을 수 있지만 모니터링에 관련이 없는 '표준' API 키마다 알림을 보내는 대신 오탐지를 줄이는 것을 선호합니다.
gitGraber는 CLI에 몇 가지 내용을 직접 표시합니다: GitHub 요청, 상태 코드 남용 탐지(200 또는 403)... 그리고 [+] POSSIBLE FOO TOKEN FOUND 같은 내용이 보이지 않는다면, 이는 단순히 gitGraber가 정의된 키워드에 대해 비밀 토큰을 찾지 못했다는 의미입니다.
이 메시지는 GitHub에서 사용자의 GitHub 토큰으로부터 많은 수의 요청을 감지할 때 나타납니다. 걱정하지 마세요. gitGraber는 이를 처리할 수 있으며 config.py 파일에 정의된 다른 토큰을 사용하려고 시도합니다. 참고: 이는 일시적인 제한이며 새 토큰을 만들 필요가 없습니다.
아니요. 이를 방지하기 위해 gitGraber는 모든 리포지토리 URL을 rawGitUrls.txt 파일에 저장합니다. 이미 gitGraber가 스캔하여 API 키를 찾은 리포지토리는 알림을 받지 않습니다.
tokens.py 파일을 편집하고 토큰을 초기화할 때 패턴을 리스트 인수로 추가해야 합니다. 예를 들어, MAILCHIMP 토큰에 XXXX 패턴을 추가하려면 tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W')) 행을 tokensList.append(Token('MAILCHIMP', '\W(?:[a-f0-9]{32}(-us[0-9]{1,2}))\W', ['XXXX']))로 변경합니다.
usage: gitGraber.py [-h] [-k KEYWORDSFILE] [-q QUERY] [-s] [-w WORDLIST]
optional arguments:
-h, --help Show this help message and exit
-k KEYWORDSFILE, --keyword KEYWORDSFILE Specify a keywords file (-k keywordsfile.txt)
-q QUERY, --query QUERY Specify your github query (-q "apikey")
-m, --monitor Enable monitoring of your search query by creating cron job [Every 30 mins]
-d, --discord Enable discord notifications
-s, --slack Enable slack notifications
-tg, --telegram Enable telegram notifications
-w WORDLIST, --wordlist WORDLIST Create a wordlist that fills dynamically with discovered filenames on GitHub
-l LIMIT_DAYS, --limit LIMIT_DAYS Limit the results to commits less than N days old
예를 들어, GitHub에서 특정 단어를 keywordsfile.txt 파일의 각 단어와 조합하여 검색하고 Slack으로 출력하려면:
python3 gitGraber.py -k keywordsfile.txt -q YOURWORD -s
예를 들어 특정 도메인 이름을 검색할 수도 있으며, 이때는 큰따옴표로 묶어야 합니다:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s
GitHub에서 발견된 파일을 기반으로 사용자 정의 워드리스트를 만들어 나중에 즐겨 사용하는 퍼징 도구와 함께 사용하려면 -w 인수를 추가하세요:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -w mysuperwordlist.txt
검색 쿼리를 30분마다 모니터링하려면 -m 플래그를 사용하여 gitGraber가 해당 쿼리에 대한 cron 작업을 생성하도록 할 수 있습니다:
python3 gitGraber.py -k keywordsfile.txt -q \"yahoo.com\" -s -m
위 명령은 30분마다 검색 쿼리에서 비밀을 검색하고, 일치하는 항목이 있을 때마다 Slack 알림을 보냅니다.
gitGraber는 일부 의존성이 필요합니다. 환경에 설치하려면:
pip3 install -r requirements.txt
gitGraber를 시작하기 전에 설정 파일 config.py를 수정해야 합니다:
GITHUB_TOKENS = ['yourToken1Here','yourToken2Here']DISCORD_WEBHOOKURL = 'https://discordapp.com/api/webhooks/7XXXX/XXXXXX'SLACK_WEBHOOKURL = 'https://hooks.slack.com/services/TXXXX/BXXXX/XXXXXXX'TELEGRAM_CONFIG = { "token": "XXXXX:xXXXXXXXXXXXXX", "chat_id": -99999999 }gitGraber 시작: python3 gitGraber.py -k wordlists/keywords.txt -q "uber" -s
현재 gitGraber는 31개의 다양한 토큰을 지원합니다. 이러한 탐지 모델(정규식)은 모두 tokens.py 파일에 저장되어 있습니다:
일부 단어 목록 및 정규식은 직접 작성했으며, 다른 일부는 다른 리포지토리/연구자에게서 영감을 받았습니다:
gitGraber 개선에 기여해 주신 분들께 감사드립니다:
이 프로젝트는 교육 및 윤리적 테스트 목적으로만 제작되었습니다. 사전 상호 동의 없이 대상을 공격하기 위해 이 도구를 사용하는 것은 불법입니다. 개발자는 어떠한 책임도 지지 않으며, 이 도구로 인한 오용이나 피해에 대해 책임을 지지 않습니다.
| 서비스 | 링크 |
|---|
| GitHub | GitHub API 토큰 생성 방법 |
| Discord | Discord Webhook URL 생성 방법 |
| Slack | Slack Webhook URL 생성 방법 |
| Telegram | Telegram 봇 생성 방법 |