Кот атакует! Изучаем открытый стилер StormKitty

Кот атакует! Изучаем открытый стилер StormKitty

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

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

Раз уж ты чита­ешь «Хакер», бес­смыс­ленно рас­ска­зывать, зачем нужен сти­лер и чем он отли­чает­ся от шиф­роваль­щика или рат­ника. Луч­ше давай ска­чаем исходни­ки или готовый билд с зер­кала про­екта на GitHub, рас­паку­ем и пос­мотрим на него поб­лиже.

WARNING

Ав­тор и редак­ция не несут ответс­твен­ности за любой вред, при­чинен­ный с исполь­зовани­ем матери­алов этой статьи. Рас­простра­нение вре­донос­ных прог­рамм, несан­кци­они­рован­ный дос­туп к информа­ции, наруше­ние тай­ны перепис­ки — уго­лов­ные прес­тупле­ния. При про­веде­нии тес­тов на про­ник­новение необ­ходим пись­мен­ный договор с заказ­чиком.

ЛАПКИ МНОГОФУНКЦИОНАЛЬНЫЕ

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

  • Ан­тиана­лиз. Сюда вхо­дит обна­руже­ние вир­туаль­ных машин 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 Кбайт и все зависи­мос­ти встро­ены.

УСТАНОВКА

Ес­ли ты ска­чал исходни­ки, то при­дет­ся сна­чала соб­рать их. Код написан на C# и хорошо чита­ется, так что мож­но «на живом паци­енте» изу­чать устрой­ство подоб­ных прог­рамм. Для сбор­ки я исполь­зовал Visual Studio 2019 с уста­нов­ленным ком­понен­том .NET desktop development. Все ском­пилиро­валось сра­зу и без фокусов — уди­витель­но!

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

Кот атакует! Изучаем открытый стилер StormKitty

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

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

Кот атакует! Изучаем открытый стилер StormKitty

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

Кот атакует! Изучаем открытый стилер StormKitty
Код в dnSpy

INFO

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

Так­же я заг­рузил обфусци­рован­ный билд на virustotal.com, на котором прив­лек вни­мание 35 из 69 движ­ков. При этом Avast, «Док­тор Веб» и «Кас­пер­ский» мол­чат, что меня очень уди­вило. Ругани хва­тает и на сам факт исполь­зования Confuser. К бил­деру воп­росов еще боль­ше: сре­аги­рова­ли 51 из 68. Видимо, это из‑за содер­жания внут­ри ничем не прик­рытой наг­рузки.

ТЕСТИРУЕМ

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

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

Кот атакует! Изучаем открытый стилер StormKitty

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

Кот атакует! Изучаем открытый стилер StormKitty

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

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

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

Кот атакует! Изучаем открытый стилер StormKitty

ЧТО В МЕШКЕ?

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

Кот атакует! Изучаем открытый стилер StormKitty

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

### X:\fakepath\drweb-cureit-new.exe

### (https://free.drweb.ru/download+cureit+free/?ph=6501001bf82f...

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

Url: https://www.noip.com/sign-up

Username: [email protected]

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 ока­залась пол­ностью бес­полез­на. «Котенок» рас­копал у меня Minecraft, из которо­го заб­рал скрин­шоты и спи­сок уста­нов­ленных вер­сий.

Кот атакует! Изучаем открытый стилер StormKitty

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

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

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

INFO

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

Ин­форма­ция о 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 — выг­лядит, конеч­но, надеж­но!

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

Источник

0

Автор публикации

не в сети 28 минут

Андрей Маргулис

576
С организацией DDoS атак завязал.
Выкладываю новости технологий и интересные статьи с темной стороны интернета.
32 года
День рождения: 14 Мая 1991
Комментарии: 551Публикации: 3128Регистрация: 12-12-2015
Понравилась статья? Поделиться с друзьями:
РЭНБИ - Europe
Авторизация
*
*
Регистрация
*
*
*
*
Ваш день рождения * :
Число, месяц и год:
Отображать дату:
Генерация пароля