§ 01

Что показывает VirusTotal

17/70
детектов

Среди них Kaspersky, MaxSecure, несколько эвристических движков. Kaspersky обычно относит подобные файлы к not-a-virus:HEUR:RiskTool или HackTool: то есть само по себе не вредонос, но софт, который автоматизирует чужую игру, и вендор считает нужным предупредить пользователя.

53/70
не видят угрозы

Microsoft Defender, ESET, BitDefender, Sophos, Symantec пропускают. У реальных стилеров и RAT картина обычно обратная: 40+ детектов, включая топовых вендоров.

4слоя
упаковки, снятые вручную

Разбор ниже описывает каждый слой отдельно, с параметрами, содержимым и тем, что оказалось на самом дне.

§ 02

Разбор по слоям

  1. L1
    Внешняя оболочка: MPRESS packer
    3 секции .MPRESS1 / .MPRESS2 x64 PE32+

    Файл упакован MPRESS, публичным packer'ом на базе LZMA (доступен с 2007 года). Никакой антианалитики или защиты от отладки. Распаковка полностью статическая, без запуска.

    .MPRESS1  vaddr=0x1000     size=0x16a4000  entropy=7.99
    .MPRESS2  vaddr=0x16a5000  size=0xe8c      (unpacker stub)
    .rsrc     vaddr=0x16a6000  size=0x36bec    (иконки, манифест)

    MPRESS используется и в чистом софте, и во многих семействах malware. Сам по себе индикатором вредоносности не является, но эвристики антивирусов на него реагируют.

  2. L2
    Кастомный LZMA внутри MPRESS
    lc=7 lp=0 pb=2 23.7 МБ после распаковки

    MPRESS использует свой вариант LZMA с параметром lc=7, из-за чего готовые LZMA-декодеры не подходят. Декодер восстановлен по дизассемблированному коду распаковщика и реализован на Python.

    progress: 4.4% (1048576/23740416) t=1.1s
    progress: 8.8% (2097166/23740416) t=2.2s
    ...
    progress: 97.2% (23068693/23740416) t=24.0s
    decoded len: 23740416
  3. L3
    Ahk2Exe контейнер и встроенный интерпретатор
    AutoHotkey v1.1.33.10 Compiler v1.1.37.02 21 МБ обёртки-скрипта

    Внутри распакованного образа два ресурса стандартного формата Ahk2Exe:

    RCDATA/AUTOHOTKEY.EXE       1 307 136 bytes  (интерпретатор)
    RCDATA/>AUTOHOTKEY SCRIPT<   20 960 218 bytes  (обёртка)

    Интерпретатор совпадает с официальным AutoHotkey Unicode 64-bit v1.1.33.10 по импортам, timestamp (2021-08-28) и структуре секций. Не модифицирован. Обёртка-скрипт содержит стандартный ScriptGuard шаблон (защита компилированных AHK-скриптов от копирования) и большой блок зашифрованных данных.

  4. L4
    Финальный шифр с ключом от AutoHotkey.exe
    custom ROL/SUB cipher key seeded by AutoHotkey.exe bytes 7 МБ script

    Внутри обёртки лежит 7 МБ зашифрованных данных в текстовом формате u<число>u<число>.... Ключ инициализируется первыми 1.3 МБ файла AutoHotkey.exe на диске: если кто-то заменит интерпретатор, расшифровка провалится. Расшифровка перехвачена эмуляцией CPU (Unicorn Engine) в изолированной песочнице без доступа к системе.

    key = [0x6f, 0x71, 0x75, 0x77]  // ASCII "oquw"
    for i in range(iters):
        key[i&3] = key[i&3] * 0x83 + ahk_exe_bytes[i]
    
    for each dword in payload:
        ecx = key[i&3] * 0x83 + i
        key[i&3] = ecx
        dw = rol(dw, 1) - ecx
        dw = rol(dw, 1) - ecx

    На выходе 3.5 МБ AHK-исходника в UTF-16. Читаемый код с комментариями на русском, без обфускации.

§ 03

Стилер vs этот файл

Не найдено Типичные признаки стилеров и RAT
  • CreateRemoteThread, инъекция в чужой процесс
  • WriteProcessMemory, запись в чужую память
  • VirtualAllocEx, выделение памяти в чужом процессе
  • CryptUnprotectData, расшифровка DPAPI и паролей Chrome
  • CredEnumerate, чтение Credential Manager
  • SamConnect, LsaOpenPolicy, доступ к SAM и LSA
  • Чтение %APPDATA%\Roaming\Telegram\tdata
  • Чтение %APPDATA%\discord\Local Storage
  • Чтение cookies браузеров и wallet.dat кошельков
  • Персистентность через реестр или планировщик задач
Найдено Всё, что делает этот файл после распаковки
  • PixelSearch, поиск цвета на экране игры
  • MouseClick и Send, эмуляция ввода
  • BitBlt и GetDC, снимки региона экрана
  • GdipCreateBitmap..., сравнение картинок через GDI+
  • POST /count, отправка счётчиков успешного фарма
  • POST /key, проверка HWID по белому списку
  • URLDownloadToFile с github.com, автообновление
  • IniRead и IniWrite, сохранение настроек
  • Целевое окно жёстко зашито: ahk_exe GTA5.exe
  • GUI на GDI+ с иконками и меню трея
§ 04

Сетевая активность

createcaef.online/key верификация HWID

Отправляется JSON с ключом, полученным из серийника физического диска (через DeviceIoControl IOCTL 0x560000). Ответ дешифруется AES-CBC с зашитым ключом AFBForever010423, значение 1 или 0. Никакие пароли, токены, файлы, содержимое буфера обмена или окон не передаются.

createcaef.online/count телеметрия фарма

