亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何識別并分析反惡意軟件掃描接口AMSI組件

發布時間:2021-12-23 10:53:18 來源:億速云 閱讀:165 作者:柒染 欄目:數據安全

這篇文章將為大家詳細講解有關如何識別并分析反惡意軟件掃描接口AMSI組件,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

AMSI為終端安全供應商提供了豐富的接口以幫助他們更好地對目標組件進行內存緩沖區安全掃描,或選擇需要掃描的內容。根據微軟提供的信息,AMSI支持的組件有如下幾種:

1、用戶賬戶控制(UAC)

2、PowerShell(腳本、交互使用和動態代碼計算)

3、Windows腳本主機(wscript.exe和cscript.exe)

4、JavaScript和VBScript

5、Office VBA宏

針對從事安全防御檢測的工程師和防御者,以及對成熟規避技術感興趣的攻擊端研究人員,我給大家提出了以下幾個問題:

1、AMSI所支持的這些組件跟哪些實際的PE文件有關聯?

2、微軟提供的信息是否準確,或者說上面的列表缺少了哪些組件?

3、是否可以在不需要注冊AMSI程序作為終端安全提供商的情況下,使用AMSI呢?

AMSI組件枚舉

為了解決前兩個問題,我們需要想辦法自動識別和發現AMSI組件。整個過程需要涉及到一系列包含了ASCII或Unicode字符串“amsi.dll”的EXE或DLL文件。那么我們為什么要搜索“amsi.dll”字符串呢?

1、amsi.dll可以提供掃描緩沖區所需的函數,即AmsiScanBufferAmsiScanString和AmsiUacScan。

2、這個字符串意味著EXE或DLL會通過靜態導入(比如說,它能夠以ASCII字符串的形式存儲在PE文件中)或在運行時動態加載(比如說,它能夠以Unicode字符串的形式存儲在PE文件中)amsi.dll。

下面這段PowerShell代碼也許可以回答我們的疑問:

$UserPEs = Get-CimInstance -ClassName CIM_DataFile -Filter 'Drive = "C:" and (Extension = "exe" or Extension = "dll")' -Property 'Name' | Select -ExpandProperty Name$AMSIReferences1 = $UserPEs | % { Select-String -Encoding ascii -LiteralPath $_ -Pattern 'amsi\.dll' }$AMSIReferences2 = $UserPEs | % { Select-String -Encoding unicode -LiteralPath $_ -Pattern 'amsi\.dll' }$AMSIReferences1.Path$AMSIReferences2.Path

上面這段PowerShell代碼段使用了WMI來枚舉所有的EXE和DLL。之所以選擇這種方法,而不選擇Get-ChildItem,是因為它在嘗試訪問其無權訪問的文件時,有可能引發異常。

接下來,它會使用Select-String(相當于PowerShell中的grep)來掃描每個文件,并查找文件中的ASCII和Unicode文本字符串-“amsi.dll”。

對結果進行過濾后,找到了下列AMSI組件:

1、%windir%\System32\consent.exe

2、%windir%\System32\jscript.dll

3、%windir%\System32\vbscript.dll

4、%windir%\System32\wbem\fastprox.dll

5、%windir%\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

6、%windir%\Microsoft.NET\Framework64\v4.0.30319\clr.dll

7、%ProgramFiles%\WindowsApps\Microsoft.Office.Desktop_16051.11929.20300.0_x86__8wekyb3d8bbwe\VFS\ProgramFilesCommonX86\Microsoft Shared\VBA\VBA7.1\VBE7.DLL

通過研究之后,我們按照微軟提供的文檔對上述的AMSI組件進行分類:

1、用戶賬戶控制:consent.exe

2、PowerShell:System.Management.Automation.dll

3、JavaScript和VBScript:jscript.dll, vbscript.dll

4、Office VBA宏:VBE7.dll

5、未分類:clr.dll, fastprox.dll

那這些未分類的AMSI組件是什么呢?clr.dll,即常見語言運行時,微軟在.NET 4.8提到過這個組件,它的作用是掃描內存中的編譯加載。目前,已經有研究人員在研究相關的繞過機制了,參考資料見本文末尾。接下來我們會對fastprox.dll進行分析,大家莫急。

WMI與AMSI

