Linux應(yīng)急響應(yīng)之工具篇
當(dāng)企業(yè)被攻擊者入侵,系統(tǒng)被掛暗鏈、內(nèi)容遭到惡意篡改,服務(wù)器出現(xiàn)異常鏈接、卡頓等情況時,需要進(jìn)行緊急處理,使系統(tǒng)在最短時間內(nèi)恢復(fù)正常。由于應(yīng)急處理往往時間緊,所以嘗試將應(yīng)急中常見處理方法整合到腳本中,可自動化實(shí)現(xiàn)部分應(yīng)急工作。應(yīng)急腳本采用python2.0完成,由于所有需要執(zhí)行的命令都是依靠ssh進(jìn)行遠(yuǎn)程鏈接,所以在運(yùn)行腳本之前,需要輸入正確的主機(jī)ip地址、ssh遠(yuǎn)程連接端口、ssh遠(yuǎn)程登錄賬戶、ssh遠(yuǎn)程登錄密碼。
一、腳本實(shí)現(xiàn)的主要功能
1、獲取主機(jī)信息
獲取的主機(jī)信息包括:主機(jī)ip地址、主機(jī)名、當(dāng)前系統(tǒng)內(nèi)核版本、當(dāng)前系統(tǒng)版本、系統(tǒng)當(dāng)前時間;
2、獲取異常進(jìn)程
獲取異常進(jìn)程主要是采用兩種方式,第一種,通過執(zhí)行netstat -antp獲取當(dāng)前主機(jī)存在哪些鏈接,并通過判斷外部鏈接地址歸屬地,如果歸屬地不是中國,則會提取相關(guān)pid,并根據(jù)pid定位出文件所在位置。第二種,通過cpu占有率,一旦發(fā)現(xiàn)cpu占用率高于%15時,會提取對應(yīng)程序的pid,根據(jù)pid定位異常文件位置。
3、判斷常見命令是否被篡改
在之前的應(yīng)急響應(yīng)中出現(xiàn)過常見命令被非法篡改情況,如ps、netstat命令被惡意替換,利用stat查看文件詳細(xì)信息,通過比對時間的方式判斷命令是否被篡改。
4、查看系統(tǒng)啟動項(xiàng)
很多惡意程序會修改系統(tǒng)啟動項(xiàng),這樣即使系統(tǒng)進(jìn)行重啟時,惡意程序也能自動啟動,查看init.d目錄下的啟動文件,根據(jù)修改時間提取最近被修改的啟動文件,并根據(jù)時間排序列出前5個。
5、查看歷史命令
查看.bash_history歷史命令,通過匹配關(guān)鍵字,如wget、cur等,來查看系統(tǒng)在被入侵后是否被執(zhí)行了惡意操作。
6、判斷非系統(tǒng)默認(rèn)賬戶
惡意程序可能會在系統(tǒng)中新建賬戶,通過查看login.defs文件獲取最小uid,從而根據(jù)uid查看passwd文件,獲取之后新建的系統(tǒng)用戶。
7、獲取當(dāng)前登錄用戶
通過調(diào)用who,查看當(dāng)前登錄用戶(tty為本地登錄,pts為遠(yuǎn)程登錄),判斷是否存在異常用戶登錄情況。
8、查看系統(tǒng)當(dāng)前用戶
通過查看etc/passwd,查看相關(guān)用戶信息,確定是否存在異常用戶。
9、查看crontab定時任務(wù)
查看/etc/crontab定時任務(wù),并將輸出結(jié)果保存到log中
10、查看、保存最近三天系統(tǒng)文件修改情況
通過find命令,查找最近三天修改過的文件,由于修改的系統(tǒng)文件較多,所以修改文件被單獨(dú)保存在本地file_edit文件中
11、查找特權(quán)用戶。
查看passwd文件,查找用戶id為0的特權(quán)用戶
12、secure日志分析
日志分析是應(yīng)急的重頭工作,尤其是在應(yīng)急后期的溯源階段,日志分析更顯得尤為重要,由于日志種類包括服務(wù)器日志、應(yīng)用日志,此處只是分析了secure服務(wù)器日志,提取日志的ip地址進(jìn)行判斷,并對ip歸屬地進(jìn)行判斷,查看的secure日志單獨(dú)保存在本地secure中。
腳本運(yùn)行后輸出如下信息:
最終在當(dāng)前目錄下生成如下文件
腳本運(yùn)行完畢后,在當(dāng)前目錄下生成log.txt,記錄腳本檢查結(jié)果:
同時在當(dāng)前目錄下生成的netstat.txt,保存系統(tǒng)鏈接情況
當(dāng)前目錄下secure.txt,記錄當(dāng)前secure日志
當(dāng)前目錄下file_edit.txt.記錄最近三天文件修改情況
腳本整體的思路比較簡單,就是遠(yuǎn)程登錄到linux執(zhí)行常見的應(yīng)急命令,腳本中的命令在centos下都是可正常運(yùn)行的,可以在根據(jù)實(shí)際環(huán)境自行在對命令做調(diào)整。上面的部分功能如果有好的實(shí)現(xiàn)方法也可靈活調(diào)整,如判斷常見命令是否被篡改,腳本中是根據(jù)時間進(jìn)行判斷,在實(shí)際應(yīng)用中也可根據(jù)文件大小進(jìn)行判斷。
最后,代碼整體寫的比較渣,有意見歡迎大家多多指出,希望通過改進(jìn)能讓功能更加完善。
鏈接地址:https://github.com/tide-emergency/yingji
二、參考資料
在編寫此腳本中的很多命令都是借鑒了大牛的的一些經(jīng)驗(yàn),多謝大牛的分享,具體參考鏈接如下:
http://blog.nsfocus.net/emergency-response-case-study/
https://github.com/grayddq
https://github.com/T0xst/linux