有一題給我幾台主機的 process 紀錄,要我挑出最該先查的那一台。
我掃過去,看到其中一台上面有 lsass.exe。
process 就是正在跑的程式,作業系統裡隨時有好幾十個在跑。Windows 的工作管理員看到的那一串就是。
而lsass.exe 全名是 Local Security Authority Subsystem Service,他的功能是管理登入驗證這件事——你打帳號密碼、系統去跟網域確認、確認完發一張憑證給你,都是它在處理,所以我就想,這有鬼。
因為它手上有這些東西,記憶體裡就會留下可以拿來登入的資料。所以有人會想辦法去讀它的記憶體,把裡面的憑證撈出來。
但不出意外的話馬上就要出意外了,翻到答案頁對答案,錯了QAQ。
我對這個名字有反應是這樣來的。問題在於我只記得「lsass 跟憑證竊取有關」,它是被讀取的那個process,它出現在清單上是正常現象。
我選的那台,紀錄是 wininit 生出 services.exe,services 再生出一堆 svchost,wininit 旁邊也生了 lsass。
wininit 是 Windows 開機時負責把系統環境準備好的程式,services.exe 是服務管理員,svchost 是拿來裝載各種系統服務的殼——你在工作管理員看到一大排 svchost,就是不同服務各自被放進一個殼裡跑。
所以那一台從頭到尾就是一台開機開得很正常的機器。lsass 在那裡,是因為它本來就會在那裡。
這部分叫做Parent-child process,一個 process 被另一個 process 叫起來,叫它的那個就是 ==parent==,被叫起來的就是 ==child==,上面那串 wininit 就是 services.exe 的 parent。我們接著看下去。
那台的紀錄是outlook.exe → excel.exe → procdump.exe。
procdump 本身是拿來抓某個 process 記憶體內容存成檔案的東西,原本用途是程式當掉時留下現場給人分析。它是正常工具,微軟自家出的,在這附上連結。
但是excel.exe → procdump.exe,這怪怪的吧,一個試算表要抓誰的記憶體,看看前面那段就知道了。結合前面的Outlook,合理懷疑是釣魚信在搞鬼。
同一份清單上,兩台都有聽起來很嚴重的程式名。差別在關係,不是名字。
explorer 生出瀏覽器、生出遠端桌面,那是使用者在點東西。Office 的東西生出 powershell、cmd、wscript 這類系統工具,我就會開始思考,文件檔案怎麼會打開命令列呢。
認得的名字反而最會騙人,因為認得的都是系統內建的。
| 我看到什麼 | 我的理解 |
|---|---|
| wininit → services → svchost | 開機本來就會跑的一串 |
| wininit 旁邊生出 lsass | 它本來的位置 |
| explorer^註^ → 瀏覽器、遠端桌面 | 使用者在操作 |
| outlook → excel → procdump | 文件沒理由做這件事 |
註記:這裡的explorer是Windows使用者所熟悉的檔案總管
所以回歸到最初,很多時候看的是行為特徵,而不是process名稱,只要這件事不合理、通常不會發生,那就需要多留意。
自己開來看會比較有印象。
Windows 上裝一個 Process Explorer,也是微軟開發的程式,它會把 process 畫成一棵樹,誰生出誰直接用縮排排給你看。開機完什麼都不要動先看一次,那就是你自己機器正常的樣子,之後看到怪的東西才有得比。
此時此刻我的process explorer就長這樣
可以看到哪個process叫了哪個process起來
要玩就在自己的機器上玩。也不要看到不認識的 process 就想砍,砍錯系統服務是會出事的。(雖然我自己也錯砍過幾次...)