fastprox.dll位于System32\wbem目錄內,并且fastprox.dll的描述為“WMI自定義Marshaller”,不言而喻,它很明顯與WMI有關。為了進一步驗證,我們可以使用PowerShell來識別fastprox.dll的加載跟哪一個進程有關:

> Get-Process | Where-Object { $_.Modules.ModuleName -contains 'fastprox.dll' }Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName-------  ------    -----      -----     ------     --  -- -----------   2196     274   219988     232044  14,573.92   1192   5 chrome   1162      47    85544      38524     803.86  14580   5 mmc    692      42   129920      55564   1,081.20   2408   5 powershell    874      47    77144      87852      73.48   4040   5 powershell    686      39    71132      42608      42.78  12620   5 powershell    229      13     2596      10072       0.13   2956   0 svchost    480      20     3840       6728      69.66   3376   0 svchost    613      34    26776      17356   4,370.64   3648   0 svchost    217      43     2572       4148      18.64   6728   0 svchost    564      33    11276      16544       4.34  11520   0 svchost    129       7     1496       2196       0.77   5232   0 unsecapp   1650      67   318004     256536      99.28  16576   5 vmconnect    898      29    62664      23660   1,267.36   4776   0 vmms    386      16     8492      13408      21.77  14220   0 WmiPrvSE    176      10     2684       8592       1.36  15772   0 WmiPrvSE

我們可以使用下列PowerShell命令來解析svchost.exe進程對應的服務:

> Get-Process | Where-Object { $_.Modules.ModuleName -contains 'fastprox.dll' -and $_.ProcessName -eq 'svchost' } | ForEach-Object { Get-CimInstance -ClassName Win32_Service -Filter "ProcessId = $($_.Id)" } | Format-Table -AutoSizeProcessId Name         StartMode State   Status ExitCode--------- ----         --------- -----   ------ --------2956      Netman       Manual    Running OK     03376      iphlpsvc     Auto      Running OK     03648      Winmgmt      Auto      Running OK     06728      SharedAccess Manual    Running OK     011520     BITS         Auto      Running OK     0

由此看來,似乎任何希望與WMI交互的進程都需要用到這個DLL。現在,我們直接查看代碼來確定fastprox.dll如何與amsi.dll交互。目前,唯一的“amsi.dll”引用出現在JAmsi::JAmsiInitialize函數中,下面是相關代碼:

如何識別并分析反惡意軟件掃描接口AMSI組件

首先,只有在當前進程不是%windir%\System32\wbem\wmiprvse.exe時,該函數才會初始化AMSI。通過對amsi.dll中loadlibrary的調用以及所需的相關導出函數(如amsiscanbuffer)進行解析后,我們發現amsiscanbuffer的唯一交叉引用是JAmsi::JAmsiRunScanner函數:

如何識別并分析反惡意軟件掃描接口AMSI組件

JAmsiRunScanner由JAmsi::JAmsiProcessor調用,而這個函數會有下列函數進行調用:

1、CWbemSvcWrapper::XWbemServices::ExecNotificationQueryAsync2、CWbemSvcWrapper::XWbemServices::CreateInstanceEnum3、CWbemSvcWrapper::XWbemServices::ExecQueryAsync4、CWbemSvcWrapper::XWbemServices::ExecQuery5、CWbemSvcWrapper::XWbemServices::CreateInstanceEnumAsync6、CWbemSvcWrapper::XWbemServices::GetObjectW7、CWbemSvcWrapper::XWbemServices::ExecMethod8、CWbemSvcWrapper::XWbemServices::ExecMethodAsync9、CWbemSvcWrapper::XWbemServices::ExecNotificationQuery10、CWbemSvcWrapper::XWbemServices::GetObjectAsync11、JAmsi::JAmsiProcessor (called by CWbemInstance::SetPropValue)

除了最后一個函數,其他的函數都對對應了IWbemServices接口所實現的方法,而最后一個函數很可能對應的是IWbemClassObject::Put方法。

接下來,我們需要運行logman來捕捉所有的AMSI事件,并嘗試捕獲相關的WMI事件:

logman start trace AMSITrace -p Microsoft-Antimalware-Scan-Interface (Event1) -o amsi.etl -ets

接下來,運行下列代碼進行事件觸發測試:

$CimSession = New-CimSession -ComputerName .Invoke-CimMethod -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine = 'notepad.exe'} -CimSession $CIMSession$CIMSession | Remove-CimSession

