[系統安全] 三十五.Procmon工具基本用法及文件進程、注冊表查看
一.Process Monitor
1.基本介紹
Process Monitor是微軟推薦的一款系統監視工具,能夠實時顯示文件系統、注冊表(讀寫)、網絡連接與進程活動的高級工具。它整合了舊的Sysinternals工具、Filemon與Regmon,其中Filemon專門用來監視系統中的任何文件操作過程,Regmon用來監視注冊表的讀寫操作過程。
- Filemon:文件監視器
- Regmon:注冊表監視器
同時,Process Monitor增加了進程ID、用戶、進程可靠度等監視項,可以記錄到文件中。它的強大功能足以使Process Monitor成為您系統中的核心組件以及病毒探測工具。

Process?Monitor可以幫助使用者對系統中的任何文件、注冊表操作進行監視和記錄,通過注冊表和文件讀寫的變化,有效幫助診斷系統故障或發現惡意軟件、病毒及木馬。
Github下載地址:
- https://github.com/eastmountyxz/Security-Software-Based
2.使用場景
運行Process Monitor建議使用管理員模式,當你啟動Process Monitor后,它就開始監聽三類操作,包括:文件系統、注冊表、進程。
- 文件系統
- Process Monitor顯示所有的Windows文件系統活動,包括本地磁盤和遠程文件系統。它會自動探測到新的文件系統設備并監聽它們。所有的系統路徑都會被顯示為相對于在用戶會話中的一個文件系統操作的執行。想在列表中清除文件系統的操作,在Process Monitor工具欄上反選“文件系統”按鈕,再按下可以增加對文件系統的監聽。
- 注冊表
- Process Monitor記錄所有的注冊表操作并顯示使用常見的注冊表根鍵縮寫來顯示注冊表路徑(如HEKY_LOCAL_MACHINE 縮寫為HKLM)。想在列表中清除注冊表的操作,在Process Monitor工具欄上反選“注冊表”按鈕,再次按下可以增加對注冊表的監聽。
- 進程
- 在Process Monitor的進程/線程監聽子系統中,它將跟蹤所有進程/線程的創建和退出操作,包括DLL和設備驅動程序的加載操作。想在列表中清除進程的操作,在Process Monitor工具欄上反選“進程”按鈕,再次按下可以增加對進程的監聽。
- 網絡
- Process Monitor使用“Windows事件跟蹤(ETW)”來跟蹤并記錄TCP和UDP活動。每個網絡操作包括源地址和目標地址,還有發送和接受到的一些數量的數據,但不包括真實的數據。想在列表中清除網絡的操作,在Process Monitor工具欄上反選“網絡”按鈕,再次按下可以增加對網絡的監聽。
- 性能分析
- 這個事件類可以在“選項”菜單中啟用。當處于“啟用”狀態,Process Monitor掃描系統中所有活動的線程并為每個線程生成一個性能分析事件,記錄了內核模式和用戶模式的CPU時間消耗,還有許多在上個性能分析事件后已被線程執行的環境開關。
二.Procmon分析可執行文件
1.常見用法
下載Procmon.exe軟件后,直接雙擊啟動,Procmon會自動掃描分析系統當前程序的運行情況。其中,下圖框出來的4個常用按鈕作用分別為:捕獲開關、清屏、設置過濾條件、查找。最后5個并排的按鈕,是用來設置捕獲哪些類型的事件,分別表示注冊表的讀寫、文件的讀寫、網絡的連接、進程和線程的調用和配置事件。一般選擇前面2個,分別為注冊表和文件操作。

輸出結果中包括序號、時間點、進程名稱、PID、操作、路徑、結果、描述等,監控項通常包括:
- 文件系統
- 注冊表
- 進程:跟蹤所有進程和線程的創建和退出操作
- 剖析事件:掃描系統中所有活動線程,為每個線程創建一個剖析事件,記錄它耗費的核心和用戶CPU時間,以及該線程自上次剖析事件以來執行了多少次上下文轉換

為了更好地定制選擇,可以在過濾器中進行設置(見上圖),也可以在Options菜單中選擇Select Columns選項,然后通過彈出的列選擇對話框來定制列的顯示。常用列的選擇包括:
- Application Details
- – Process Name:產生事件的那個進程的名字
- – Image Path:進程鏡像的完整路徑
- – Command Line:命令行,用于啟動進程
- – Company Name:進程鏡像文件中的企業名稱。這個文本是由應用程序的開發者來定義的
- – Description:進程鏡像文件中的產品描述信息。這個文本是由應用程序的開發者定義的
- – Version:進程鏡像文件中的產品版本號。這個文本是由應用程序的開發者定義的
- Event Details
- – Sequence Number:操作在全體事件中的相對位置,也包括當前的過濾
- – Event Class:事件的類別(文件,注冊表,進程)
- – Operation:特殊事件操作,比如Read、RegQueryValue等
- – Date & Time:操作的日期和時間
- – Time of Day:只是操作的時間
- – Path:一個事件引用資源的路徑
- – Detail:事件的附加信息
- – Result:一個完成了的操作的狀態碼
- – Relative Time:一個操作相對于Process Monitor的啟動后的時間,或者相對于Process Monitor的信息清除后的時間
- – Duration:一個已經完成了的操作所持續的時間
- Process Management
- – User Name:正在執行操作的進程的用戶賬戶名
- – Session ID:正在執行操作的進程的Windows會話ID
- – Authentication ID:正在執行操作的進程的登錄會話ID
- – Process ID:執行了操作的進程的進程ID
- – Thread ID:執行了操作的線程的線程ID
- – Integrity Level:正在運行的進程執行操作時的可信級別(僅支持Vista以上系統)
- – Virtualized:執行了操作的進程的虛擬化狀態
2.實例分析
下面我們采用分析開機自啟動的某個“hi.exe”程序。注意,作者之前第36篇文章CVE漏洞復現文章中,將“hi.exe”惡意加載至自啟動目錄,這里分析它。
C:\Users\xxxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

