系統被黑不要慌,十個步驟來排查
問題背景
安全人員在日常工作中通常要手工排查 Linux 伺服器的安全性,對於中馬的伺服器,我將其歸納為4個階段:
- 木馬如何傳播到伺服器上 (Eg:暴力破解系統用戶);
- 木馬的目的是什麼(Eg:挖礦、DDOS 攻擊);
- 木馬怎樣清除痕迹(Eg:刪除日誌和歷史命令);
- 木馬如何保持連接(Eg:通過啟動項和定時任務)。
本文將從檢查用戶、日誌、文件等十個步驟,通過相關具體命令來講解如何手工排查 Linux 伺服器的安全性。
Linux 常用命令
命令
注釋
du -sh *
查看當前文件夾大小
head -n 100 1.log
查看一個大文件的前100行
grep -ri "nameseve" --include="*.php" /
查看文件字元串
free -m
查看系統內存大小
cp 原始文件 目的文件;
cp -r /root/* 目的目錄;
複製文件及文件夾
tar -cvf a.tar 原始文件;
壓縮文件
tar -xvf a.tar;
tar -xvfz a.tar.gz;
unrar e a.rar;
unzip a.zip
解壓文件
lsof -p pid
查看進程
lsof -c 進程名
查看進程所打開的埠及文件
Scp root@x.x.x.x:原始文件夾 目的文件夾;
在當前伺服器,將遠程伺服器文件拷貝到當前
scp 原始文件 root@x.x.x.x:目的文件
把當前文件傳到遠程伺服器上
tcpdump -i eth0 -w eth0.cap -c 100000
本地抓包
kill
殺死進程
chmod
改變文件許可權
Sed
本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,刪除某行
Uniq
用於報告或忽略文件中的重複行,一般與sort命令結合使用。
Sort
將文件進行排序,並將排序結果標準輸出。
Linux伺服器應急常用命令及思路
1
檢查用戶及登入情況
last
last -x reboot
查看重啟的記錄
last -x shutdown
查看關機的記錄
last -d
查看登陸的記錄
lastb
這個命令用於查看登錄失敗的情況,本質就是將 /var/log/btmp 文件格式化輸出。
相關參數:
lastb name(root)
查看root用戶登陸失敗記錄
lastb -10(-n)
查看最近10條登陸失敗記錄
lastlog
這個命令用於查看用戶上一次的登錄情況,本質就是將 /var/log/lastlog 文件格式化輸出。
相關參數:
lastlog
所有用戶上一次登陸記錄
lastlog -u username(root) root
用戶上一次登陸記錄
lastlog –help
命令幫助信息
Linux不同的用戶有不同的操作許可權,但是所有用戶都會在 /etc/passwd、/etc/shadow、/etc/group 文件中記錄。
less /etc/passwd
查看是否有新增用戶
grep :0 /etc/passwd
查看是否有特權用戶(root許可權用戶)
ls -l /etc/passwd
查看passwd最後修改時間
stat useradd
查看該命令的時間變化,來判斷是否有新增用戶
cat /etc/passwd | grep -E "/bin/bash$"
查看能夠登錄的帳號
2
查看日誌信息
/var/log/message
包括整體系統信息
/var/log/auth.log
包含系統授權信息,包括用戶登錄和使用的許可權機制等
/var/log/userlog
記錄所有等級用戶信息的日誌
/var/log/cron
記錄crontab命令是否被正確的執行
/var/log/lastlog
記錄登錄的用戶,可以使用命令lastlog查看
/var/log/secure
記錄大多數應用輸入的賬號與密碼,登錄成功與否
/var/log/wtmp
記錄登錄系統成功的賬戶信息,等同於命令last
/var/log/faillog
記錄登錄系統不成功的賬號信息,一般會被黑客刪除
檢查日誌時一定要查看下 root 用戶是否有被暴力破解的情況:
grep -ri "Fail" /var/log/secure*
查看失敗登入情況
grep -ri "accept" /var/log/secure*
查看成功登入情況
3
查看歷史命令
cat ./bash_history
history n
通過用戶的歷史操作命令來排查主機的安全性,可以關注以下四個方面:
- wget 遠程某主機(域名&IP)的遠控文件;
- 嘗試連接內網某主機(ssh scp),便於分析攻擊者意圖;
- 打包某敏感數據或代碼,tar zip 類命令
- 對系統進行配置,包括命令修改、遠控木馬類,可找到攻擊者關聯信息…
4
查看進程
一般被入侵的伺服器都會運行一些惡意程序,或是挖礦程序,或者 DDOS 程序等。如果程序在運行中,那麼通過查看進程可以發現一些信息。
*查看普通進程
ps -aux
查看進程(注意uid為0的用戶)
top
提供了實時的對系統處理器的狀態監視 (尤其是一些挖礦程序會消耗大量資源的)
如果進程中沒有發現異常,那麼可以看看有沒有開啟某些隱藏進程。
*查看隱藏進程
ps -ef | awk {print} | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
通過以上3個步驟可以檢查是否開啟了某些隱藏進程。
5
查看文件
攻擊者入侵成功後,會將木馬上傳到一個合適的文件夾下,要求具有可寫可執行的許可權,/tmp / 文件夾通常是合適的選擇,所以可以重點看一下。
被入侵的網站,通常肯定有文件被改動,那麼可以通過比較文件創建時間、完整性、文件路徑等方式查看文件是否被改動。可以重點查看下相關配置文件,比如 /etc/init.conf。
find / -uid 0 -print
查找特權用戶文件
find / -size +10000k -print
查找大於10000k的文件
find / -name "…" -print
查找用戶名為…的文件
md5sum -b filename
查看文件的md5值
whereis 文件名
查看文件路徑
stat 文件名
查看文件時間修改等詳細信息
du -sh 文件名
查看文件大小
find / -atime 2 > /tmp/1.txt
查看最近兩天訪問的文件
find / -ctime 2 > /tmp/1.txt
查看最近兩天狀態改變的文件(比如文件的許可權 所屬組信息等)
find / -mtime 2 > /tmp/1.txt
查看最近兩天內容改變的文件
註:find -mtine 2 表示兩天以內,find +mtime 2 表示兩天以前。
6
查看計劃任務
當我們嘗試 kill 惡意程序時,往往會遇到被 kill 掉的程序自動啟動的問題,那麼就要檢查下計劃任務(cron)了。
查看root用戶的計劃任務
crontab -u root -l
cat /etc/crontab
查看cron文件是否變化的詳細信息
ls /var/spool/cron/
ls -l /etc/cron.*
7
查看啟動項
系統開機後,此目錄下的文件會被啟動
ls /etc/rc.dl
ls –alt /etc/init.d/
8
檢查網路
檢查網路的目的,是查看黑客是否通過篡改網卡類型,進行流量嗅探等操作。
ip link | grep PROMISC
正常網卡不應該存在promisc,如果存在可能有sniffer
netstat -nap
查看不正常埠
arp -a
查看arp記錄是否正常
ifconfig -a
查看網卡設置
9
檢查常用命令
有時攻擊者會替換掉 ps,netstat 等命令,需要查看下相關命令的大小以及修改的時間。
可以使用stat進行創建修改時間、訪問時間的詳細查看,若修改時間距離事件日期接近,有線性關聯,說明可能被篡改或者其他。
10
查看系統路徑
echo $PATH
分析有無敏感可疑信息
以上是我的一些經驗總結,對於角度不夠全面的地方歡迎大家共同探討。
本文指令參考:
http://man.linuxde.net/
http://www.cnblogs.com/maifengqiang/p/3863168.html
推薦閱讀:
※小編告訴你如何重裝系統win7
※主存管理 | 段式存儲管理方式
※怎樣重裝操作系統
※Linux vs. Unix:有什麼不同?
※藍屏了怎麼辦?寫在開啟Windbg之旅前的話