• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Анализ .NET стиллера GrandSteal

pablo

(L2) cache
Пользователь
Регистрация
01.02.2019
Сообщения
433
Реакции
1 524
В этом посте я поделюсь с вами своими заметками об анализе одного стиллера, написанного на .NET. Кто - то принял его за Quesar, соответствующе пометив на Any.run. Но после анализа исходного кода, я понял, что он имеет существенные отличия и не принадлежит к вышеназванному семейству вирусов. Поиск по IOC не дал результатов, поэтому, на основании внутренних имен классов, я присвоил ему имя "GrandSteal".
  • Оригинальный сэмпл: 89782B6CDAAAB7848D544255D5FE7002
  • Источник: http://a4.doshimotai[.]ru/pxpx.exe
  • Информация об URL: VxVault URLhaus
  • Автоматически-сгенерированный отчет из песочницы: Открыть
  • Первая загрузка на VirusTotal: 2019-03-18 22:28:20
  • Анализ при помощи Any.Run: Здесь
  • Тэги на Any.Run: Evasion, Trojan, Rat, Quasar
  • Декомпилированный исходный код: Github

Анализ
Loader
  • Сэмпл не имеет цифровой подписи
Сведения:
  • Авторские права: Symantec© 2019
  • Описание: pxpx.exe
  • Название продукта: pxpx.exe
  • Исходное имя файла: pxpx.exe
  • Версия продукта: 7.1.0.0
Лоадер написан на .NET и обфусцирован при помощи ConfuserEx v1.0.0
1494b4e37afa0271d306f.png


Распакованные модули
После того, как мы запустили исполнительный файл в виртуальной машине, при помощи WinDbg, мы обнаруживаем, что вредонос распаковывает набор модулей в оперативную память:
d72722d6f93236a37253e.png


Дампим их на жесткий диск и видим, что большинство из них написано, также, как и лоадер, на .NET. Используем dnSpy для декомпиляции и анализа.
83b6d1bf2d8328c606c0b.png


Вредонос содержит код для кражи данных из различных продуктов, среди которых:
97a6a597cf74f7ea7a560.png


Chromium Стиллер
Малварь крадет различную информацию из браузеров на Chromium.
ee6cd1153158bc90b0ac3.png

Полную реализацию можно посмотреть по ссылке ChromiumManager.cs.

Cookie
Чтение таблицы с Cookie из базы данных SQLite
abc55f295e1ad40069b4b.png


Учетные записи
Чтение таблицы с сохраненными учетными записями из базы данных SQLite.
412c2bb1c5b24cc6fff7d.png

3c44814437b74b47149d7.png


Автозаполнение
Чтение таблицы с данными автозаполнения из базы данных SQLite.
ef9c0cd0718127157aa33.png


Кредитные карты
Чтение таблицы credit_cards из базы данных SQLite.
5df225f1800b8461d8d43.png


Стиллер криптокошельков
Кража файлов "wallet.dat" следующих кошельков:
  • Litecoin: "%appdata%\Litecoin\wallet.dat"
  • Litecoin-Qt: walletpath=read("HKCU\Software\Litecoin\strDataDir"), walletpath + "wallet.dat"
  • Litecoin-Qt: walletpath=read("HKCU\Software\Litecoin-Qt\strDataDir"), walletpath + "wallet.dat"
  • Bitcoin: "%appdata%\Bitcoin\wallet.dat"
  • Bitcoin-Qt: walletpath=read("HKCU\Software\Bitcoin\strDataDir"), walletpath + "wallet.dat"
  • Bitcoin-Qt: walletpath=read("HKCU\Software\Bitcoin-Qt\strDataDir"), walletpath + "wallet.dat"
  • Bytecoin: "%appdata%\bytecoin\*.wallet"
  • Exodus: "%appdata%\Exodus\*"
  • Dash-Qt: walletpath=read("HKCU\Software\Dash\strDataDir"), walletpath + "wallet.dat"
  • Dash-Qt: walletpath=read("HKCU\Software\Dash-Qt\strDataDir"), walletpath + "wallet.dat"
  • Electrum: "%appdata%\Electrum\wallets\*"
  • Ethereum: "%appdata%\Ethereum\wallets\*"
  • Monero: walletpath=read("HKCU\Software\monero-project\wallet_path"), walletpath + "wallet.dat"
  • Monero: walletpath=read("HKCU\Software\monero-core\wallet_path"), walletpath + "wallet.dat"
