
공개 GitHub REST API를 활용하여 OSINT, 포렌식, 침투 테스트 등 다양한 보안 작업을 수행하는 다각적인 보안 도구입니다.
Gitxray(Git X-Ray의 약자)는 GitHub 리포지토리에서 사용하도록 설계된 다목적 보안 도구입니다. OSINT 및 포렌식을 포함한 다양한 목적으로 사용할 수 있습니다. gitxray는 공개 GitHub REST API를 활용하여 수동으로 얻기에는 매우 시간이 많이 소요되는 정보를 수집합니다. 또한 기존과 다른 방식으로 정보를 찾습니다.

Gitxray는 예를 들어 다음과 같은 용도로 사용할 수 있습니다:
예를 들어 Armored PGP 키 또는 키 이름 내에 우연히 공개된 기여자 프로필의 민감한 정보를 찾습니다.
리포지토리에서 위협 행위자를 식별합니다. 공동 소유 또는 공유 계정을 발견하고 공개 이벤트를 검사하여 가짜 Stargazers를 찾을 수 있습니다.
가짜 또는 감염된 리포지토리를 식별합니다. 변조된 커밋 날짜를 감지하고, 예를 들어 릴리스 후 업데이트된 릴리스 자산 등을 탐지할 수 있습니다.
사고 당일 다른 어떤 일이 발생했는지 확인하기 위해 날짜별로 결과를 필터링하는 등의 포렌식 사용 사례.
그 외에도 많습니다! 전체 X-Ray를 실행하여 방대한 데이터를 수집하세요.
gitxray -r https://github.com/some-org/some-repository
gitxray -r https://github.com/some-org/some-repository -f user_input -outformat text
gitxray -r https://github.com/some-org/some-repository -f keys,association,starred -outformat text
gitxray -r https://github.com/some-org/some-repository -f warning -outformat text
gitxray -r https://github.com/some-org/some-repository -f 2024-09-01 -outformat text
추가 사용 사례 및 소개 정보는 문서를 참조하십시오.
Gitxray는 속도 제한(Rate Limits)을 우아하게 처리하며 GitHub API 토큰 없이도 즉시 작동할 수 있지만, 속도 제한에 꽤 빨리 도달할 수 있습니다(기여자가 10명 이상인 소규모에서 중간 규모 리포지토리는 속도 제한이 재설정되기를 기다리는 동안 완료하는 데 몇 시간이 걸릴 수 있습니다). 이는 GitHub의 문서에 자세히 설명되어 있습니다.
그러나 공개 리포지토리로 범위가 지정된 간단한 읽기 전용 토큰 생성은 이러한 제한을 상당히 높이는 데 도움이 됩니다. 서두르지 않거나 gitxray를 실행 상태로 둘 수 있다면 제한이 해제될 때까지 실행을 일시 중지하므로 전체 용량을 사용할 수 있습니다.
그런 다음 다음을 사용하여 안전하게 토큰을 로드할 수 있습니다(화면에 토큰이 표시되거나 셸 기록에 기록되는 것을 방지):
read -rs GH_ACCESS_TOKEN
export
Gitxray는 선택적으로 VirusTotal API를 사용하여 GitHub의 Code Search API로 식별된 모든 호스트를 확인할 수 있지만, 작동하려면 VirusTotal API 키가 필요합니다. VirusTotal API 키를 얻는 방법에 대한 지침은 다음에서 확인할 수 있습니다: https://docs.virustotal.com/docs/please-give-me-an-api-key
안타깝게도 개인 API 키는 (현재 기준) VirusTotal에 의해 하루 500회 조회로 제한됩니다.
API 키를 확보한 후, 다음을 사용하여 환경에 안전하게 로드할 수 있습니다:
read -rs VT_API_KEY
export
gitxray는 requests 라이브러리 외에는 외부 패키지 종속성을 사용하지 않고 작성되었습니다.
gitxray는 PyPI에 있으며 다음 명령어로 설치 및 업데이트할 수 있습니다:
pip install gitxray --upgrade
설치가 완료되면 명령줄에서 다음을 입력하여 gitxray를 실행하기만 하면 됩니다:
gitxray -h
gitxray -o https://github.com/kulkansecurity

gitxray를 GitHub 리포지토리를 클론하거나 다운로드하여 직접 실행할 수도 있습니다.
python3 -m pip install -r requirements.txt
cd src/
python3 -m gitxray.gitxray
다음 중 하나를 반드시 지정해야 합니다:
-r, --repository [URL] - 확인할 단일 리포지토리를 지정합니다. URL은 선택적으로 https://github.com/으로 시작할 수 있습니다. 예시: --repository https://github.com/example/repo
-rf, --repositories-file [FILEPATH] - 리포지토리 목록이 포함된 파일 경로를 제공합니다(각 줄에 하나의 리포지토리). 파일이 존재해야 합니다. 예시: --repositories-file ./list_of_repos.txt
-o, --organization [URL] - 조직 아래의 모든 리포지토리를 확인할 조직을 지정합니다. URL은 선택적으로 https://github.com/으로 시작할 수 있습니다. 예시: --organization https://github.com/exampleOrg
이러한 인수는 선택 사항이지만 일반적인 gitxray 사용에서 매우 유용합니다.
-l, --list - 리포지토리가 지정된 경우 기여자를 나열하거나 조직이 지정된 경우 리포지토리를 나열합니다. 특정 엔터티에 더 집중하는 데 유용합니다. 예시: --list
-c, --contributor [USERNAMES] - 지정된 리포지토리 또는 조직 내에서 집중할 GitHub 사용자 이름의 쉼표로 구분된 목록입니다. 예시: --contributor user1,user2
-f, --filters [KEYWORDS] - 결과를 필터링할 쉼표로 구분된 키워드(예: 'user_input', 'association', 'mac'). 예시: --filters user_input,association,mac
-out, --outfile [FILEPATH] - 출력 로그의 파일 경로를 지정합니다. 디렉터리일 수 없습니다. 예시: --outfile ./output.log
-outformat, --output-format [FORMAT] - 로그 파일의 형식을 설정합니다. 지원되는 형식은 html, text 및 json입니다. 기본값은 html입니다. 예시: --output-format json
--shush - 진행 관련 출력을 표시하지 않아 Gitxray를 약간 더 조용하게 만듭니다. 예시: --shush--debug - 자세하고 광범위한 출력을 위한 디버그 모드를 활성화합니다. 예시: --debug사용자는 이 도구가 해당 법률 및 규정을 준수하여 사용되도록 하는 전적인 책임이 있으며, 여기에는 리포지토리 스캔 및 생성된 결과의 배포에 대한 적절한 승인을 얻는 것이 포함됩니다. 승인되지 않은 사용 또는 결과 공유는 현지, 국가 또는 국제법을 위반할 수 있습니다.