【高级威胁追踪(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,由持久化脚本下载备用 |
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论