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. 软件工程导论课后习题Github作业(把一个英文句子中的单词次序逆序,单词中字母正常排列)

    Java源代码    package yly; import java.util.Scanner; public class ruanjian { public static void main(St ...

  2. Beta之后的想法

    软件工程如果没选实践,单纯在理论课上面对教条化的理论,这些理论都是很有指导意义的,但没有实践课带来的切实的多人团队合作开发项目的实际体会,很难能领会到其中的深意.知行合一,才能发现软件工程里的知识都是 ...

  3. java.lang.Exception: No tests found matching Method tes(com.bw.test.Testrefiect) from org.junit.vintage.engine.descriptor.RunnerRequest@3bfdc050 at org.junit.internal.requests.FilterRequest.getRunner

    junit   方法  没有加上注解  @Test java.lang.Exception: No tests found matching Method tes(com.bw.test.Testre ...

  4. Linux 忘记root密码

    1 将系统重启,读秒的时候按下任意键就会出现如下图菜单界面 2 进入上图菜单界面之后,按e键就可以进入grub的编辑模式 3 选择第二行 kernel开头,再按 e 键进入该行的编辑界面中,然后在出现 ...

  5. centos7 搭建svn服务器

    1.安装svn服务器: yum install subversion 2.配置svn服务器: 建立svn版本库根目录及相关目录即svndata及密码权限命令svnpasswd: mkdir -p /a ...

  6. JavaScript中的Date对象在IOS中的“大坑”

    在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10-21') 的日期对象. 但是在IOS5版本里面的Safari解释ne ...

  7. pandas.DataFrame

    1.可以使用单个列表或列表列表创建数据帧(DataFrame). 单个列表 import pandas as pd data = [1,2,3,4,5] df = pd.DataFrame(data) ...

  8. java程序在windows系统作为服务程序运行

    Java程序很多情况下是作为服务程序运行的,在Un*x 平台下可以利用在命令后加“&”把程序作为后台服务运行,但在Windows下看作那个Console窗口在桌面上,你是否一直担心别的同时把你 ...

  9. MySQL在Read Uncommitted级别下写操作加X锁

    很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁. 实践出真知 以前,我也认为RU隔离级别下,写操作不 ...

  10. codeforces1045B

    CF1045B 自己瞎鸡巴yy了一下,可知若一个数X不能被表示出来,那么X所有的表示方法都在A集合中,如a1,a2,a3······an-1,an-2中若a1+ai不能被表示出来,那么如果a1到ai是 ...