Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Goreport — Скрипт на Python для сбора данных о кампаниях из Gophish и формирования отчёта | Kitploit
Инструменты/GitHubGitHub/chrismaddalena/goreport
OSINT (Разведка открытых источников)Инструменты фишингаСбор информацииФишинг
GitHubchrismaddalena/goreport

Goreport

Скрипт на Python для сбора данных о кампаниях из Gophish и формирования отчёта

Репозиторий
2025333 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Goreport v3.0 — инструмент для создания отчетов Gophish

Этот скрипт принимает идентификатор(ы) вашей кампании Gophish в качестве параметра, а затем собирает результаты кампании для отображения статистики, парсинга user-agent и геолокации IP-адресов. Goreport формирует списки IP-адресов, операционных систем, типов и версий браузеров, а также местоположений с указанием количества, сколько раз каждый из них был замечен в ходе кампании.

Замечание по статистике: Goreport сообщает общее количество событий и количество получателей электронной почты, принявших участие в каждом событии. Иными словами, Goreport покажет, сколько раз Gophish зафиксировал событие «Clicked Link» (переход по ссылке) и сколько получателей перешли по ссылке. Это существенно разные числа. Кампания, отправленная 10 людям, может иметь 9 событий Clicked Link, когда только 3 получателя перешли по ссылке. Знание того, что получатели переходили по ссылке или отправляли данные более одного раза, является ценной информацией, но следите за тем, чтобы не путать эти числа.

Требования Goreport

Для работы скрипта требуется сервер Gophish, активная или завершенная кампания и API-ключ вашего приложения Gophish. Получите этот ключ, перейдя на вкладку Settings. 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 (это номер в конце).
  • Если вы хотите создавать отчеты в формате Word docx, поместите файл шаблона «template.docx» в каталог Goreport (подробнее ниже в разделе «Выбор формата отчета»).

Базовое использование

В этом примере предполагается, что Gophish находится на другом сервере и используется HTTPS. Для доступа к API-эндпоинту вам потребуется использовать SSH-туннелирование с перенаправлением порта 3333 (или любого другого локального порта по вашему выбору):

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

Эта команда получит результаты кампании 26 с https://localhost:3333/api/campaigns/26/?api_key=<Your_API_Key> и сохранит их в файл xlsx.

Можно указать несколько идентификаторов одновременно для получения нескольких отчетов. Идентификаторы можно передавать через запятую, в виде диапазона или комбинировать оба способа.

Пример: python3 Goreport.py --id 26,29-33,54 --format csv

Смена конфигурационных файлов

Если вы используете несколько учетных записей пользователей Gophish или серверов, у вас будет несколько API-ключей. Чтобы упростить переключение между ключами, опция --config в Goreport позволяет переопределить файл конфигурации по умолчанию (gophish.config) на другой файл с именем, которое вы укажете. Если этот аргумент указан с существующим, читаемым файлом конфигурации, Goreport использует его вместо gophish.config для настройки API-подключений.

Вы можете использовать эту опцию, если у вас, например, три сервера фишинга с запущенным Gophish. Вы можете создать три конфигурационных файла, каждый с разным API-ключом Gophish, и использовать их по мере необходимости.

Пример: python3 Goreport.py --id 26,29-33,54 --format csv --config phish_server_2.config

Объединение отчетов

Если вы запустили несколько кампаний с одинаковыми настройками для разных целевых групп, вы можете запустить Goreport для всех этих кампаний одновременно, а затем объединить результаты в один отчет. Это можно сделать с помощью флага --combine.

Пример: python3 Goreport.py --id 26,29-33,54 --format excel --combine

Эта команда соберет результаты для кампаний 26, 29, 30, 31, 32, 33 и 54. Обычно Goreport вывел бы семь файлов xlsx, но добавление --combine указывает Goreport объединить результаты и вывести только один отчет, как если бы все они были одной большой кампанией.

Выбор формата отчета

Goreport может выводить отчет в виде электронной таблицы Excel (xlsx) или документа Word (docx). Также есть опция «быстрого» отчета. Просто выберите предпочитаемый формат с помощью аргумента командной строки --format, как показано выше в разделе «Пример использования». О формате csv говорить особо нечего.

Документ Word создается на основе шаблона template.docx. Поместите файл шаблона с именем template.docx в каталог Goreport вместе с основным скриптом. Ваш шаблон должен содержать стиль таблицы, который вы хотите использовать, и стили заголовков «Heading 1» и «Heading 2». Назовите предпочитаемый стиль таблицы «Goreport» и настройте стили заголовков 1 и 2 уровней.

