官术网_书友最值得收藏!

2.2 進(jìn)程排查

進(jìn)程(Process)是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)。在早期面向進(jìn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是程序的基本執(zhí)行實(shí)體;在面向線(xiàn)程設(shè)計(jì)的計(jì)算機(jī)結(jié)構(gòu)中,進(jìn)程是線(xiàn)程的容器。無(wú)論是在Windows系統(tǒng)還是Linux系統(tǒng)中,主機(jī)在感染惡意程序后,惡意程序都會(huì)啟動(dòng)相應(yīng)的進(jìn)程,來(lái)完成相關(guān)的惡意操作,有的惡意進(jìn)程為了能夠不被查殺,還會(huì)啟動(dòng)相應(yīng)的守護(hù)進(jìn)程對(duì)惡意進(jìn)程進(jìn)行守護(hù)。

1.Windows系統(tǒng)

對(duì)于Windows系統(tǒng)中的進(jìn)程排查,主要是找到惡意進(jìn)程的PID、程序路徑,有時(shí)還需要找到PPID(PID的父進(jìn)程)及程序加載的DLL。對(duì)于進(jìn)程的排查,一般有如下幾種方法。

1)通過(guò)【任務(wù)管理器】查看

比較直觀的方法是通過(guò)【任務(wù)管理器】查看可疑程序。但是需要在打開(kāi)【任務(wù)管理器】窗口后,添加【命令行】和【映射路徑名稱(chēng)】等進(jìn)程頁(yè)列,如圖2.2.1所示,以方便獲取更多進(jìn)程信息。

img

圖2.2.1 添加進(jìn)程頁(yè)列

在排查進(jìn)程時(shí),可重點(diǎn)關(guān)注進(jìn)程的映像路徑名稱(chēng)及命令行是否可疑,從而進(jìn)一步進(jìn)行排查。如圖2.2.2所示,程序iexplore.exe為可疑進(jìn)程。

img

圖2.2.2 可疑進(jìn)程排查

2)使用【tasklist】命令進(jìn)行排查

在命令行中輸入【tasklist】命令,可顯示運(yùn)行在計(jì)算機(jī)中的所有進(jìn)程,可查看進(jìn)程的映像名稱(chēng)、PID、會(huì)話(huà)名等信息,如圖2.2.3所示。

img

圖2.2.3 使用【tasklist】命令進(jìn)行排查

使用【tasklist】命令并添加特定參數(shù),還可以查看每個(gè)進(jìn)程提供的服務(wù),如添加svc參數(shù),即輸入【tasklist/svc】命令,可以顯示每個(gè)進(jìn)程和服務(wù)的對(duì)應(yīng)情況,如圖2.2.4所示。

img

圖2.2.4 輸入【tasklist/svc】命令

對(duì)于某些加載DLL的惡意進(jìn)程,可以通過(guò)輸入【tasklist/m】命令進(jìn)行查詢(xún),如圖2.2.5所示。

img

圖2.2.5 輸入【tasklist/m】命令

要想查詢(xún)特定DLL的調(diào)用情況,可以使用命令【tasklist/m 名稱(chēng)】。如圖2.2.6所示,輸入【tasklist/m ntdll.dll】命令,可查詢(xún)調(diào)用ntdll.dll模塊的進(jìn)程。

img

圖2.2.6 輸入【tasklist/m ntdll.dll】命令

同時(shí),【tasklist】命令還有過(guò)濾器的功能,可以使用【fi】命令進(jìn)行條件篩選,結(jié)合關(guān)系運(yùn)算符【eq】(等于)、【ne】(不等于)、【gt】(大于)、【lt】(小于)、【ge】(大于等于)、【le】(小于等于)等命令進(jìn)行有效過(guò)濾,如圖2.2.7所示。

img

圖2.2.7 過(guò)濾

例如,查看PID為992的進(jìn)程,可使用命令【tasklist/svc/fi "PID eq 992"】查看,如圖2.2.8所示。

img

圖2.2.8 查看PID為992的進(jìn)程

3)使用【netstat】命令進(jìn)行排查

在命令行中輸入【netstat】命令,可顯示網(wǎng)絡(luò)連接的信息,包括活動(dòng)的TCP連接、路由器和網(wǎng)絡(luò)接口信息,是一個(gè)監(jiān)控TCP/IP網(wǎng)絡(luò)的工具。相關(guān)參數(shù)如下。

-a:顯示所有連接和偵聽(tīng)端口。

-b:顯示在創(chuàng)建每個(gè)連接或偵聽(tīng)端口時(shí)涉及的可執(zhí)行程序。

-e:顯示以太網(wǎng)統(tǒng)計(jì)信息。可以與-s結(jié)合使用。

