Borr Malware
https://t.me/onek1lo_blogПродажник: https://lolzteam.online/threads/1327287/
Семпл: https://twitter.com/ViriBack/status/1222704498923032576
Реверс
Для начала откроем файл в ExeInfoPe.
![](/file/0e80b38d8d50e3663f947.png)
DotNet файл, накрытый SmartAssembly. Первым делом попытаемся скормить его De4dot.
![](/file/23f2a0b55368a3161bf41.png)
Результат не порадовал, чистого файла мы не получили. Придется смотреть вручную. Открываем файл в DnSpy, переходим в .cctor
![](/file/2458d10162ecd06ccc961.png)
Ничего интересного в этих методах я не нашел. Но зато меня привлек файл в ресурсах, очень похожий на шифрованный бинарник.
![](/file/4559c693a6740392ce92b.png)
Значит, в каком то куске кода он будет расшифрован и подгружен. Пропускаем методы (ставим брекпоинт в конце .cctor), шагаем и смотрим модули
![](/file/19b8c9250305966ab997b.png)
Подгрузилась Dll (1thzpxouagh). Сохраняем ее и открываем в DnSpy.
Оказывается, стиллер накрыт криптом из SmartAssembly + RunPE. Стаб использует RunPE, а значит скорее всего в ресурсах нативный файл.
![](/file/f46bd5cf0196fc1cb1c0a.png)
Смотрим ресурсы, видим шифрованный файл. В самом коде все главные методы без обфускации. Написать декриптор будет просто.
![](/file/1d50a2497baecef3ebd5b.png)
После расшифровки получаем чистый билд. Откроем его в ExeInfoPE.
![](/file/81ebefda2c1ff32d40566.png)
Файл нативен, и это правда. Но несовсем. Данный софт использует технологию CRL-Hosting. Грубо говоря, перед нами сейчас нативная обертка DotNet файла.
С точки зрения написания малвари кажется, что этот способ сокрытия кода наиболее эффективен. Однако это не панацея. В процессе работы будет подгружен .net модуль, который легко сдампить.
В нашем случае все еще проще. Стиллер работает какое-то время, а значит можно даже не искать нужные брекпоинты - просто запускаем приложение в дебаггере, ждем несколько секунд и ставим паузу. Net модуль загружен, можно дампить.
Лично я испльзовал x32dbg и ExtremeDumper.
![](/file/f6dd5dc268ec75206ed8f.png)
Что делаем? Правильно.
![](/file/3ba202ea70ae9434ba903.png)
Неизвестный обфускатор. Ничего страшного, открываем в DnSpy и видим мод конфузера.
![](/file/bd5eb9c1fec052211d103.png)
Ставим брекпоинт на Main, чекаем переменные.
![](/file/dff67354755539e4e1607.png)
Сохраняем, открываем, уже лучше. Однако строки и методы все равно обфусцированны.
![](/file/06bf3d651f9ce7d522c91.png)
Теперь пришло время заюзать спец тулзы для конфузера. В конце концов имеем чистые сурсы.
![](/file/54fd0bb6fa273391d834a.png)
Анализ кода
Первое что бросается в глаза - конфиг передается открытым текстом. Неужели так сложно было сделать банальный XOR+base64? Просто несерьезно.
![](/file/d1b2090f27c3b1767647a.png)
Лоадер дропает EXE со статичным именем в TEMP. Привет рантайм.
![](/file/3ca904c1389c0601b079f.png)
Далее меня привлек конфиг. Как я понял, при запуске стиллер проверяет, действительна ли лицензия, и если все ок то продолжает работу. Как по мне это не самый лучший подход. Что если сервер/ip забанят? Как этот запрос в сеть скажется на рантайме, учитывая что все билды будут стучать на этот хост?
![](/file/04cbf23cbbf9532b24716.png)
Кстати, вот сюда стучит софт при запуске.
![](/file/124701d1b214ad6f467c9.png)
Сбор данных с браузера осуществляется с помощью дроченого SqliteHandler.
![](/file/f364d434f0cdd160ae3a5.png)
Я не знаю почему все юзают CryptUnprotectData, когда есть System.Security.Cryptography.ProtectedData
![](/file/180575f3768a2b11454ce.png)
Стиллер outlook в наглую спизжен с моих сурсов. Даже не оптимизировали по нормальному.
![](/file/19f17112bf6b5fcb067c9.png)
Можно было бы добавить больше FTP.
![](/file/4eb8167bea6d765838673.png)
Лог собирается на диске, причем папка дропа статична. Снова рантайм.
![](/file/32d4f80d6e712ba9d6107.png)
И самое большое огорчение - граббер. Софт/панель не предусматривают возможность добавления собственных путей сбора файлов.
В топике было написано о обходе WindowsDefender, но где этот обход находится я так и не нашел. Детект чистого файла.
Создается впечптление что софт написан на похуй. Ни многопоточности, ни каких то других фишек - абсолютно дефолтный стиллер с дефолтными методами с гитхаба.
На этом желание копать дальше пропало - все это я уже видел.
Панель
В командах (?) Borr и Krown один и тот же web кодер, поэтому их панели похожи.
![](/file/5e428c90b1890ba12592d.png)
![](/file/44ab38b66b4c5f152a2f9.png)
![](/file/0bd0f1af1a5cad6540ae1.png)
![](/file/1f57da4be5074237afcdb.png)
Нужно отдать должное, панель в этом софте выглядит круто. Но настройки конфига скудноваты (имхо).
Итог
Borr Stealer - салат из правленных исходников с гитхаба с минимумом новизны и щепоткой конфузера.
-Путей сбора файлов мало
-При этом добалять свои пути невозможно
-Судя по стилю написания кода, создается впечатление, что софт написан не малвар-кодером, а фрилансером за еду
Как по мне, данный продукт не соответствует цене (30$ в неделю без крипта).
Единственное что понравилось - обфускация (было интересно реверсить) и панель.
Бинарники (onek1lo)