錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務,錦州廣廈維修電腦,公司IT外包服務
topFlag1 設為首頁
topFlag3 收藏本站
 
maojin003 首 頁 公司介紹 服務項目 服務報價 維修流程 IT外包服務 服務器維護 技術文章 常見故障
錦州市廣廈電腦維修|上門維修電腦|上門做系統|0416-3905144熱誠服務技術文章
任意代碼保護與內核代碼注入的那些事兒

作者: 佚名  日期:2018-06-24 20:06:47   來源: 本站整理

 

寫在前面的話
類似 WannaCry 和 Slingshot 這樣的惡意軟件最常用的一種攻擊技術就是內核代碼注入,在近期剛剛發布的 Windows 10 Creators 更新中,微軟引入了一種針對遠程代碼執行的新型緩解技術-任意代碼守護衛士(ArbitraryCode Guard)。在這篇文章中,我們將詳細介紹Arbitrary Code Guard的工作機制,并利用內核代碼注入攻擊來測試這項緩解技術的有效性。
Arbitrary Code Guard(任意代碼守護衛士)
微軟將Arbitrary Code Guard(ACG)作為一個可選功能添加進了Windows操作系統中,它可以用來檢測和防止下列情況的出現:
1.   現有代碼被惡意修改;
2.   向一個數據段中寫入并執行代碼;
為了實現這兩個目標,ACG會強制執行這條規則:內存不能同時擁有寫入權限(W)和執行權限(X)。
ACG配合上代碼完整性保護機制(Code Integrity Guard),Windows就可以防止攻擊者將不安全或不可信的代碼加載進內存之中了。
下面給出的是一份代碼注入樣本,它會將進程內存的狀態修改為ACG想要防止出現的狀態:

我們可以看到,這些注入了代碼的頁面同時擁有執行和寫入屬性。
ACG的工作流程
當系統為特定進程創建好緩解方案時,會以下列注冊表路徑向注冊表中添加一個鍵:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options
接下來,Windows會在進程創建的過程中完成緩解方案的相關設置,下面給出的是進程創建過程中的調用棧:
nt!PspAllocateProcess+0xb4b
nt!NtCreateUserProcess+0x723
nt!KiSystemServiceCopyEnd+0x13
ntdll!NtCreateUserProcess+0x14
KERNELBASE!CreateProcessInternalW+0x1b3f
KERNELBASE!CreateProcessW
下面給出的是PspAllocateProcess函數的部分代碼:

其中,下面這兩個函數主要負責加載緩解選項:
 PspReadIFEOMitigationOptions
 PspReadIFEOMitigationAuditOptions
這些函數會從注冊表中讀取下列鍵值:
HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options
我們可以在進程監視器中看到以下活動:

接下來,MitigationsFlagsValues的值將會存儲在EPROCESS結構體中:

ACG如何檢測和屏蔽動態代碼?
正如之前的介紹,ACG會監控內存的分配情況,并防止同時擁有寫入和執行權限,當我們嘗試分配虛擬內存時,調用棧如下:
nt!MiArbitraryCodeBlocked+0x30
nt!MiAllocateVirtualMemory+0x96d
nt!NtAllocateVirtualMemory+0x44
nt!KiSystemServiceCopyEnd+0x13
ntdll+0xa05c4
此時將會調用MiArbitraryCodeBlocked函數,該函數的功能如下圖所示:

我們可以看到,這個函數負責檢測EPROCESS中的緩解選項,并判斷是否允許分配虛擬內存。下面給出的是這個函數的流程圖:

該函數主要實現了下面三件事情:
1.   獲取EPROCESS,檢測是否啟用了緩解選項,并將MitigationsFlags分配進EPROCESS(偏移量0×828)。
2.   檢測ETHREAD中的CrossThreadFlags(0x6d0),以確定線程是否擁有內存分配權限或繞過緩解方案。
3.   跟蹤緩解結果,返回狀態TATUS_DYNAMIC_CODE_BLOCKED(0xC0000604)。
內核代碼注入
接下來我們一起看一看,如果我們嘗試向內核注入代碼時,ACG的表現如何。這里我們會使用惡意軟件常用的兩種內核代碼注入技術:
1.   創建一個新的線程并加載一個動態鏈接庫文件(DLL);
2.   使用一個異步程序調用(APC)來向現有線程中加載一個DLL;
在這兩種技術中,下面幾個步驟是通用的:
1.   綁定目標進程;
2.   獲取Ntdll地址;
3.   獲取LdrLoadDll地址;
4.   通過shellcode分配虛擬內存;
5.   通過shellcode調用LdrLoadDll;
在使用新的線程實現shellocde注入時,我們需要使用NtCreateThreadEx并在shellcode中調用LdrLoadDll。另一方面,如果我們想要使用一個APC來注入shellocde,我們則需要在相應線程中使用APC函數并通過shellcode調用LdrLoadDll。
在這兩種注入方法中,我們需要在分配虛擬內存時同時分配寫入和執行權限,并執行shellcode。正如之前所說的,ACG可以通過防止同時分配寫入和執行權限來屏蔽代碼注入。下面給出的是負責分配虛擬內存的代碼:


