當前位置:
首頁 > 最新 > AppDomainManager後門的實現思路

AppDomainManager後門的實現思路

0x00 前言

從Casey Smith@subTee學到的一個技巧:針對.Net程序,通過修改AppDomainManager能夠劫持.Net程序的啟動過程。

如果劫持了系統常見.Net程序如powershell.exe的啟動過程,向其添加payload,就能實現一種被動的後門觸發機制。

學習鏈接:

http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html

0x01 簡介

本文將要介紹以下內容:

劫持自己開發的.Net程序

劫持系統.Net程序powershell_ise.exe

一種針對Visual Studio的利用思路

0x02 相關概念

CLR:

全稱Common Language Runtime(公共語言運行庫),是一個可由多種編程語言使用的運行環境。

CLR是.NET Framework的主要執行引擎,作用之一是監視程序的運行:

1. 在CLR監視之下運行的程序屬於「託管的」(managed)代碼

2. 不在CLR之下、直接在裸機上運行的應用或者組件屬於「非託管的」(unmanaged)的代碼

對於在CLR監視之下的程序,程序啟動的初始化過程可參考如下鏈接:

http://mattwarren.org/2017/02/07/The-68-things-the-CLR-does-before-executing-a-single-line-of-your-code/

值得注意的地方:

如果能從程序啟動的初始化過程中找到一個可供利用的位置,在程序啟動之前載入我們自己的代碼,那麼就可以「濫用」CLR的功能,實現對程序的劫持

更理想的情況下:

如果可被劫持的程序是一個系統常用程序,隨開機自啟動,那麼,這個方法就能作為一個持續性後門

0x03 劫持自己開發的.Net程序

註:

代碼引用自:http://subt0x10.blogspot.com/2017/06/attacking-clr-appdomainmanager-injection.html

1、編寫示常式序

使用Visual Studio,選擇c#開發環境,新建控制台應用程序,工程名:program,代碼如下:

using System;public class Program{ public static void Main() { Console.WriteLine("Inside the App"); }}

編譯生成program.exe

程序運行如下圖

2、編寫payload Dll

選擇c#開發環境,新建類庫,工程名:DomainManager,代碼如下:

using System;namespace DomainManager{ public class InjectedDomainManager : AppDomainManager { public override void InitializeNewDomain(AppDomainSetup appDomainInfo) { base.InitializeNewDomain(appDomainInfo); Console.WriteLine("Blah From AppMgr"); } }}

編譯生成DomainManager.dll

3、設置AppDomainManager劫持程序啟動

將DomainManager.dll放於同級目錄

方法1:

cmd設置環境變數:

set APPDOMAIN_MANAGER_ASM=DomainManager, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nullset APPDOMAIN_MANAGER_TYPE=DomainManager.InjectedDomainManager

執行program.exe,通過查看回顯,發現DomainManager.dll先於program.exe執行

成功實現劫持,完整操作如下圖

註:

注意比較執行順序

通過cmd設置環境變數的方法只會作用於當前cmd,不夠通用

方法2:

更加通用的方法:配置config文件

註:

config文件命名格式:exe+.config

成功實現劫持,完整操作如下圖

0x04 劫持系統.Net程序powershell_ise.exe

接下來,需要找到可供利用的系統.Net程序,嘗試實現持久性後門

這裡選取powershell_ise.exe作為演示

註:

powershell_ise.exe:全稱Windows PowerShell Integrated Scripting Environment(集成腳本環境)

圖形界面,主要用於編寫和調試powershell腳本

操作界面如下圖

為了便於演示,我們需要修改工程DomainManager,使其在運行時彈框

1、添加引用

工程-右鍵-添加引用,選擇System.Windows.Forms

如下圖

代碼修改如下:

using System;using System.Windows.Forms; namespace DomainManager{ public class InjectedDomainManager : AppDomainManager { public override void InitializeNewDomain(AppDomainSetup appDomainInfo) { base.InitializeNewDomain(appDomainInfo); Console.WriteLine("Blah From AppMgr"); MessageBox.Show("1"); } }}

重新編譯生成DomainManager.dll

2、測試

劫持program.exe成功,如下圖

劫持powershell_ise.exe:

(1)測試test目錄

成功劫持powershell_ise.exe

(2)測試powershell_ise.exe默認目錄

路徑如下:

編譯任意powershell腳本,默認啟動powershell_ise.exe,成功劫持

完整操作如下圖

GIF/86K

0x05 一種針對Visual Studio的利用思路

對於Visual Studio的c#工程,在工程目錄下默認存在文件App.config,內容如下:

如果對其修改,添加劫持功能,那麼在編譯程序時,也會同步修改bin目錄下默認生成的config文件

App.config修改如下:

編譯程序,bin目錄下的config文件也被修改,如下圖

如果在bin目錄也放置DomainManager.dll,那麼在程序啟動時會被劫持,如下圖

0x06 小結

本文介紹了一種通過修改AppDomainManager實現的被動後門觸發機制,分析了利用思路,站在防禦者的角度,只需要留意.Net程序同級目錄下的config文件就好。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

開創一個安全極智的未來
使用 apache mod_rewrite 方法隨機提供 payloads
CIA 曾經做過一套黑客工具,可以破解數百款品牌路由器
揭秘中國網路虛假新聞「製造器」,看傳播者如何操縱操縱大眾輿論?
都說印表機不安全,那究竟有多少種黑掉它的姿勢呢?

TAG:嘶吼RoarTalk |

您可能感興趣

spring 使用Resource 後,修改值(實現思路及spring注意事項)
天池中間件大賽Golang版Service Mesh思路分享
Opus Magnum遊戲基本思路分享
【Listing】淺析Listing的整體排布思路
RoboMaster AI 挑戰賽科研思路淺談
Google,OpenAI提出層次強化學習新思路
淺談《Battle Boom》,為卡牌和RTS結合提供新思路
permeate靶場漏洞挖掘思路分享
Encryption 101系列:解密程序的設計思路
不被局限思路下的畫面呈現——Gosia Kulik
7nm 56Gbps SerDes加持,這款ASIC或為AI晶元封裝提供新思路
PowerQuery:空值運算的的解決思路
LOL:嵐切小炮逆版本Carry,QiuQiu新思路擊敗WE
Yoshua Bengio:我不想看到各國AI競賽,對當前AI思路感到擔憂
iPhone 6 Plus搜不到WiFi,手機店沒修好,大神思路清晰一招搞定
火箭少女單曲卡路里被指抄襲Saint motel的拍攝思路
windows入侵排查思路
錯誤頁面中隱藏webshell的騷思路
人工翻譯滯後擾亂思路?MateBook X Pro實時翻譯不用等
Nature子刊:開發靶向FZD/SMO抗癌藥物新思路!