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