
Полный статический и динамический анализ Overlord RAT: архитектура Go-агента, C2 через HTTP/2 + WebSocket, рефлективная инъекция DLL, кейлоггинг браузера и IOC. Практическое руководство по реверс-инжинирингу вредоносного ПО.
Сканирование строк памяти процесса Overlord RAT (PID 7488) в Process Hacker выявляет большой набор вызовов Windows API и внутренних строк, разрешаемых во время выполнения. Среди них выделяется http2dialCall — процедура обратного вызова на основе HTTP/2, используемая для установления связи с C2. Наличие API, связанных с криптографией, перехватом ввода и графикой, указывает на полнофункциональный RAT с возможностями кейлоггинга, захвата экрана и зашифрованного C2.
http2dialCall – функция обратного вызова HTTP/2; используется для открытия канала C2 поверх HTTP/2 (порт 443), маскируясь под легитимный HTTPS-трафик. http2clientConnPool – пул соединений для сессий C2 по HTTP/2; обеспечивает постоянную мультиплексированную связь с C2-сервером. maxIdleConnsPerHost / GetEvictionPriority / SetEvictionPriority – управление жизненным циклом соединений; поддерживает простаивающие каналы C2 активными, обходя тайм-ауты. CreateCryptoSession /GetEncryptionBltKey – создание криптосессии на базе DirectX/GPU; используется для зашифрованного захвата экрана или операций с ускорением на GPU. capture._Ctype_int / capture.monCapture / capture.scaledPart / capture.mfActivate – процедуры захвата экрана и мониторинга рабочего стола. GetInputCurrentType / GetImmediateContext – получение контекста ввода и рендеринга; поддерживает кейлоггинг и сбор содержимого экрана. CreateTrueColorCondition – настройка условия отображения для операций захвата экрана.
C2 через HTTP/2: использование http2dialCall и http2clientConnPool показывает, что RAT общается по HTTP/2, что сложнее обнаружить, чем обычный HTTP, и маскируется под современный веб-трафик. Зашифрованная эксфильтрация: CreateCryptoSession и GetEncryptionBltKey указывают на зашифрованную передачу данных, вероятно, для похищенных файлов или скриншотов. Полноценные возможности RAT: захват экрана (capture.) + перехват ввода (GetInputCurrentType) = кейлоггинг и удалённое наблюдение. Стиль living-off-the-land: разрешение строк API во время выполнения (обфусцированное хранение) — распространённая техника уклонения для противодействия статическому анализу строк. Персистентность и уклонение: управление пулом соединений (maxIdleConnsPerHost, GetEvictionPriority) поддерживает стабильность каналов C2, избегая обнаружения.

Второе сканирование строк того же процесса Overlord RAT выявляет отдельный набор строк, связанных с перехватом ввода, C2 через WebSocket и манипуляциями с памятью/рефлексией. В отличие от первого набора, сосредоточенного на HTTP/2 и захвате экрана, этот набор указывает на кейлоггинг, постоянную связь через WebSocket и техники выполнения в памяти.
capture.rawWin – процедура захвата необработанного окна; используется для создания скриншотов активных окон. captureKeyStrokes – функция прямого кейлоггинга; перехватывает каждое нажатие клавиши на машине жертвы. map[uintptr]bool – структура map времени выполнения; вероятно, используется для отслеживания перехваченных API или захваченных дескрипторов. websocket.noCopy / websocket.header / websocket.opcode – строки реализации WebSocket; указывают, что RAT использует WebSocket в качестве вторичного канала C2 (в дополнение к HTTP/2). writeFramePayload/ readCloseFrameErr / setCloseErrLocked – обработка кадров WebSocket; подтверждает активную связь с C2 через WebSocket. reflectlite.Type / abi.UncommonType/ abi.PCLnTabMagic – строки рефлексии/ABI среды выполнения Go; указывают, что полезная нагрузка — это бинарник на Go, использующий рефлексию. msgpack.isZeroer / msgpack.field – сериализация MessagePack; используется для эффективной упаковки/распаковки сообщений C2. sync.poolDequeue / poolLocalInternal – управление пулом sync в Go; используется для высокопроизводительного повторного использования памяти.
Двойные каналы C2: HTTP/2 (http2dialCall) + WebSocket (websocket.) = избыточный C2 с автоматическим переключением при блокировке одного из каналов. Возможность кейлоггинга: captureKeyStrokes подтверждает, что RAT выполняет активный перехват нажатий клавиш — учётные данные, переписка и пароли под угрозой. Полезная нагрузка на Go: строки reflectlite, abi.PCLnTabMagic и msgpack показывают, что это RAT, скомпилированный на Go, который сложнее реверсить и который часто обходит сигнатуры AV. Сериализация MessagePack: msgpack. указывает на компактный бинарный обмен сообщениями C2, снижающий сетевой след и обходящий DPI. Рефлексия в памяти: *reflectlite.Type и *abi.UncommonType используются для динамического разрешения функций — распространённый способ уклонения во избежание статических импортов. Скрытый C2 через WebSocket: трафик WebSocket через порт 443 маскируется под легитимные веб-приложения, что затрудняет обнаружение сетевым мониторингом.

Дамп бинарника connectstart.bin (извлечённый из строк памяти процесса Overlord RAT в Process Hacker) был загружен в Binary Ninja для статического анализа. Представление строк выявляет полностью структурированный модуль кейлоггера, встроенный в полезную нагрузку, вместе с чётким пространством имён команд агента (overlord-client/cmd/agent/keylogger.*). Это подтверждает, что Overlord RAT поставляется с модульной архитектурой агента, где кейлоггер — это выделенная подсистема, управляемая через команды C2.
Путь модуля: overlord-client/cmd/agent/keylogger.* – чёткое пространство имён Go-пакета для агента-кейлоггера. (Keylogger).Start/ .Stop – запускает и останавливает кейлоггер по команде C2. (Keylogger).IsRunning – проверяет, активен ли уже кейлоггер. (Keylogger).captureLoop – основной цикл, непрерывно перехватывающий нажатия клавиш. (*Keylogger).logKey – функция захвата необработанных нажатий клавиш. (Keylogger).getWindowTitle – получает заголовок активного окна (контекст для каждого нажатия клавиши). (Keylogger).flushBuffer / .flushLoop / .FlushNow – периодический сброс перехваченных нажатий клавиш на диск или в C2. (Keylogger).ListFiles / .ReadFile / .DeleteFile / .ClearAll (Keylogger).rotateFile / .cleanupOldLogs – ротация и очистка логов во избежание обнаружения.