在調用ZwAllocateVirtualMemory之后設置斷點(MiArbitraryCodeBlocked)。,我們將能夠在windbg中看到下列信息:

返回值為STATUS_DYNAMIC_CODE_BLOCKED,因此這兩種代碼注入技術都無法繞過ACG。
總結
對于防止用戶模式或內核模式下的代碼注入來說,ACG是一種非常好的選擇,但ACG目前只是一種可選項,因此如果目標設備(進程)沒有開啟ACG的話,攻擊者仍然能夠實現代碼注入。


熱門文章
  • 機械革命S1 PRO-02 開機不顯示 黑...
  • 聯想ThinkPad NM-C641上電掉電點不...
  • 三星一體激光打印機SCX-4521F維修...
  • 通過串口命令查看EMMC擦寫次數和判...
  • IIS 8 開啟 GZIP壓縮來減少網絡請求...
  • 索尼kd-49x7500e背光一半暗且閃爍 ...
  • 樓宇對講門禁讀卡異常維修,讀卡芯...
  • 新款海信電視機始終停留在開機界面...
  • 常見打印機清零步驟
  • 安裝驅動時提示不包含數字簽名的解...
  • 共享打印機需要密碼的解決方法
  • 圖解Windows 7系統快速共享打印機的...
  • 錦州廣廈電腦上門維修

    報修電話:13840665804  QQ:174984393 (聯系人:毛先生)   
    E-Mail:174984393@qq.com
    維修中心地址:錦州廣廈電腦城
    ICP備案/許可證號:遼ICP備2023002984號-1
    上門服務區域: 遼寧錦州市區
    主要業務: 修電腦,電腦修理,電腦維護,上門維修電腦,黑屏藍屏死機故障排除,無線上網設置,IT服務外包,局域網組建,ADSL共享上網,路由器設置,數據恢復,密碼破解,光盤刻錄制作等服務

    技術支持:微軟等
    主站蜘蛛池模板: 亚洲人成人伊人成综合网无码| 国产羞羞的视频在线观看 国产一级无码视频在线 | 无码人妻一区二区三区av| 国产精品亚洲αv天堂无码| 久久久久亚洲av无码专区蜜芽| 精品国产性色无码AV网站| 久久精品岛国av一区二区无码| 国产精品爆乳奶水无码视频| 无码av免费网站| 色欲AV无码一区二区三区| 亚洲av无码精品网站| 国产免费黄色无码视频| 无遮掩无码h成人av动漫| 国产三级无码内射在线看| 亚洲人成人无码网www国产| 亚洲av中文无码乱人伦在线观看 | 国产成年无码久久久久毛片| 亚洲AV无码成人精品区日韩 | 无码人妻一区二区三区免费视频| 久久人妻无码中文字幕| 丰满日韩放荡少妇无码视频| 国产精品白浆在线观看无码专区| 亚洲精品无码久久久久APP | 麻豆亚洲AV成人无码久久精品 | 五月丁香六月综合缴清无码| 久久久g0g0午夜无码精品| 麻豆AV无码精品一区二区| 无码视频在线观看| 亚洲国产精品无码久久久不卡| 亚洲精品人成无码中文毛片| 国产成人无码区免费A∨视频网站| 亚洲AV无码专区亚洲AV桃| 无码丰满熟妇juliaann与黑人| 亚洲av日韩av无码av| 无码人妻少妇色欲AV一区二区| 无码丰满少妇2在线观看| 久久久久亚洲av无码专区导航| 久久ZYZ资源站无码中文动漫| 无码国产精品一区二区免费式影视 | 一本久道中文无码字幕av| 免费无码成人AV片在线在线播放|