20154312 曾林 Exp3 免杀原理与实践
20154312 曾林
0.写在前面
AV厂商检测恶意软件的方式主流的就三种:
- 基于特征码的检测
- 启发式恶意软件检测
- 基于行为的恶意软件检测
我们要做的就是让我们的恶意软件没法被这三种方式找到,也就是免杀。具体的手段有:
改变特征码
- 如果你手里只有EXE
- 有shellcode(像Meterpreter)
- 有源代码
改变行为
- 通讯方式
- 操作模式
非常规方法
1.实践
1.0实验系统环境
靶机:
系统:Windows7 x64
杀软:360安全卫士 V11.4.0.2049
攻击机:
Kali 虚拟机
检测网站:
Viruscan
1.1MSF编码器
MSF编码器也就是上个实验玩的那个,所以我直接用上个实验的20154312_backdoor.exe
去检测了。(改了个名字,因为含有数字的话Viruscan会提示含广告,可能就和什么WG123456一样?)
很显然,裸奔的后门非常的惨,19个杀软都检测到了它。(请记住这个没检测出后门的Baidu Antivirus)
把这个后门编码十次之后还是一样的19个杀软检测到没有任何实质性的变化。这种老套路只要不是太蠢的杀软肯定都能识别(别问了,Baidu Antivirus还是没有检测出来)
1.2veil-evasion
是一个和Metasploit类似的免杀平台,Kali里没有,用sudo apt-get install
安装以下就ok。
安装完成后,用use evasion
命令进入Evil-Evasion
选择一个模板生成payload,选啥都可以,提供的模块还是挺多的。
拷贝到win10的过程中,被无情的拦截。
在那个时候还没有安装杀软的win7上还是一条好汉,回连是直接成功的
看看Viruscan的扫描结果怎么样吧
好在是比MSF进步了很多,只有8个引擎检测出来了有后门。(Baidu Antivirus总算是有所进步...)
试试看装了360之后能不能扫出来
嗯,国内第一大病毒杀软可不是吹的。
1.3shellcode
1.3.1Windows环境编译
在VS里编辑好直接编译就好
回连是没有任何问题的
还是一样用Viruscan和360扫描一下
比之前用Evil又好了很多,只有三个引擎报警。
360沦陷了...(我有个大胆的想法)
1.3.2Linux环境编译
这一块编译过程没截图,反正思路就是把shellcode放到C文件里面,然后i686-w64-xxx.c -o xxx.exe
编译一下就ok。回连也是没有任何问题的。继续Viruscan+360扫描
一夜回到解放前,被11个引擎查杀了
360这边也不乐观,直接被找到了
1.4加壳
1.4.1UPX加壳
用下面的命令来加这个压缩壳
# upx 4312-1.exe -o 4312-1v3.exe
成功之后结果如下
来,继续viruscan检测一下
8个,emmmm比前面没有加壳好一点点。
在我拷贝到win10的过程中直接被杀了...
1.4.2Hyperion加壳
用下面命令来加这个加密壳
/root/veil-evasion/tools/hyperion/#wine hyperion.exe -v 4312-1.exe 4312-1v2.exe
记得先cd到Hyperion这个文件夹
加壳之后的结果
继续viruscan扫描一下
...你真的加壳了吗...
1.5shellcode变形
这一块就比较有意思了,看了学长学姐们的一些方法,我打算把shellcode去和一个固定16进制数做异或,因为是43的所以选了个0x43
,用来得到异或结果的函数其实很简单。源代码就不在这放了,反正用函数就能得到异或的结果
异或的结果复制到word或者notepad++替换,
为,0x
放回shellcode里面,然后在之前的后门程序里面重新异或一次0x43
,可能会遇到strlen函数
报错,因为本身是一个const char
变成了unsigned char
,strlen()
会报错的。最简单的方法直接数就好了,341个16进制字符,直接把strlen(met)
改成341就ok,编译一下。
Viruscan+360
近乎完美的通过。
伪装一下骗同学岂不是美滋滋
1.6实测于杀软共生
一个Windows直接编译的shellcode以及异或后的shellcode都是可以共生的。
2.报告
2.1总结
本次实验一共有如下版本
版本名称 编译方式 viruscan 360
1. 4312 8 F
2. 4312-1 Kali下编译shellcode 11 F
3. 4312-2 Windows下编译shellcode 6 T
4. 4312-3 异或后的shellcode 1 T
5. 4312-1 v2 UPX加壳 8 F
6. 4312-1 v3 Hyperion加壳 12 F
总结就是啥都不干也比用Hyperion加壳好。
自给自足,自己用C去编一个shellcode是最好用的。
2.2基础问题回答
- (1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
- 启发式恶意软件检测
- 基于行为的恶意软件检测
(2)免杀是做什么?
防止被杀软检测出来(3)免杀的基本方法有哪些?
1.改变特征码
2.加壳
2.3离实战还差哪些技术或步骤
IP地址转换技术
社会工程学(骗人)
20154312 曾林 Exp3 免杀原理与实践的更多相关文章
- 20155209 林虹宇 Exp3 免杀原理与实践
Exp3 免杀原理与实践 使用msf生成后门程序的检测 将上周msf生成的后门文件放在virscan.org中进行扫描 结果很危险 使用msf编码一次进行扫描 使用msf编码10次进行扫描 结果同样很 ...
- 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...
- 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...
- 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...
- 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...
- 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践
- 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践 - 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...
- 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践
2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...
- 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...
- 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践
2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...
随机推荐
- Linux 修改文件和文件夹权限
查看当前目录和文件权限 ls -l 文件属性 连接数 文件拥有者 所属群组 文件大小 文件修改时间 文件名drwxr-xr-x 4 william wheel 136 Apr 10 23:34 ven ...
- 【JSP】EL函数和自定义EL函数
简介 EL原本是JSTL1.0中的技术(所以EL和JSTL感情如此好就是自然的了),但是从JSP2.0开始,EL就分离出来纳入了JSP的标准了.但是EL函数还是和JSTL技术绑定在一起.下面将介绍如何 ...
- Xcode快速排错
EXTENDS:http://blog.csdn.net/guo_hongjun1611/article/details/8063009 1,模拟器运行完全没问题,真机运行失败. 有时候我们在模拟器上 ...
- linux安装环境
我用的是Linux ubuntu 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 ...
- php---进行签名验证
为什么要进行签名,我们在进行数据请求的时候,为了防止数据被人截取,造成不好的影响,所以我们在进行数据请求的时候,需要进行签名验证,进行签名的原理是:客户端和服务端使用同样的签名算法,来计算签名,当客户 ...
- Saltstack生产案例之系统初始化
把之前的配置打个包 zip -r salt.zip * 拷贝到/root/tools目录 博客园文件里面也保留一份,删除之前所有的salt配置文件重新开始 想 1,系统初始化 2,功能模块:设置单独的 ...
- c++中inline函数的意义
inline C++关键字,在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数.关键字inline必须与函数定义放在一起才能使函数成为内联,仅仅将inline放在函数声 ...
- 2.0CNN
介绍 https://www.youtube.com/watch?v=jajksuQW4mc https://www.youtube.com/watch?v=2-Ol7ZB0MmU https://w ...
- CodeForces - 665D Simple Subset 想法题
//题意:给你n个数(可能有重复),问你最多可以取出多少个数使得任意两个数之和为质数.//题解:以为是个C(2,n)复杂度,结果手摸几组,发现从奇偶性考虑,只有两种情况:有1,可以取出所有的1,并可以 ...
- 忽略Git仓库中已经存在的文件
解决方案 使用Git bash进入到要忽略的文件所在的文件夹,执行以下命令即可 git update-index --assume-unchanged rebel.xml 参考 Ignore Git ...