上述命令可以創建一個本地CIM會話來枚舉遠程WMI連接,完成WMI交互之后,停止事件捕捉:

logman stop AMSITrace -ets

接下來,使用PowerShell來識別任意WMI事件:

> $AMSIEvents = Get-WinEvent -Path .\amsi.etl -Oldest> $AMSIEvents[5] | Format-List *Message              : AmsiScanBufferId                   : 1101Version              : 0Qualifiers           :Level                : 4Task                 : 0Opcode               : 0Keywords             : -9223372036854775807RecordId             : 5ProviderName         : Microsoft-Antimalware-Scan-InterfaceProviderId           : 2a576b87-09a7-520e-c21a-4942f0271d67LogName              :ProcessId            : 7184ThreadId             : 8708MachineName          : COMPY486UserId               :TimeCreated          : 10/3/2019 12:14:51 PMActivityId           : 95823c06-72e6-0000-a133-8395e672d501RelatedActivityId    :ContainerLog         : c:\users\testuser\desktop\amsi.etlMatchedQueryIds      : {}Bookmark             : System.Diagnostics.Eventing.Reader.EventBookmarkLevelDisplayName     : InformationOpcodeDisplayName    : InfoTaskDisplayName      :KeywordsDisplayNames : {}Properties           : {System.Diagnostics.Eventing.Reader.EventProperty, System.Diagnostics.Eventing.Reader.EventProperty...}> $AMSIEvents[5].PropertiesValue-----011WMI300300{67, 0, 73, 0...}{131, 136, 119, 209...}False> [Text.Encoding]::Unicode.GetString($AMSIEvents[5].Properties[7].Value)CIM_RegisteredSpecification.CreateInstanceEnum();Win32_Process.GetObjectAsync();Win32_Process.GetObject();SetPropValue.CommandLine("notepad.exe");> Get-CimInstance -ClassName Win32_Service -Filter "ProcessId = $($AMSIEvents[5].ProcessId)"ProcessId Name  StartMode State   Status ExitCode--------- ----  --------- -----   ------ --------7184      WinRM Auto      Running OK     0

首先,第六個事件(索引5)是唯一的第四個屬性值中包含“wmi”的事件。另外,第八個屬性值包含了看起來像由Unicode字符串組成的二進制數據。解碼后,它反映了上面示例中win32_process create的執行。值得注意的是,記錄的進程ID-7184是AMSI事件的來源,它是一個svchost.exe進程。

WMI非常的“混亂”,操作系統會定期使用WMI進行合法操作,而可疑的操作同樣會涉及到WMI,而且很多WMI操作都不會被記錄。背后的原因很明顯,就是因為只有當JAmsi::JAmsiIsScannerNeeded返回TRUE時,JAmsi::JAmsiRunScanner才會執行。

如何識別并分析反惡意軟件掃描接口AMSI組件

WMI的操作上下文字符串有一個專門計算的CRC校驗和,只有它們的校驗和與白名單中的值匹配時才會記錄WMI事件:

如何識別并分析反惡意軟件掃描接口AMSI組件

研究過程中,我們發現白名單中包含下列CRC校驗和:

0x788c9917、0x96b23e8a、0xb8da804e、0xc0b29b3d、0xd16f4088、0xd61d2ea7、0xef726924、0x46b9d093、0xf837efc3

很明顯,只要攻擊者能夠恢復出白名單中的校驗和,他們就可以繞過操作系統針對WMI操作的記錄,接下來的結果,想必大家心知肚明了吧!

關于如何識別并分析反惡意軟件掃描接口AMSI組件就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

习水县| 天气| 鄂托克前旗| 海南省| 桦甸市| 延长县| 康定县| 亚东县| 库车县| 临西县| 吴忠市| 永胜县| 黄大仙区| 鹰潭市| 浑源县| 龙胜| 吴忠市| 遵义市| 合水县| 礼泉县| 和政县| 彭阳县| 洮南市| 出国| 英吉沙县| 乐平市| 弋阳县| 浦东新区| 乐至县| 县级市| 重庆市| 新兴县| 隆昌县| 昌邑市| 洛宁县| 丹寨县| 綦江县| 平阴县| 六枝特区| 弥渡县| 昌乐县|