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

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

Как видите, используется обфускация протектором ConfuserEx. Он, кстати, включен в релизную версию билдера в полном варианте, хотя используется только консольный. Я не мог не проверить, что получается на выходе, и загрузил билд в декомпилятор dnSpy. Результат меня обрадовал: от кода не осталось ничего человекочитаемого.
ConfuserEx — бесплатный и открытый протектор для .NET-приложений. Оригинальный репозиторий автора заброшен, но мне удалось найти более живой форк проекта. Среди прочего этот протектор поддерживает защиту от отладчиков и дамперов памяти, обфускацию потока выполнения и шифрование кода. Довольно мощный комбайн, который гарантированно отпугнет многих взломщиков!
Также я загрузил обфусцированный билд на virustotal.com, на котором привлек внимание 35 из 69 движков. При этом Avast, «Доктор Веб» и «Касперский» молчат, что меня очень удивило. Ругани хватает и на сам факт использования Confuser. К билдеру вопросов еще больше: среагировали 51 из 68. Видимо, это из‑за содержания внутри ничем не прикрытой нагрузки.
Использование стилера StormKitty
Билд я собрал вручную из исходников. Клиппер и кейлоггер не включал, автозапуск тоже. Ненужные функции на всякий случай вырезал вообще.
При запуске получил фейковое сообщение об ошибке.
Через пять минут после запуска пришло длинное сообщение, в котором была ссылка на файл. Давайте посмотрим на сообщение поближе.

Все потенциально чувствительные данные я замазал, чтобы не было желания покопаться в моих файлах.
В самом сообщении ничего особо ценного нет. Но из указанного бросаются в глаза несколько ошибок: Internal IP и Gateway IP не согласуются между собой (потому что внутренний IP принадлежит VPN), а список всех адаптеров и их адресов не выводится. При этом адаптеров у меня больше десятка — спасибо Microsoft Hyper-V! Короче, тут косяк. Также StormKitty не нашел второй экран.
После скачивания и распаковки файла по ссылке я увидел такой набор папок.
Анализ собранных данных
Проследуем в папку Browsers. Тут видим Google, InternetExplorer и Thunderbird. В папке Гугла ожидаемо данные из «Хрома» в аккуратных текстовых файлах. Тут у нас и автозаполнение, и закладки (не те, которые купил, а те, которые закрепил в панель), и история, и, конечно, кукисы.
Есть и перечень скачанных файлов. Он сохранен в виде списка со строками такого вида:
1 2 |
### X:\fakepath\drweb-cureit-new.exe ### (https://free.drweb.ru/download+cureit+free/?ph=6501001bf82f... |
И не был бы это стилер, если бы он не украл пароли. Они сохраняются в виде таких записей:
1 2 3 4 5 6 7 |
Url: https://www.noip.com/sign-up Username: fake@spy-soft.net 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 Terminal. Что касается Thunderbird — профили стилер извлек, вот только они остались зашифрованы.
Теперь посмотрим в Directories. Там в отдельных текстовых файлах разложена древовидная структура некоторых папок на компьютере жертвы. Сюда входят «Рабочий стол», «Документы», «Загрузки», «Картинки», «Автозагрузка», «Видеозаписи» и временная папка системы. Честно говоря, сложно представить, зачем это может быть нужно.
Папка Gaming оказалась полностью бесполезна. StormKitty раскопал у меня Minecraft, из которого забрал скриншоты и список установленных версий.
Смотрим результаты работы граббера. Он натаскал 1193 файла общим объемом 2,2 Мбайт. Звучит несерьезно! Оказывается, он упаковал пару мелких фоток, json-конфигов и прочего хлама, при этом пропустив лежащие рядом интересные файлы. Также в комплект попала папка, в которую я клонирую репозитории с GitHub, — вот ценность‑то!
Короче, граббер оказался бесполезным. До диска D он вообще не добрался, вопреки заявлениям автора, что он весь комп перероет и вытащит все ценное. Логика работы по меньшей мере странная, и даже в тепличных условиях ничего ценного (и даже явно попадающего под фильтр) не нашлось.
В папке Messenger должно быть самое интересное. Внутри у меня нашлось две подпапки — Telegram и Discord. В папке с «телегой» находится 16 файлов, подставив которые к голому бинарнику Telegram в папку tdata я смог зайти в свою сессию без лишних подтверждений.
Потребовался, конечно, локальный пароль, но сбрутить четыре цифры офлайн — дело плевое.
Информация о Discord включает в себя токен (все обнаруженные токены заботливо складываются в файлик tokens.<wbr />txt) и копию сессионных файлов. Ничего запредельного.
Последней на сцене появляется папка System, в которой ожидаемо содержится общая информация о целевом компьютере. В список таких данных входит скриншот экрана (правда, только главного: второй мой монитор на скриншот не попал), список процессов, ключ активации Windows, список сохраненных и доступных сетей WiFi, а также список активных приложений.
В списке процессов есть PID и путь к бинарнику, но почему‑то нет аргументов запуска. Странно.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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.
1 2 3 4 5 6 7 |
PROFILE: test-open-net PASSWORD: 65001 PROFILE: TP-LINK_**** PASSWORD: 28408284 PROFILE: ZTE-8***** PASSWORD: cc1***** ... |
Впрочем, вывод следующего дампа проясняет это поведение: если сеть открытая, вместо пароля будет вытащено 65001 из первой строки — Active <wbr />code <wbr />page: <wbr />65001. Кстати, вывод списка доступных сетей выглядит неплохо:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
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 |
Показания сканера, конечно, местами странные, но список сетей и некоторую информацию он показал правильно. Настолько правильно, что часть даже замазать пришлось.
И последний файл отчета — список открытых окон. Странно, как некоторые из записей оказались в этом списке, но все открытые окна были обнаружены точно. Пример записи ниже.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 ... |
Список процессов почти такой же: по сути, добавился только заголовок окна. Опять же — никакой информации об аргументах. StormKitty как бы издевается, не давая нам важный кусок информации.
Заключение
Впечатления оказались несколько противоречивыми, поэтому просто перечислю плюсы и минусы, а вы сами сделаете вывод, подходит ли вам такой вариант в пентесте.
Плюсы:
- собирается без фокусов с первого раза;
- билд занимает всего несколько сот килобайт;
- автоматическая обфускация;
- хорошо читается исходник;
- бесплатный;
- много возможностей;
- не нуждается в C&C.
Минусы:
- палится антивирусами (пусть и не всеми);
- нет возможности управлять зараженными машинами;
- некоторые функции работают не так, как надо (тот же граббер и извлечение паролей из Thunderbird);
- не показывает часть важной информации;
- зависит от .NET 4. Впрочем, .NET легко ставится даже на Windows XP и предустановлен начиная с Windows 7;
- порой некорректное поведение и откровенно странные решения. Антиотладка через прямой запрос к WinAPI — выглядит, конечно, надежно!
Плюсов вроде больше, но минусы весьма значительные. К тому же часть функций проверить не удалось, а фантазировать не хотелось бы. Главное — помните, что перед использованием понадобится отключить защиту или провести ночь с протекторами, упаковщиками, обфускаторами и прочей нечистью.
Еще по теме:
оп ахах неловко вышло, прикольно
а скомпилить то как эти сурсы ?