【高级威胁追踪(APT)】一起针对第三方支付机构的定向攻击工具包披露"

admin 2026-11-06 02:46:49 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

【高级威胁追踪(APT)】一起针对第三方支付机构的定向攻击工具包披露

深瞻情报实验室
深瞻情报实验室

深信服千里目安全技术中心

2026年11月5日 17:53
北京

去阅读

近期,深瞻情报实验室发现位于 91.224.92.16 的 18128 端口存在未授权可列目录。目录内完整存放着一个用于入侵某国内第三方支付机构生产环境的整套工具链,共计 91 个文件,涵盖内存马、JVM 注入器、隧道组件、Metasploit 载荷与数据窃取脚本。截至本文撰写时,该目录已无法访问。

与常见的僵尸网络面板或矿机配置泄露不同,该目录是一套针对单一目标高度定制的作业工具包:所有部署脚本内置目标内网的主机名门禁、中间件路径、内部服务地址与业务组件标识。我们对全部文件进行了纯被动抓取与离线静态分析,以下为本次监测的详细分析与研判。

工具包概况

工具包按功能可分为七大模块,覆盖\"初始植入—权限维持—通道建立—数据窃取\"全链路:

模块 代表性文件 功能
冰蝎内存马家族 I4127b.java、i4127b.jsp、i4127b.jspx、Bh4127.java、I4411P.java、probe.py AES加密协议内存Webshell及探针验证链
蚁剑Valve家族 AsV2/V3/V4、AsV5180、AgentAs系列 蚁剑协议Tomcat Valve内存马
JVM无文件注入 Attach4127、Agent4127、Agent5180、AgentCmd JDK Attach API动态注入内存Agent
隧道组件 Tun.java、TunKeep.java、tunloop.sh 反向TCP端口转发与保活
持久化载荷 met.bin、met.jar、sh.bin Metasploit 双载荷与微型反向shell
部署脚本(约35个) i4438~i5180系列、a.sh~p4.sh 波次化植入、环境探测与数据窃取
配置与杂项 root\_map.xml、hess\_map.xml、man\*.txt、i4438\_id web.xml注入片段、Agent清单、SSH私钥

图1 开放目录中的文件列表(节选)

从时间信息看,判断活跃窗口的依据有两处:一是 met.jar 内部时间戳为 2026-09-28 05:31:48;二是脚本引用的受害机日志文件名集中在 2026-09-27 与 2026-09-28。据此,我们判断该工具包的活跃作业窗口约为 2026 年 9 月 27 日至 28 日,目录被抓取时仍在使用中,没有废弃迹象。

基础设施:单点 C2 与三个低级失误

