找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3710

积分

1

好友

502

主题
发表于 7 天前 | 查看: 28| 回复: 0

DKnife 是一款功能强大的网关监控与中间人攻击框架,其设计目标直指在路由器、边缘设备等网络关键节点上进行全面的用户活动监控。这套由七个 Linux ELF 二进制组件构成的系统,其核心原理基于深度报文检测(DPI)技术,能够实现流量劫持、恶意软件投递等攻击。为了实现对 HTTPS 等加密流量的解密,DKnife 往往需要与名为 DarkNimbus 的终端后门配合使用。后者可以在受害者设备上预先安装或篡改受信任的根证书,为 DKnife 在网关侧执行 TLS 中间人攻击铺平道路。

借助上述能力,DKnife 几乎能够监控用户的所有网络活动。已知的监控范围覆盖了大量常用应用,例如 Signal 和微信的语音/视频通话、文字消息、图片收发,以及在应用内浏览文章、购物、使用新闻、地图搜索、观看视频流、玩游戏、使用社交约会软件、叫网约车、查阅邮件等一系列行为。

DKnife 架构与核心组件

DKnife 采用了高度模块化的设计,其核心由七个 64 位 x86-64 Linux ELF 组件构成。其配置项支持 PPPoE、VLAN 标签、桥接接口(如 br0)以及 MTU、MAC 地址等参数的调整,这清楚地表明了它主要部署在边缘网关或路由器设备上。各组件及其功能如下:

组件 功能
dknife.bin DPI与攻击引擎,负责流量检测、活动上报、二进制下载劫持、DNS 劫持
postapi.bin 数据中继,接收内部流量并上报至远程 C2 服务器
sslmm.bin 基于 HAProxy 的反向代理,执行 TLS 终结、邮件解密、URL 重定向
mmdown.bin 恶意 APK 下载/更新组件
yitiji.bin 流量转发,在设备上创建桥接 TAP 接口,托管并路由攻击流量
remote.bin N2N P2P VPN 客户端,用于建立与远程 C2 的隧道
dkupdate.bin 更新与看门狗组件,负责维护其他组件的存活与升级

其中,“yitiji”是中文“一体机”的拼音。yitiji.bin 会创建一个名为 “yitiji” 的 TAP 接口,分配 IP 地址 10.3.3.3 和 MAC 地址 1E:17:8E:C6:56:40,并将其桥接到物理网络。当用户设备(例如被投毒的 Android 手机)请求类似 http://10.3.3.3:81/app/xxx.apk 的资源时,dknife.bin 会将流量转发至本地的 UDP 555 端口,随后由 yitiji.bin 重建完整的以太网/IP/TCP 帧并注入 TAP 接口。这使得恶意载荷看起来像是来自本地局域网,有效避免了 IP 冲突并降低了被传统安全设备检测的风险。

dknife.bin:核心检测与攻击引擎

dknife.bin 是整个框架的“大脑”,负责所有的数据包检测和攻击逻辑。启动时,它会读取 /dksoft/conf/wxha.conf 文件来获取用于嗅探流量的接口(INPUT_ETH)和发起攻击的接口(ATT_ETH)。如果该文件不存在,则默认两者均为 eth0。此外,它还会加载攻击规则和远程 C2 服务器的配置文件。

在整个检测过程中,dknife.bin 会将收集到的数据、用户活动、攻击结果以及平均吞吐量等信息,通过 256 字节的 UDP 数据包上报给运行在本机 7788 端口的 postapi.bin。这些数据包有一个固定的 7 字节前缀 DK7788,并在偏移 0x40 处写入一个标签,用于标识数据类型。例如:

dkuuid=<UUID>&avg=<throughput>&dt=[ |Android|iPhone]
dkuuid=<UUID>&app=wechat&action=callaudio&msg=[msg]
dkuuid=<UUID>&rule_id=1&status=downloaded&file=<file>

DKnife 组件间数据上报格式示例