POST со счётчиками {ferm, les, mine, afk} и тем же ключом HWID, зашифровано AES-CBC. Используется для рейтинга пользователей внутри проекта.

createcaef.online/static/AutoFishBot/version.txt проверка версии

GET, сравнивает актуальный номер версии со встроенным. При несовпадении скачивает новый бинарь с GitHub.

github.com/PaulTwelve/AutoFishBot-MajesticRP автообновление

Через URLDownloadToFile качается AutoFishBot.exe из репозитория автора. В репозитории лежит только бинарь и README, исходников AHK-скрипта там нет: репо используется как канал доставки, не как открытый исходный проект.

t.me/AutoFishBotMajesticRP канал и активация

Ссылка открывается в браузере по кнопке из GUI. Через Telegram-бота проекта пользователь получает код активации, которым разово регистрирует свой HWID на сервере createcaef.online. Данных о пользователе бот в TG не забирает.

§ 05

За что антивирусы флагают

Здесь важно быть честным. Часть детектов, включая Kaspersky, срабатывает не наугад: три технических признака в файле реально совпадают с поведением опасного софта. Плюс есть смысловая причина, по которой Kaspersky относит подобные утилиты к RiskTool/HackTool.

01
MPRESS packer

Тот же packer встречается у RedLine, Vidar, AsyncRAT. Автоматически повышает подозрительность у эвристики: любой упакованный x64 бинарь без цифровой подписи получает базовый штраф.

02
Pipe injection

Бот запускает AutoHotkey.exe /force \\.\pipe\AHK… и передаёт расшифрованный скрипт через named pipe. Это техника, применяемая частью malware для запуска расшифрованного кода без сохранения на диск. Здесь она используется как защита исходников AHK-скрипта от копирования.

03
Шифрованный payload

7 МБ зашифрованных данных внутри exe с кастомным алгоритмом и ключом от содержимого другого файла. Классический признак крипта у malware. Расшифрованный результат оказался обычным AHK-скриптом, но статический анализатор этого не знает.

04
Автоматизация игры

Даже когда антивирус разобрался, что вредоносного действия нет, часть вендоров (в первую очередь Kaspersky) относит такие утилиты к категории RiskTool или HackTool: софт для автоматической игры за пользователя. Это уже не false positive в чистом виде, а политика вендора относительно чит-софта.

§ 06

Из расшифрованного кода

Целевое окно бота жёстко фиксировано в игре GTA5
#IfWinActive, ahk_exe GTA5.exe
;-------------------------------------------------------
; Апельсины
StartsFerm:
{
    Rab2 (Rab2 := !Rab2) ? "on" BotOn("Ferm") : "off" BotOff("Ferm")
    if (Rab2 = 1) {
        GoSub, DATAFerm
        fcount = 0
        SetTimer, Fermloop, -1
    }
}
Ссылки на донат-платформы автора внутри GUI
TipsPaul:
    Run, https://yoomoney.ru/to/4100118341509342
Return

TipsDazzziee:
    Run, https://boosty.to/autofishbot
Return

Rickroll:
    Run, https://www.youtube.com/watch?v=dQw4w9WgXcQ
Return
Автообновление скачивает свежий бинарь из репозитория автора
If (Version != VersionWebText) {
    try {
        URLDownloadToFile,
            https://github.com/PaulTwelve/AutoFishBot-MajesticRP/raw/main/AutoFishBot.exe,
            AutoFishBot.exe
    } catch {
        Error(GetMes("Не удалось установить обновление."))
    }
}
Проверка активации: сервер отвечает 1/0, никаких пользовательских данных наружу
Lic(Key) {
    Http.Open("POST", web "/key", false)
    Http.SetRequestHeader("Content-Type", "application/json")
    try Http.Send("{""key"":""" Key """}")
    catch {
        Error(GetMes("Не удалось проверить активацию."))
    }
    iv := SubStr(Http.ResponseText, 1, 16)
    body := SubStr(Http.ResponseText, 17)
    try lic := Crypt.Decrypt.String("AES", "CBC", body, "AFBForever010423", iv)
    Return (lic = 1 ? 1 : 0)
}
§ 07

Как проверить самому

Весь разбор сделан статически, плюс один блок расшифровки прогнан через эмулятор CPU (Unicorn Engine) в изолированной песочнице, без выхода в сеть и без запуска исходного бинаря. Инструменты свободные, шаги воспроизводимы.

  • Разбор PEpefile 2024.8.26
  • ДизассемблерCapstone 5.0.9
  • Эмулятор CPUUnicorn Engine 2.1.4
  • Распаковщик MPRESS/LZMAcustom, 220 строк Python
  • Расшифровка payloadcustom, 40 строк Python
SHA256 AutoFishBot.exe 560b574bdcceab78832102d205aa83e95aaefc0c23da6e62db9fed38ec0940fc
SHA256 AutoHotkey.exe (в ресурсе) 3a349b0cc7f5b83b1d282492e3a9f6455e72c9c2f844ef3ae49f3ef61f240c08
SHA256 AutoFishBot-Reboot.exe 0a96a36e410a9d410c4edb359e8015d12a638c3f8723c9015bbf51952e3e44ed
§ итог

Вердикт

Игровой бот для GTA5, распространяется бинарём без исходников. Опасности для системы не создаёт: не крадёт пароли, не устанавливает персистентность, не выходит за пределы своей задачи. Часть антивирусов флагает его за упаковку и pipe injection, часть (Kaspersky) относит к категории HackTool, потому что это чит-софт по определению. Реальный риск здесь не для машины, а для игрового аккаунта: за использование бота сервер MajesticRP может забанить.

Что это Игровой макро-бот на AutoHotkey для GTA5 / MajesticRP
Автор PaulTwelve, распространяется бинарём через GitHub и Telegram