第115天:免杀对抗-特征码定位&添加花指令&加冷门壳&加反VT保护&资源修改

在这里插入图片描述

知识点

#知识点:
1、特征码扫描-花指令&定位修改
2、文件检验法-资源修改&加签名
3、沙盒检测法-冷门壳&代码运行保护

#章节点:
编译代码面-ShellCode-混淆
编译代码面-编辑执行器-编写
编译代码面-分离加载器-编写
程序文件面-特征码定位-修改
程序文件面-加壳花指令-资源
代码加载面-Dll反射劫持-加载
权限逻辑面-杀毒进程干扰-结束
工具数据面-通讯内存流量-动态

对抗目标:
X60 Defender 某绒 管家 VT等

编程语言:
C/C++ Python C# Go Powershell Ruby Java ASM NIM Vlang等。

涉及技术:
ShellCode混淆,无文件落地,分离拆分,白名单,DLL加载,Syscall,加壳加花,
资源修改,特征修改,二次开发CS,内存休眠,进程注入,反沙盒,反调试,CDN解析等

演示案例

1、成品EXE-反特征码-通用跳转&花指令
2、成品EXE-反VT沙盒-加壳加保护加资源
常见查杀方式理论点:
1、特征码扫描(静态):所谓"特征码"其实就是程序内部的一串或者几串二进制机器码。特征码匹配工作原理是先总结出某个病毒的特征码,然后在目标文件中搜索看有没有类似的匹配,如果有匹配就暂定为病毒文件。优点:速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与。缺点:采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新病毒库的版本,否则检测工具便会老化,逐渐失去实用价值;病毒特征代码法对从未见过的新病毒,无法知道其特征代码,因而无法去检测新病毒;病毒特征码如果没有经过充分的检验,可能会出现误报,数据误删,系统破坏,给用户带来麻烦。

2、文件和校验法:将正常文件A的hash值保存,然后如果有一个新的A文件发送过来计算其hash值,如果与正常文件的不同,那么认定为病毒文件。

3、沙盒检测(动态):基于"行为"的检测,看有没有一些敏感的行为来确定文件是否为病毒。优点是可能发现未知的病毒,缺点是误报相对较高,需要用户参与。

4、云查杀:类似于特征码查杀。只是如果特征码库没有匹配值的时候会把文件上传到云端继续分析,有时候扫描病毒刚扫描出来不是病毒,但过一会儿扫描就是病毒了,这种行为就是云查杀。

#成品EXE-反特征码-通用跳转&花指令
1、C/C++-Project4-通用跳转法
特征码区域汇编移动到全0区域后用jmp调用
2、C/C++-Project2-花指令改入口
添加花指令重定向修改入口地址从而打乱特征码位置

#成品EXE-反VT沙盒-加壳加保护加资源
加壳:Py-Pyinstall-UPX Tool等
加资源:Py-Pyinstall-Restorator
加保护:C-Project2-VMProject Shielden等

总结

之前针对的是没有打包成exe的代码做文章,现在是对打包好了的exe做文章

今天针对打包好的exe免杀,介绍了以下几种技术:
1、通用跳转法:
主要思想:通过跳转至其他代码区域执行代码,而不是按照原始代码的顺序线性执行,难以被静态查杀。
利用工具(VirTest)检测特征码的位置,然后将特征码区域汇编移动到全0区域(即空白区),先jmp到移动后的区域,然后再jmp回来继续执行。
2、花指令改入口:
花指令就是一些垃圾汇编指令(无实际操作的指令),可以使结构更加混乱,增加查杀难度,但单纯的花指令效果一般。
利用工具(万花筒-花指令生成器)添加花指令,在前部或其他位置插入大量的花指令,
在花指令区域内,嵌入一个真正的入口点代码,将执行流转移到恶意代码的真实执行入口(一般是较后的代码块)。
3、加壳:
可利用工具(UPX Tool)加壳,主要目的是防止杀软的反调试/反编译。
4、加资源:
比如可以用工具(Restorator)将图标、版本、界面风格等替换成火绒(即其他正常exe)的,但效果一般。
5、加保护:
可以用工具(Shielden)设置代码加密、检测VT虚拟机运行、检测反调试/反编译等

常见杀软的查杀方式总结:(总的来说可以分为静态、动态两种)
1、特征检测:
通过使用病毒特征库,查找文件中已知的病毒、恶意软件特征。这些特征可以是恶意代码的特定指令序列、字符串、哈希值等。
2、文件校验:
将正常文件A的hash值保存,然后如果有一个新的A文件发送过来计算其hash值,如果与正常文件的不同,那么认定为病毒文件。
3、沙盒检测:
基于行为的检测,放到类似于虚拟机的隔离环境中执行,看有没有一些敏感的行为来确定文件是否为病毒。
4、云查杀:
类似于特征检测。上传到云端比对恶意特征,从而判断文件是否是恶意的。可能刚开始没有杀,但过几分钟杀了,这种行为就是云查杀(360就是)

关于"加壳"1、在可执行程序中植入一段代码,运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,目的是隐藏程序真正的OEP(入口点)。
2、一般的可执行程序可以很轻松的被反编译工具修改,但如果加壳就不是那么容易了,需要先脱壳,动态调试根本就没有进到源程序。
3、加壳一般分为压缩壳和加密壳。压缩壳并不能免杀,只是为了减少体积。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值