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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Goreport — Gophish에서 캠페인 데이터를 수집하고 보고서를 생성하는 Python 스크립트 | Kitploit
도구/GitHubGitHub/chrismaddalena/goreport
OSINT (Open Source Intelligence)Phishing ToolsInformation GatheringPhishing
GitHubchrismaddalena/goreport

Goreport

Gophish에서 캠페인 데이터를 수집하고 보고서를 생성하는 Python 스크립트

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Goreport v3.0, Gophish 보고 도구

이 스크립트는 Gophish 캠페인 ID를 매개변수로 받아 캠페인 결과를 수집하여 통계를 제시하고, IP 주소에 대한 사용자 에이전트 파싱 및 지리적 위치 조회를 수행합니다. Goreport는 IP 주소, 운영 체제, 브라우저 유형 및 버전, 위치 목록을 생성하며, 각 항목이 캠페인 전체에서 관찰된 횟수를 포함합니다.

통계 관련 참고 사항: Goreport는 전체 이벤트 수와 각 이벤트에 참여한 이메일 수신자 수를 보고합니다. 즉, Goreport는 Gophish가 'Clicked Link' 이벤트를 기록한 횟수와 링크를 클릭한 수신자 수를 보여줍니다. 이 두 숫자는 매우 다릅니다. 10명에게 보낸 캠페인에서 3명의 수신자만 링크를 클릭했는데 9번의 Clicked Link 이벤트가 발생할 수 있습니다. 수신자가 링크를 여러 번 클릭하거나 데이터를 여러 번 제출했다는 사실은 유용한 정보이지만, 숫자를 정확히 이해해야 합니다.

Goreport 요구 사항

이 스크립트는 Gophish 서버, 활성 또는 완료된 캠페인, 그리고 Gophish 애플리케이션의 API 키가 필요합니다. 이 키는 설정 탭을 클릭하여 얻을 수 있습니다. API 키는 첫 페이지에서 찾을 수 있습니다. 각 Gophish 사용자 계정에는 고유한 API 키가 있으며, 이는 해당 사용자가 Gophish API에 인증하는 방법으로 작동합니다. Gophish에서 여러 계정을 사용하는 경우 올바른 사용자의 API 키를 가져와야 합니다.

다음 Python 라이브러리도 필요합니다:

  • Gophish
  • requests
  • xlsxwriter
  • configparser
  • python-docx
  • click
  • user-agents
  • python-dateutil (Gophish 라이브러리에서 필요)

Goreport 설정

시작하려면 몇 가지 작업이 필요합니다:

  • pip install -r requirements.txt를 실행하세요.
  • 아래와 같은 Gophish.config 설정 파일을 편집/생성하세요.
    • 참고: 전체 호스트 URL이 필요하므로 http://IP:PORT 또는 https://IP:PORT를 제공하세요.
      • HTTP와 HTTPS 사용에 주의하세요. 잘못 입력하면 연결 오류가 발생합니다.
  • 캠페인을 클릭하고 URL을 참조하여 캠페인 ID를 가져오세요 (URL 끝에 있는 숫자입니다).
  • Word docx 보고서를 생성하려면 "template.docx" 템플릿 파일을 Goreport 디렉토리에 넣으세요 (자세한 내용은 아래 보고서 출력 선택 참조).

기본 사용법

이 예제는 Gophish가 다른 서버에 있고 HTTPS가 사용 중이라고 가정합니다. API 엔드포인트에 액세스하려면 포트 3333(또는 원하는 다른 로컬 포트)로 SSH 포트 포워딩을 사용해야 합니다:

Gophish.config

root@kitploit:~
[Gophish]
gp_host: https://127.0.0.1:3333
api_key: <YOUR_API_KEY>

[ipinfo.io]
ipinfo_token: <IPINFO_API_KEY>

[Google]
geolocate_key: <GEOLOCATE_API_KEY>

기본 명령어

python3 Goreport.py --id 26 --format excel

