浅析Linux系统入侵排查与应急响应技术
文章目錄
- 前言
- 系統(tǒng)分析
- 用戶信息排查
- 進(jìn)程端口排查
- 系統(tǒng)服務(wù)排查
- 日志分析
- SSH暴力破解
- Web應(yīng)用日志
- 應(yīng)急工具
- GScan
- 病毒查殺
- 總結(jié)
前言
當(dāng)企業(yè)發(fā)生網(wǎng)絡(luò)安全事件時(shí),急需第一時(shí)間進(jìn)行處理,使企業(yè)的網(wǎng)絡(luò)信息系統(tǒng)在最短時(shí)間內(nèi)恢復(fù)正常工作,同時(shí)還需進(jìn)一步查找入侵來源,還原入侵事故過程,給出解決方案與防范措施,為企業(yè)挽回或減少經(jīng)濟(jì)損失。
常見的網(wǎng)絡(luò)安全事件:
一個(gè)常規(guī)的入侵事件后的系統(tǒng)排查思路:
相關(guān)步驟的核心如下:
文件分析
a) 文件日期、新增文件、可疑/異常文件、最近使用文件、瀏覽器下載文件;
b) Webshell 排查與分析;
c) 核心應(yīng)用關(guān)聯(lián)目錄文件分析;
進(jìn)程分析
a) 當(dāng)前活動進(jìn)程、遠(yuǎn)程連接;
b) 啟動進(jìn)程、計(jì)劃任務(wù);
c) 進(jìn)程工具分析:Windows 使用 Pchunter、 Linux 使用 Chkrootkit 或 Rkhunter;
系統(tǒng)分析
a) 環(huán)境變量;
b) 帳號信息;
c) History;
d) 系統(tǒng)配置文件;
日志分析
(a) 操作系統(tǒng)日志:Windows事件查看器、Linux/var/log/;
(b) 應(yīng)用日志分析:Access.log、Error.log。
本文旨在針對常見的攻擊事件,結(jié)合工作中應(yīng)急響應(yīng)事件分析和解決的方法,總結(jié)了一些 Linux 服務(wù)器入侵排查的思路和方法。
系統(tǒng)分析
對于被入侵的服務(wù)器,可對當(dāng)前主機(jī)存在的用戶信息、歷史命令執(zhí)行記錄、端口占用、異常進(jìn)程、可疑服務(wù)等情況進(jìn)行排查,從而搜集掌握入侵信息。
用戶信息排查
先來看看相關(guān)命令:
cat /etc/shadow #查看密碼 cat /etc/group #查看組信息 history #查看root用戶執(zhí)行的歷史命令 last #查看最近登錄成功的用戶及信息 lastlog #顯示主機(jī)所有用戶最近一次登錄信息 id #當(dāng)前用戶信息 who #查看當(dāng)前登錄系統(tǒng)的所有用戶 w #顯示已經(jīng)登陸系統(tǒng)的用戶列表,并顯示用戶正在執(zhí)行的指令 users #顯示當(dāng)前登錄系統(tǒng)的所有用戶的用戶列表 usermod -L user #禁用帳號,帳號無法登錄,/etc/shadow第二欄為!開頭 userdel -r user #刪除user用戶,并且將/home目錄下的user目錄一并刪除 #查看可以遠(yuǎn)程登錄的用戶 awk '/\$1|\$6/{print $1}' /etc/shadow #查看擁有sudo權(quán)限的用戶 more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" #查看超級用戶(uid=0),有些黑客將普通用戶的uid改為0,則該普通用戶也擁有了超級權(quán)限 awk -F: '$3==0{print $1}' /etc/passwd1、來看下與系統(tǒng)用戶賬戶相關(guān)的文件格式:
A、用戶信息文件:/etc/passwd root:x:0:0:root:/root:/bin/bash account:password:UID:GID:GECOS:directory:shell 格式:用戶名:密碼:用戶ID:組ID:用戶說明:家目錄:登陸之后shell 注意:無密碼只允許本機(jī)登陸,遠(yuǎn)程不允許登陸B(tài)、系統(tǒng)影子文件:/etc/shadow root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7::: bin:*:18264:0:99999:7::: daemon:*:18264:0:99999:7::: adm:*:18264:0:99999:7::: 格式:用戶名:加密后的密碼:密碼最后一次修改日期:兩次密碼的修改時(shí)間間隔:密碼有效期:密碼修改到期到的警告天數(shù):密碼過期之后的寬限天數(shù):賬號失效時(shí)間:保留 注意:如果加密后的密碼這一欄的第一個(gè)字符為!或者*的話,說明這是一個(gè)不能登錄的賬戶可執(zhí)行 lastlog 命令可顯示主機(jī)所有用戶最近一次登錄信息,可以看到除了 root 之外其他賬戶均為登錄過(均為不可登錄的賬戶):
2、查看可以遠(yuǎn)程登錄的用戶、擁有 sudo 權(quán)限的用戶:
3、查看用戶執(zhí)行的歷史命令信息:
相關(guān)命令執(zhí)行效果如下:
進(jìn)程端口排查
同樣先來看看相關(guān)命令:
netstat -antlp #檢查端口連接情況 netstat -antlp | grep 18176 #查看端口連接情況,過濾含有字符“18176”的行 top #動態(tài)查看進(jìn)程 ls -l /proc/18176/exe #查看PID為18176的進(jìn)程的可執(zhí)行程序 lsof -p 18176 #查看PID為18176的進(jìn)程打開的文件 lsof -c sshd #查看進(jìn)程sshd打開的文件 lsof -i:33946 #查看33946端口對應(yīng)的一些進(jìn)程 fuser -n tcp 33946 #查看33946端口對應(yīng)的進(jìn)程PID pstree #查看進(jìn)程樹 ps aux #靜態(tài)查看進(jìn)程 ps aux | grep ssh #查看與ssh相關(guān)的進(jìn)程 ps aux --sort -pcpu #靜態(tài)查看進(jìn)程,根據(jù)cpu使用情況排行,從高到低 ps aux --sort -pmem #靜態(tài)查看進(jìn)程,根據(jù)內(nèi)存使用情況排行,從高到低 ps -p PID -o lstart #查看進(jìn)程的啟動時(shí)間點(diǎn) kill -9 pid #強(qiáng)制殺死進(jìn)程1、使用netstat -antlp命令檢查異常端口:
2、使用ps aux --sort -pcpu命令查看系統(tǒng)進(jìn)程(根據(jù) CPU 使用情況排行,從高到低,如果 CPU 占用率超過 70% 且名字可疑,大概率是中了挖礦病毒了):
【木馬排查實(shí)例】
1、檢查端口連接情況,查看到名為 kali-6666.elf 的異常連接,疑似外連木馬:
2、使用 ps 命令,匹配進(jìn)程,得到相應(yīng) pid 號:
3、查看 pid 所對應(yīng)的進(jìn)程文件路徑:
4、應(yīng)急處置:針對以上案例,進(jìn)一步可使用kill -9 6071強(qiáng)制殺死進(jìn)程,并 rm -f kali-6666.elf 將木馬文件刪除,同時(shí)應(yīng)該溯源分析木馬文件是如何被傳到服務(wù)器的。
系統(tǒng)服務(wù)排查
1、檢查是否存在可疑服務(wù),執(zhí)行命令service --status-all,枚舉主機(jī)所有服務(wù),查看是否有惡意服務(wù):
另外chkconfig -list 命令也可列出所有的服務(wù):
2、當(dāng)發(fā)現(xiàn)入侵殺掉了惡意進(jìn)程后,過一段時(shí)間如果惡意進(jìn)程又會重新啟動,則說明該進(jìn)程有守護(hù)進(jìn)程,此時(shí)應(yīng)檢查是否存在可疑定時(shí)任務(wù),可使用cat /etc/anacrontab查看 anacron 異步定時(shí)任務(wù),同時(shí)使用crontab -l 枚舉定時(shí)任務(wù):
3、檢查服務(wù)器開機(jī)啟動項(xiàng):
| /etc/profile.d/ | /etc/profile.d/*.sh 是 bash 的全局配置文件,/etc/profile.d/ 下有許多 shell 腳本,可以在開機(jī)時(shí)啟動 |
| /etc/init.d/ | 該目錄內(nèi)放的是各個(gè)服務(wù)的啟動腳本,比如 sshd、httpd 等 |
| /etc/rc.local | /etc/rc.local是/etc/rc.d/rc.local的軟連接,該腳本是在系統(tǒng)初始化級別腳本運(yùn)行之后再執(zhí)行的 |
| /etc/rc.d/rcX.d/ | rcX.d 是目錄名,后面的X代表著每個(gè)運(yùn)行級別,里面服務(wù)都是軟連接,真正的目錄是 /etc/init.d 下的腳本,可用 ls –l 查看軟鏈接 |
核查部分啟動項(xiàng)如下:
例子:當(dāng)我們需要開機(jī)啟動自己的腳本時(shí),只需要將可執(zhí)行腳本丟在/etc/init.d目錄下,然后在/etc/rc.d/rc*.d中建立軟鏈接即可:
此處的 sshd 是具體服務(wù)的腳本文件,S100ssh 是其軟連接,S 開頭代表加載時(shí)自啟動;如果是 K 開頭的腳本文件,代表運(yùn)行級別加載時(shí)需要關(guān)閉的。
4、RPM 軟件包檢查(RPM 包是預(yù)先在 Linux 機(jī)器上編譯好并打包好的軟件安裝包),Linux 系統(tǒng)完整性可以通過 rpm 自帶的 -Va 來校驗(yàn)檢查所有的 rpm 軟件包,查看哪些命令是否被替換了:
如果一切均校驗(yàn)正常將不會產(chǎn)生任何輸出,如果有不一致的地方,就會顯示出來,輸出格式是8位長字符串,每個(gè)字符都用以表示文件與 RPM 數(shù)據(jù)庫中一種屬性的比較結(jié)果 ,如果是. (點(diǎn)) 則表示測試通過。
日志分析
Linux 系統(tǒng)日志檢查:
核心日志文件及其作用如下:
/var/log/cron 記錄了系統(tǒng)定時(shí)任務(wù)相關(guān)的日志 /var/log/cups 記錄打印信息的日志 /var/log/dmesg 記錄了系統(tǒng)在開機(jī)時(shí)內(nèi)核自檢的信息,也可以使用dmesg命令直接查看內(nèi)核自檢信息 /var/log/mailog 記錄郵件信息 /var/log/message 記錄系統(tǒng)重要信息的日志。這個(gè)日志文件中會記錄Linux系統(tǒng)的絕大多數(shù)重要信息,如果系統(tǒng)出現(xiàn)問題時(shí),首先要檢查的就應(yīng)該是這個(gè)日志文件 /var/log/btmp 記錄錯(cuò)誤登錄日志,這個(gè)文件是二進(jìn)制文件,不能直接vi查看,而要使用lastb命令查看 /var/log/lastlog 記錄系統(tǒng)中所有用戶最后一次登錄時(shí)間的日志,這個(gè)文件是二進(jìn)制文件,不能直接vi,而要使用lastlog命令查看 /var/log/wtmp 永久記錄所有用戶的登錄、注銷信息,同時(shí)記錄系統(tǒng)的啟動、重啟、關(guān)機(jī)事件。同樣這個(gè)文件也是一個(gè)二進(jìn)制文件,不能直接vi,而需要使用last命令來查看 /var/log/utmp 記錄當(dāng)前已經(jīng)登錄的用戶信息,這個(gè)文件會隨著用戶的登錄和注銷不斷變化,只記錄當(dāng)前登錄用戶的信息。同樣這個(gè)文件不能直接vi,而要使用w,who,users等命令來查詢 /var/log/secure 記錄驗(yàn)證和授權(quán)方面的信息,只要涉及賬號和密碼的程序都會記錄,比如SSH登錄,su切換用戶,sudo授權(quán),甚至添加用戶和修改用戶密碼都會記錄在這個(gè)日志文件中SSH暴力破解
Linux 記錄了 SSH 日志信息的文件:
| /var/log/auth.log | /var/log/secure |
這兩個(gè)文件關(guān)于 SSH 的內(nèi)容基本?致,記錄了驗(yàn)證和授權(quán)方面的信息,只要涉及賬號和密碼的程序都會記錄下來。下面以 Centos 系統(tǒng)的/var/log/secure日志文件為例進(jìn)行日志分析演示。
1、先來查看下該日志文件的后 15 行:
2、定位有多少 IP 在爆破主機(jī)的 root 帳號:
執(zhí)行結(jié)果如下圖所示:
3、查看成功登錄過主機(jī)的 IP 有哪些:
執(zhí)行結(jié)果如下圖所示:
4、查看登錄成功的日期、用戶名、IP:
執(zhí)行結(jié)果如下圖所示:
5、匯總下與 SSH 登錄日志分析相關(guān)的命令:
Web應(yīng)用日志
一般如果網(wǎng)絡(luò)邊界做好控制,通常對外開放的僅是Web服務(wù),那么需要先找到Webshell,可以通過如下途徑:
1、Webshell搜索
檢查最近創(chuàng)建的 php、jsp 文件和上傳目錄,例如要查找 24 小時(shí)內(nèi)被修改的 jsp 文件:
find ./ -mtime 0 -name "*.jsp"相關(guān)的依據(jù)時(shí)間檢索文件的命令還有:
# -atime 文件的訪問時(shí)間 # -mtime 文件內(nèi)容修改時(shí)間 # -ctime 文件狀態(tài)修改時(shí)間(文件權(quán)限,所有者/組,文件大小等,當(dāng)然文件內(nèi)容發(fā)生改變,ctime也會隨著改變) # 要注意:系統(tǒng)進(jìn)程/腳本訪問文件,atime/mtime/ctime也會跟著修改,不一定是人為的修改才會被記錄# 查找最近一天以內(nèi)修改的文件: find / -mtime -1 -ls | more # 查找50天前修改的文件: find ./ -mtime +50 -ls2、工具掃描特征
通常入侵行為會伴隨著踩點(diǎn)和掃描行為,那么可以查一下具有掃描行為的日志。
例如使用AWVS掃描: grep 'acunetix' /var/log/httpd/access_log例如使用sqlmap,但是沒有使用–random-agent,UA中帶有sqlmap grep 'sqlmap' /var/log/httpd/access_logLinux 系統(tǒng)中,Apache 的訪問日志默認(rèn)位置為 /var/log/httpd/access.log。
應(yīng)急工具
以上是純手工命令排查服務(wù)器入侵痕跡,下面介紹幾款 Liunx 系統(tǒng)應(yīng)急響應(yīng)的工具,用于提高應(yīng)急排查的效率。
GScan
GScan 是一款開源的 Linux 應(yīng)急響應(yīng)工具,Github項(xiàng)目地址。本程序旨在為安全應(yīng)急響應(yīng)人員對Linux主機(jī)排查時(shí)提供便利,實(shí)現(xiàn)主機(jī)側(cè) Checklist 的自動全面化檢測,根據(jù)檢測結(jié)果自動數(shù)據(jù)聚合,進(jìn)行黑客攻擊路徑溯源,此程序的特點(diǎn):
自動化程序的 CheckList 項(xiàng)如下:
1、主機(jī)信息獲取 2、系統(tǒng)初始化alias檢查 3、文件類安全掃描3.1、系統(tǒng)重要文件完整行掃描3.2、系統(tǒng)可執(zhí)行文件安全掃描3.3、臨時(shí)目錄文件安全掃描3.4、用戶目錄文件掃描3.5、可疑隱藏文件掃描 4、各用戶歷史操作類4.1、境外ip操作類4.2、反彈shell類 5、進(jìn)程類安全檢測5.1、CUP和內(nèi)存使用異常進(jìn)程排查5.2、隱藏進(jìn)程安全掃描5.3、反彈shell類進(jìn)程掃描5.4、惡意進(jìn)程信息安全掃描5.5、進(jìn)程對應(yīng)可執(zhí)行文件安全掃描 6、網(wǎng)絡(luò)類安全檢測6.1、境外IP鏈接掃描6.3、惡意特征鏈接掃描6.4、網(wǎng)卡混雜模式檢測 7、后門類檢測7.1、LD_PRELOAD后門檢測7.2、LD_AOUT_PRELOAD后門檢測7.3、LD_ELF_PRELOAD后門檢測7.4、LD_LIBRARY_PATH后門檢測7.5、ld.so.preload后門檢測7.6、PROMPT_COMMAND后門檢測7.7、Cron后門檢測7.8、Alias后門7.9、SSH 后門檢測7.10、SSH wrapper 后門檢測7.11、inetd.conf 后門檢測7.12、xinetd.conf 后門檢測7.13、setUID 后門檢測7.14、8種系統(tǒng)啟動項(xiàng)后門檢測 8、賬戶類安全排查8.1、root權(quán)限賬戶檢測8.2、空口令賬戶檢測8.3、sudoers文件用戶權(quán)限檢測8.4、查看各賬戶下登錄公鑰8.5、賬戶密碼文件權(quán)限檢測 9、日志類安全分析9.1、secure登陸日志9.2、wtmp登陸日志9.3、utmp登陸日志9.4、lastlog登陸日志 10、安全配置類分析10.1、DNS配置檢測10.2、Iptables防火墻配置檢測10.3、hosts配置檢測 11、Rootkit分析11.1、檢查已知rootkit文件類特征11.2、檢查已知rootkit LKM類特征11.3、檢查已知惡意軟件類特征檢測 12.WebShell類文件掃描12.1、WebShell類文件掃描項(xiàng)目的具體介紹在 Github 寫得很仔細(xì),此處不再繼續(xù)展開:
1、直接在 Kali 虛擬機(jī)下載并解壓縮,運(yùn)行程序:
2、我在桌面先用 MSF 生成并存放了一個(gè) Liunx Backdoor 文件 Tr0e.elf ,然后執(zhí)行python GScan.py --pro開始掃描,查看結(jié)果與處理方案:
識別出了部分風(fēng)險(xiǎn),但是沒有桌面的 Backdoor……
3、其中檢測出來的 setuid 風(fēng)險(xiǎn)指的是:
病毒查殺
1、Rootkit 查殺
Rootkit 是一種系統(tǒng)內(nèi)核級病毒木馬,其進(jìn)入內(nèi)核模塊后能獲取到操作系統(tǒng)高級權(quán)限,從而使用各種底層技術(shù)隱藏和保護(hù)自身,繞開安全軟件的檢測和查殺。
Linux 系統(tǒng)可以使用 chkrootkit 工具(網(wǎng)址:http://www.chkrootkit.org)進(jìn)行 Rootkit 查殺,其使用方法:
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar zxvf chkrootkit.tar.gz cd chkrootkit-0.52 make sense #編譯完成沒有報(bào)錯(cuò)的話執(zhí)行檢查 ./chkrootkit在 Kali Liunx 虛擬機(jī)進(jìn)行工具測試:
執(zhí)行./chkrootkit命令,掃描后的結(jié)果:
2、病毒查殺
ClamAV 的官方下載地址為:http://www.clamav.net/download.html,安裝使用如下:
1、安裝zlib: wget http://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.7/zlib-1.2.7.tar.gz tar -zxvf zlib-1.2.7.tar.gz cd zlib-1.2.7 #安裝一下gcc編譯環(huán)境: yum install gcc CFLAGS="-O3 -fPIC" ./configure --prefix= /usr/local/zlib/ make && make install ? 2、添加用戶組clamav和組成員clamav: groupadd clamav useradd -g clamav -s /bin/false -c "Clam AntiVirus" clamav ? 3、安裝Clamav tar –zxvf clamav-0.97.6.tar.gz cd clamav-0.97.6 ./configure --prefix=/opt/clamav --disable-clamav -with-zlib=/usr/local/zlib make make install ? 4、配置Clamav mkdir /opt/clamav/logs mkdir /opt/clamav/updata touch /opt/clamav/logs/freshclam.log touch /opt/clamav/logs/clamd.log cd /opt/clamav/logs chown clamav:clamav clamd.log chown clamav:clamav freshclam.log ? 5、ClamAV 使用:/opt/clamav/bin/freshclam 升級病毒庫 ./clamscan –h 查看相應(yīng)的幫助信息 ./clamscan -r /home 掃描所有用戶的主目錄就使用 ./clamscan -r --bell -i /bin 掃描bin目錄并且顯示有問題的文件的掃描結(jié)果3、Webshell 查殺
Linux 系統(tǒng):
- 河馬 Webshell 查殺:http://www.shellpub.com;
- 深信服 Webshell 網(wǎng)站后門檢測工具:http://edr.sangfor.com.cn/backdoor_detection.html。
此處介紹下河馬的使用,讀者可先查看官方使用文檔:河馬 webshell掃描器 for Linux 使用手冊。
(1)首先在 Kali Linux 虛擬機(jī)上的 Apache 網(wǎng)站目錄下存放了冰蝎 Webshell 文件:
(2)官網(wǎng)下載 Linux 版本的河馬工具并解壓縮,運(yùn)行程序./hm scan /var/www/html開始掃描,成功檢測到 Webshell 文件:
總結(jié)
一個(gè)企業(yè)的信息安全建設(shè),最基本的無非是要做好三件事:
- 第一件是事前的安全基線,從源頭盡可能保證新上線的系統(tǒng)的安全性;
- 第二件是建立事中的監(jiān)控能力,各種多維度的入侵檢測,做到有針對性、及時(shí)的救火;
- 第三件是做好事后的應(yīng)急響應(yīng)能力,讓應(yīng)急的時(shí)間成本更短,溯源和根因分析的能力更強(qiáng)。
可見在企業(yè)信息安全建設(shè)中,應(yīng)急響應(yīng)是很關(guān)鍵的一個(gè)環(huán)節(jié)。
服務(wù)器被入侵原因通常有幾個(gè):系統(tǒng)漏洞、中間件漏洞(程序漏洞)、代碼漏洞、安全設(shè)置不正確、網(wǎng)絡(luò)層面 沒有限制等。
業(yè)界有個(gè)應(yīng)急響應(yīng)參考模型,叫做 PDCERF 方法,它把應(yīng)急響應(yīng)體系分為六個(gè)階段來處理。這六個(gè)階段分別是 準(zhǔn)備(Perparation) 、檢測(Detection) 、遏制(Containment) 、根除(Eradication)、 恢復(fù)(Recovery) 、跟蹤(Follow-up)。方法論的東西,看看就好,其實(shí)我們做的也基本都是根據(jù)這幾個(gè)步驟來的。應(yīng)急響應(yīng)講求的是快、準(zhǔn)、穩(wěn)。在最短的時(shí)間內(nèi)定位安全問題,排查安全問題,保障業(yè)務(wù)系統(tǒng)的穩(wěn)定性和安全性。
本文參考:
總結(jié)
以上是生活随笔為你收集整理的浅析Linux系统入侵排查与应急响应技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 药物用法拉丁文缩写词
- 下一篇: linux 其他常用命令