-f:顯示外部地址的完全限定域名(FQDN)。

-n:以數(shù)字形式顯示地址和端口號(hào)。

-o:顯示擁有的與每個(gè)連接關(guān)聯(lián)的進(jìn)程 ID。

-p proto:顯示proto指定的協(xié)議的連接。

-q:顯示所有連接、偵聽(tīng)端口和綁定的非偵聽(tīng)TCP端口。綁定的非偵聽(tīng)端口不一定與活動(dòng)連接相關(guān)聯(lián)。

-r:顯示路由表。

-s:顯示每個(gè)協(xié)議的統(tǒng)計(jì)信息。默認(rèn)情況下,顯示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的統(tǒng)計(jì)信息。

-t:顯示當(dāng)前連接卸載狀態(tài)。

-x:顯示NetworkDirect連接、偵聽(tīng)器和共享終結(jié)點(diǎn)。

-y:顯示所有連接的TCP連接模板。無(wú)法與其他選項(xiàng)結(jié)合使用。

interval:重新顯示選定統(tǒng)計(jì)信息,每次顯示之間暫停時(shí)間間隔(以秒計(jì))。

常見(jiàn)的網(wǎng)絡(luò)狀態(tài)說(shuō)明如下。

LISTENING:偵聽(tīng)狀態(tài)。

ESTABLISHED:建立連接。

CLOSE_WAIT:對(duì)方主動(dòng)關(guān)閉連接或網(wǎng)絡(luò)異常導(dǎo)致連接中斷。

在排查過(guò)程中,一般會(huì)使用【netstat-ano|findstr "ESTABLISHED"】命令查看目前的網(wǎng)絡(luò)連接,定位可疑的ESTABLISHED。如圖2.29所示,在排查中發(fā)現(xiàn)PID為2856的進(jìn)程有大量網(wǎng)絡(luò)連接。

img

圖2.2.9 PID為2856的進(jìn)程有大量網(wǎng)絡(luò)連接

通過(guò)【netstat】命令定位出PID,再通過(guò)【tasklist】命令進(jìn)行程序定位,發(fā)現(xiàn)PID為2856的進(jìn)程有大量網(wǎng)絡(luò)連接后,使用【tasklist|find "2856"】命令可查看具體的程序,如圖2.2.10所示。

img

圖2.2.10 查看具體的程序

也可以通過(guò)【netstat-anb】命令(需要管理員權(quán)限)快速定位到端口對(duì)應(yīng)的程序,如圖2.2.11所示。

img

圖2.2.11 快速定位到端口對(duì)應(yīng)的程序

4)使用PowerShell進(jìn)行排查

有時(shí)對(duì)于有守護(hù)進(jìn)程的進(jìn)程,還要確認(rèn)子父進(jìn)程之間的關(guān)系,可以使用PowerShell進(jìn)行查看,一般PowerShell在查詢(xún)時(shí)會(huì)調(diào)用Wmi對(duì)象。【Get-WmiObject Win32_Process|select Name,ProcessId,ParentProcessId,Path】命令中Get-WmiObject Win32_Process表示獲取進(jìn)程的所有信息,select Name,ProcessId,ParentProcessId,Path表示選擇Name,ProcessId,ParentProcessId,Path 4個(gè)字段,整個(gè)命令表示顯示所有進(jìn)程信息中的Name,ProcessId,ParentProcessId,Path 4個(gè)字段的內(nèi)容。執(zhí)行后的結(jié)果如圖2.2.12所示。

5)使用【wmic】命令進(jìn)行查詢(xún)

(1)在命令行中使用【wmic process】命令,可以對(duì)進(jìn)程情況進(jìn)行查詢(xún)。 但使用【wmic process list full/format:csv】命令,即以csv格式列出進(jìn)程的所有信息,此時(shí)命令列出的信息過(guò)多,不便于閱讀。因此,可以使用【wmic process get name,parentprocessid,processid/format:csv】命令,以csv格式來(lái)顯示進(jìn)程的名稱(chēng)、父進(jìn)程ID、進(jìn)程ID,如圖2.2.13所示。

img

圖2.2.12 執(zhí)行后的結(jié)果

img

圖2.2.13 顯示所有進(jìn)程的部分信息

其他類(lèi)似命令如下。

【wmic process get ExecutablePath,processid/format:csv】命令表示以csv格式來(lái)顯示進(jìn)程路徑、進(jìn)程ID信息。

【wmic process get name,ExecutablePath,processid,parentprocessid/format:csv|findstr/I "appdata"】命令表示以csv格式來(lái)顯示進(jìn)程的名稱(chēng)、進(jìn)程路徑、進(jìn)程ID、父進(jìn)程ID信息。