그러면 https://localhost:3333/api/campaigns/26/?api_key=<Your_API_Key>에서 캠페인 26의 결과를 가져와 xlsx 파일로 출력합니다.

여러 보고서를 위해 한 번에 여러 ID를 제공할 수 있습니다. ID는 쉼표로 구분된 목록, 범위 또는 둘 다를 사용하여 제공할 수 있습니다.

예: python3 Goreport.py --id 26,29-33,54 --format csv

설정 파일 변경

여러 Gophish 사용자 계정이나 서버를 사용하는 경우 여러 API 키가 있습니다. 키 간 전환을 쉽게 하기 위해 Goreport의 --config 옵션을 사용하면 기본 설정 파일인 gophish.config를 사용자가 지정한 설정 파일로 재정의할 수 있습니다. 이 인수가 유효하고 읽을 수 있는 설정 파일과 함께 제공되면 Goreport는 gophish.config 대신 해당 파일을 사용하여 API 연결을 설정합니다.

예를 들어 Gophish를 실행하는 세 개의 피싱 서버가 있는 경우 이 옵션을 사용할 수 있습니다. 각각 다른 Gophish API 키를 가진 세 개의 설정 파일을 설정한 다음 필요에 따라 사용할 수 있습니다.

예: python3 Goreport.py --id 26,29-33,54 --format csv --config phish_server_2.config

보고서 결합

다른 대상 그룹에 대해 동일한 설정을 사용하여 여러 캠페인을 실행한 경우, 이러한 캠페인에 대해 Goreport를 한 번에 실행한 다음 결과를 하나의 보고서로 결합할 수 있습니다. 이는 Goreport의 --combine 플래그를 추가하여 수행할 수 있습니다.

예: python3 Goreport.py --id 26,29-33,54 --format excel --combine

이 명령은 캠페인 26, 29, 30, 31, 32, 33, 54의 결과를 수집합니다. 일반적으로 Goreport는 7개의 xlsx 파일을 출력하지만, --combine을 추가하면 Goreport가 결과를 결합하여 하나의 대규모 캠페인인 것처럼 하나의 보고서만 출력합니다.

보고서 출력 전환

Goreport는 Excel 스프레드시트(xlsx) 또는 Word 문서(docx)를 출력할 수 있습니다. 또한 'quick' 보고서 옵션도 있습니다. 위의 샘플 사용 섹션에 표시된 것처럼 --format 명령줄 인수를 사용하여 원하는 형식을 선택하기만 하면 됩니다. csv 형식에 대해서는 특별히 설명할 것이 없습니다.

Word 문서는 template.docx 템플릿에서 생성됩니다. template.docx라는 템플릿 파일을 기본 스크립트와 함께 Goreport 디렉토리에 넣으세요. 템플릿에는 사용하려는 표 스타일과 제목 1 및 제목 2의 제목 스타일이 포함되어야 합니다. 원하는 표 스타일 이름을 "Goreport"로 지정하고 제목 1 및 제목 2 스타일을 설정하세요.

스타일 이름을 바꾸려면 스타일을 마우스 오른쪽 버튼으로 클릭하고 Modify Table Style을 선택한 후 새 이름을 설정합니다.

Excel 옵션은 다양한 결과 및 통계 컬렉션에 대해 여러 워크시트가 포함된 잘 구성된 Excel 통합 문서를 출력합니다. 결과 테이블을 쉽게 정렬하거나 필터링하려는 경우 유용한 옵션입니다.

마지막으로 'quick' 옵션이 있습니다. 이 옵션은 보고서 문서를 생성하지 않습니다. 보고서 대신 캠페인에 대한 기본 정보를 터미널에 출력합니다. 캠페인 진행 상황을 빠르게 확인하거나 캠페인 완료 후 결과를 참조할 때 유용합니다.

캠페인 완료로 표시

보고서를 실행할 때 캠페인 상태를 "Complete"로 설정하려면 Goreport가 --complete 플래그를 사용하여 자동으로 이 작업을 수행할 수 있습니다. 이 플래그를 제공하면 Goreport는 API를 사용하여 각 캠페인 ID를 "Complete"로 표시하여 캠페인을 종료하고 Gophish의 상태를 업데이트합니다.

