Как работает стиллер на андроид
Пишем стилер. Как вытащить пароли Chrome и Firefox своими руками
Содержание статьи
WARNING
Весь код в статье приводится исключительно в образовательных целях и для восстановления собственных утерянных паролей. Похищение чужих учетных или других личных данных без надлежащего письменного соглашения карается по закону.
Итак, браузеры, в основе которых лежит Chrome или Firefox, хранят логины и пароли пользователей в зашифрованном виде в базе SQLite. Эта СУБД компактна и распространяется бесплатно по свободной лицензии. Так же, как и рассматриваемые нами браузеры: весь их код открыт и хорошо документирован, что, несомненно, поможет нам.
В примере модуля стилинга, который я приведу в статье, будет активно использоваться CRT и другие сторонние библиотеки и зависимости, типа sqlite.h. Если тебе нужен компактный код без зависимостей, придется его немного переработать, избавившись от некоторых функций и настроив компилятор должным образом. Как это сделать, я показывал в статье «Тайный WinAPI. Как обфусцировать вызовы WinAPI в своем приложении».
Что скажет антивирус?
Рекламируя свои продукты, вирусописатели часто обращают внимание потенциальных покупателей на то, что в данный момент их стилер не «палится» антивирусом.
Тут надо понимать, что все современные и более-менее серьезные вирусы и трояны имеют модульную структуру, каждый модуль в которой отвечает за что-то свое: один модуль собирает пароли, второй препятствует отладке и эмуляции, третий определяет факт работы в виртуальной машине, четвертый проводит обфускацию вызовов WinAPI, пятый разбирается со встроенным в ОС файрволом.
Так что судить о том, «палится» определенный метод антивирусом или нет, можно, только если речь идет о законченном «боевом» приложении, а не по отдельному модулю.
Chrome
Начнем с Chrome. Для начала давай получим файл, где хранятся учетные записи и пароли пользователей. В Windows он лежит по такому адресу:
Чтобы совершать какие-то манипуляции с этим файлом, нужно либо убить все процессы браузера, что будет бросаться в глаза, либо куда-то скопировать файл базы и уже после этого начинать работать с ним.
Давай напишем функцию, которая получает путь к базе паролей Chrome. В качестве аргумента ей будет передаваться массив символов с результатом ее работы (то есть массив будет содержать путь к файлу паролей Chrome).
Давай вкратце поясню, что здесь происходит. Мы сразу пишем эту функцию, подразумевая будущее расширение. Один из ее аргументов — поле browser_family , оно будет сигнализировать о семействе браузеров, базу данных которых мы получаем (то есть браузеры на основе Chrome или Firefox).
Если условие browser_family == 0 выполняется, то получаем базу паролей браузера на основе Chrome, если browser_family == 1 — Firefox. Идентификатор CHROME_DB_PATH указывает на базу паролей Chrome. Далее мы получаем путь к базе при помощи функции SHGetFolderPath , передавая ей в качестве аргумента CSIDL значение CSIDL_LOCAL_APPDATA , которое означает:
Функция SHGetFolderPath устарела, и в Microsoft рекомендуют использовать вместо нее SHGetKnownFolderPath . Проблема в том, что поддержка этой функции начинается с Windows Vista, поэтому я применил ее более старый аналог для сохранения обратной совместимости. Вот ее прототип:
После этого функция lstrcat совмещает результат работы SHGetFolderPath с идентификатором CHROME_DB_PATH .
База паролей получена, теперь приступаем к работе с ней. Как я уже говорил, это база данных SQLite, работать с ней удобно через SQLite API, которые подключаются с заголовочным файлом sqlite3.h. Давай скопируем файл базы данных, чтобы не занимать его и не мешать работе браузера.
Теперь подключаемся к базе командой sqlite3_open_v2 . Ее прототип:
Первый аргумент — наша база данных; информация о подключении возвращается во второй аргумент, дальше идут флаги открытия, а четвертый аргумент определяет интерфейс операционной системы, который должен использовать это подключение к базе данных, в нашем случае он не нужен. Если эта функция отработает корректно, возвращается значение SQLITE_OK , в противном случае возвращается код ошибки.
Обрати внимание: при некорректной отработке функции нам все равно необходимо самостоятельно закрыть подключение к базе и удалить ее копию.
Теперь начинаем непосредственно обрабатывать данные в базе. Для этого воспользуемся функцией sqlite3_exec() .
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Сутки чистил ПК от вирусов, оказался стиллер. Что это такое и как не попасться
Вирусы — штука неприятная и в большинстве случаев неожиданная. Будучи уверенным, что я знаю абсолютно все трюки и обманки злоумышленников, я даже не думал, что когда-нибудь попадусь на такое. Именно по этой причине я отключил абсолютно все встроенные в Windows антивирусные средства и не стал устанавливать сторонние. Так и прошло несколько лет, я действительно спокойно пользовался компьютером и не знал горя, пока не настал тот день, когда вредоносное ПО всё-таки настигло мой компьютер.
Скупой платит дважды
Как бы то ни было странно, началось всё с того, что мой друг заинтересовался одной малоизвестной программой, которая была способна растянуть видео до большего разрешения при помощи нейросетей. Так как в тот момент был доступен только мой компьютер, друг решил скачать эту программу на него с какого-то непонятного сайта. Это и вылилось в проблему под названием «Стиллер».
Сама программа находилась в запароленном архиве, что является обычной практикой для пиратских сайтов, поэтому и на это мы особого внимания не обратили. После распаковки архива и запуска программы (конечно же, с правами администратора) компьютер начал сильно шуметь, а на экране происходило адовое месиво из огромного количества командных строк cmd.exe и PowerShell.
После этого я принудительно перезагрузил компьютер, так как штатными средствами сделать это не представлялось возможным, и… просто продолжил им пользоваться. Да, тогда я ещё не знал про стиллеры и думал, что это очередной установщик хлама. Какого же было моё удивление, когда хлама на компьютере я не обнаружил — я чётко видел, что программа пыталась что-то установить, но в итоге в списке программ ничего нового я не заметил. Сразу же после произошедшего я поспешил удалить тот зловещий файл и всё, что он оставил после себя. Остатки находились преимущественно в папке Temp.
Успокоившись и понадеявшись, что с вредоносом покончено, я продолжил заниматься своими делами. К сожалению, не получилось. Через 15 минут после перезагрузки вирус снова дал о себе знать — опять огромное количество окон командной строки. И именно после этого я всерьёз занялся чисткой компьютера и стал копать информацию о вирусе, который подхватил.
Принцип работы стиллера. Всё оказалось хуже, чем я ожидал
Стиллер, как понятно из прямого перевода этого слова, крадёт. Существуют разные стиллеры с разными функциями, злоумышленники могут создавать разные сборки для разных целей, но далее я собираюсь описать всё, что они умеют, так как никогда не знаешь, какой конкретно вирус ты подхватил.
В первую очередь, конечно же, после запуска файла стиллер проверяет, находится он в операционной системе или в песочнице. Для этого он применяет функцию анти-отладки из WinAPI и всё равно проникает в изначальную среду выполнения, поэтому крайне не рекомендуется проверять подобные вирусы даже в виртуальных машинах. Затем, как ни странно, стиллер крадёт данные. Давайте по порядку.
Браузеры
Стиллер умеет красть множество данных из Chromium-браузеров, в их числе: пароли, закладки, история, куки-файлы, автозаполнение, список скачанных файлов. Из Gecko-браузеров (основанных на движке Firefox) обычно можно украсть только закладки и куки. Раньше я думал, что нельзя просто так пошариться в файлах и вынуть оттуда мои пароли — там же всё зашифровано. Оказалось, я был в корне не прав. Конечно, данные там может быть и зашифрованы, только вот к ним очень легко получить доступ через библиотеку SQLite3, которой активно пользуются не только программисты, но и злоумышленники.
Системная информация
Разные стиллеры собирают разную информацию, но в целом они могут узнать буквально всё. Помимо данных со снимка экрана выше, стиллеры крадут информацию о сетях и пароли к ним, IP, ключ активации Windows и делают снимок экрана жертвы. Я до сих пор так и не понял, для каких целей злоумышленнику могут пригодиться пароли от моего Wi-Fi или информация о том, какая в моём ноутбуке видеокарта.
Файлы и токены
В целом стиллер может выкачать всё, что захочет. Но, очевидно, большие по объёму файлы скачивать нет никакого смысла, так как не факт, что они окажутся полезными и дойдут до места назначения. Поэтому, зачастую, стиллер копирует всю папку AppData и помимо неё сессии Telegram и Discord из подпапки Roaming. Именно такой способ позволяет заходить в ваш аккаунт Telegram без необходимости авторизации по номеру и даже ввода пароля двухфакторной аутентификации. Если внедрить украденные файлы сессии (иначе говоря, — токен) в другой клиент Telegram, сервер будет думать, что в аккаунт заходят с того же устройства, что и раньше. Помимо этого стиллер целенаправленно крадёт изображения, документы, файлы с расширением, присущим исходным кодам (.py, .cs, .cpp и так далее), а также сессии из игровых приложений (Steam, Uplay, Battle.net и, возможно, другие).
Остальные возможности
Помимо вышеописанного, стиллеры могут содержать в себе следующие функции:
- Кража банковских и криптовалютных кошельков (применяется редко, так как особенно строго преследуется по закону).
- Установка кейлоггера (считывание информации с клавиатуры и передача её злоумышленнику, умеет распознавать программы, в которых вводится текст).
- Установка клиппера (подмена содержимого буфера обмена на другой, как пример — подмена адресов в браузере).
- Фото с веб-камеры.
- Запись структуры директорий.
- Заражение всех .exe-файлов с целью навсегда остаться на компьютере жертвы.
Последнее точно было в попавшемся мне стиллере, так как даже после огромных усилий по очистке компьютера, в моём Telegram появлялись чужие геопозиции и IP-адреса. При этом новые пароли, которые я установил для всех своих аккаунтов, украдены не были.
Как очевидный итог — мои данные разлетелись по всему интернету
Конечно же, почти сразу после случившегося я сменил все пароли на важных мне аккаунтах и стал отслеживать почту на предмет странных входов и запросов сброса пароля. Результат не заставил себя долго ждать. На аккаунтах «ВКонтакте», которые не представляли для меня особую ценность и остались со старым паролем, появился спам непристойного характера и подписки на странные группы. Как ни странно, в Instagram ничего не произошло — то ли тот аккаунт не представлял особой «спамерской» ценности, то ли его просто не успели как следует настроить для бота. Также я обнаружил попытки входа в Dropbox, Mail.ru и MEGA. В общем, судя по всему, ценность представляют аккаунты большинства популярных сайтов и социальных сетей.
О своей подозрительной активности в Discord я узнал от знакомых, которые начали писать мне по поводу случившегося. С моего аккаунта было разослано сообщение с вредоносной ссылкой по всем личным чатам и серверам — конечно, было стыдно перед одногруппниками и коллегами. Увы, в Discord нельзя просто закрыть доступ ко всем активным сессиям кроме одной, как в Telegram, поэтому пришлось в мороз и на ходу менять пароль прямо со смартфона (что не очень-то и удобно). Обычно смена пароля сбрасывает все активные сессии, так что если вы видите подозрительную активность на каком-то аккаунте — наиболее быстрым и действенным шагом будет именно это действие.
В Telegram, как не странно, ничего не произошло. Постоянно заходили разные люди, но ничего подобного произошедшему в Discord мной замечено не было. Вполне вероятно, что несколько разных людей успели выкачать архивы с моими данными, но прошёл почти месяц с тех пор и я до сих пор не получил угроз и шантажа.
Главный урок, который я извлёк
После произошедшего я всерьёз задумался о безопасности своего компьютера и о том, как избежать подобного в дальнейшем. Конечно, это первый такой случай за много лет, но даже так эта ситуация заставила меня сильно нервничать и потратить несколько дней на разбирательства и устранение последствий. В следующий раз может получиться так, что времени заниматься подобным просто не будет и мне пришлось бы идти на компромиссы.
В первую очередь — антивирус
Раньше я был убеждённым противником антивирусов, так как был уверен, что подхватить вирус настолько сложно, что приходится делать это чуть ли не специально. Теперь же я всегда держу на готове встроенный антивирус Windows, который с выходом десятой версии операционки очень похорошел и стал надлежащим образом выполнять свою работу. Но ещё более лучшим решением для простых пользователей будет установка стороннего проверенного антивируса, и здесь стоит помнить, что лучший — не всегда популярный. Изучите отзывы и обзоры антивирусного ПО и выберите то, которое сочтёте подходящим.
Хотя бы проверяйте файлы через VirusTotal
Перед запуском подозрительных файлов, скачанных из сомнительных источников, пропускайте их через VirusTotal. Это удобный бесплатный сервис, который использует вирусные базы огромного количества антивирусов, тем самым являясь, по сути, самым мощным антивирусным средством, существующим на данный момент. Им пользуются многие сайты, доказывая, что их файлы безопасны, в том числе и Trashbox.
Помимо вышеописанного, после смены паролей нужно отказаться от привычки пользоваться автозаполнением. Именно из-за этой функции и утекают пароли — если на серверах Google они, скорее всего, в безопасности, то при хранении локально на компьютере оказываются доступны всем желающим.