Хорошо известно, что если вы вдруг забыли пароль к услуге, но он сохранен в вашем браузере, вы можете его оттуда вынуть. Тем не менее известно, что любой троян, случайно вошедший в компьютер с такой же легкостью, получит сохраненные пароли. Сегодня мы рассмотрим одну из таких вредоносных программ и покажем, как она работает.
При тесте на проникновение организации часто возникает необходимость выполнить нагрузку на скомпрометированный компьютер. Самым убедительным доказательством успеха для клиента будет список паролей от компьютеров сотрудников, а получить их поможет отличный стилер 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
ConfuserEx — это бесплатное программное обеспечение с открытым исходным кодом для защиты приложений .NET. Первоначальный авторский репозиторий был заброшен, но мне удалось найти более активную версию проекта. Среди прочего, этот протектор поддерживает отладчик и защиту от дампа памяти, обфускацию потока выполнения и шифрование кода. Довольно мощный комбайн, который наверняка отпугнет многих взломщиков!
Я также загрузил обфусцированный билд на virustotal.com, на котором привлек внимание 35 из 69 движков, при этом Avast, Doctor Web и Kaspersky молчат, что меня очень удивило. Ругательства достаточно для самого факта использования Confuse. Есть еще вопросы к билду: 51 ответ из 68. Видимо, это связано с содержимым внутри неприкрытой нагрузки.
Тест
Билд я собрал вручную из исходников. Клиппер и кейлоггер не включал, автозапуск тоже. Ненужные функции на всякий случай вырезал вообще.
При запуске получил фейковое сообщение об ошибке.
Через пять минут после запуска пришло длинное сообщение, в котором была ссылка на файл. Давай посмотрим на сообщение поближе.
😹 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 также не смог найти второй экран.
После скачивания и распаковки файла по ссылке я увидел такой набор папок.
Что в результате?
Заходим в папку Browsers. Здесь мы видим Google, InternetExplorer и Thunderbird. В папке Google, как и положено, данные из «Хрома» аккуратными текстовыми файлами. Здесь и автозаполнение, и закладки (не те, которые я купил, а те, которые я прикрепил к панели), и история, и, конечно же, куки.
Есть и перечень скачанных файлов. Он сохранен в виде списка со строками такого вида:
### 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, из которого забрал скриншоты и список установленных версий.
Посмоттрим итоги работы граббера. Он скопировал 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
. Кстати, вывод списка доступных сетей выглядит неплохо:
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.
Не уменьшилась популярность вредоносных программ, которые охотятся за данными браузера. Существующие троянские программы-стилеры активно поддерживаются, обновляются и дополняются новыми функциями (например, есть возможности для кражи данных из приложений двухфакторной аутентификации, генерирующих одноразовые коды доступа).
Мы рекомендуем использовать специальное программное обеспечение для хранения паролей к веб-счетам и данным банковских карт или защитные решения с соответствующими технологиями. Не скачивайте и не запускайте подозрительные файлы, не переходите по ссылкам из подозрительных писем — в общем, примите необходимые меры предосторожности.
1 comments On Принцип работы стилера Storm Kitty
Когда запустил стилер в песочнице и думал что я в безопасности… Как же я был неправ… Надо же было так опрофаниться… Теперь только на виртуалке + песочница с отключенным интернетом.