20145215《网络对抗》Exp3 免杀原理与实践
20145215《网络对抗》Exp3 免杀原理与实践
基础问题回答
- 杀软是如何检测出恶意代码的?
- 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
- 基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
- 免杀是做什么?
- 我的理解就是通过一些技术手段,使安插在宿主主机中的后门软件不被杀毒软件所发现。
- 免杀的基本方法有哪些?
- 加壳:就是相当于把你的后门代码封装起来,但是现在大部分公开的壳都能被杀毒软件查出来,所以加这些壳还不如不加;
- 加花指令:就是加一段垃圾代码,但是并不影响程序的正常执行,加了花指令后,使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果;
- 再编译:如果有源代码可以使用其他语言重新编写再编译,或者利用已有的shellcode构造payload重新编译生成;
- 修改行为:尽量少做能被杀毒软件直接检测到的敏感行为,可以使用反弹式连接,或者减少对系统注册表之类的修改。
实践内容
目录
- 使用msf生成后门程序的检测
- 使用veil-evasion生成后门程序的检测
- 利用shellcode编写后门程序的检测
- 第一次尝试:将shellcode逆序
- 第二次尝试:将shellcode与字母进行异或
- 第三次尝试:将shellcode逆序和异或结合
使用msf生成后门程序的检测
直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下:


从图中可以看出,报毒率还是挺高的,39款杀软中就有21款扫描出病毒,基本上也就是说现在主流的杀软都能杀出来。所以,我们可以猜想如果在使用msf时对它多编码几次,是不是后门代码就不那么容易被扫出来呢?我们可以测试一下,假设编码10次(具体指令实验指导上都有,在此就不一一赘述):

将生成的文件放到网站上扫描一下:

可以发现无论编码多少次都是一样,所以想要利用编码次数来达到免杀效果显然是不行的。
使用veil-evasion生成后门程序的检测
我一开始用的是自己装的kali系统,所以要先安装veil-evasion,结果发现下载速度都要慢哭了,而且装了一段时间后还报出了错误:

后面又想到了一个办法,在github上找到了这个软件源,想用
git clone把它克隆下来然后安装,结果速度依然慢哭,没办法,还是乖乖用了老师的kali,启动evail-evasion,设置好回连的IP地址和端口号后,生成后门文件:

放到网站上扫描一下:

比之前用msf生成的文件报毒率要更低,放到Win7的主机中扫描一下,被360杀毒查出来了:

利用shellcode编写后门程序的检测
先使用msf生成一个C语言格式的shellcode:

利用shellcode编写一个C语言后门程序,编译运行后,在kali上测试其是否可用:


程序运行后被360杀毒很快就查出来了,说明360杀毒还是挺强的:

放到网上的扫描结果是有12%的软件能扫出来,报毒率比用veil-evasion又要低一些:

第一次尝试:将shellcode逆序
直接利用shellcode写的C语言程序还是不能实现免杀,如果我们将shellcode先进行逆序操作得到另外一个数组,然后之后再把它逆序回来,这样是不是能躲过杀软的追杀呢?重新编写代码,编译运行,依旧能被扫出来:

放到网上的结果,比之前的免杀率要稍微高一些:

第二次尝试:将shellcode与字母进行异或
如果将shellcode与字母进行异或,相当于是改变了其特征码,这样的结果又会如何?测试结果是没有被360杀毒扫出来:

网站上免杀率较之前又有了小幅度提升:

第三次尝试:将shellcode逆序和异或结合
既然进行异或可以实现免杀,如果将异或与逆序相结合是不是免杀率会更高呢?理论上应该是这样,编写代码运行后,首先我的win7系统上的360杀毒没有扫描出来:

放到网站上,免杀率还是没有改变,依旧能被3个杀软扫出来,或许其中还是包含一定的敏感行为:

为测试后门程序的免杀性能,我还将这个程序传到了室友win10的系统上,依旧没有被扫描出来,证明其应该在大部分的计算机上还是可用的:

接着回连测试一下,证明其功能依旧能正常使用:


离实战还缺些什么技术或步骤
- 首先,如何将后门程序植入靶机还需要一定的技术,目前我们实验中是直接用nc指令传到我们靶机的,但是在实战中,靶机不可能会这么容易让我们的后门程序植入,当然,我们也可以考虑利用钓鱼网站来达到这一目的。
- 杀毒软件的病毒库在不断地更新,或许我们今天用的技术过几天就用不了了,所以最好还是能够根据漏洞直接自己来写代码,而不是用软件来生成,另外还要对杀毒软件的杀毒原理进行更深层次的分析,以免来达到更好的效果。
实验总结与体会
- 之前我们大多数时候可能都过度依赖于杀毒软件,觉得只要装了杀软就基本上不用愁了。诚然,在很多时候杀毒软件还是能帮我们扫出很多病毒,但是通过这次实验我们也可以发现要想制作出免杀的病毒其实也并不难,因此,关键还是要提高自己的安全意识,除了杀软之外,我们也可以利用配置防火墙,监控注册表、端口等一些行为来保障我们计算机的安全。
- 目前我们做的免杀后门还是比较基础,离真正实际应用还是有一定的距离,不过现在的实验也为我们之后更深入的研究打下了良好的基础,总体来讲,这次实验还是非常有趣的,在不断探索中,慢慢实现了自己的目标。
20145215《网络对抗》Exp3 免杀原理与实践的更多相关文章
- 2018-2019-2 20165205 网络攻防Exp3免杀原理与实践
2018-2019-2 20165205 网络攻防Exp3免杀原理与实践 一.实践内容 1.1正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用 ...
- 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内核第七节 20135332武西垚
预处理.编译.链接和目标文件的格式 可执行程序是怎么得来的 以C语言为例,c代码经过编译器的预处理,编译成汇编代码,由汇编器编译成目标代码,再链接成可执行文件,由操作系统加载到cpu里来执行. (截图 ...
- 第一个Sprint
项目名字:四则运算APP 开发环境:java 团队名称:会飞的小鸟 团队成员:陈志棚 李炫宗 刘芮熔 徐侃 罗伟业 一.经过宿舍世纪讨论后我们剔除了一些不合理的设计,比如网站管理员这一部分在 ...
- [转]java实现,输入数据,空格继续,回车结束输入
普通版:可输入,可输出.带详细的注释 import java.util.Scanner; public class SumDemo { public static void main(String[] ...
- PAT L2-011 玩转二叉树
https://pintia.cn/problem-sets/994805046380707840/problems/994805065406070784 给定一棵二叉树的中序遍历和前序遍历,请你先将 ...
- sap 最新财报以及云业务转型情况
SAP第四季度收入超预期 加码云转型启动重组计划 http://soft.zhiding.cn/software_zone/2019/0130/3115457.shtml 尽管第四季度超出收入预期,但 ...
- GS使用HTTPS登录的设置过程
1. Windows 增加角色服务 服务器配置管理器, 添加角色服务 增加角色功能里面有: 证书颁发机构 证书颁发机构 web注册 2. AD CS配置 主要是next操作 独立ca 根证书 等 3. ...
- (String)强制转换、toString()和String.valueOf()的区别
String:毫无疑问,这种就是强转形式,简单方便,效率高.java程序员可能看到效率高或许有些激动,但是它有他的不好,那就是局限性.在java的世界里没有什么东西是没有缺点的,总有一些好的方面同时也 ...
- sql 数据库(表空间),用户 相关命令
随便转载,保留出处:http://www.cnblogs.com/aaron-agu/ 查看所有数据库 show databases; 创建新数据库 create datebase dbname:#登 ...
- 【转】Thread Local的正确原理与适用场景
本文转发自技术世界,原文链接 http://www.jasongj.com/java/threadlocal/ ThreadLocal解决什么问题 由于 ThreadLocal 支持范型,如 Thre ...
- 如何在Vue项目中引入jQuery?
假设你的项目由vue-cli初始化 (e.g. vue init webpack my-project). 在你的vue项目目录下执行: npm install jquery --save-dev 打 ...