與黑客的鬥智鬥勇-一次伺服器被攻擊的實錄

程式碼與野獸發表於2020-04-03

東窗事發

最近在忙著做一個大專案,幾乎沒有什麼空閒時間用來寫文章了。

這個大專案的測試環境部署在一臺從騰訊雲購買的伺服器上。

伺服器是朋友買的,繫結的是朋友的微訊號。

前兩天的一個凌晨,朋友突然收到一條來自騰訊雲的安全告警通知。

安全警告通知

第二天我去控制檯看了下詳情,密碼被人暴力破解了!

密碼破解

第一件事情,我先把密碼改掉了。

之前隨便設了個密碼,只有 8 位,可能太過於簡單,只被試了 1400 多次就被攻破。

這裡我得到一個教訓,有公網 IP 的伺服器一定要設定很複雜的密碼。

騰訊雲最多可以設定 30 位密碼,於是這次我就設定了 30 位的密碼。

改完之後我又開始檢查伺服器是否被注入木馬、檢查資料庫是否被勒索、檢視有沒有近期新檔案、檢視有沒有新開啟的埠、新增加的使用者等等。

經過一番檢查,沒發現什麼問題(實際上這些記錄都被黑客清掉了)。於是我重啟了伺服器,然後沒有繼續理會這件事。但心裡總感覺應該沒有這麼簡單。

鬥智鬥勇

第三天早上,在我部署應用時發現 CPU 佔用率已經 100%了!

cpu佔用率 100%

於是我檢視了下 CPU 被佔用情況。

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
複製程式碼

日誌如下:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     28338  182  0.0 2437008 2732 ?        Ssl  15:05 147:05 /usr/local/bin/wordpress
root     25257 14.5  0.9 764436 36020 ?        Ssl  16:25   0:00 npm
root     23779  0.4  0.3 711348 14752 ?        Sl   14:59   0:23 /usr/bin/ophvyn
mongod    1405  0.1  1.2 989616 47732 ?        Sl   Mar30   6:28 /usr/bin/mongod -f /etc/mongod.conf
root         9  0.0  0.0      0     0 ?        R    Mar30   0:09 [rcu_sched]
root         8  0.0  0.0      0     0 ?        S    Mar30   0:00 [rcu_bh]
root       789  0.0  0.0   4388   556 ?        Ss   Mar30   0:00 /usr/sbin/acpid
root       775  0.0  0.0  26380  1740 ?        Ss   Mar30   0:00 /usr/lib/systemd/systemd-logind
root       748  0.0  0.0  55528  1100 ?        S<sl Mar30   0:05 /sbin/auditd
root         7  0.0  0.0      0     0 ?        S    Mar30   0:00 [migration/0]
複製程式碼

一個名為 wordpress 的程式已經佔用了 182 的 CPU。

但我並沒有在伺服器上安裝過 wordpress,看來這個就是黑客植入的木馬了。

初步預測,我認為這是一個挖礦程式。

接著,我開始處理這個挖礦木馬。

首先殺掉這個執行緒。

kill -9 28338
複製程式碼

然後刪除 wordpress 檔案。

CPU 佔用率立馬降下來了,但我覺得事情並沒結束,人家既然有本事搞我的伺服器,不可能就只有這麼兩下子。

於是我開始耐心的等待是否有其他變化。

果不其然,在幾分鐘後,伺服器的 CPU 佔用率再次飄升 100%。

當我再次檢視佔用 CPU 最高的程式時,又看到了那個 wordpress。我估計它是有一個守護程式或者定時任務。

我開始找守護程式。

ps -eo ppid,pid,sid,stat,tty,comm  | awk '{ if ($2 == $3 && $5 == "?") {print $0}; }'
複製程式碼

日誌如下:

    0     1     1 Ss   ?        systemd
    1   454   454 Ss   ?        systemd-journal
    1   481   481 Ss   ?        systemd-udevd
    1   484   484 Ss   ?        lvmetad
    1   748   748 S<sl ?        auditd
    1   772   772 Ssl  ?        polkitd
    1   775   775 Ss   ?        systemd-logind
    1   776   776 Ss   ?        dbus-daemon
    1   778   778 Ss   ?        ntpd
    1   783   783 Ss   ?        lsmd
    1   789   789 Ss   ?        acpid
    1  1054  1054 Ss   ?        dhclient
    1  1126  1126 Ssl  ?        tuned
    1  1135  1135 Ss   ?        vsftpd
    1  1249  1249 Ssl  ?        rsyslogd
    1  1255  1255 Ss   ?        atd
    1  1258  1258 Ss   ?        crond
    1  1555  1555 Ss   ?        sshd
 1555  1956  1956 Ss   ?        sshd
 1956  2009  2009 Ss   ?        bash
    1  2380  2380 Ss   ?        nginx
    1  2860  2860 Ssl  ?        node
    1 28338 28338 Ssl  ?        wordpress
 2860 30275 30275 Ssl  ?        node
複製程式碼

果然有一個 wordpress 的守護程式,而且奇怪的是,竟然有兩個 node 程式。我的伺服器上明明只執行了一個 node 程式。從 PID 來看,後面這個 30275 的 node 程式是在 wordpress 之後啟動的。

看來這個 node 和 wordpress 必然存在某種關係。

於是我把這三個程式都殺掉了,同時刪除了 wordpress 檔案。

在觀察了半小時後,伺服器好像恢復正常了。

當天我睡了個好覺。

死灰復燃

今天早上,當我再次開啟伺服器時,發現 CPU 又被佔用 100%了!

黑客的手段果然足夠高明。

這次我重複昨天的步驟,然後觀察伺服器的變化。

過了一會,我發現 IO 有波動,然後 CPU 再次飄升 100%。

然後檢視埠占用情況。

netstat -nlpt
複製程式碼

日誌如下:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:43575           0.0.0.0:*               LISTEN      23779/ophvyn
tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      1405/mongod
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2380/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1555/sshd
tcp6       0      0 :::21                   :::*                    LISTEN      1135/vsftpd
複製程式碼

當我看到那個名為 ophvyn 、PID 為 23779 的 43575 的埠,就像是看到了黎明的曙光。

看來它的作用就是從遠端伺服器上下載木馬。

在這裡又得到一個教訓,配置安全組一定要慎重,一定不要全部開放。

由於這個是測試伺服器,當時為了除錯方便,就開放了所有埠。

安全組

接下來要殺掉 ophvyn。

首先檢視 ophvyn 的詳細資訊。

ps 23779
複製程式碼

找到了它的所在位置。

PID TTY      STAT   TIME COMMAND
23779 ?        Sl     0:31 /usr/bin/ophvyn
複製程式碼

我把相關的所有程式全部關閉,並把所有相關檔案全部刪除。

等了大半天,沒有再出現什麼么蛾子。

世界好像清淨了。

從頭再來

一切都恢復了往日的平靜,就好像什麼都沒發生過。

在第三天的下午,我決定把伺服器上的資料備份下來,重新安裝系統,和黑客徹底說再見。

在接到警告的第一天,我就可以備份資料,重灌系統的。之所以沒那麼做,就是想看看黑客到底會對我的伺服器做些什麼。現在看也看了,折騰也折騰了,最後仍然選擇重灌伺服器。

相關文章