問(wèn)題背景
安全人員在日常工作中通常要手工排查 Linux 服務(wù)器的安全性,對(duì)于中馬的服務(wù)器苛茂,我將其歸納為4個(gè)階段:
1.木馬如何傳播到服務(wù)器上 (Eg:暴力破解系統(tǒng)用戶);
2.木馬的目的是什么(Eg:挖礦鸠窗、DDOS 攻擊)妓羊;
3.木馬怎樣清除痕跡(Eg:刪除日志和歷史命令);
4.木馬如何保持連接(Eg:通過(guò)啟動(dòng)項(xiàng)和定時(shí)任務(wù))稍计。
本文將從檢查用戶躁绸、日志、文件等十個(gè)步驟臣嚣,通過(guò)相關(guān)具體命令來(lái)講解如何手工排查 Linux 服務(wù)器的安全性净刮。
Linux 常用命令
du -sh *
查看當(dāng)前文件夾大小
head -n 100 1.log
查看一個(gè)大文件的前100行
grep -ri "nameseve" --include="*.php" /
查看文件字符串
free -m
查看系統(tǒng)內(nèi)存大小
cp 原始文件 目的文件;
cp -r /root/* 目的目錄;
復(fù)制文件及文件夾
tar -cvf a.tar 原始文件;
壓縮文件
tar -xvf a.tar;
tar -xvfz a.tar.gz;
unrar e a.rar;
unzip a.zip
解壓文件
lsof -p pid
查看進(jìn)程
lsof -c 進(jìn)程名
查看進(jìn)程所打開的端口及文件
Scp root@x.x.x.x:原始文件夾 目的文件夾;
在當(dāng)前服務(wù)器,將遠(yuǎn)程服務(wù)器文件拷貝到當(dāng)前
scp 原始文件 root@x.x.x.x:目的文件
把當(dāng)前文件傳到遠(yuǎn)程服務(wù)器上
tcpdump -i eth0 -w eth0.cap -c 100000
本地抓包
kill
殺死進(jìn)程
chmod
改變文件權(quán)限
Sed
本身是一個(gè)管道命令硅则,主要是以行為單位進(jìn)行處理淹父,可以將數(shù)據(jù)行進(jìn)行替換、刪除怎虫、新增暑认、選取等特定工作,刪除某行
Uniq
用于報(bào)告或忽略文件中的重復(fù)行大审,一般與sort命令結(jié)合使用蘸际。
Sort
將文件進(jìn)行排序,并將排序結(jié)果標(biāo)準(zhǔn)輸出徒扶。
Linux服務(wù)器應(yīng)急常用命令及思路
1 檢查用戶及登入情況
last
last -x reboot
查看重啟的記錄
last -x shutdown
查看關(guān)機(jī)的記錄
last -d
查看登陸的記錄
lastb
這個(gè)命令用于查看登錄失敗的情況粮彤,本質(zhì)就是將 /var/log/btmp 文件格式化輸出。
相關(guān)參數(shù):
lastb name(root)
查看root用戶登陸失敗記錄
lastb -10(-n)
查看最近10條登陸失敗記錄
lastlog
這個(gè)命令用于查看用戶上一次的登錄情況姜骡,本質(zhì)就是將 /var/log/lastlog 文件格式化輸出导坟。
相關(guān)參數(shù):
lastlog
所有用戶上一次登陸記錄
lastlog -u username(root) root
用戶上一次登陸記錄
lastlog –help
命令幫助信息
Linux不同的用戶有不同的操作權(quán)限,但是所有用戶都會(huì)在 /etc/passwd圈澈、/etc/shadow乍迄、/etc/group 文件中記錄。
less /etc/passwd
查看是否有新增用戶
grep :0 /etc/passwd
查看是否有特權(quán)用戶(root權(quán)限用戶)
ls -l /etc/passwd
查看passwd最后修改時(shí)間
stat ?useradd
查看該命令的時(shí)間變化士败,來(lái)判斷是否有新增用戶
cat?/etc/passwd??|?grep?-E?"/bin/bash$"
查看能夠登錄的帳號(hào)
2 查看日志信息
/var/log/message
包括整體系統(tǒng)信息
/var/log/auth.log
包含系統(tǒng)授權(quán)信息闯两,包括用戶登錄和使用的權(quán)限機(jī)制等
/var/log/userlog
記錄所有等級(jí)用戶信息的日志
/var/log/cron
記錄crontab命令是否被正確的執(zhí)行
/var/log/lastlog
記錄登錄的用戶,可以使用命令lastlog查看
/var/log/secure
記錄大多數(shù)應(yīng)用輸入的賬號(hào)與密碼谅将,登錄成功與否
/var/log/wtmp
記錄登錄系統(tǒng)成功的賬戶信息漾狼,等同于命令last
/var/log/faillog
記錄登錄系統(tǒng)不成功的賬號(hào)信息,一般會(huì)被黑客刪除
檢查日志時(shí)一定要查看下 root 用戶是否有被暴力破解的情況:
grep ? -ri ? "Fail" ??/var/log/secure*
查看失敗登入情況
grep ?-ri ?"accept" ??/var/log/secure*
查看成功登入情況
3 查看歷史命令
cat ? ./bash_history
history ?n
通過(guò)用戶的歷史操作命令來(lái)排查主機(jī)的安全性饥臂,可以關(guān)注以下四個(gè)方面:
① wget?遠(yuǎn)程某主機(jī)(域名&IP)的遠(yuǎn)控文件逊躁;
② 嘗試連接內(nèi)網(wǎng)某主機(jī)(ssh?scp),便于分析攻擊者意圖;
③ 打包某敏感數(shù)據(jù)或代碼隅熙,tar?zip?類命令
④ 對(duì)系統(tǒng)進(jìn)行配置稽煤,包括命令修改核芽、遠(yuǎn)控木馬類,可找到攻擊者關(guān)聯(lián)信息…
4 查看進(jìn)程
一般被入侵的服務(wù)器都會(huì)運(yùn)行一些惡意程序酵熙,或是挖礦程序轧简,或者 DDOS 程序等。如果程序在運(yùn)行中匾二,那么通過(guò)查看進(jìn)程可以發(fā)現(xiàn)一些信息哮独。
*查看普通進(jìn)程
ps -aux
查看進(jìn)程(注意uid為0的用戶)
top
提供了實(shí)時(shí)的對(duì)系統(tǒng)處理器的狀態(tài)監(jiān)視 (尤其是一些挖礦程序會(huì)消耗大量資源的)
如果進(jìn)程中沒有發(fā)現(xiàn)異常,那么可以看看有沒有開啟某些隱藏進(jìn)程察藐。
*查看隱藏進(jìn)程
ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2
通過(guò)以上3個(gè)步驟可以檢查是否開啟了某些隱藏進(jìn)程皮璧。
5 查看文件
攻擊者入侵成功后,會(huì)將木馬上傳到一個(gè)合適的文件夾下分飞,要求具有可寫可執(zhí)行的權(quán)限悴务,/tmp / 文件夾通常是合適的選擇,所以可以重點(diǎn)看一下譬猫。
被入侵的網(wǎng)站惨寿,通常肯定有文件被改動(dòng)删窒,那么可以通過(guò)比較文件創(chuàng)建時(shí)間、完整性顺囊、文件路徑等方式查看文件是否被改動(dòng)肌索。可以重點(diǎn)查看下相關(guān)配置文件特碳,比如 /etc/init.conf诚亚。
find / -uid 0 -print
查找特權(quán)用戶文件
find / -size +10000k -print
查找大于10000k的文件
find / -name "…" -print
查找用戶名為…的文件
md5sum -b filename
查看文件的md5值
whereis 文件名
查看文件路徑
stat 文件名
查看文件時(shí)間修改等詳細(xì)信息
du -sh??文件名
查看文件大小
find / -atime 2 > ?/tmp/1.txt
查看最近兩天訪問(wèn)的文件
find / -ctime 2 > ?/tmp/1.txt
查看最近兩天狀態(tài)改變的文件(比如文件的權(quán)限 所屬組信息等)
find / -mtime 2 ?> ?/tmp/1.txt
查看最近兩天內(nèi)容改變的文件
注:find -mtine 2 表示兩天以內(nèi),find +mtime 2 表示兩天以前午乓。
6 查看計(jì)劃任務(wù)
當(dāng)我們嘗試 kill 惡意程序時(shí)站宗,往往會(huì)遇到被 kill 掉的程序自動(dòng)啟動(dòng)的問(wèn)題,那么就要檢查下計(jì)劃任務(wù)(cron)了益愈。
crontab -u root -l
cat /etc/crontab
查看root用戶的計(jì)劃任務(wù)
ls /var/spool/cron/
ls -l /etc/cron.*
查看cron文件是否變化的詳細(xì)信息
7 查看啟動(dòng)項(xiàng)
ls /etc/rc.dl
ls?–alt?/etc/init.d/
系統(tǒng)開機(jī)后梢灭,此目錄下的文件會(huì)被啟動(dòng)
8 檢查網(wǎng)絡(luò)
檢查網(wǎng)絡(luò)的目的,是查看黑客是否通過(guò)篡改網(wǎng)卡類型蒸其,進(jìn)行流量嗅探等操作敏释。
ip link | grep PROMISC
正常網(wǎng)卡不應(yīng)該存在promisc,如果存在可能有sniffer
netstat -nap
查看不正常端口
arp -a
查看arp記錄是否正常
ifconfig -a
查看網(wǎng)卡設(shè)置
9 檢查常用命令
有時(shí)攻擊者會(huì)替換掉 ps摸袁,netstat 等命令钥顽,需要查看下相關(guān)命令的大小以及修改的時(shí)間。
可以使用stat進(jìn)行創(chuàng)建修改時(shí)間靠汁、訪問(wèn)時(shí)間的詳細(xì)查看蜂大,若修改時(shí)間距離事件日期接近闽铐,有線性關(guān)聯(lián),說(shuō)明可能被篡改或者其他奶浦。
10 查看系統(tǒng)路徑
echo?$PATH
分析有無(wú)敏感可疑信息
以上是我的一些經(jīng)驗(yàn)總結(jié)兄墅,對(duì)于角度不夠全面的地方歡迎大家共同探討。
本文指令參考:
http://man.linuxde.net/
http://www.cnblogs.com/maifengqiang/p/3863168.html