С исходным кодом можно ознакомиться тут - ColdWalletManager.cs.

Кража файлов из личных директорий
Кража файлов с рабочего стола, избранного и личных папок.
a5ed9441c9a0227570503.png

С исходным кодом можно ознакомиться тут - DesktopFileManager.cs.

Discord Стиллер
Вредонос крадет информацию из Discord с помощью любопытного метода. Вызывает API-метод MiniDumpWriteDump из DbgHelp.dll, чтобы создать мини-дамп любого процесса, который содержит слово "Discord" в названии.
35f6cea813f0666fde85a.png

526eab974cc062e7d80ea.png


После того, как мини-дамп создан, осуществляется поиск токена для получения полной информации из аккаунта Discord, при помощи регулярного выражения.
85889e48511f3ac67b13a.png

С исходным кодом можно ознакомиться тут - DiscordManager.cs.

Filezilla
Кража данных из .XML файлов Filezilla.
15abf60dfba927bfee04a.png

С исходным кодом можно ознакомиться тут - FileZillaManager.cs.

Gecko Стиллер
Сначала стиллер ищет важные файлы, в которых хранятся пароли, куки, автозаполнения - аналогично Chromium.
0f540488c61358867a857.png

После этого восстанавливает учетные данные:
220dc0d0efe0e24fa9c20.png


И куки:
17f87fee4161cc08e7dea.png

С исходным кодом можно ознакомиться тут - GeckoManager.cs.

RDP Стиллер
Малварь может красть сохраненные учетные данные от RDP.
3239f4103f7283621b66e.png

С исходным кодом можно ознакомиться тут - RdpManager.cs.

Telegram стиллер
Пытается найти файлы в директории:
"%appdata%\Telegram Desktop\tdata\D877F783D5D3EF8C\map*"
и восстановить сессию.
19eed1faeb74155e52fe0.png

С исходным кодом можно ознакомиться тут - TelegramManager.cs.

Набор правил для Yara
Код:
rule grandsteal {
strings:
        $s1 = "ws://{0}:{1}/websocket" wide
        $s2 = "GrabBrowserCredentials: " wide
        $s3 = "GrabColdWallets: " wide
        $s4 = "GrabDesktopFiles: " wide
        $s5 = "GrabTelegram: " wide
        $s6 = "ColdWallets parser has been started" wide
        $s7 = "DiscordSession parser has been started" wide
        $s8 = "Rdps parser has been started" wide
        $s9 = "DesktopFiles parser has been started" wide
        $s10 = "FTPs parser has been started" wide
        $s11 = "TelegramSession parser has been started" wide
        $s12 = "ListOfProcesses parser has been started" wide
        $s13 = "ListOfPrograms parser has been started" wide
        $s14 = "card_number_encrypted" wide
        $s15 = "\\Litecoin\\wallet.dat" wide
        $s16 = "\\Bitcoin\\wallet.dat" wide
        $s17 = "\\Exodus\\exodus.wallet" wide
        $s18 = "\\Electrum\\wallets" wide
        $s19 = "\\Ethereum\\wallets" wide
        $s20 = "monero-project" wide
        $s21 = "Discord dump UNKNOWN" wide
        $s22 = "{0}\\FileZilla\\recentservers.xml" wide
        $s23 = "{0}\\FileZilla\\sitemanager.xml" wide
        $s24 = "cookies.sqlite" wide
        $s25 = "password-check" wide
        $s26 = "AppData\\Roaming\\Telegram Desktop\\tdata\\D877F783D5D3EF8C" wide
        $s27 = "%USERPROFILE%\\AppData\\Local\\Temp\\Remove.bat" wide
        $s28 = "taskkill /F /PID %1" wide
        $s29 = "choice /C Y /N /D Y /T 3 & Del %2" wide
        $s30 = "ExtractPrivateKey" wide
        $s31 = "formSubmitURL" wide
        $s32 = "passwordField" wide
        $s33 = "usernameField" wide
        $s34 = "GrabDiscord" wide
        $s35 = "encryptedPassword" wide
        $s36 = "masterPassword" wide
        $s37 = "WalletName" wide
condition:
        (30 of them)
}
Список всех строк из PE - *клик*.


Взято с https://t.me/cybred
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх