Принцип работы вредоноса Storm Kitty

Принцип работы стилера Storm Kitty

Хорошо известно, что если вы вдруг забыли пароль к услуге, но он сохранен в вашем браузере, вы можете его оттуда вынуть. Тем не менее известно, что любой троян, случайно вошедший в компьютер с такой же легкостью, получит сохраненные пароли. Сегодня мы рассмотрим одну из таких вредоносных программ и покажем, как она работает.

При тесте на проникновение организации часто возникает необходимость выполнить нагрузку на скомпрометированный компьютер. Самым убедительным доказательством успеха для клиента будет список паролей от компьютеров сотрудников, а получить их поможет отличный стилер StormKitty. Он бесплатный, с открытым исходным кодом, работает стабильно и даже отправляет результаты работы прямо в Telegram.Неудивительно, что его уже убрали с GitHub.

Что ж, давайте возьмем исходники или готовую сборку с зеркала проэкта на GitHub, распакуем и рассмотрим поближе.

Многофункциональность

Что умеет данный стилер? По словам автора — много чего. Вот и кража данных, и отпечатки пальцев системы, и даже более продвинутые функции, такие как противодействие анализу и встро­енно­го в сбор­щик обфуска­тора. Вот полный список анонсированных функций.

  • Антианализ. Это включает обнаружение виртуальных машин Hyper-V, VirtualBox и VMware (по идентификатору виртуального оборудования), песочниц Sandboxie и COMODO (по списку процессов) и анализ VirusTotal и Any.Run. Анти-отладчик просто извлекает функцию WinAPI CheckRemoteDebuggerPresent, а защита загрузки в системах онлайн-аналитики проверяет, принадлежит ли внешний IP-адрес хостинг-провайдеру. 
  • Фин­гер­прин­тинг. Собирает версию операционной системы, модель и характеристики процессора и графического процессора, информацию об оперативной памяти, IP-адреса, BSSID окружающих точек доступа, геолокацию, информацию на экране и установленные программы. Список впечатляет, и StormKitty даже генерирует системный идентификатор, чтобы однозначно идентифицировать компьютер. К тому же улетает ключ активации системы и список процессов.
  • Кража данных из браузеров. В дистрибутив (точнее, сборник) входят браузеры на основе Chromium (украдены пароли, данные карт, куки, история, данные автозаполнения и закладки), Firefox (куки, история и закладки, а также другие файлы баз данных из папки браузера), Internet Explorer и Microsoft Edge (от них получаются только пароли).
  • Информация о сетях Wi-Fi.Стилер отправит вам сохраненные сети и результаты сканирования доступных сетей (таким образом, SSID и BSSID найденных точек доступа будут включены в отчет).
  • Сбор фай­лов с компь­юте­ра. Документы, изображения, исходный код, базы данных — в общем, все, что может иметь ценность. Стилер также умеет работать с флешками. Код указывает форматы украденных файлов. А когда с изображениями и документами все становится более-менее предсказуемым, автор решил украсть исходный код для дальнейшего использования: в списке украденных языков — C, C ++, C #, Assembler, Bash, Python, HTML. и CSS (WTF?), PHP, Go, JavaScript, Ruby, Perl, Swift, Java и Kotlin.
  • Обнаружение банковских и криптовалютных сервисов в браузерах. Если вышеупомянутые функции все еще могут быть вытянуты за уши в законных целях, то выбор финансовых сайтов определенно неприятен. Мы не тестировали эту функцию и не рекомендуем ее вам.
  • Кра­жа сес­сий из игро­вых плат­форм. Сюда входят Steam, Uplay, Battle.Net и, конечно же, всеми любимый Minecraft.
  • Автозагрузка. Было бы странно, если бы ее не было. Реализовано неожиданно просто: исполняемый файл полезной нагрузки просто копируется в папку автозапуска — никаких реестров и планировщиков.
  • Сбор кри­тичес­ких фай­лов локаль­ных кошель­ков. Да, да, у трой есть специальная функция даже для этого. Неудивительно, что раньше его продавали на подпольных форумах. Вот кошельки подверженые риску: Zcash, Armory, Bytecoin, Jaxx, Exodus, Ethereum, Electrum, AtomicWallet, Guarda и Coinomi. Смею надеяться, что вы никогда не воспользуетесь этой функцией.
  • Ус­танов­ка кей­лог­гера и клип­пера. Если с кейлоггером все понятно, а в одной из предыдущих статей я даже показал, как это сделать самому, то клиппер — не такой уж известный вид вредоносного ПО. Его суть в том, что он ищет определенную информацию в буфере обмена и заменяет ее другой. Типичный пример — адреса биткойн-кошельков и других криптовалют, которые мало кто решает вводить вручную. Хоба — и адрес поменяли, и драгоценный биткойн улетел в левый кошелек.
  • За­пись струк­туры дирек­торий.
  • Скриншоты экрана и камеры. Автор утверждает, что камера активируется, когда пользователь смотрит непристойный контент.
  • Копирование сеансов Telegram. В этом случае злоумышленник будет использовать тот же токен, что и исходный пользователь, чтобы ненужные записи не появлялись в списке активных сеансов.
  • Кра­жа акка­унтов VPN. В спис­ке есть ProtonVPN, OpenVPN и NordVPN.
  • Ак­каун­ты Outlook, Pidgin, Skype, Discord и Filezilla. Тут без ком­мента­риев.

Как видите, набор функций довольно обширен. Но, несмотря на это, размер выходной сборки составляет всего 239 КБ, и все зависимости интегрированы.

Установка

Если вы скачали исходники, вам нужно сначала их собрать. Код написан на C # и удобочитаем, поэтому вы можете изучить структуру таких программ «на живом пациенте». Я использовал Visual Studio 2019 с установленным компонентом .NET Desktop Development. Все скомпилировано сразу и никаких уловок.

Вместо сервера стоит Telegram-бот. Чтобы использовать его, вам нужно будет создать нового бота и загрузить его токен в нашу сборку. Для этого отправьте главному боту команду / newbot и следуйте инструкциям.

Получится примерно так

вот что получится

Затем вам нужно скопировать токен (который я размыл) и вставить его в билдер. Это консольное приложение, основанное на том же C #. Сборка состоит из нескольких вопросов, после которых будет показан путь к завершенной конструкции.

Часть фун­кций (нап­ример, клип­пер и кей­лог­гер) не будут дос­тупны, если не исполь­зовать авто­запуск.

Сборка

Сборка

Как видите, используется обфускация щитом ConfuserEx. Кстати, он входит в релизную версию билдера в его полной версии, хотя используется только консольная версия. Я не мог не проверить, что получилось на выходе, и загрузил компиляцию в декомпилятор dnSpy. Результат меня порадовал: в коде не осталось ничего читабельного.

Код в dnSpy

Код в dnSpy

ConfuserEx — это бесплатное программное обеспечение с открытым исходным кодом для защиты приложений .NET. Первоначальный авторский репозиторий был заброшен, но мне удалось найти более активную версию проекта. Среди прочего, этот протектор поддерживает отладчик и защиту от дампа памяти, обфускацию потока выполнения и шифрование кода. Довольно мощный комбайн, который наверняка отпугнет многих взломщиков!

Я также загрузил обфусци­рован­ный билд на virustotal.com, на котором привлек внимание 35 из 69 движков, при этом Avast, Doctor Web и Kaspersky молчат, что меня очень удивило. Ругательства достаточно для самого факта использования Confuse. Есть еще вопросы к билду: 51 ответ из 68. Видимо, это связано с содержимым внутри неприкрытой нагрузки.

Тест

Билд я соб­рал вруч­ную из исходни­ков. Клип­пер и кей­лог­гер не вклю­чал, авто­запуск тоже. Ненуж­ные фун­кции на вся­кий слу­чай вырезал вооб­ще.

При запус­ке получил фей­ковое сооб­щение об ошиб­ке.

Принцип работы Storm Kitty

Че­рез пять минут пос­ле запус­ка приш­ло длин­ное сооб­щение, в котором была ссыл­ка на файл. Давай пос­мотрим на сооб­щение поб­лиже.

😹 StormKitty — Report:
Date: 2021-XX-XX 6:53:28 PM
System: Windows 10 Pro (64 Bit)
Username: Hackcat
CompName: HACKCAT-PC
Language: 🇺🇸 en-US
Antivirus: Not installed

💻 Hardware:
CPU: Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz
GPU: NVIDIA GeForce GT 540M
RAM: 8102MB
HWID: BFEBFBFF00*XXXXXX*
Power: High (0.99%)
Screen: 1366×768

📡 Network:
Gateway IP: 192.168.100.1
Internal IP: 10.121.X.X
External IP: X.X.182.6
BSSID: cc:1a:fa:XX:XX:XX

💸 Domains info:
∟ 🏦 Banking services:
— Agent.Privatbank
— Qiwi
— Stackexchange
— Yoomoney
— Оао Бпс‑Сбер­банк
∟ 💰 Cryptocurrency services:
— Blockchain
— My Btc Address
— Trade.Aliexpress
∟ 🍓 Porn websites (No data)

🌐 Browsers:
∟ 🔑 Passwords: 468
∟ 🍪 Cookies: 2466
∟ 📂 AutoFill: 1457
∟ ⏳ History: 5892
∟ 🔖 Bookmarks: 18
∟ 📦 Downloads: 427

🗃 Software:
∟ ✈️ Telegram sessions
∟ 💬 Discord token

🧭 Device:
∟ 🗝 Windows product key
∟ 🛰 Wifi networks: 16
∟ 🌃 Desktop screenshot

🦠 Installation:
∟ ⛔️ Startup disabled
∟ ⛔️ Clipper not installed
∟ ⛔️ Keylogger not installed

📄 File Grabber:
∟ 📂 Source code files: 404
∟ 📂 Database files: 8
∟ 📂 Documents: 716
∟ 📂 Images: 75

🔗 Archive download link (https://anonfiles.com/XXXXXXXXXX)
🔐 Archive password is: «7e550a68*XXXXXXXXXXXXXXXXX*97682ff»

Все потен­циаль­но чувс­тви­тель­ные дан­ные я замазал, что­бы не было желания покопать­ся в моих фай­лах.

В самом сообщении нет ничего особенно ценного. Но из вышесказанного бросается в глаза несколько ошибок: внутренний IP-адрес и IP-адрес шлюза не совпадают (поскольку внутренний IP-адрес принадлежит VPN), а список всех адаптеров и их адреса не совпадают. В то же время у меня более десятка адаптеров — спасибо Microsoft Hyper-V! Короче тут ошибка. StormKitty также не смог найти второй экран.

Пос­ле ска­чива­ния и рас­паков­ки фай­ла по ссыл­ке я уви­дел такой набор папок.

Принцип работы Storm Kitty

Что в результате?

Заходим в папку Browsers. Здесь мы видим Google, InternetExplorer и Thunderbird. В папке Google, как и положено, данные из «Хрома» аккуратными текстовыми файлами. Здесь и автозаполнение, и закладки (не те, которые я купил, а те, которые я прикрепил к панели), и история, и, конечно же, куки.

Принцип работы Storm Kitty

Есть и перечень ска­чан­ных фай­лов. Он сох­ранен в виде спис­ка со стро­ками такого вида:

### X:\fakepath\drweb-cureit-new.exe
### (https://free.drweb.ru/download+cureit+free/?ph=6501001bf82f...

И не был бы это сти­лер, если бы он не украл пароли. Они сох­раня­ются в виде таких записей:

Url: https://www.noip.com/sign-up
Username: fake@xakep.ru
Password: did_y0u_expect_to_see_my_rea1_pa$$w0rd?
 
Url: http://192.168.0.1/
Username: admin
Password: admin
...

Папка Internet Explorer содержит только токен авторизации Azure Cloud Shell для Терминала Windows. Что касается Thunderbird, то стилер извлек профили, только они остались зашифрованными.

Теперь перейдем в Directories. Здесь древовидная структура некоторых папок на компьютере жертвы разбита на отдельные текстовые файлы. Сюда входят рабочий стол, документы, загрузки, изображения, автозагрузка, видео и временная системная папка. Если честно, сложно представить, зачем это может понадобиться.

Пап­ка Gaming ока­залась пол­ностью бес­полез­на. Стилер рас­копал у меня Minecraft, из которо­го заб­рал скрин­шоты и спи­сок уста­нов­ленных вер­сий.

Стилер рас­копал у меня Minecraft,

Посмоттрим итоги работы граббера. Он скопировал 1193 файла общим объемом 2,2 Мбайт. Оказывается, он упаковал несколько небольших фотографий, json-конфигураций и других ненужных файлов, пропустив при этом интересные файлы, находящиеся поблизости. Папка, в которую я клонировал репозитории GitHub, также была включена — это прекрасно)

Посмоттрим итоги работы граббера. Он скопировал 1193 файла общим объемом 2,2 Мбайт. Оказывается, он упаковал несколько небольших фотографий, json-конфигураций и других ненужных файлов, пропустив при этом интересные файлы, находящиеся поблизости. Папка, в которую я клонировал репозитории GitHub, также была включена.

Короче говоря, граббер оказался бесполезным. Он так и не попал на диск D, вопреки утверждениям автора, что он перепишет весь компьютер и вытащит все, что было ценным. Логика работы как минимум странная, и даже в тепличных условиях ничего ценного (да и явно попадающего в фильтр) не обнаружено.

Папка Messenger должна содержать интересную часть. Внутри я обнаружил две подпапки — Telegram и Discord. Папка с «тележкой» содержит 16 файлов, заменив их на голый бинарник Telegram в папке tdata, я смог войти в свою сессию без лишнего подтверждения.

Информация Discord включает токен (все обнаруженные токены аккуратно добавляются в файл tokens.txt) и копию файлов сеанса. Ничего особенного.

Последней является папка System, которая, как ожидается, будет содержать общую информацию о целевом компьютере. В список этих данных входит скриншот экрана (правда, только главный экран: мой второй монитор не вошел в скриншот), список процессов, ключ активации Windows, список сохраненных и доступных сетей Wi-Fi. и список активных приложений.

В спис­ке про­цес­сов есть PID и путь к бинар­нику, но почему‑то нет аргу­мен­тов запус­ка. Стран­но.

NAME: svchost

PID: 816
EXE: C:\Windows\system32\svchost.exe
 
NAME: iCUE
PID: 1728
EXE: C:\Program Files (x86)\Corsair\CORSAIR iCUE Software\iCUE.exe
 
NAME: RuntimeBroker
PID: 5984
EXE: C:\Windows\System32\RuntimeBroker.exe
 
NAME: Typora
PID: 2104
EXE: C:\Program Files\Typora\typora.exe

Спи­сок сох­ранен­ных сетей тоже не очень раду­ет: для откры­тых сетей вмес­то пароля ука­зано 65001.

PROFILE: test-open-net

PASSWORD: 65001
 
PROFILE: TP-LINK_****
PASSWORD: 28408284
 
PROFILE: ZTE-8*****
PASSWORD: cc1*****
...

Впро­чем, вывод сле­дующе­го дам­па про­ясня­ет это поведе­ние: если сеть откры­тая, вмес­то пароля будет вытаще­но 65001 из пер­вой стро­ки — Active code page: 65001. Кста­ти, вывод спис­ка дос­тупных сетей выг­лядит неп­лохо:

Active code page: 65001

 
Interface name : Wi-Fi
There are 2 networks currently visible.
 
SSID 1 : Ext
Network type : Infrastructure
Authentication : WPA2-Personal
Encryption : CCMP
BSSID 1 : b0:4e:**:**:**:**
Signal : 99%
Radio type : 802.11n
Channel : 6
Basic rates (Mbps) : 1 2 5.5 11
Other rates (Mbps) : 6 9 12 18 24 36 48 54
 
SSID 2 : ZTE-8*****
Network type : Infrastructure
Authentication : WPA2-Personal
Encryption : CCMP
BSSID 1 : cc:1a:**:**:**:**
Signal : 99%
Radio type : 802.11n
Channel : 6
Basic rates (Mbps) : 6.5 16 19.5 117
Other rates (Mbps) : 18 19.5 24 36 39 48 54 156

По­каза­ния ска­нера, конеч­но, мес­тами стран­ные, но спи­сок сетей и некото­рую информа­цию он показал пра­виль­но. Нас­толь­ко пра­виль­но, что часть даже замазать приш­лось.

И пос­ледний файл отче­та — спи­сок откры­тых окон. Стран­но, как некото­рые из записей ока­зались в этом спис­ке, но все откры­тые окна были обна­руже­ны точ­но. При­мер записи ниже.

NAME: devenv

TITLE: StormKitty - Microsoft Visual Studio (Administrator)
PID: 11868
EXE: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe
 
NAME: GitHubDesktop
TITLE: GitHub Desktop
PID: 2620
EXE: C:\Users\Hackcat\AppData\Local\GitHubDesktop\app-2.6.6\GitHubDesktop.exe
 
NAME: Windscribe
TITLE: Windscribe
PID: 15260
EXE: C:\Program Files (x86)\Windscribe\Windscribe.exe
...

Список процессов почти такой же: фактически добавлен только заголовок окна. Опять же, нет информации об аргументах. Стилер не сообщает нам никакой важной информации.

Заключение

Я просто перечислю плюсы и минусы а решать вам.

Плю­сы:

  • со­бира­ется с пер­вого раза;
  • билд занима­ет все­го нес­коль­ко сот килобайт;
  • ав­томати­чес­кая обфуска­ция;
  • хо­рошо чита­ется исходник;
  • бес­плат­ный;
  • мно­го воз­можнос­тей;
  • не нуж­дает­ся в C&C;

Ми­нусы:

  • обнаруживается анти­виру­сами;
  • нет воз­можнос­ти управлять заражен­ными машина­ми;
  • не­кото­рые фун­кции работа­ют не так, как надо (тот же граб­бер и извле­чение паролей из Thunderbird);
  • не показы­вает часть важ­ной информа­ции;
  • за­висит от .NET 4. Впро­чем, .NET лег­ко ста­вит­ся даже на Windows XP и пре­дус­танов­лен начиная с Windows 7;
  • по­рой некор­рек­тное поведе­ние и откро­вен­но стран­ные решения. Анти­отладка через пря­мой зап­рос к WinAPI.

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

 

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.