Loading... # XMRig 挖矿病毒入侵排查与分析技术复盘 # 一、事件概述 ## 1. 事件背景 某云主机触发外链恶意域名告警,该域名在多个威胁情报平台中标记为未知,仅在腾讯威胁情报平台中被识别。由于各家威胁情报平台的时效性差异,需要进行深入排查。 ## 2. 影响范围 ### A. 影响系统 - 云主机中的 Docker 容器 - PostgreSQL 数据库服务 ### B. 入侵途径 PostgreSQL 数据库存在弱口令,攻击者通过数据库连接获取系统权限 ## 3. 严重程度 中等风险:系统资源被恶意占用,但未发现数据窃取或逃逸到宿主机 # 二、攻击链分析 ## 1. 攻击流程 ```mermaid graph TD subgraph 攻击链 A[弱口令扫描] --> B[psql 数据库入侵] B --> C[创建恶意函数] C --> D[执行系统命令] D --> E[下载挖矿脚本] E --> F[启动挖矿进程] end subgraph 挖矿架构 F --> G[bot 主程序] G --> H[dockerd 守护进程] H --> I[docker-daemon 挖矿进程] I --> J[矿池连接] end subgraph 恶意行为 K[清除竞争进程] L[删除痕迹文件] M[持久化运行] end F --> K F --> L F --> M ```  ## 2. 详细攻击过程 ### A. 初始入侵 攻击者通过弱口令扫描发现存在弱口令的 PostgreSQL 数据库服务 ### B. 权限提升 在 PostgreSQL 中创建恶意系统函数,通过数据库函数执行系统命令 ### C. 恶意载荷执行 Base64 编码的命令经过解码后执行以下操作: - 自定义 curl 函数用于网络通信 - 删除 /tmp 目录中的 docker-daemon 文件 - 杀死同类挖矿进程以独占资源 - 从攻击者服务器下载恶意文件并执行 ### D. 挖矿进程部署 下载的恶意程序会: - 将进程名伪装为 dockerd(Docker 守护进程) - 生成 docker-daemon 实际挖矿程序 - 建立守护进程关系,确保持续运行 ```mermaid graph LR subgraph 数据库层 A[PostgreSQL 弱口令] end subgraph 入侵层 B[创建恶意函数] C[执行 Base64 命令] end subgraph 下载层 D[HTTP 下载恶意文件] E[bot 可执行文件] end subgraph 执行层 F[清除竞争进程] G[启动 dockerd 守护进程] H[运行 docker-daemon 挖矿] end subgraph C2 层 I[矿池服务器] J[195.24.237.73] K[dockerdupdate.anondns.net] end A --> B B --> C C --> D D --> E E --> F E --> G G --> H H --> I I --> J I --> K ```  # 三、恶意样本分析 ## 1. 样本基本信息 ### A. 主程序 bot - 文件名:bot - 打包工具:UPX 5.0.2 - 编程语言:C - SHA256:f5a7fd53488638cd3c36f39bdb6b9b35dc6df14ad837dd30eb87b95262feb2f5 ### B. 解压后 bot_upxd - SHA256:85fb4996fd46b91bda84aae63acad45d0d5784782d09fbf5141aeb426a2ca5c6 ### C. 挖矿程序 docker-daemon - SHA256:354786bac66720ed2a5e471673a381ad127bfa0503b3ec8146df2f49dd8a24ef ## 2. 样本行为分析 ### A. 进程伪装 - bot 程序执行后将自身重命名为 dockerd - 伪装成 Docker 守护进程以混淆视听 ### B. 守护进程机制 - dockerd 进程作为守护进程监控 docker-daemon - 当 docker-daemon 被终止时,dockerd 会自动重启它 - 清理时应先终止 dockerd 进程 ### C. 挖矿配置 通过逆向分析和字符串提取,发现以下配置: - 算法:门罗币(XMRig) - 矿池1:dockerdupdate.anondns.net:44999 - 矿池2:dockerdupdate.anondns.net:4433 ### D. 功能模块 IDA Pro 分析显示程序包含以下功能: - 帮助信息输出(-h 参数) - 版本信息显示(-V 参数) - 硬件拓扑导出(--export-topology 参数) - 矿池连接配置(-o、-a、-u、-p 参数) # 四、排查方法 ## 1. 威胁情报查询 使用多个威胁情报平台交叉验证: - 腾讯威胁情报平台:https://tix.qq.com/ - 微步在线:https://x.threatbook.com/ - 360 威胁情报中心:https://ti.360.cn/ - 奇安信威胁情报:https://ti.qianxin.com/ - 绿盟威胁情报:https://poma.nsfocus.com/ ## 2. 系统排查步骤 ### A. 进程排查 ```bash # 查找可疑进程 ps aux | grep -E "dockerd|docker-daemon" # 检查进程文件路径 ls -l /proc/<PID>/exe ``` ### B. 网络连接排查 ```bash # 查看活跃网络连接 netstat -antp | grep ESTABLISHED # 检查可疑域名连接 ss -antp | grep -E "195.24.237.73|anondns" ``` ### C. 文件系统排查 ```bash # 检查 /tmp 目录 ls -la /tmp/ # 查找最近修改的文件 find /tmp -mtime -1 -type f ``` ### D. 数据库审计 ```bash # 查看 PostgreSQL 日志 tail -f /var/log/postgresql/postgresql-*.log # 检查可疑函数创建记录 grep "CREATE.*FUNCTION" /var/log/postgresql/postgresql-*.log ``` ## 3. 恶意代码分析 ### A. UPX 解包 ```bash # 下载 UPX 工具 wget https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-amd64_linux.tar.xz # 解包恶意文件 ./upx -d bot -o bot_upxd ``` ### B. 字符串提取 ```bash # 提取矿池地址信息 strings docker-daemon | grep -A 30 -B 60 -i "dockerdupdate\|anondns\|44999\|4433" ``` ### C. 静态分析 使用 IDA Pro 或 Ghidra 进行反汇编分析,重点关注: - 程序入口点 - 字符串引用 - 网络相关函数调用 - 进程创建和操作 # 五、清理措施 ## 1. 应急响应步骤 ### A. 终止恶意进程 ```bash # 先终止守护进程 kill -9 $(pgrep dockerd) # 再终止挖矿进程 kill -9 $(pgrep docker-daemon) # 清理相关进程 kill -9 $(pgrep bot) ``` ### B. 清理恶意文件 ```bash # 删除恶意文件 rm -f /tmp/bot rm -f /tmp/docker-daemon # 检查并删除其他可疑文件 find /tmp -name "*bot*" -delete find /tmp -name "*docker*" -delete ``` ### C. 数据库加固 ```bash # 修改数据库密码 psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'strong_password';" # 删除恶意函数 psql -U postgres -c "DROP FUNCTION IF EXISTS <malicious_function_name>;" # 启用日志审计 ALTER SYSTEM SET log_statement = 'all'; ``` ## 2. 安全加固建议 ### A. 数据库安全 - 使用强密码策略,密码长度不少于 12 位 - 定期更换数据库密码 - 限制数据库远程访问,使用防火墙规则 - 启用 SSL/TLS 加密连接 ### B. 容器安全 - 使用非 root 用户运行容器 - 限制容器资源配额 - 定期更新镜像和基础系统 - 使用安全扫描工具检查镜像 ### C. 系统监控 - 部署主机安全监控软件 - 配置异常进程告警 - 启用系统日志审计 - 建立定期安全检查机制 # 六、IOC 指标 ## 1. 网络指标 ### A. IP 地址 - 195.24.237.73 - 194.41.112.90 ### B. 域名 - dockerdupdate.anondns.net ### C. 端口 - 44999 - 4433 ## 2. 文件哈希 ### A. 主程序 - SHA256:f5a7fd53488638cd3c36f39bdb6b9b35dc6df14ad837dd30eb87b95262feb2f5 ### B. 解包程序 - SHA256:85fb4996fd46b91bda84aae63acad45d0d5784782d09fbf5141aeb426a2ca5c6 ### C. 挖矿程序 - SHA256:354786bac66720ed2a5e471673a381ad127bfa0503b3ec8146df2f49dd8a24ef ## 3. 进程特征 ### A. 进程名 - dockerd(伪装的 Docker 守护进程) - docker-daemon(实际挖矿进程) - bot(初始下载文件名) ### B. 文件路径 - /tmp/bot - /tmp/docker-daemon # 七、经验总结 ## 1. 入侵分析 ### A. 攻击路径 攻击者利用 PostgreSQL 数据库弱口令作为入侵入口,通过创建恶意函数执行系统命令,体现了数据库作为应用核心组件的重要性。 ### B. 持久化机制 恶意程序采用守护进程机制实现持久化,dockerd 进程监控并自动重启 docker-daemon,增加了清理难度。 ### C. 资源独占 恶意程序会主动清除其他挖矿进程,以确保自身能够独占系统资源进行挖矿。 ## 2. 检测建议 ### A. 多源威胁情报验证 单个威胁情报平台可能存在时效性问题,建议使用多个平台交叉验证,提高检测准确率。 ### B. 进程行为监控 重点关注进程名称与实际功能不匹配的情况,如伪装成系统守护进程的可疑程序。 ### C. 数据库审计 定期审计数据库日志,检查异常函数创建和命令执行记录。 ## 3. 防御策略 ### A. 最小权限原则 数据库不应具有执行系统命令的权限,严格限制数据库用户的系统访问能力。 ### B. 网络隔离 容器间应实施网络隔离策略,防止单个容器被入侵后影响其他容器或宿主机。 ### C. 及时更新 定期更新数据库、容器运行时和操作系统,修补已知漏洞。 *** ## 参考资料 1. [应急响应 | 云主机中XMRig挖矿病毒的排查与分析](https://mp.weixin.qq.com/s/p9ssn9MiAOL8qm3bEIuOdw) 最后修改:2026 年 01 月 15 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