站長資訊網
        最全最豐富的資訊網站

        Mitre ATT&CK矩陣中的三種進程注入手法

        Mitre ATT&CK矩陣中的三種進程注入手法

        Mitre ATT&CK矩陣中的三種進程注入手法:經典的進程注入、Process HollowingProcess Doppelg?nging

        惡意軟件使用進程注入的主要目的大致是為了躲避殺軟的檢測或者進行提權操作。這里我們將主要針對第一種情況下的3種手段進行詳細的討論。

        一:經典的進程注入(DLL注入)

        這是最為經典的手段,流程也十分簡潔明了即:

        OpenProcess -> VirtualAllocEx -> WriteProcessMemory -> CreateRemoteThread

        Mitre ATT&CK矩陣中的三種進程注入手法

        二:Process Hollowing

        這是一種相當古老的手段了,中文一般譯為”創建傀儡進程”,使用該手法創建的進程可以偽裝為任意的合法進程,比如偽裝為IE,在內存中使用process hacker查看時其圖標資源、描述、數字簽名均為IE的值。這樣應急響應人員在進行排查的時候可能難以發現。

        用簡潔的語言概括該手法,即惡意進程首先創建一個掛起狀態的進程,然后取消其原先的內存映射并替換成事先準備的惡意代碼,在對修改后的映像文件進行重定向后再恢復該進程的運行狀態。

        實現思路:

        1、通過CreateProcess創建目標進程,傳入參數CREATE_SUSPENDED使進程掛起

        Mitre ATT&CK矩陣中的三種進程注入手法

        2、通過NtQueryProcessInformation獲取目標進程內存中映像文件的基地址。(PEB塊數據結構)

        Mitre ATT&CK矩陣中的三種進程注入手法

        3、通過NtUnmapViewOfSection清空目標進程的內存數據(section),傳入參數為進程句柄和映像文件的基地址

        Mitre ATT&CK矩陣中的三種進程注入手法

        4、通過VirtualAllocEx申請新的內存(起始地址為之前映像文件的基地址,大小則為payload的大小)

        5、通過WriteProcessMemory向內存寫入payload

        6、將寫入內存中的payload進行基址重定向

        7、通過GetThreadContext獲取目標線程的上下文,將上下文的eax寄存器修改為正確的代碼入口點

        8、通過SetThreadContext設置入口點

        9、通過ResumeThread喚醒進程,執行payload

        對抗思路:

        從實現思路中可以看出,步驟1、4、5、6、7、8、9是常規的創建一個進程然后自己注入的手段。只有步驟2、3是比較特殊的。用常規的檢測手段如Hook關鍵函數進行判斷即可檢測。

        三:Process Doppelg?nging

        這是一種比較新的注入手段,首次提出于2017年的歐洲black hat大會。該手段在原理及表現上與Process Hollowing是類似的,利用Process Doppelg?nging創建的進程在內存中使用process hacker查看時其圖標資源、描述、數字簽名均為指定的目標程序。

        該手法利用了windows事務(TxF)的特性,在事務中使用惡意文件覆蓋合法文件,此時不提交事務(即覆蓋不會在磁盤上發生),然后創建一個section(當前事務的拷貝)。在獲得了section的句柄后,就將事務回滾,防止惡意文件在磁盤上真正地覆蓋合法文件。之后就使用內存中section的句柄進行進程創建操作。而創建的進程是擁有合法可執行文件的信息的。

        可以看到,由于需要在事務中覆蓋文件,所以該手法需要對目標文件有寫權限。

        實現思路:

        1、創建一個TxF事務對象(NtCreateTransaction)

        Mitre ATT&CK矩陣中的三種進程注入手法

        2、以事務API打開合法可執行文件,即在事務對象中加入文件(CreateFileTransacted)

        Mitre ATT&CK矩陣中的三種進程注入手法

        3、打開惡意文件并為其分配內存空間(CreateFile、GetFileSizeEx -> NtAllocateVirtualMemory -> ReadFile)

        4、用內存中的惡意文件覆蓋事務中的合法可執行文件(WriteFile)

        Mitre ATT&CK矩陣中的三種進程注入手法

        5、創建當前事務的section(NtCreateSection)

        Mitre ATT&CK矩陣中的三種進程注入手法

        6、回滾事務,使剛剛的覆蓋恢復成合法可執行文件(NtRollbackTransaction)

        Mitre ATT&CK矩陣中的三種進程注入手法

        7、使用內存中的section來創建進程對象(NtCreateProcessEx)

        Mitre ATT&CK矩陣中的三種進程注入手法

        8、獲取惡意文件的入口點,創建進程參數塊,然后將進程塊寫入進程內存中(NtQueryInformationProcess -> RtlInitUnicodeString -> RtlCreateProcessParametersEx)

        9、更新PEB中的進程參數塊,為目標進程對象創建線程,執行惡意代碼(NtCreateThreadEx)

        對抗思路:

        從步驟上看,Hook關鍵函數(如NtCreateThreadEx)進行判斷即可檢測該手法。

        總結

        從上述3種手法的演變上可以看到幾點趨勢。

        第一點,內存中的隱蔽能力越來越強,由最開始的毫無隱蔽性可言,到現在可以做到在內存中表現得與合法程序一致。

        第二點,payload釋放到內存中的手段越來越難以檢測,最初payload是直接拷貝到內存中的,現在攻擊者可以利用一些特性(如TxF)來進一步隱蔽釋放過程。

        第三點,最終階段的關鍵函數幾乎沒有變化,即使payload的釋放越來越隱蔽,但是最終還是要釋放到內存中并且調用執行的。通過對有限的關鍵函數進行Hook,應該就能dump出最終的payload。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 国产精品伊人久久伊人电影| 久久永久免费人妻精品下载| 中文无码久久精品| 国产精品自拍一区| 亚洲AV成人精品网站在线播放 | 国产精品黄网站| 亚洲第一区精品日韩在线播放| 久久99精品久久久久久| 久久99精品久久久久久动态图| 青娱乐国产精品视频| 99久久99久久精品国产片果冻| 国产成人精品白浆久久69| 最新国产成人精品2024| 国产精品午夜一级毛片密呀| 九九热这里只有在线精品视| 亚洲av无码国产精品色午夜字幕| 精品国产一区二区三区2021| 亚洲国产精品自在在线观看| jizz国产精品网站| 国产精品久久久久久吹潮| 久久亚洲国产成人精品性色| 亚洲日韩精品一区二区三区| 日韩精品一区二区三区中文字幕| 国内精品欧美久久精品| 国产精品igao视频| 国产精品日日摸夜夜添夜夜添1国产精品va欧美精| 国产成人精品日本亚洲专| 99精品国产一区二区三区| 国产麻豆精品久久一二三| 国产网红无码精品视频| 国产亚洲色婷婷久久99精品| 精品永久久福利一区二区| 少妇人妻偷人精品视频| 日韩精品无码一区二区三区免费 | 国产亚洲精品无码成人| 色一乱一伦一图一区二区精品| 亚洲日韩精品A∨片无码| 亚洲αv在线精品糸列| 亚洲国产美女精品久久久久∴| 伊人久久无码精品中文字幕| 亚洲国产精品无码av|