【廉環(huán)話】安全入侵應(yīng)對實(shí)務(wù)——操作系統(tǒng)篇
原創(chuàng)【51CTO.com原創(chuàng)稿件】小伙伴們,您是否還對近期發(fā)生的勒索軟件全球肆虐事件心有余悸呢?是否還未走出本周繁復(fù)的系統(tǒng)檢查與補(bǔ)救陰霾呢?這讓我突然想起了上個(gè)月底和大家分享過的一篇原創(chuàng)文章--《安全事件應(yīng)急響應(yīng)新思路》。說那是“一語成讖”也好,安全事件的新常態(tài)也罷,反正安全攻擊這個(gè)“殺手可沒有假期”哦。依稀記得我在那里以五步流程的方式提出了實(shí)現(xiàn)安全事件管控的整體框架。那么,這一次就讓我“以CISSP的名義”,來深入地給大家講解一下在面對可疑的信息安全入侵事件時(shí),如何采取的實(shí)際操作各個(gè)步驟和相關(guān)的知識點(diǎn)吧。想必大家都知道這么一個(gè)道理吧:沒有人只是通過閱讀鋼琴譜,就能夠?qū)W會(huì)彈鋼琴的。所以,我強(qiáng)烈建議您:一邊閱讀本文,一邊動(dòng)動(dòng)手指頭來跟著操作一番吧。
第一階段:基礎(chǔ)與準(zhǔn)備
1. 確保能夠以最直接的物理訪問方式登錄到可疑的系統(tǒng)上進(jìn)行各種取證操作。
2. 斷開可疑系統(tǒng)與外界的任何網(wǎng)絡(luò)以及USB方式的連接。
3. 準(zhǔn)備好用于對物理硬盤進(jìn)行掃描和鏡像的各種工具。
4. 事先識別出系統(tǒng)處于正常網(wǎng)絡(luò)和服務(wù)狀態(tài)的特征,并有相關(guān)知識儲(chǔ)備。在安全之處(如配置管理數(shù)據(jù)庫)存放相關(guān)文件,并記錄著系統(tǒng)中所有正?;顒?dòng)所用到的端口,以及各種進(jìn)程的特征列表。其中,在Windows里以:“服務(wù)名—端口號—進(jìn)程名”的對應(yīng)格式,而Unix/Linux里則可以是:“端口號—數(shù)據(jù)流規(guī)則”的map形式。在必要時(shí),可以將其與可疑系統(tǒng)的當(dāng)前狀態(tài)做比較。
5. 識別出系統(tǒng)處于正常服務(wù)狀態(tài)時(shí)所用到的系統(tǒng)級別的特有服務(wù)與相關(guān)技術(shù)(如系統(tǒng)自帶的VPN服務(wù))。必要的時(shí)候,可以事先向Windows或Unix/Linux專家咨詢或是從網(wǎng)上獲取相關(guān)知識與經(jīng)驗(yàn)。
6. 如果企業(yè)較大,所有用戶的操作系統(tǒng)(特別是Windows)應(yīng)被統(tǒng)一的鏡像文件所安裝。所有被預(yù)安裝的應(yīng)用程序及其版本號等信息,都應(yīng)當(dāng)被記錄在案。考慮到可能增加的任何不安全的進(jìn)程與服務(wù),不允許用戶擅自安裝的軟件。
7. 另外,對于安裝有Unix/Linux的服務(wù)器系統(tǒng),其所有的重要文件(特別是SUID和GUID文件)列表同樣應(yīng)當(dāng)被編錄到文件中。在必要時(shí),可以將其與可疑的SUID文件做比對檢查。
總之,我們對系統(tǒng)的“清潔”狀態(tài)越了解、掌握得越全面,我們就越容易越及時(shí)地檢測出那些正在進(jìn)行的異?;顒?dòng)。
第二階段:識別與檢查
由于這次我們針對討論的是操作系統(tǒng),而眾所周知一般分Windows和Unix/Linux兩大陣營,因此我將采用并行比較的方式來逐步展開和推進(jìn)。大家可以操起吃飯的家伙了。對,是電腦+鍵盤!不是飯碗+筷子哦!
1. 非正常賬號的檢查
· 對于Windows
◆運(yùn)用C:\> lusrmgr.msc或是C:\> net localgroup administrators命令來檢查是否有被Administrators所創(chuàng)建的非正常的賬號。
· 對于Unix/Linux
◆查看/etc/passwd、/etc/group和/etc/shadow里的可疑條目,特別是那些UID 0的。
◆運(yùn)用# find / \( -nouser -o -nogroup \) -print命令來查看哪些在攻擊中被刪除的賬號所遺留的孤獨(dú)文件(orphaned files)。
2. 非正常文件的檢查
· 對于Windows
◆考慮到系統(tǒng)可能被一些非法文件所濫用,應(yīng)運(yùn)用高級查找或特殊工具來掃描系統(tǒng)中大于10MB的文件,并逐一進(jìn)行甄選。
◆檢查新近增加的非正常的系統(tǒng)文件,特別是在C:\WINDOWS\system32下的。
◆運(yùn)用C:\> dir /S /A:H命令來檢查具有隱藏屬性的各種文件。
◆運(yùn)用“windirstat”之類的工具來獲知各類文件在硬盤上所占的空間比例。
· 對于Unix/Linux
◆運(yùn)用# find / -uid 0 \( –perm -4000 –o –perm 2000 \) –print命令來檢查所有SUID和GUID文件。
◆運(yùn)用如下命令來檢查所有以“. ”or “.. ” or “ ”開頭的非正常的文件名。
# find / -name “ *“ –print
# find / -name “. *“ –print
# find / -name “.. *“ –print
◆運(yùn)用# find / -size +10MB –print命令來查找大于10MB 的文件。
◆運(yùn)用# lsof +L1命令來查找那些不再關(guān)聯(lián)(unlinked)的文件的各種進(jìn)程。
◆檢查/proc和/tmp目錄下是否存在非正常的文件,特別是/tmp目錄可能會(huì)被攻擊者用來存放數(shù)據(jù)和惡意的二進(jìn)制文件。
3. 非正常注冊表項(xiàng)的檢查
◆運(yùn)用“HiJackThis”之類的工具掃描Windows的如下注冊表項(xiàng),以檢查是否有在啟動(dòng)時(shí)自動(dòng)運(yùn)行的非正常的程序。
HKLM\Software\Microsoft\Windows\CurrentVersion\Run HKLM\Software\Microsoft\Windows\CurrentVersion\Runonce HKLM\Software\Microsoft\Windows\CurrentVersion\RunonceEx
◆檢查賬號的開始目錄(Startup folder),以及如下自動(dòng)運(yùn)行(Autostart folder)目錄。
C:\Documents and Settings\user\Start Menu\Programs\Startup
C:\WinNT\Profiles\user\Start Menu\Programs\Startup
4. 非正常進(jìn)程與服務(wù)的檢查
· 對于Windows
◆運(yùn)用C:\> taskmgr.exe或tasklist命令,以及“psexplorer”之類的工具來檢查所有的,特別是用戶名為“SYSTEM”和“ADMINISTRATOR”的,非正常的或未知的進(jìn)程。
◆運(yùn)用C:\> services.msc和C:\> net start命令來檢查已安裝和開啟的非正常的網(wǎng)絡(luò)服務(wù)。
· 對于Unix/Linux
◆運(yùn)用# chkconfig –list命令來檢查所有開啟的服務(wù)。
◆運(yùn)用# ps –aux命令來查看所有正在運(yùn)行的進(jìn)程;對于未知進(jìn)程,可用到 lsof –p [pid] 命令。特別關(guān)注運(yùn)行在UID 0下的那些進(jìn)程。
5. 非正常網(wǎng)絡(luò)活動(dòng)的檢查
· 對于Windows
◆運(yùn)用C:\> net view 127.0.0.1命令,以及“tcpview”之類的工具來檢查各個(gè)文件的共享,及其共享用途。
◆運(yùn)用C:\> net session命令來檢查本機(jī)上已經(jīng)開啟的各種會(huì)話。
◆運(yùn)用C:\> net use命令來檢查在本機(jī)上被其他系統(tǒng)所開啟的各種會(huì)話。
◆運(yùn)用C:\> nbtstat –S命令來檢查任何可疑的Netbios連接。
◆運(yùn)用C:\> netstat –na 5命令(這里的5代表每5秒鐘刷新一次),以及“fport”之類的工具來檢查本機(jī)各個(gè)端口上的任何可疑活動(dòng)。另外,如果增加-o的參數(shù),如C:\> netstat –nao 5,還能看到各個(gè)進(jìn)程的所有者。
· 對于Unix/Linux
◆檢查內(nèi)核文件的“kernel: device eth0 entered promiscuous mode”來確認(rèn)網(wǎng)卡是否處于“混雜”模式,從而發(fā)現(xiàn)局域網(wǎng)絡(luò)中出現(xiàn)的非正常的IP地址。
◆運(yùn)用# netstat –nap和 # lsof –i命令來檢查各個(gè)進(jìn)程的偵聽端口和非正常的端口活動(dòng)。
◆運(yùn)用# arp -a命令來檢查局域網(wǎng)中的非正常的MAC地址記錄。
6. 非正常計(jì)劃任務(wù)的檢查
· 對于Windows
◆運(yùn)用C:\> schtasks命令來檢查計(jì)劃任務(wù)列表中的非正常的條目。
· 對于Unix/Linux
◆檢查/etc/cron.allow文件里的非正常條目,以及運(yùn)用# crontab -u root –l命令來羅列出那些被UID 0的賬號(即root)所設(shè)置自動(dòng)運(yùn)行的任務(wù)。
◆運(yùn)用# cat /etc/crontab和# ls -la /etc/cron.*命令來檢查各種系統(tǒng)級別的計(jì)劃任務(wù)。
7. 非正常日志條目的檢查
· 對于Windows
◆運(yùn)用C:\> eventvwr.msc命令來檢查日志文件中是否有可疑條目。
◆運(yùn)用“Event Log Viewer”之類的工具來查看與防火墻、防病毒軟件、文件保護(hù)以及新的可疑服務(wù)有關(guān)的事件。特別注意那些大量的登錄失敗和被鎖賬號的日志條目。
· 對于Unix/Linux
◆運(yùn)用cat和grep命令的組合(例如:cat /var/log/httpd/access.log | grep "GET /signup.jsp")來檢查存放在/var/log下的各種日志文件。這里給大家羅列一下,該目錄下不同類型日志文件的功能,當(dāng)然熟悉的朋友可以直接略過:
/var/log/message: 通用的系統(tǒng)消息
/var/log/auth.log: 認(rèn)證日志
/var/log/kern.log: 內(nèi)核日志
/var/log/cron.log: 計(jì)劃任務(wù)日志
/var/log/maillog: 郵件服務(wù)器日志
/var/log/httpd/: Apache 訪問與錯(cuò)誤日志目錄
/var/log/boot.log: 系統(tǒng)啟動(dòng)日志
/var/log/mysqld.log: MySQL 數(shù)據(jù)庫服務(wù)器日志
/var/log/secure: 認(rèn)證安全日志
/var/log/utmp 或/var/log/wtmp: 登錄記錄文件
◆檢查來自本地和遠(yuǎn)程訪問工具(如sshd和ftpd等)所記錄的、大量的認(rèn)證和登錄失敗的日志條目。
◆檢查各個(gè)遠(yuǎn)程過程調(diào)用(RPC)程序的日志里所包含的具有大量奇怪字符的條目。
◆檢查Apache的日志里所包含的大量“error”的條目。
◆檢查各種硬件和軟件的重啟日志。
◆運(yùn)用# dmesg命令來檢查系統(tǒng)各個(gè)內(nèi)核日志文件里的可疑事件;并用# lsmod和# lspci來列出重要的內(nèi)核與系統(tǒng)信息。
8. 惡意軟件的檢查
· 對于Windows,可組合使用“Rootkit Revealer”、“Rootkit Hooker”、“Ice Sword”、“Rk Detector”、“SysInspector”、“Rootkit Buster”等工具。
· 對于Unix/Linux,則可使用“rkhunter”之類的工具。
第三階段:取證與補(bǔ)救
還記得那首《見或不見》的小詩嗎?可惜的是各種攻擊者的入侵證據(jù)可不像詩中的愛那樣:你查,或者不查,證據(jù)就在那里,不增不減。我們一旦確認(rèn)的入侵之后就要迅速、立刻、馬上用正確的方式進(jìn)行取證和系統(tǒng)的補(bǔ)救。其中要注意如下幾點(diǎn):
1. 對被攻擊系統(tǒng)的硬盤采用比特級別(bit by bit)的物理全盤拷貝。
· 對于Windows,可以使用EnCase和ddrescure等磁盤克隆工具。
· 對于Unix/Linux則可以使用Sleuth Kit或Autopsy之類的取證工具。
2. 運(yùn)用Memoryze和win32dd之類的工具,對被攻擊系統(tǒng)的內(nèi)存里的數(shù)據(jù)進(jìn)行復(fù)制,以便進(jìn)一步的分析。
3. 在適合的情況下,安裝針對操作系統(tǒng)和應(yīng)用程序的各種修復(fù)補(bǔ)丁,以“堵上”那些尚未被攻擊者所使用到的漏洞,以及再次可能被利用的漏洞。
4. 根據(jù)檢查結(jié)果和準(zhǔn)備階段的記錄,恢復(fù)所用被改動(dòng)過的文件。例如Windows上的svchost.exe,以及Unix/Linux上/bin/su下的各個(gè)二進(jìn)制文件等。
小結(jié)
我身邊的搞信息安全的朋友們經(jīng)??畤@:為什么看過這么多安全的道理,卻依然過不好系統(tǒng)運(yùn)維與事件處理的職場人生呢?其實(shí)我個(gè)人覺得咱們有時(shí)候與“人家的無故障系統(tǒng)”之間就差著一份勤奮和堅(jiān)持。如果我們能夠勤給系統(tǒng)打補(bǔ)丁、堅(jiān)持對系統(tǒng)做檢查、勤對蛛絲馬跡進(jìn)行分析的話,很多一般性的入侵都會(huì)被拒之門外的。好了,希望這次有關(guān)操作系統(tǒng)方面的安全入侵應(yīng)對實(shí)務(wù)能夠幫助您打通任督二脈、疏通思路與“經(jīng)骨”,哥會(huì)在下一次給您帶來更多干貨的。
【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請注明原文作者和出處為51CTO.com】