20145215《网络对抗》Exp3 免杀原理与实践

基础问题回答

  1. 杀软是如何检测出恶意代码的?

    • 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
    • 基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
  2. 免杀是做什么?
    • 我的理解就是通过一些技术手段,使安插在宿主主机中的后门软件不被杀毒软件所发现。
  3. 免杀的基本方法有哪些?
    • 加壳:就是相当于把你的后门代码封装起来,但是现在大部分公开的壳都能被杀毒软件查出来,所以加这些壳还不如不加;
    • 加花指令:就是加一段垃圾代码,但是并不影响程序的正常执行,加了花指令后,使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果;
    • 再编译:如果有源代码可以使用其他语言重新编写再编译,或者利用已有的shellcode构造payload重新编译生成;
    • 修改行为:尽量少做能被杀毒软件直接检测到的敏感行为,可以使用反弹式连接,或者减少对系统注册表之类的修改。

实践内容

目录

使用msf生成后门程序的检测

  1. 直接将上周做实验时用msf生成的后门文件放在virscan.org中进行扫描,扫描结果如下:

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

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

  4. 可以发现无论编码多少次都是一样,所以想要利用编码次数来达到免杀效果显然是不行的。

使用veil-evasion生成后门程序的检测

  1. 我一开始用的是自己装的kali系统,所以要先安装veil-evasion,结果发现下载速度都要慢哭了,而且装了一段时间后还报出了错误:

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

  3. 放到网站上扫描一下:

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

利用shellcode编写后门程序的检测

  1. 先使用msf生成一个C语言格式的shellcode:

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

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

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

第一次尝试:将shellcode逆序

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

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

第二次尝试:将shellcode与字母进行异或

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

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

第三次尝试:将shellcode逆序和异或结合

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

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

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

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

离实战还缺些什么技术或步骤

  1. 首先,如何将后门程序植入靶机还需要一定的技术,目前我们实验中是直接用nc指令传到我们靶机的,但是在实战中,靶机不可能会这么容易让我们的后门程序植入,当然,我们也可以考虑利用钓鱼网站来达到这一目的。
  2. 杀毒软件的病毒库在不断地更新,或许我们今天用的技术过几天就用不了了,所以最好还是能够根据漏洞直接自己来写代码,而不是用软件来生成,另外还要对杀毒软件的杀毒原理进行更深层次的分析,以免来达到更好的效果。

实验总结与体会

  • 之前我们大多数时候可能都过度依赖于杀毒软件,觉得只要装了杀软就基本上不用愁了。诚然,在很多时候杀毒软件还是能帮我们扫出很多病毒,但是通过这次实验我们也可以发现要想制作出免杀的病毒其实也并不难,因此,关键还是要提高自己的安全意识,除了杀软之外,我们也可以利用配置防火墙,监控注册表、端口等一些行为来保障我们计算机的安全。
  • 目前我们做的免杀后门还是比较基础,离真正实际应用还是有一定的距离,不过现在的实验也为我们之后更深入的研究打下了良好的基础,总体来讲,这次实验还是非常有趣的,在不断探索中,慢慢实现了自己的目标。

20145215《网络对抗》Exp3 免杀原理与实践的更多相关文章

  1. 2018-2019-2 20165205 网络攻防Exp3免杀原理与实践

    2018-2019-2 20165205 网络攻防Exp3免杀原理与实践 一.实践内容 1.1正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用 ...

  2. 2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165232 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  3. 2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165237 Exp3 免杀原理与实践 一.实践目标 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳 ...

  4. 2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165221 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 主要依托三种恶意软件检测机制. 基于特征码的检测:一段特征码就是一段或者多 ...

  5. 2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165325 Exp3 免杀原理与实践 实验内容(概要) 一.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  6. 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践

    - 2018-2019-2 网络对抗技术 20165206 Exp3 免杀原理与实践 - 实验任务 1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己 ...

  7. 2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践

    2018-2019-3 网络对抗技术 20165235 Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 1.对某个文件的特征码进行分析,(特征码就是一类恶意文件中经常出现的一段代 ...

  8. 2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165311 Exp3 免杀原理与实践 免杀原理及基础问题回答 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil- ...

  9. 2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165317 Exp3 免杀原理与实践 实验内容 任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用 ...

随机推荐

  1. 'config.h' file not found 解决过程

    最近将ReactNative业务集成进现有APP项目中,出现了几个具有代表性的问题,下面记录一下 问题1. [!] CocoaPods could not find compatible versio ...

  2. PairProject 总结

    结对编程人员:张迎春,赵梓皓.下面是我们一起编程的照片. 结对编程的优点: 首先,结对编程的目的是为了减少编程的错误,在编程的时候,大家一起检查错误,一起分析有没有更加合理的编写方法,所以这是结对编程 ...

  3. Notes of Daily Scrum Meeting(12.23)

    今天的团队任务总结如下: 团队成员 今日团队工作 陈少杰 调试网络连接,寻找新的连接方法 王迪 建立搜索的UI界面 金鑫 查阅相关资料,熟悉后台的接口 雷元勇 建立搜索的界面 高孟烨 继续美化界面,熟 ...

  4. 《Linux内核分析》第六周学习笔记

    <Linux内核分析>第六周学习笔记 进程的描述和创建 郭垚 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/co ...

  5. Linux内核分析——第十八章 调试

    第十八章    调试 18.1 准备开始 1.在用户级的程序里,bug表现比较直接:在内核中却不清晰. 2.内核级开发的调试工作远比用户级开发艰难的多. 3.准备工作需要的是: (1)一个bug (2 ...

  6. Github链接及git学习心得总结

    众所周知GitHub已经是当下非常流行的代码托管库了,全世界有无数的程序员把他们的代码放在GitHub里.那比起云盘之类的工具,用GitHub有什么好处呢:1. 以后在帖子里只需要扔一个链接,大家就能 ...

  7. Vector,ArrayList, LinkedList的区别

    1.Vector.ArrayList都是以类似数组的形式存储在内存中,LinkedList则以链表的形式进行存储. 2.List中的元素有序.允许有重复的元素,Set中的元素无序.不允许有重复元素. ...

  8. php配置虚拟主机

    在httpd.conf的目录下,新建一个配置文件virtualhost-host.conf,添加虚拟主机配置 <VirtualHost *:80> DocumentRoot "E ...

  9. 深入浅出——float

    FLOAT  参考张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]的CSS float浮动的深入研究.详解及拓展 1.FLOAT的特性 float属性的初衷只是为了实现文字 ...

  10. Java之JSON操作(Jackson)

    Java to JSON: package json.jackson; import bean.User; import com.fasterxml.jackson.databind.ObjectMa ...