- PVSM.RU - https://www.pvsm.ru -
За последние годы ландшафт вредоносного ПО заметно изменился. Всё реже атакующие пишут «классические» трояны с самописными протоколами и агрессивной обфускацией. Всё чаще они используют легитимные инструменты, написанные на современных языках и предназначенные для DevOps-задач, удалённого администрирования и проброса портов.
Один из таких примеров — бинарник open.exe, написанный на Go и формально являющийся клиентом сервиса Openport. В рамках расследования инцидента этот файл был обнаружен в роли постоянного агента удалённого доступа, что делает его типичным представителем класса dual-use malware.
В статье — подробный технический разбор бинарника, его архитектуры, сетевого взаимодействия и причин, по которым подобные инструменты становятся всё более популярными у злоумышленников.
MD5: 212AEBCC151CCE67FCC3D9F2AE6FC2C6
SHA-1: B86913F78023426FE6F2BD441AE288340F360845
SHA-256:
AE34DA228224B0B28D8842D20D2674AFD4229789244D9863B4DCA0ED49AB1B4F
На первый взгляд open.exe не выглядит как вредонос:
бинарник не упакован;
отсутствует обфускация строк;
имена функций, пакетов и логов читаемы;
используются популярные Go-библиотеки с GitHub;
присутствует CLI с документацией.
Именно за счёт этого такие инструменты часто проходят мимо сигнатурных средств защиты — они выглядят как обычное инфраструктурное ПО.
open.exe — это Go-клиент Openport, предназначенный для:
поднятия прямых и обратных TCP-туннелей;
управления сессиями через WebSocket и HTTP/2;
проброса портов через SSH;
автоматического восстановления соединений;
работы через прокси (включая SOCKS5).
В легитимном сценарии это удобно для разработчиков. В атаке — идеально подходит для роли C2-агента.
В бинарнике явно присутствуют следующие пакеты:
github.com/openportio/openport-go
github.com/gorilla/websocket
golang.org/x/crypto/ssh
golang.org/x/net/proxy
github.com/jinzhu/gorm
github.com/sirupsen/logrus
gopkg.in/natefinch/lumberjack.v2
github.com/spf13/pflag
Отдельно стоит отметить отсутствие кастомных криптографических реализаций — всё построено на стандартных и проверенных библиотеках.
При запуске open.exe выполняет стандартный bootstrap:
создаёт домашние каталоги (EnsureHomeFolderExists);
генерирует криптографические ключи (CreateKeys);
создаёт конфигурационные файлы через os.Create;
инициализирует локальную базу данных;
настраивает логирование с ротацией (lumberjack).
В бинарнике встречаются строки вида:
Created directory %s
Важно: никаких эксплойтов, подмен системных файлов или попыток эскалации прав здесь нет. Всё выглядит как обычная инициализация сервиса.
Для хранения состояния используется SQLite. Это ещё один признак «нормального» софта, но именно здесь кроется важная деталь.
В базе данных хранятся:
активные туннели;
параметры сессий;
история подключений;
флаги автоперезапуска.
Реализованы методы:
InitDB
Save
DeleteSession
GetSession
GetAllActive
GetSessionsToRestart
EnrichSessionWithHistory
База перечитывается при старте, что позволяет восстанавливать удалённый доступ после перезагрузки системы без классических механизмов автозапуска.
open.exe использует сразу несколько стандартных протоколов:
WebSocket (WSS) — основной канал управления;
HTTP/2 — подтверждается сигнатурами PRI * HTTP/2.0;
TLS — с поддержкой session tickets;
SSH — для форвардинга и keep-alive.
В бинарнике присутствуют строки, связанные с TLS-рукопожатием:
key expansion
client finished
server finished
unable to generate random session ticket key
Это обычная TLS-логика, но для средств мониторинга трафика такой канал выглядит как обычный зашифрованный HTTPS.
Ключевые функции:
Connect
CreateTunnel
ForwardPort
InitForward
StartReverseTunnel
KeepAlive
Поддерживаются:
прямые и обратные туннели;
отмена форвардинга (cancel-tcpip-forward);
автоматический рестарт соединений.
Фактически агент предоставляет оператору полноценный удалённый сетевой доступ к хосту.
Интересная деталь — open.exe поднимает локальные служебные эндпоинты:
Они используются для получения информации о состоянии агента и корректного завершения работы. Для защиты это дополнительный поведенческий индикатор.
В бинарнике явно присутствует ссылка:
https://openport.io/user/keys [3]
Регистрация агента осуществляется через токен. После регистрации система привязывается к аккаунту, и оператор получает возможность:
создавать и удалять туннели;
просматривать активные сессии;
перезапускать соединения;
управлять несколькими хостами централизованно.
open.exe — это полноценная CLI-утилита с командами:
forward
list
restart-sessions
kill
kill-all
register <token>
register-key <token>
rm
version
Поддерживаются флаги вроде --restart-on-reboot, что превращает агент в персистентный компонент, даже без автозагрузки через реестр или планировщик.
Важно подчеркнуть: Openport сам по себе не является вредоносным ПО.
Однако в анализируемом случае он:
был установлен без ведома пользователя;
использовался для постоянного удалённого доступа;
работал как C2-агент;
маскировался под служебный компонент;
не требовал эксплуатации уязвимостей.
Это классический пример dual-use malware и подхода Living-off-the-Land.
Процессы
open.exe
Файлы
каталоги Openport (home/config)
SQLite-база с сессиями
логи lumberjack
Сеть
TLS/WSS-соединения с инфраструктурой openport.io [4]
локальные эндпоинты /info, /exit
Поведение
автоматическое восстановление туннелей
отсутствие файлов-дропперов
длительные зашифрованные соединения
Go-утилиты вроде open.exe идеально подходят атакующим:
кроссплатформенность;
статическая сборка;
минимум зависимостей;
нормальный TLS;
легитимный сетевой профиль;
отсутствие «красных флагов» в коде.
Для защитников это означает одно: сигнатурный подход больше не работает. Важнее контекст, поведение и понимание того, зачем процессу нужен тот или иной функционал.
open.exe — отличный пример того, как современное вредоносное ПО перестаёт выглядеть как вредоносное. Это не эксплойт, не троян и не вирус в классическом понимании, а аккуратно встроенный инструмент удалённого доступа, использующий доверенные технологии.
Именно такие случаи показывают, что граница между «админским инструментом» и «вредоносом» сегодня проходит не по коду, а по контексту применения.
Автор: Vladislav_Podobed
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/441013
Ссылки в тексте:
[1] http://127.0.0.1:<port>/info: http://127.0.0.1:<port>/info
[2] http://127.0.0.1:<port>/exit: http://127.0.0.1:<port>/exit
[3] https://openport.io/user/keys: https://openport.io/user/keys
[4] openport.io: http://openport.io
[5] Источник: https://habr.com/ru/articles/982758/?utm_source=habrahabr&utm_medium=rss&utm_campaign=982758
Нажмите здесь для печати.