Вы можете создать собственный стиль или использовать существующий. Единственное, что важно — чтобы файл template.docx существовал и в нём был стиль таблицы «Goreport».

Чтобы переименовать стиль, щелкните правой кнопкой мыши стиль, выберите «Изменить стиль таблицы» и задайте новое имя.

Опция Excel создает аккуратно отформатированную книгу Excel с несколькими листами для различных наборов результатов и статистики. Это удобный вариант, если вы хотите легко сортировать или фильтровать таблицы результатов.

Наконец, есть опция «quick» (быстрый). Она не создает отчетный документ. Вместо отчета она выводит базовую информацию о кампании в терминал. Это удобно для быстрой проверки хода кампании или просмотра результатов после её завершения.

Отметка кампаний как завершенных

Если вы хотите установить статус кампании «Complete» (Завершена) при запуске отчета, Goreport может сделать это автоматически с помощью флага --complete. Если указать этот флаг, Goreport через API изменит статус каждого идентификатора кампании на «Complete», чтобы завершить кампанию и обновить её статус в Gophish.

Дополнительная информация

Gophish выполняет собственное геолокационное определение по IP-адресам и возвращает широту и долготу. Это работает неплохо, но может давать сбои и возвращать координаты 0,0 или устаревшую информацию.

Goreport имеет две опции, которые могут улучшить результаты определения местоположения. Первая (рекомендуемая) — это API ipinfo.io. Доступ к API бесплатен при условии, что вы делаете менее 1 000 запросов за 24 часа. Для фишинговой кампании это не должно быть проблемой.

Если в конфигурационный файл добавлен API-ключ ipinfo.io, Goreport автоматически использует ipinfo.io для получения актуальной геолокационной информации для каждого уникального IP-адреса.

Вторая опция — это Google Maps API. Goreport v1.0 использовал Maps API, когда он был бесплатным. Сейчас Google взимает плату в размере $0,005 за запрос к API Geolocate (теперь он так называется). Если вы предпочитаете не использовать ipinfo.io, активируйте Maps Geolocate API в учетной записи Google и добавьте API-ключ в конфигурационный файл Goreport. Затем добавьте флаг --google в команду Goreport, когда захотите, чтобы Goreport использовал API для преобразования координат Gophish в форматированный адрес.

Техническая информация

Если вы хотите ознакомиться с кодом, вот базовое описание процесса:

Goreport.py использует Python 3 и библиотеку CLICK (Command Line Interface Creation Kit). При запуске скрипта создается новый объект Goreport. Функция __init__ класса Goreport устанавливает соединение с вашим сервером Gophish, используя предоставленный API-ключ для аутентификации. Затем вызывается функция run().

Функция Run() использует параметры командной строки для запуска построения отчетов. Цикл For проходит по всем идентификаторам кампаний, переданным с помощью --id. Ваш сервер Gophish опрашивается на предмет деталей кампании для каждого отдельного идентификатора.

Сначала вызывается collect_all_campaign_info() для сохранения базовой информации о кампании в переменные. Это включает такие данные, как название кампании, время её запуска, статус, используемый SMTP-сервер, название шаблона и другое.

Во-вторых, вызывается process_timeline_events() для получения модели временной шкалы Gophish для идентификатора. Это включает события, записанные Gophish. Эта функция выполняется второй, потому что она заполняет некоторые списки, которые просматриваются функцией process_results().

В-третьих, вызывается process_results() для получения модели результатов Gophish для идентификатора. Это предоставляет такие данные, как количество целей в кампании.

Goreport использует эти шаги для настройки некоторых списков с целью определения базовых результатов кампании, например, кому было успешно отправлено письмо, какие получатели перешли по ссылке и какие получатели предоставили данные.

Имея такую основу, Goreport может различными способами упорядочивать данные для отчета. В любой момент можно запросить списки, чтобы проверить, присутствует ли определенный адрес электронной почты из модели результатов в списке targets_clicked и, тем самым, подтвердить, перешел ли данный получатель по ссылке. Это затем может инициировать просмотр модели временной шкалы для сбора деталей. Gophish хранит такие детали, как IP-адрес и user-agent, в модели временной шкалы, а базовую информацию — в модели результатов.

Скачать инструмент