首頁 運維 安全 Mitre ATT&CK矩陣中的三種流程注入手法

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

Nov 26, 2019 am 10:02 AM
矩陣

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使進程掛起

1 (2).jpg

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。

更多相關教學推薦:web伺服器安全性

#

以上是Mitre ATT&CK矩陣中的三種流程注入手法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

探索人工智慧歷史與矩陣:人工智慧教學(二) 探索人工智慧歷史與矩陣:人工智慧教學(二) Nov 20, 2023 pm 05:25 PM

在本系列的第一篇文章中,我們討論了人工智慧、機器學習、深度學習、資料科學等領域的關聯和差異。我們也為整個系列將使用的程式語言、工具等做出了一些艱難的選擇。最後,我們也介紹了一點矩陣的知識。在本文中,我們將深入討論人工智慧的核心——矩陣。不過在此之前,我們先來了解一下人工智慧的歷史我們為什麼需要了解人工智慧的歷史呢?歷史上曾出現過多次人工智慧熱潮,但在許多情況下,對人工智慧潛力的巨大期望都未能達成。了解人工智慧的歷史,有助於讓我們看清這次人工智浪潮是會創造奇蹟,抑或只是另一個即將破滅的泡沫。我們

計算矩陣右對角線元素總和的Python程序 計算矩陣右對角線元素總和的Python程序 Aug 19, 2023 am 11:29 AM

一種受歡迎的通用程式語言是Python。它被應用於各種行業,包括桌面應用程式、網頁開發和機器學習。幸運的是,Python具有簡單易懂的文法,適合初學者使用。在本文中,我們將使用Python來計算矩陣的右對角線總和。什麼是矩陣?在數學中,我們使用一個矩形排列或矩陣,用於描述一個數學物件或其屬性,它是一個包含數字、符號或表達式的矩形數組或表格,這些數字、符號或表達式按行和列排列。例如−234512367574因此,這是一個有3行4列的矩陣,表示為3*4矩陣。現在,矩陣中有兩條對角線,即主對角線和次對

如何使用Python中的numpy計算矩陣或ndArray的行列式? 如何使用Python中的numpy計算矩陣或ndArray的行列式? Aug 18, 2023 pm 11:57 PM

在本文中,我們將學習如何使用Python中的numpy函式庫計算矩陣的行列式。矩陣的行列式是一個可以以緊湊形式表示矩陣的標量值。它是線性代數中一個有用的量,並且在物理學、工程學和計算機科學等各個領域都有多種應用。在本文中,我們首先將討論行列式的定義和性質。然後我們將學習如何使用numpy計算矩陣的行列式,並透過一些實例來看它在實踐中的應用。行列式的定義與性質Thedeterminantofamatrixisascalarvaluethatcanbeusedtodescribethepropertie

Python程式使用多維數組相乘兩個矩陣 Python程式使用多維數組相乘兩個矩陣 Sep 11, 2023 pm 05:09 PM

矩陣是按行和列排列的一組數字。 m行n列的矩陣稱為mXn矩陣,m和n稱為其維度。矩陣是一個二維數組,在Python中使用列表或NumPy數組創建。一般來說,矩陣乘法可以透過將第一個矩陣的行乘以第二個矩陣的列來完成。這裡,第一矩陣的列數應等於第二矩陣的行數。輸入輸出場景假設我們有兩個矩陣A和B,這兩個矩陣的維度分別為2X3和3X2。相乘後得到的矩陣將有2行1列。 [b1,b2][a1,a2,a3]*[b3,b4]=[a1*b1+a2*b2+a3*a3][a4,a5,a6][b5,b6][a4*b2+a

C程式用於比較兩個矩陣是否相等 C程式用於比較兩個矩陣是否相等 Aug 31, 2023 pm 01:13 PM

使用者必須輸入兩個矩陣的順序以及兩個矩陣的元素。然後,比較這兩個矩陣。如果矩陣元素和大小都相等,則表示兩個矩陣相等。如果矩陣大小相等但元素相等不相等,則顯示矩陣可以比較,但不相等。如果大小和元素不匹配,則顯示矩陣無法比較。程式以下是C程序,用以比較兩個矩陣是否相等-#include<stdio.h>#include<conio.h>main(){  intA[10][10],B[10][10];  in

Python程式:交換矩陣中第一個與最後一個元素在列之間的位置 Python程式:交換矩陣中第一個與最後一個元素在列之間的位置 Sep 08, 2023 pm 04:29 PM

矩陣是由許多按行和列形式排列的數字組成的二維數組。 Python沒有任何資料類型來表示矩陣,但我們可以使用嵌套列表或NumPy數組作為矩陣。請參閱以下輸入輸出場景,以了解如何互換矩陣的第一列和最後一列元素。輸入輸出場景假設我們有一個使用列表列表表示的3X3矩陣。輸出矩陣將是交換第一列和最後一列元素的結果矩陣。 Inputmatrix:[1,3,4][4,5,6][7,8,3]Outputmatrix:[4,3,1][4,5,6][3,8,7]讓我們考慮另一個行和列不相等的矩陣。 Inputmatrix:

矩陣間的帳號如何進行倒流?矩陣倒置是什麼意思? 矩陣間的帳號如何進行倒流?矩陣倒置是什麼意思? Mar 27, 2024 pm 12:16 PM

在社群媒體運作中,矩陣帳號倒流是一種常見的策略,透過在不同帳號之間相互引導流量,實現粉絲的互相補充和活躍度的提升。矩陣帳號之間的倒流需要精心策劃和執行,不是一件簡單的事。本文將詳細探討如何在不同帳號之間實現倒流,以及矩陣倒置的意義。一、矩陣間的帳號如何進行倒流?在矩陣帳號中,選擇一個主線帳號至關重要,它將成為主要的流量來源和核心內容發佈的平台。內容規劃是根據帳號特色和目標受眾,制定相應的內容計劃,以確保內容品質和風格統一。 3.互推互贊:在矩陣帳號之間進行互推互贊,透過合理的佈局與安排,引導粉絲

抖音帳號矩陣怎麼搭建好?做矩陣怎麼解決帳號問題? 抖音帳號矩陣怎麼搭建好?做矩陣怎麼解決帳號問題? Mar 25, 2024 pm 11:01 PM

隨著短影片產業的快速發展,抖音已成為國內最受歡迎的短影片平台之一。許多企業和自營商都希望透過建構抖音帳號矩陣來擴大自己的影響力。那麼,如何搭建好抖音帳號矩陣呢?本文將為你解答這個問題,並介紹解決帳號問題的方法。一、抖音帳號矩陣怎麼搭建好?在建立抖音帳號矩陣時,首要任務是準確地決定每個帳號的定位。根據品牌或個人的特色,明確各帳號的主題和風格,從而能夠吸引目標受眾。確定內容策略是關鍵,它包括內容主題、發布頻率和拍攝技巧等方面。這些步驟能夠幫助帳號矩陣充分發揮效益。 3.帳號間互動:在各個帳號之間建立良

See all articles