全部证据指向单一攻击服务器 91.224.92.16,一台机器承担载荷分发、SSH 隧道端点、Meterpreter handler 与自写隧道回连等多类角色(脚本注释中自称\"kali\",隧道注释中称\"operator\"):

端口 用途
18128 HTTP 载荷分发(本次发现的开放目录)
18129 SSH 反向隧道监听(受害机 8080 端口映射至 C2)
18130 / 18132 自写 Java 隧道(Tun.java)回连端口,默认并行 6 实例
18140 Meterpreter handler(Linux x64,reverse\_tcp)
18141 Meterpreter handler(Java 版载荷)
18142 微型反向 shell(sh.bin)回连端口

该目录同时暴露了通常极难获得的三类资产:其一,C2 的 SSH 私钥——i4438\_id 为 OpenSSH ed25519 私钥(注释 i4438rev),对应公钥 AAAAC3NzaC1lZDI1NTE5AAAAIOkq3TxM0sI8KgxfeSoIcQkxuUeQA1Z7h5D+3aiwgbWs ,失陷主机用它以 root 身份建立反向隧道;其二,Meterpreter 会话 UUID 2WVdxzs3Mq1L+035IUKwMA==(内嵌于 met.bin);其三,构建信息——met.bin 未剥离且含调试信息,文件路径中保留了 Rapid7 官方 mettle 构建环境(mettle\_build\_gem/mettle/mettle/),说明攻击者直接使用标准 Meterpreter 构建产物,未经二次编译,也没有做免杀处理。

图2 目录中暴露的 C2 SSH 私钥(正文已打码)

图3 利用该私钥建立 SSH 反向隧道的脚本 i4438r.sh

从整体看,攻击者在目标侧投入较多,但基础设施相对简陋:只有一台 C2,没有备用域名,载荷未做免杀,目录没有访问控制,甚至把 SSH 私钥也放在里面。我们判断,这处设施更像是为某次任务临时准备的落脚点,长期运营的专用 C2 的可能性较低。

定向攻击特征

从工具包可以看出三点。第一,攻击有明确的目标清单:部署脚本内置主机名白名单与排除名单,清单外主机直接跳过,其中一类节点被 20 余个脚本反复引用,是重点目标。第二,工具按目标环境定制:针对 Tomcat 7 与 JDK 1.8 编写,预置多套 JDK 路径和 Alpine 与常规 Linux 的计划任务回退。第三,攻击者熟悉业务:直接引用 Hessian 业务路径、订单查询接口与两台 Dubbo 节点的 telnet invoke,查询前还先反编译订单组件确认字段。结合“业务探针+异常回滚”的做法,其目的是长期驻留、按需取数。

综合判断,这是一次有目标清单、有前期情报、按环境定制的定向作业。

工具包分析

冰蝎内存马家族(I4127b.java 等 8 个文件)

核心组件 I4127b.java 为编译后植入 WEB-INF/classes/ 的 Servlet,协议与冰蝎 v3 兼容:硬编码 AES-128-ECB 密钥(按目标定制的口令派生),通过加密信道接收指令并在应用进程内直接执行,执行结果加密回传;非 POST 请求一律返回 200 空响应,无任何页面特征。配套变体包括 .jsp/.jspx 落盘版(jspx 为带调试日志的排障版)与 Valve 版——后者插在 Tomcat 管道最前,把特定 URI、特定 UA(Behinder)的流量、乃至 POST 到 /hessian/\* 的流量全部劫持给冰蝎处理器,借正常业务路径作隐蔽入口。

文件名 功能 文件大小bytes MD5
I4127b.java 冰蝎协议内存马Servlet(AES-ECB) 4745 2ff4967259ae7971791b531f72782fac
i4127b.jsp 双功能JSP马(蚁剑类加载+裸命令) 971 d5db1dc58c452b7cf8adfc6b74113bd8
i4127b.jspx 带调试日志的JSPX版冰蝎马 2491 3e73da3ff3a06e37884873034d702705
Bh4127.java 冰蝎前端Valve(劫持hessian流量) 1272 41ec5c0858bfa99356783e295d686eef
I4411P.java 上线自检探针类 1484 f5ee87168d7d87462e5f9a709f822eb4
probe.py AES加密验证器(内置密钥断言) 1843 ed34acf5e4edbd471ce6af2fb4bdb12c

图4 冰蝎内存马 I4127b.java 中硬编码的 AES 密钥

图5 验证脚本 probe.py 的密钥派生与断言(口令已打码)

蚁剑 Valve 家族(AsV2/V3/V4/As5180 等 14 个文件)

四个迭代版本均为 Valve 形态,协议为蚁剑 base64 类加载(特征串 yv66vg,即 base64 的 .class 魔数 cafebabe)。版本迭代可见攻击者对兼容性的持续改进:V3 起记录命中审计日志,V4 引入独立类加载器规避同名类冲突,均使用空 Servlet 伪造 JSP PageContext 提高 payload 兼容性。与冰蝎家族并列,构成\"双客户端冗余\"。

JVM Attach 无文件注入

当落盘文件可能被完整性巡检发现时,攻击者切换至纯内存注入:通过 JDK Attach API 向运行中的 Tomcat 进程动态加载 Agent,在内存中注册请求处理组件,实现不落盘驻留。磁盘仅残留 /tmp 临时文件,应用目录零改动;组件随进程重启失效,客观上降低了被巡检发现的概率。

文件名 功能 文件大小bytes MD5
Attach4127.java Attach API 附加器 379 ade50b5d5f9530ed10e83da1871d0a40
Agent4127.java 注入Cmd4127+Valve4127(双路径Context定位) 7935 f8b8267a094caeefe3e52773a68365a0
Agent5180.java 注入Bh4127冰蝎Valve(三层管道) 7949 20b07f4687a1e19c08fc40b587237bc6
AgentCmd.java 注入CmdV5180命令Valve(管道首插入) 5971 e75d326a7b79fd91938878ddc1679f2d
AgentAs 系列×4 注入蚁剑Valve四代迭代 5968-6183 8803056b85ecc6b23a620443e51fda2c / 2f2731a5e321bb6bde4176d8fd66318f / 49edeb4746c13fca75b8d934ddc14e3f / 3f0c33c65e709412a6bd5ab993693971

隧道组件与持久化

Tun.java(43 行纯 JDK 实现)为反向端口转发器:向 C2 发起出站 TCP 连接,将 C2 指令流与受害机本地 8080 双向转发;默认并行 6 实例,后期配看门狗进程保活。与 SSH 反向隧道并用,构成至少三条相互独立的回连通道——单点封堵无法断联。

met.bin 为 Linux x64 Meterpreter(mettle 实现):静态链接、未剥离、含调试信息,内嵌回连配置 tcp://91.224.92.16:18140 与会话 UUID。met.jar 为完整的 Java 版 Meterpreter 载荷(含 Payload.class,LPORT=18141,内部时间戳 2026-09-28 05:31:48),与原生 ELF 互为冗余。持久化终版脚本 i5180p.sh 的设计比较周密:载荷落地到隐蔽临时目录(/tmp 不可写时自动退到 /dev/shm),写入每分钟执行一次的计划任务,runner 通过进程探测保证双载荷至少一个存活,再叠加秒级轮询看门狗双层保活。计划任务路径为 Alpine/BusyBox 风格,说明目标或跳板中存在 Alpine 容器,攻击者针对不同系统环境做了适配。

图6 met.bin 的文件类型识别结果

图7 met.bin 内嵌的 Meterpreter 回连配置

另外目录中还有一个 194 字节的 sh.bin,为手写的 x86-64 反向 shell,功能仅为回连 91.224.92.16:18142 并获取交互式 shell,作为最小后门备用。

文件名 功能 文件大小bytes MD5
Tun.java 反向TCP端口转发器 1609 15c05027d2e773b834b5c2a2a7b7254a
TunKeep.java 隧道看门狗(800ms重连) 227 e9dbf05381ae2cfd53c02f2254afbd9a
met.bin Linux x64 Meterpreter(回连18140) 1138480 652fca1b1dc6f1fdcfaf5c0fd2a67977
met.jar Java版Meterpreter完整载荷(回连18141) 5263 9893b75467166ac962c12b26e5e96a4f
sh.bin 194字节ELF反向shell(回连18142) 194 d549956808eaa8c3d6c30e9417eff8d9
i5180p.sh 持久化落地方案(cron+看门狗) 1256 30fd447e872ac70afbfa6e1810f65b9f

web.xml 修改与回滚机制

落盘植入均伴随对应用配置的修改:向 web.xml 注入 servlet 映射,把命令入口藏在 Hessian 业务路径下。后期版本形成完整的\"备份—校验—回滚\"流程:修改前自动备份,修改后校验 XML 合法性,正常业务端点一旦异常即恢复备份。攻击者刻意维持业务外观正常的意图非常明确——避免业务异常引起运维人员注意。

图8 web.xml 修改后的校验与回滚逻辑(i5017d.sh 第 33-77 行)

图9 攻击者准备的 servlet 映射片段(hess\_map.xml)

数据窃取:目的不止于数据

接口侦察:反编译受害机自身的订单组件,枚举 DTO getter,筛选条件为 Card/Cvv/Cvn/Pan/Account/Bank/Payer 等字段族——先确认数据模型里有什么,再决定偷什么。随后利用 Dubbo telnet invoke 未授权调用个人订单查询接口:时间窗覆盖 2019 年初至 2026 年 9 月末的全部历史,固定对 3 个重点商户客户号执行,并细分\"近 7 天 + 开户日当周\"窗口持续追踪新交易。查询结果落盘后立即结构化提取订单号、付款人银行账号、户名、卡号、CVV、PAN 等敏感要素,并以 awk 过滤堆栈行、只保留数据行,说明攻击者是按真实接口的返回格式来做数据处理的。

文件名 功能 文件大小bytes MD5
a.sh wave A:全历史订单批量查询+字段收割 1965 07ac95e285deef1d8a6f92923267dc74
b.sh wave B:分时间窗持续追踪 1934 5fdab738c7d43fcc8683442ec325c439
p2.sh DTO反汇编侦察+日志痕迹核对 1742 e98b77307b2dd3d649924e62437641ed
p3.sh 商户私钥复制+接口参数试探 1591 a3fad63946d4977b4aedd323d6a7b29e
p4.sh 单发探测版查询 745 2e923803ce43146d8a0bb920a970864e

其中最需要关注的是商户私钥窃取:脚本包含将商户 RSA 私钥复制到临时目录的指令(同时复制平台公钥并校验文件格式完整性)。私钥外泄意味着可离线伪造该商户交易签名。此外,攻击者还在受害机访问日志与监控日志中检索 8 个客户号/单号,确认查询行为与数据落点。

图10 订单结果的敏感字段提取逻辑(a.sh 第 48-51 行)

图11 商户私钥复制指令(p3.sh 第 22-26 行,路径已打码)

卡号/CVV/PAN 与商户私钥同时出现在目标清单中,这一点需要重点关注。我们倾向于认为,攻击者的目标可能不止于窃取数据,还指向以真实商户身份发起的伪冒交易与资金变现。工具链呈现的目标选择、字段筛选与时间窗设计,已经构成明确的窃取意图与行为能力证据。

作业特征与团队画像

综合全部部署脚本与源码(共 42 个 shell 脚本),我们发现其AI辅助编码痕迹明显,作业特征如下:

  • 波次化迭代:脚本编号 i4438→i5180 呈完整演进链(独立Context→配置修改→JSPX落盘→JVM注入→远控持久化),每版针对上一版失败修正;

  • 失败经验制度化:注释中以 fact# 编号记录教训(如某项配置残留导致正常业务端点失效、某文本处理工具损坏配置文件后被明令禁用),把失败教训写入了标准作业流程;

  • 业务存活优先:以正常业务端点为探针,异常即回滚备份——把\"不被发现\"放在\"功能达成\"同等地位;

  • 防并发与幂等:目录锁、旧进程清理、映射已存在即跳过;

  • 环境自适应:多 JDK 路径回退、多解释器探测、Alpine 与常规 Linux 计划任务路径差异处理。

文本取证层面存在多组 AI 辅助编码的指示性信号:注释中出现中文圈码序号(①)与英文\"约束清单式\"注释(如 \"NO awk, NO ROOT.xml, NEVER touch web.xml\"),在全部部署脚本中,错误处理、路径回退、语义化状态码等防御性写法高度统一——这更像是把任务需求与约束提交给代码生成模型后的产出。我们可以判断其模式为\"人工主导、AI 辅助\"。

图12 脚本注释中的失败经验记录(i4585d.sh)

图13 约束清单式注释(i5017m.sh)

总结

本次攻击综合了开放目录工具包反查所得的多项手法:针对目标环境定制的冰蝎与蚁剑双套内存马、JVM 无文件注入、Meterpreter 持久化,以及利用 Dubbo 未授权调用批量查询订单数据并尝试窃取商户私钥,各环节均以不影响业务为前提,整体呈现前期情报充分、目标明确的定向作业特征。

了解更多

深信服深瞻情报实验室持续紧跟国内外高级威胁事件,从中筛选出能给用户带来威胁的事件,第一时间推送解决方案,持续提供可感知的安全感。在这场永不停歇的攻防战争中,深信服深瞻情报实验室掌握一手威胁情报,坚持“千里之外,洞悉风险”,与各大网络安全厂商一同维护网络安全,构建平衡、和谐的网络生态系统。

IOC

类型 值
C2 地址 91.224.92.16(端口 18128/18129/18130/18132/18140/18141/18142)
冰蝎 AES 密钥 013b76b9a98a7648
冰蝎 UA / session Behinder;session 属性 o / u / response
蚁剑特征 yv66vg;密码门参数 k=i4127;命令参数 cmd=
Meterpreter UUID 2WVdxzs3Mq1L+035IUKwMA==
SSH 公钥 AAAAC3NzaC1lZDI1NTE5AAAAIOkq3TxM0sI8KgxfeSoIcQkxuUeQA1Z7h5D+3aiwgbWs(i4438rev)
植入 URI /i4127b、/i4127b.jsp、/i4127b.jspx、/i5180ms、/i4127bh、/hessian/i4127.jsp、/hessian/cmd
持久化路径 /tmp/.i5180/{m,j,s,r}、/dev/shm/.i5180/
工具痕迹 /tmp/Tun.class、/tmp/a4127/、/tmp/a5180\*/、/tmp/i5123a.out、/tmp/yx\_priv.pem、/tmp/asv3.hit
配置备份特征 web.xml.bak.i444x/.i4556/.i4562/.i4583/.i4585/.i5017
计划任务 \ \ \ \ \* /bin/sh /tmp/.i5180/r(/etc/crontabs/root)
关键文件哈希 met.bin: 652fca1b1dc6f1fdcfaf5c0fd2a67977;met.jar: 9893b75467166ac962c12b26e5e96a4f;sh.bin: d549956808eaa8c3d6c30e9417eff8d9
补充载荷 sh.bin 为 194 字节 ELF 反向 shell,回连 18142,由持久化脚本下载备用

    评论:0   参与:  0