值得注意的是,DKnife 的流量检测模块会主动识别并干扰杀毒软件和电脑管理类产品的通信。例如,它会检查 HTTP 头(如 GET 请求中的 DPUname 或 POST 请求中的 x-360-ver)以及匹配已知服务域名来检测 360 安全卫士。一旦命中,模块会丢弃相应流量或发送伪造的 TCP RST 包来中断连接。对腾讯电脑管家等相关服务的端点,也采用了相同的干扰策略。

其识别的部分腾讯相关域名包括:

  • dlied6.qq.com
  • pcmgr.qq.com
  • pc.qq.com
  • www.qq.com/q.cgi

用于匹配 360 相关域名的关键词包括:

  • 360.cn
  • 360safe
  • qihucdn
  • duba.net
  • mbdlog.iqiyi.com

postapi.bin:数据中继与规则匹配

postapi.bin 是框架中的数据中继组件。它负责接收来自 dknife.binsslmm.bin 转发的 UDP 数据帧,进行解析、分类和打标,然后再将处理后的数据上报到远程 C2 服务器。接收数据时,它会校验 DK7788 前缀,并解析出设备 ID、MAC 地址、源/目的 IP 及端口等基础信息。

随后,它会根据 /dksoft/conf/ssluserid.conf 文件中配置的规则,进一步从流量中提取敏感数据。这个配置文件本质上是一个规则表,用于指定目标服务或平台以及对应的数据抓取方式。

规则中定义的抓取方法包括:

方法 说明
get_url 从 GET 请求的 URL 中提取数据
get_cookie 从 GET 请求的 Cookie 头中提取数据
post_url 从 POST 请求的 URL 中提取数据
post_cookie 从 POST 请求的 Cookie 头中提取数据
post_content 从 POST 请求的正文中提取数据

每条规则还会指定要收集的具体字段,例如设备 ID、手机号、IMEI/IMSI、MAC 地址、UUID、IP 地址、用户名等。DKnife 针对数十款常见的、部分仅在中国境内使用的移动端和 Web 应用编写了规则。下图展示了该配置文件中的部分规则示例,针对的是网易邮箱的登录行为:

ruleid=15; method=post_url; host=mail.163.com; url=contacts; user=uid; msg=163邮箱登录;
ruleid=16; method=post_url; host=mail.163.com; url=js6; user=uid; msg=163邮箱登录;
ruleid=16; method=post_cookie; host=mail.163.com; url=js6; user=mail_uid; msg=163邮箱登录;

DKnife ssluserid.conf 规则文件示例

sslmm.bin:SSL/TLS 中间人(AitM)代理

sslmm.bin 组件是实现中间人(AitM)攻击的关键,它是一个基于定制版 HAProxy 构建的反向代理服务器。其主配置从 sslmm.cfg 加载,并根据 url.cfg 中的规则进行请求劫持与内容替换。被劫持的流量及操作结果同样会被封装成 UDP 数据帧,发送给 postapi.bin

除了提供常规的 HAProxy 代理功能外,sslmm.bin 还包含了自定义逻辑:在 TLS 连接终结后,对客户端的 HTTP(S) 请求进行深度检查、记录、窃取和按条件改写。内容注入主要通过改写 HTTP 请求行实现,将受害者重定向到攻击者控制的资源(通常位于 /dkay-scripts/ 目录下)。生成的遥测数据和窃取的样本会经由 postapi.bin 中继到远程 C2。

它的基本运行机制如下:HAProxy 在 HTTPS(443)及邮件 TLS 端口(993, 995)上终结 TLS 连接,使用 /dksoft/conf/server.pem 中的自签名证书,并将解密后的明文流量转发到对应的后端服务器。其管理/统计接口暴露在 0.0.0.0:10800,由静态凭证保护。所有命中 /dkay-scripts/ 路径的请求都会被降级为明文 HTTP,并路由到本地的 127.0.0.1:81 端口,以便在将响应返回给客户端前进行修改或注入。

