Контекст: я занимаюсь администрированием небольшого Discord-сервера по разработке. И недавно один из пользователей сообщил, что кто-то пытался заставить его загрузить Exe-файл.

Первое, что стоило узнать, это открывал ли пользователь этот, как оказалось, вредоносный файл. И, к сожалению, он его всё-таки открывал. Со слов пользователя, приложение инициировало запуск консоли и закрыла её через несколько секунд. Это явно не хороший знак в случае с ПО, скачанным непонятно откуда.

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

Бинарный файл


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

> strings file.exe

Эта команда находит данные типа PrintableString в бинарном файле. Полезно знать о любых вещах, таких как URL или адресах, встроенных в файл.

По большей части результат этого запроса состоял из разнообразного бреда и шлака, но в нем я углядел NodeRuntime. Получается исполняемый файл связан с NodeJS.

В таких файлах можно найти полезную нам информацию в конце результата команды strings. Давайте на неё взглянем:

function a0_0x47b121(_0x44bb58,_0x4e9d60,_0x355d77,_0x4e9d34,_0x1a193e){return a0_0x1b80(_0x1a193e- -0x1e4,_0x44bb58);

Пока что код выглядит запутанно. Для того, чтобы понять его, я воспользовался следующим методом.

Discord


Так как я знал, что файл распространялся через Discord, я решил узнать, содержит ли исходный файл слово «discord». И смог найти кое-что.

Названия некоторых функций были связаны с этим словом: listDiscords, startDiscord, killDiscord и pwnBetterDiscord. Последняя функция выглядит многообещающе!

Я решил залезть в интернет и поискать источник этой функции. И он обнаружился на GitHub: https://github.com/Stanley-GF/PirateStealer

PirateStealer


Давайте посмотрим исходный код «пиратского похитителя».

Судя по всему, это приложение крадет всю информацию у пользователя Discord. Сначала он ломает клиент Discord, а затем «фиксит» его с помощью вредоносного файла на JavaScript, который тайно ворует конфиденциальную информацию, например, данные кредитной карты, через вебхук Discord (URL-адрес, по которому вы можете отправить сообщение на ваш сервер Discord).

По словам автора этого инструмента, он предназначен исключительно для образовательных целей. Хотя при этом, автор продает премиум-функции и предлагает поддержку. Как-то это не коррелируется с заявлением об «образовательных целях».

Поиск URL-адреса в коде


Код исполняемого файла наполнен множеством прокси-функций, которые пытаются запутать пользователя. Но всё же мне удалось найти вебхук: 

webhook=a0_0x78da73(0x331,0x342,0x32c,0x2f1,0x324)

Давайте попробуем разобраться в нем. Для краткости я переименую все запутанные функции в fn1, fn2…, а их параметры в p1, p2…

a0_0x78da73(назовем это fn1) принимает 5 аргументов, но её результат связан только с первым и последним: 

function fn1(p1,p2,p3,p4,p5){return fn2(p5 - 0x26a,p1);}

fn2 — более сложная функция с криптографическими методами (вектор инициализации, комплексные числа). Для того, чтобы в ней разобраться, я решил вызвать её напрямую.

Я создал новый файл который копирует код, необходимый для запуска fn2, console.log(fn2(0x324 — 0x26a, 0x331)), и… всё прошло гладко! Благодаря ей я узнал URL https://ptb.discord.com/api/webhooks/abcdefg/hijklmn(вывод цензурирован по соображениям конфиденциальности).

Поиск пользователя скрипта


Я решил не искать обходных путей и использовал этот URL-адрес для того, чтобы отправить злоумышленнику(-ам) сообщение с предупреждением и просьбой написать мне в личные сообщения. И они написали…

К сожалению, наш диалог не был продуктивным. Но зато я узнал об общих серверах со злоумышленником и мог предупредить администраторов этих серверов об опасности.

Комментарии (0)