추가 정보

Gophish는 IP 주소로 자체 지리적 위치 조회를 수행하고 위도와 경도를 반환합니다. 이는 제대로 작동하지만 실패하여 0,0 좌표를 반환하거나 오래된 정보를 반환할 수 있습니다.

Goreport에는 위치 결과를 개선하는 데 사용할 수 있는 두 가지 옵션이 있습니다. 첫 번째이자 권장되는 옵션은 ipinfo.io API입니다. 24시간 동안 1,000회 미만의 쿼리를 수행하는 경우 API 액세스는 무료입니다. 피싱 캠페인에서는 그리 어렵지 않을 것입니다.

설정 파일에 ipinfo.io API 키가 추가되면 Goreport는 자동으로 ipinfo.io를 사용하여 각 고유 IP 주소의 현재 지리적 위치 정보를 수집합니다.

두 번째 옵션은 Google Maps API입니다. Goreport v1.0은 무료였을 때 Maps API를 사용했습니다. Google은 현재 Geolocate API(현재 이렇게 불림)에 대해 요청당 $0.005를 청구합니다. ipinfo.io를 사용하지 않으려면 Google 계정에서 Maps Geolocate API를 활성화하고 API 키를 Goreport 설정 파일에 추가하세요. 그런 다음 Goreport가 API를 사용하여 Gophish의 좌표를 조회하여 형식화된 주소를 얻으려면 --google 플래그를 Goreport 명령에 추가하세요.

기술 정보

코드를 검토하려면 프로세스의 기본 개요는 다음과 같습니다:

Goreport.py는 Python 3와 Command Line Interface Creation Kit (CLICK) 라이브러리를 사용합니다. 스크립트가 실행되면 새로운 Goreport 객체가 생성됩니다. Goreport 클래스의 __init__ 함수는 제공된 API 키를 사용하여 인증을 위해 Gophish 서버에 연결합니다. 그런 다음 run() 함수가 호출됩니다.

Run()은 명령줄 옵션을 사용하여 보고를 시작합니다. For 루프를 사용하여 --id로 제공된 모든 캠페인 ID를 반복합니다. 각 개별 ID에 대한 캠페인 세부 정보를 위해 Gophish 서버에 연결됩니다.

먼저, collect_all_campaign_info()가 호출되어 기본 캠페인 정보를 변수에 저장합니다. 여기에는 캠페인 이름, 실행 시간, 상태, 사용된 SMTP 서버, 템플릿 이름 등의 데이터가 포함됩니다.

둘째, process_timeline_events()가 호출되어 ID에 대한 Gophish의 타임라인 모델을 가져옵니다. 여기에는 Gophish가 기록한 이벤트가 포함됩니다. 이 함수는 process_results()에서 검토하는 일부 목록을 채우기 때문에 두 번째로 실행됩니다.

셋째, process_results()가 호출되어 ID에 대한 Gophish의 결과 모델을 가져옵니다. 이는 캠페인 내 대상 수와 같은 데이터를 제공합니다.

Goreport는 이러한 단계를 사용하여 캠페인의 기본 결과(예: 이메일이 성공적으로 전송된 대상, 링크를 클릭한 수신자, 데이터를 제공한 수신자)를 결정하는 몇 가지 목록을 설정합니다.

이 기반을 바탕으로 Goreport는 보고서를 위해 데이터를 여러 방식으로 배열할 수 있습니다. 언제든지 목록을 쿼리하여 결과 모델의 특정 이메일 주소가 targets_clicked 목록에 나타나는지 확인하여 해당 수신자가 링크를 클릭했는지 확인할 수 있습니다. 그러면 세부 정보를 수집하기 위해 타임라인 모델을 검토할 수 있습니다. Gophish는 IP 주소 및 사용자 에이전트와 같은 세부 정보를 타임라인 모델에 저장하고 기본 정보는 결과 모델에 저장합니다.

도구 다운로드