首页 > 其他分享 >记一次“XMR门罗币挖矿木马病毒”处置

记一次“XMR门罗币挖矿木马病毒”处置

时间:2024-04-18 11:34:31浏览次数:22  
标签:maxCpu useScheduler xmrig fi 木马病毒 XMR 挖矿

一、背景概述

故事的起因于26号下午做渗透测试时,登录跳板机发现CPU进程拉满到200%,qiao哥看了一眼直接说是XMR挖矿,这句话勾引起我的兴趣,由于应急是我的薄弱项也没有时间深入学习,所以有本篇应急分析文章。
市面上存在很多关于XMR门罗币挖矿的教程,这些教程可能会被攻击者恶意利用来进行盈利。他们通过前期使用非法手段获取服务器的控制权限,并在服务器上部署XMR门罗币挖矿木马脚本。一旦攻击者成功部署了挖矿木马脚本,会通过设置SSH公钥后门登录和计划任务启动项等方式,维持对服务器的控制权限,并利用自启动脚本进行挖矿持续从中获利。
下面是应急排查分析。
首先留图一张,简单了解一下XMR门罗币挖矿木马
图片.png

二、初步排查

1.如图下可以看到,CPU进程直线拉满,CPU已经占满200%,用top命令查看,CPU状态显示xmrig,这里最明显的特征就是xmrig命令,这也是qiao哥为什么一眼看出是XMR挖矿木马的原因!!!,在此次排查中一系列常规排查思路不一一展现,只突出重点步骤。
图片.png 2.使用ps -aux | grep xmrig 查看进程运行命令,可以看到xmrig的执行命令
图片.png

 ./xmrig --coin=monero -o pool.supportxmr.com:3333 -u 89zqe5wQCDsML1xyYx7GxqDqR3DAizK6cXRsd7rXLLmyRCHaTFe6cDJA

xmrig命令如下
-o 矿池地址:端口号 地址(pool.supportxmr.com:3333)
-u 钱包地址 攻击者的获利钱包地址 (89zqe5wQCDsML1xyYx7GxqDqR3DAizK6cXRsd7rXLLmyRCHaTFe6cDJA)
3.使用 ls -l /proc/643961/exe 命令,根据进程PID查看可执行程序
图片.png 4.使用lsof -p 643961根据PID查看进程所占用的文件
图片.png 5.我们先尝试执行杀掉进程 kill -9 643961,发现进程在掉线后,依旧存活,疑似存在定时计划任务。
图片.png 6.排查定时计划任务并未发现什么,最后经过一些列排查发现docker容器内排查出问题,发现多了个容器
pmietlicki/monero-miner容器是一个用于挖掘Monero(一种加密货币)的Docker容器,其中包含了用于挖矿Monero的软件和配置文件。通过运行该容器,可以快速启动Monero挖矿进程进行挖矿。
图片.png 7.使用docker stop 停止该容器,后再使用top命令发现,cpu速率已回归正常
图片.png图片.png 在使用docker命令查找到镜像删除即可,由于我通过命令“find / -name xmrig 查找删除xmrig部分容器样本,会出现一下报错,并不影响后续,挖矿应急初步排查阶段到此为止
图片.png

三、样本分析

通过命令“find / -name xmrig “全局搜索这个恶意样本存储在哪个目录,最后在目录下发现了它
图片.png如下图所示,浏览整个目录,发现都是恶意样本相关的文件,于是将其打包下载到本地进行分析
图片.png对该目录的子目录和文件进行分析,得到以下信息:

#!/bin/bash
algoMode=$1
poolUrl=$2
poolUser=$3
poolPW=$4
maxCpu=$5
useScheduler=$6 # true / false
startTime=$7 #e.g. 1530 or 1100 for time
stopTime=$8 #e.g. 1530 or 1100 for time
days=$9 #e.g. "Tuesday,Friday"
options=${10}
miner="./xmrig"
if [ "$maxCpu" != "100" ] && [ "$maxCpu" != "50" ] && [ "$maxCpu" != "25" ] && [ "$maxCpu" != "12.5" ] && [ "$maxCpu" != "6.25" ] ; then
    echo "maxCpu is not valid"; exit;
fi;
if [ "$useScheduler" != "true" ] && [ "$useScheduler" != "false" ]; then
    echo "useScheduler is not valid, use true or false"; exit;
fi;
if ! [[ ${poolUrl} =~ .+\.[a-z]+\:[0-9]+ ]]; then
    echo "The URL Format seams not right."; exit;