(2)同時(shí)【wmic】命令還可以結(jié)合條件對(duì)進(jìn)程進(jìn)行篩選。

【wmic process where processid=[PID] get parentprocessid】命令表示以PID的值作為條件來(lái)獲取其父進(jìn)程的PID情況。如圖2.2.14所示,是獲取PID的值為1888的進(jìn)程的父進(jìn)程PID的值,獲取到的父進(jìn)程PID的值為808。

img

圖2.2.14 獲取指定進(jìn)程的父進(jìn)程PID的值

其他類(lèi)似命令如下。

【wmic process where processid=[PID] get commandline】命令表示以PID的值作為條件來(lái)獲取其命令行。

(3)在使用【wmic process】命令查出惡意進(jìn)程后,會(huì)結(jié)束惡意進(jìn)程,一般使用如下命令結(jié)束惡意進(jìn)程。

【wmic process where name="malware.exe" call terminate】命令是指刪除"malware.exe"惡意程序的進(jìn)程。

【wmic process where processid=[PID] delete】命令是指刪除PID為某值的進(jìn)程。

2.Linux系統(tǒng)

在命令行中輸入【netstat】網(wǎng)絡(luò)連接命令,可分析可疑端口、可疑IP地址、可疑PID及程序進(jìn)程。如圖2.2.15所示,PID為2963的進(jìn)程存在惡意外鏈情況。

根據(jù)PID的值,利用【ls-alt/proc/PID】命令,可查看其對(duì)應(yīng)的可執(zhí)行程序。如圖2.2.16所示,使用【ls-alt/proc/2963】命令,可查看PID為2963的進(jìn)程的可執(zhí)行程序。

img

圖2.2.15 PID為2963的進(jìn)程存在惡意外鏈情況

img

圖2.2.16 查看對(duì)應(yīng)可執(zhí)行程序

也可以利用【lsof-p PID】命令,查看進(jìn)程所打開(kāi)的文件。如圖2.2.17所示,使用【lsof-p 2963】命令,可查看PID為2963的進(jìn)程所打開(kāi)的文件,發(fā)現(xiàn)文件mbrn為可疑文件。

img

圖2.2.17 查看PID為2963的進(jìn)程所打開(kāi)的文件

如果是惡意進(jìn)程,可以使用【kill-9 PID】命令結(jié)束進(jìn)程,如【kill-9 2535】命令表示結(jié)束PID為2535的進(jìn)程。然后使用【rm-rf filename】命令可刪除木馬,如要?jiǎng)h除mbrn文件,則可使用命令【rm-rf mbrn】。如果root用戶(hù)都無(wú)法刪除相關(guān)文件,那么很可能是因?yàn)樵撐募患由狭薸屬性。使用【lsatter filename】命令,可查看文件屬性,然后使用【chattr-i filename】命令,可移除i屬性,進(jìn)而刪除文件。也有的進(jìn)程因?yàn)榇嬖谑刈o(hù)進(jìn)程而無(wú)法刪除,我們可以先把進(jìn)程掛起,查殺守護(hù)進(jìn)程后,再返回將進(jìn)程刪除。

有些攻擊者會(huì)將進(jìn)程隱藏,以躲避排查,因此查看隱藏進(jìn)程同樣重要。按照順序執(zhí)行【ps-ef|awk '{print}'|sort-n|uniq >1】、【ls/proc|sort-n |uniq >2】和【diff 1 2】命令,可以查看隱藏進(jìn)程,如圖2.2.18所示。

img

圖2.2.18 查看隱藏進(jìn)程

對(duì)于挖礦進(jìn)程的排查,可使用【top】命令查看相關(guān)資源占用率較高的進(jìn)程,之后進(jìn)行定位。如圖2.2.19所示,發(fā)現(xiàn)PID為29245的進(jìn)程的CPU占用率較高,因此可進(jìn)行重點(diǎn)排查。

img

圖2.2.19 查看相關(guān)資源占用率較高的進(jìn)程

主站蜘蛛池模板: 兴山县| 枣庄市| 石首市| 贵阳市| 新营市| 沐川县| 丰顺县| 新化县| 厦门市| 宝应县| 龙游县| 亳州市| 海盐县| 石林| 阜平县| 玉屏| 克拉玛依市| 凭祥市| 瑞安市| 开江县| 万全县| 兴国县| 信丰县| 区。| 江孜县| 尼玛县| 开江县| 眉山市| 乡宁县| 昂仁县| 桂平市| 秀山| 鄂伦春自治旗| 凤阳县| 朝阳区| 丘北县| 牡丹江市| 禄丰县| 宜章县| 陆川县| 盘锦市|