然而,这种高级别的 SSL/TLS 中间人攻击 依赖于一个关键前提:终端设备必须信任网关设备所出示的证书链。一种推测是,与 DKnife 配合的 DarkNimbus 等终端恶意软件(在 Windows 与 Android 上均有发现)可能被用于在受害设备上预先植入或强制信任攻击者的根证书,从而绕过系统的证书校验机制。不过,目前尚无公开样本或直接证据证实受害设备上确实存在这类信任建立或校验绕过的具体实现。下图展示了 sslmm.bin 使用的一部分 HAProxy 代理配置内容:

frontend mail93
mode tcp
bind :993 ssl crt /dksoft/conf/server.pem
default_backend s_993
frontend mail995
mode tcp
bind :995 ssl crt /dksoft/conf/server.pem
default_backend s_995
frontend web443
mode http
bind :443 ssl crt /dksoft/conf/server.pem
acl is_default url_reg -i dkay-scripts
use_backend s_default if is_default
default_backend s_default
frontend web80
mode http
bind :80
acl is_default80 url_beg /dkay-scripts/
use_backend s_default80 if is_default80
default_backend s_default80
backend s_default80
mode http
server server_default 127.0.0.1:81
backend s_default
mode http
server server_default_tcp pop.163.com:110
backend s_110
mode tcp
server server_default_tcp pop.163.com:110
backend s_993
mode tcp
server server_default_tcp imap.163.com:993 ssl verify none

DKnife sslmm.bin 使用的 HAProxy 配置片段

其他辅助组件功能简述

  • mmdown.bin:这是 DKnife 框架中的 Android APK 恶意软件下载与更新模块。它会与硬编码的 C2 服务器(http://47.93.54.134:8005)通信,定期拉取更新清单(格式为 <UUID>.mm),并按清单下载指定的恶意 APK 文件到本地 Web 目录 /dksoft/html/app/,供后续投递使用。

  • remote.bin:该组件作为 N2N 点对点 VPN 客户端运行。它会创建名为 edge0 的虚拟网卡,并接入一个硬编码的社区名为 dknife 的 P2P overlay 网络。这使得攻击者能够通过 overlay 网络直接访问受感染的网关设备,并将其作为数据外泄的隐蔽通道。如果配置了 N2N_KEY 环境变量,它还支持 Twofish 加密,但在分析的样本中未发现预置的密钥。

  • dkupdate.bin:这是框架的下载、部署与更新组件。它会从 C2 服务器拉取更新归档(如 update_bin.tar.gz),启动可能用于 网络流量转发 的辅助程序(如 eth5to2.bin),并启动 Nginx 作为 Web 服务器,用于托管那些在 HTTP/HTTPS 响应劫持中需要用到的脚本和资源。

总结与思考

DKnife 框架展现出了高度的复杂性和针对性,其模块化设计、对 深度报文检测(DPI) 的运用、以及与终端恶意软件协同工作的能力,使其成为一款极具威胁的网关级监控与攻击工具。它尤其关注中国境内的主流应用,并且具备干扰安全软件的能力,这表明其背后可能具有明确的攻击目标和相当的技术实力。

对于企业和网络管理员而言,防御此类攻击需要多层次的安全策略:强化网关设备自身的安全(如及时更新固件、禁用不必要的服务)、在网络中部署能够检测异常证书和中间人攻击行为的设备、同时对终端设备实施严格的安全管理和监控,防止 root 证书被非法篡改。

此类深度技术分析与攻防细节的探讨,正是 云栈社区 所致力于构建的技术交流环境的一部分,我们鼓励开发者与安全研究人员在此分享知识,共同提升对高级威胁的认知与防御能力。




上一篇:千问AI免单活动爆火背后:吴嘉解读中国AI应用如何弯道超车
下一篇:迅雷被曝调包Windows系统镜像下载链接,技术分析其实现原理
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-2-23 11:42 , Processed in 0.407175 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表