Простая программа на основе сокетов

Что такое кейлоггер

Кейлоггер — это программа, чаще всего ассоциируемая с хакерами.

Хотя он также используется системными администраторами и специалистами по сетевой безопасности, он используется для эксфильтрации данных на удаленные машины, что имеет плохую репутацию. Проще говоря, кейлоггер захватывает и записывает нажатия клавиш целевой машины. Часто он использует электронную почту или сетевые протоколы для отправки захваченных нажатий клавиш на удаленную машину, иногда управляемую хакерами.

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

Что мы делаем

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

Сокеты в Python

Сокет — это конечная точка двустороннего канала связи между двумя программами, работающими в сети. Сокет привязан к номеру порта, чтобы уровень TCP мог идентифицировать приложение, которому предназначены данные для отправки. В Python сокеты можно записать менее чем в пять строк кода. Чтобы закодировать клиентский сокет, мы должны привязать порт к IP-адресу и установить его в режим прослушивания следующим образом:

import socket
host = socket.gethostname()
port = 12345
s = socket.socket()     # TCP socket object
s.bind((host,port))
s.listen(5)

Сокеты, действующие как клиенты, просто подключаются к хосту и порту следующим образом:

import socket
host = socket.gethostname()
port = 12345
s = socket.socket()     # TCP socket object
s.connect((host,port))

Преимущество использования сокетов в вашем кейлоггере заключается в том, что он позволяет вам отслеживать нажатия клавиш удаленной машины для… целей системного администрирования.

Отправка форматированных данных

Основываясь на приведенном выше коде, наш сервер будет просто прослушивать данные, отправленные подключающимся клиентом, и выводить их на экран терминала. Это будет сделано с помощью бесконечного цикла while True, который можно увидеть в строках 16–19. Он должен будет декодировать данные в байтах, как показано в строке 19.

Наш клиент будет использовать прослушиватель on_press для создания специально созданной строки для сервера. Он начнется с инициализации строки для отправки, logstringс возвратом каретки (строка 1). Когда каждая буква набирается, она добавляется к logstring, отправляя строку клиенту только после того, как мы нажмем клавишу ввода (см. строку 23).

Строки 9–18 предназначались для добавления небуквенных ключей, таких как Esc, которые добавляются с префиксом Key в библиотеке Pythonpynput.keyboard. Каждый из этих небуквенных элементов был добавлен в отдельной строке для удобства чтения.

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

Я надеюсь, что этот небольшой проект улучшит ваши знания в области кибербезопасности и поможет вам на пути к мастерству в области кибербезопасности.

Удачного взлома!