fi;
if [ "$useScheduler" == "true" ]; then
        if [ ${#startTime} -ne 4 ]; then
                echo "startTime is not in a valid format"; exit;
        fi;
        if [[ ${startTime} =~ [A-Za-z_\;\:\.]+ ]]; then
            echo "startTime can only contain digits"; exit;
        fi;
        if [ ${#stopTime} -ne 4 ]; then
                echo "stopTime is not in a valid fromat"; exit;
        fi;
        if [[ ${stopTime} =~ [A-Za-z_\;\:\.]+ ]]; then
            echo "stoptimeTime can only contain digits"; exit;
        fi;
        IFS=',' read -r -a dayArray <<< "$days"
        for day in "${dayArray[@]}"
    do
        if [ "${day,,}" != "monday" ] && [ "${day,,}" != "tuesday" ] && [ "${day,,}" != "wednesday" ] && [ "${day,,}" != "thursday" ] && [ "${day,,}" != "friday" ] && [ "${day,,}" != "saturday" ]  && [ "${day,,}" != "sunday" ]; then
                echo "Days are not formated correctley."; exit;
        fi;
    done
        # wait for starttime
        echo "================================================================";
        echo "Cryptonote mining container based on xmrig";
        echo "with task scheduling mod by MasterRoshi";
        echo  "";
        echo "Scheduler information";
        echo "At: $startTime - $stopTime GMT+0";
        echo "On: $days";
        echo "================================================================";
        echo "Waiting for the next work schedule....";
        while { printf -v current_day '%(%A)T' -1 && [[ ${days,,} != *"${current_day,,}"* ]]; } || { printf -v current_time '%(%H%M)T' -1 && [[ ${current_time} != ${startTime} ]]; }; do
                sleep 10;
        done;
        echo "Time to work, miner is signing-on!";
        # run xmrig as background
        $miner --coin="$algoMode" -o "$poolUrl" -u "$poolUser" -p "$poolPW" --max-cpu-usage="$maxCpu" "${options:---donate-level=3 -k}" &
        while printf -v current_time '%(%H%M)T' -1 && [[ $current_time != $stopTime ]]; do
                sleep 10;
        done;
        # end the xmring when the stoptime is reached
        pkill xmrig;
        echo "Miner signing-off and preparing for  the next work schedule!";
        "$0" "$algoMode" "$poolUrl" "$poolUser" "$poolPW" "$maxCpu" "$useScheduler" "$startTime" "$stopTime" "$days" "${options:---donate-level=3 -k}";
        exit;
else
         $miner --coin="$algoMode" -o "$poolUrl" -u "$poolUser" -p "$poolPW" --max-cpu-usage="$maxCpu" "${options:---donate-level=3 -k}";
fi;

以上经过分析得知,这个是基于xmrig的加密货币挖矿脚本,可以在Linux系统上运行。以下是它的一些参数:

  • algoMode:要挖掘的加密货币算法。
  • poolUrl:矿池的URL地址。
  • poolUser:矿工的用户名。
  • poolPW:矿工的密码。
  • maxCpu:矿工使用的最大CPU百分比。
  • useScheduler:是否启用任务调度模式(true/false)。
  • startTime:如果启用了任务调度模式,则开始时间(24小时制)。
  • stopTime:如果启用了任务调度模式,则结束时间(24小时制)。
  • days:如果启用了任务调度模式,则应该在哪些日期运行(星期几)。
  • options:其他选项。

如果useScheduler被设置为true,脚本将等到指定的开始时间和日期然后启动xmrig并在指定的停止时间停止。
如果useScheduler被设置为false,脚本将直接启动xmrig并运行

四、处置与防御建议

XMR挖矿木马是指恶意软件,它利用受感染的计算机的计算资源来挖掘Monero(XMR)加密货币,而不经过用户的明确许可。以下是修复和防御XMR挖矿木马的一些常见手段:

  1. 及时更新和升级系统:保持操作系统、应用程序和安全补丁的最新版本,以减少已知漏洞的风险。
  2. 安装可信的安全软件:使用强大的杀毒软件、反恶意软件和防火墙等安全工具,定期进行全面扫描和实时保护。
  3. 谨慎下载和安装软件:只从官方和可信的来源下载软件,并在安装过程中仔细阅读和审查相关权限和选项。
  4. 强化远程访问安全:关闭或限制不必要的远程访问服务,如远程桌面协议(RDP),并使用强密码和多因素身份验证来保护远程访问。
  5. 监控系统活动:监控系统日志、网络流量和进程活动,及时发现异常行为和不寻常的计算资源使用情况。
  6. 防止未经授权的挖矿脚本运行:使用浏览器插件或脚本阻止工具,如NoScript、AdBlock Plus等,防止恶意网站在浏览器中运行挖矿脚本。
  7. 加强网络安全:使用强密码、定期更改密码,启用网络防火墙,限制对敏感端口和服务的访问。
  8. 定期备份数据:定期备份重要数据,并将其存储在离线和安全的位置,以防止数据丢失或被勒索软件加密。
  9. 教育员工和用户:提供安全意识培训,教育员工和用户如何识别和避免恶意软件的风险。
  10. 及时响应和隔离感染:如果发现系统受到XMR挖矿木马感染,立即断开与网络的连接,并寻求专业的技术支持来清除和修复受感染的系统。

请注意,这些措施可以提高系统的安全性,但没有绝对的安全保障。因此,持续的安全意识和定期的安全审查是至关重要的,以确保系统和数据的安全。

标签:maxCpu,useScheduler,xmrig,fi,木马病毒,XMR,挖矿
From: https://www.cnblogs.com/Yichensec/p/18142010/YJXY001

相关文章

  • linux挖矿病毒排查-实操
    一、优先排查netstat-ntpl//恶意连接排查cat/etc/passwd//异常账户排查cat/etc/shadowcat/etc/rc.d/rc.local/init.d等//开机启动项排查chkconfig--list//同等上面,为了全面可以使用此命令复查下crontab-l//计划任务排查cat/etc/hosts//hostst文件排查ca......
  • 应急响应流程与挖矿病毒排查流程
    1.应急响应的流程1.1.为什么会有应急响应?在工作过程中,会遇到突发的情况,比如:DOS攻击,渗透攻击,病毒感染,需要立即将这些问题清除掉,恢复正常的生产秩序。这个过程就是应急响应。1.2.流程收集信息:收集客户的信息,以及遭遇情况的表现症状。判断类型:判断是否为安全事件,是哪......
  • kswapd0挖矿病毒的发现与清除 导致CPU过高问题
    kswapd0挖矿病毒的发现与清除BobAnkh​清华大学/网文爱好者/游戏爱好者/猫猫爱好者 26人赞同了该文章写下这篇博客的原因是实验室的服务器在安装docker之后不幸感染上了挖矿病毒,便将发现与清除的方法记录于此,如有错漏,恳请指正本文同样发于本人的bl......
  • (挖矿病毒清除)kdevtmpfsi 处理
    Linux Centos7环境下的一台服务器CPU直接被打满,上服务器top命令看到了一个未知的kdevtmpfsi疯狂占用中,情况如下图:同时阿里云检测平台,也同步提示对应容器出现的问题 问题原因:postgresRCE导致h2Miner蠕虫病毒,其利用Redis未授权或弱口令作为入口,使用主从同步的方......
  • 清理挖矿程序的脚本
    systemctldisablemyservice.servicesystemctlstopmyservice.servicesystemctlstatusmyservice.servicerm-fr/usr/lib/systemd/system/myservice.servicerm-fr/root/.cfgrm-fr/usr/bin/mslogrm-fr/usr/bin/playersed-i/disown/d/var/spool/cron/root......
  • 记一次挖矿木马样本分析
    有一台vps被弱口令上马了翻来翻去找到个二进制文件如下前言搜main函数关键字可以判断是用shc加密shell脚本生成的二进制文件在0000000000400F7E位置函数,找到了加载shell命令的位置shc部分源码/*shc.c*/​/***Thissoftwarecontainsanadhocversionofthe......
  • 区块链挖矿实验
    一、实验目的了解区块链挖矿原理及过程。二、实验器材pycharm+python3.11三、实验内容实验要求:在前面已经配置好的实验环境和实验三编写的单向散列函数实现程序的基础给程序添加计时功能,进行下列实验:(1)找一个文件M,将文件中的汉字和标点符号用区位码代替生成一个数字字符串,如果......
  • 定期监控是否存在之前的挖矿程序,并完成清理
    (1)编写一个脚本vi clean_host.sh  #!/bin/bashpid_cpu=`psaux|grep-vPID|sort-nr-k3|head-n1|awk'{print$2,$3,$11}'`pid=`echo$pid_cpu|awk'{print$1}'`cpu=`echo$pid_cpu|awk'{print$2}'`cmd=`echo$pid_cpu|awk'......
  • 阿里云服务器告警提示挖矿,怎么办
    前言最近我们团队为了研究数据湖相关的技术,在阿里云服务中购买了云服务器,但是突然被告警提示被挖矿,而且要在一定期限内解决挖矿问题,否则就会被关停服务。本篇记录了我们处理挖矿告警的过程,仅供参考。一、服务器为什么会被告警挖矿?云服务器中被恶意安装了脚本,然后脚本运行占用......
  • 记一次挖矿病毒的溯源
    ps:因为项目保密的原因部分的截图是自己在本地的环境复现。1.起因客户打电话过来说,公司web服务异常卡顿。起初以为是web服务缓存过多导致,重启几次无果后觉得可能是受到了攻击。起初以为是ddos攻击,然后去查看web服务器管理面板时发现网络链接很少,但是cpu占用高达99%,于是便怀疑是......