第一步,設置過濾器。
打開軟件Process Moniter,并點擊filter->filter。

在彈出的對話框中Architecture下拉框,選擇Process Name填寫要分析的應用程序名字,點擊Add添加,最后點擊右下角的Apply。

第二步,執行被分析的應用。
雙擊應用程序會彈出“計算器”。

可以看到Process Mointor監控到應用的行為。

第三步,查看可執行文件的位置。
點擊查找按鈕,然后輸入“CreateFile”。

找到該選項之后,我們右鍵點擊“Jump To”。

我們可以去到該文件所在的文件夾下,即:
Win 7/10:
C:\Users\xxxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Win XP:
C:\Documents and Settings\Administrator\「開始」菜單\程序\啟動

第四步,查看注冊表選項。
查尋文件“RegSetValue”。

右鍵選擇jump to跳轉到注冊表。

可以看到注冊表的內容,如果自啟動還能看到相關鍵對的設置。

Windows自動重啟運行的程序可以注冊在下列任一注冊表的位置。
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
三.Promon分析壓縮包
接著我們分析該壓縮包。

第一步,過濾器設置。
打開軟件Process Moniter,并點擊filter->filter。在彈出的對話框中Architecture下拉框,選擇Process Name填寫要分析的應用程序名字,點擊Add添加、Apply應用。注意,也可以增加其他過濾規則。

第二步,打開壓縮包及某個文件。
未打開壓縮包前運行結果如下圖所示:

打開該壓縮包中的“2020-02-22-china.csv”文件,這是作者Python大數據分析武漢疫情的開源代碼,也推薦感興趣的讀者閱讀。

Procmon顯示了與WinRAR相關的操作,如下圖所示。我們可以查看運行的進程、注冊表等信息。

第三步,查詢“china.csv”相關的文件。

可以看到臨時文件,其路徑為:
C:\Users\xxxx\AppData\Local\Temp\Rar$DIa14092.24700
第四步,右鍵點擊“Jump To”跳轉查看文件。

跟蹤這個目錄,在C盤對應目錄下找到了這個文件,打開之后和本來打開的文件內容相同。

AppData\Local\Temp
它是電腦Windows系統臨時存儲的文件夾,會把瀏覽者瀏覽過的網站或者其它記錄保存在這里。如果下次打開相應的地址,電腦會更快提取文件,甚至在沒有網絡時也能查看到。這是不安全的,你保密的文件文件也可能存在該位置,建議及時刪除。

第五步,WinRAR壓縮包內文件直接打開后,有兩種關閉方式:先關閉打開的文件,再關閉打開的壓縮包。另外一種方式是先關閉打開的壓縮包,再關閉打開的文件。建議大家利用Process Moniter分析上述兩種方式的不同點。
打開壓縮包時加載的文件個數如下圖所示。

先關閉word文件,再關閉winrar。注意,關閉word文件后,Process Monitor監測到了事件;再關閉winrar,Process Monitor也監測到了事件。

這僅是一篇基礎性用法文章,更多實例作者希望深入學習后分享出來。比如監控某個目錄下文件的創建、修改、刪除、訪問操作,從而保存日志為文件,以便日后分析。

- WriteFile:寫操作,依照文件大小可能產生多條
- ReadFile:讀操作,一次讀會產生很多條
- SetAllocationInformationFile:改寫文件時觸發
- SetEndOfFileInformationFile:改寫文件時觸發
- SetRenameInformationFile:重命名時觸發
- SetDispositionInformationFile:刪除文件時觸發
四.總結
寫到這里,這篇文章就介紹完畢,主要包括三部分內容:
- Procmon軟件介紹
- Procmon分析可執行文件
- Procmon分析壓縮包文件加載項,包括進程和注冊表
接下來,作者將采用該工具在虛擬機中分析惡意樣本,涉及知識點包括:
- 文件活動行為分析:Procmon監控木馬客戶端的文件行為
- 注冊表活動行為分析:Procmon監控木馬客戶端的注冊表設置值行為
- 網絡活動行為分析:Wireshark監控網絡行為、TCP三次握手連接、被控端與控制端之間的通信過程