20145319 《网络攻防》免杀原理与实践 20145319 《网络攻防》免杀原理与实践

一 实验内容

  • 自计算机病毒第一次问世,黑客和安全专家们就围绕着免杀和查杀两个内容展开了一场你来我往,奇招迭出的较量。虽然,现在我们的防火墙和杀软技术已经趋于成熟,但是由于其本身的滞后性特点,只能说道高一尺魔高一丈,我们这次就来学习免杀的一些原理
  • 知己知彼方能百战不殆,我们先了解杀软是如何工作的
    • 检测特征码:
      • 依靠分析总结出计算机病毒中常出现的部分,例如,作者名称,地址,执行关键步骤的部分代码,来作为特征码。将大量特征码保存在病毒库中,杀毒依靠检索程序代码是否和库中特征码是否吻合
      • 优点:能较准确查杀;缺点:具有滞后性
    • 启发式恶意软件检测:
      • 如果该程序的特征和行为与病毒程序类似,其匹配程度达到一定值就可以认为该程序是病毒程序
      • 优点:能在一定程度上预防新型病毒;缺点:容易误报
    • 基于行为检测:
      • 与启发式检测类似,只是单纯依靠监测程序行为来作为标准
  • 你有张良计,我有过墙梯,针对上述查杀方法,我们应该如何瞒天过海?
    • 改变特征码:
      • 依靠分片等方法尝试找出特征码区域,并对该区域代码进行编码(相对,安全专家之后也对这种方法改进了相对的查杀方式,之后试验中会提到)
      • 加壳,使其无法进行逆向,比对病毒库中的特征码
    • 改变行为方式:
      • 例如之前注入所用到的反弹端口连接
    • 其他:
      • 人永远是一个防御系统中最薄弱的一环,即使再严密的防御也可以通过社会工程学将其瓦解
  • 了解掌握上述的理论知识,并且初步运用到这次的实验中
  • 了解,学习免杀平台Metasploit、Veil-Evasion的使用,结合上述理论尝试编写出能实现免杀的后门程序

二 实验步骤

  • 我们逐步来展示我们之前所提到的各种理论,

修改特征码

  • 首先我们将上次实验中用到的后门程序拿去做查杀实验

  • 上期博客链接

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 从结果看出来,如果该杀毒软件的病毒库停留在16年或者更久以前就无法准确的判断出我们的后门软件是否为病毒(所以杀软一定要常更新啊)

  • 之后我们使用大致一样的手法再次生成后门程序,即在msfvenom命令中加上参数-e x86/shikataganai 即使用x86/shikataganai编码器进行编码-i接编码的次数,成功之后再次做查杀实验

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 虽然被查杀数减少了一点点,但是还是逃不过杀毒软件的火眼金睛,好吧,这和我们理想中的结果有所出入,说好的修改特征码可以免杀呢?其原因在于杀毒软件厂商在对特征码进行扫描的同时,也会对编码器所用的解码代码进行检索,像我们之前常用的比较有名的编码器早已经被杀软厂商们加入了黑名单,所以使用该编码器即使编码次数再多也不会起到实质性效果

免杀平台的使用

  • 上次我们使用msfvenom生成后门就是metasploit平台下的其中一种功能,这次我们使用免杀功能更强一点的一款平台Veil-Evasion

  • 终端输入veil-evasion命令即可进入操作界面

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 按照其提示,输入list查看payload,选择能实现反弹端口连接的payload(一般看名字就能看出来,rev_tcprev_http结尾的一般都是)这次我们随便选择其中满足我们要求的payload,键入use + name of payload(截图的时候我选择的是ruby/meterpreter/rev_tcp但是生成的时候一直弹出payload有问题,所以我实际上使用的是python/meterpreter/rev_tcp

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 生成的后门程序放在网站上查杀(结果让人不可思议,但是我重复了一遍过程,查杀率依然很低,看来veil-evasion平台真的很厉害)

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

半手工制作

  • msfvenom …… windows/meterpreter/reverse_tcp -f c生成一段shellcode数组,传输到windows端中,将其保存到数组中,通过代码对数组中的地址进行访问,之后使用vs编译就初步生成了我们的后门程序,虽然这样的程序已经能够完成我们需要的功能实现回连,但是基本无法骗过杀毒软件

  • 之后就要使用我们上面练习过的手段,最简单的就是对我们的shellcode数组进行处理(取补码,高低位对调等),并写好相应的解码函数放在我们的程序中,当程序执行时,先解码,在调用,这样就能在一定程度上骗过杀毒软件,且编码函数是我们自己设计,也不至于被杀软列入黑名单(或者可以使用系统一些自带的简单加密函数?例如课上讲过的比较简单的DES和AES?目前没有尝试过,但感觉是一条思路)

  • 详细操作不方便贴出,但是结果如下,这是我回连时候利用kali做到的截图,可以看出执行时候杀软并没有弹出警告

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

  • 这是扫描结果

  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践

问题回答

  • 杀软是如何检测出恶意代码的
    • 检测特征码
    • 检测行为
    • 启发性检测(详见实验内容部分)
  • 免杀是做什么?
    • 免杀就是想办法让自己所做的恶意代码骗过杀毒软件,或者躲开杀毒软件的检测查杀
  • 免杀的基本方法
    • 改变特征码,对特征码进行编码
    • 加壳,使杀毒软件无法逆向分析我们恶意程序的特征码
    • 改变行为方式
  • 离实战还缺什么技术
    • 绕过防火墙的连接技术,在能初步自身半手工制作恶意代码的条件下,我们最缺的还是传播的手段,在实验环境下,一般都是自己攻击自己,或者关闭了防火墙,都是在可以直接ping通的环境下进行的,而实际中大多数的防火墙都是开启的,我们根本无法完成初步连接绕过防火墙
    • 在实验环境下,我们一般都是被控机主动连接主控机,而在实际环境中,我们很难做到这点,说来就是需要用我们的“人格魅力”去忽悠
    • 说起来人总是防御环节中最薄弱的环节,最坚固的堡垒总是从内部被攻破的,社会工程学才是可以从内部瓦解对方防御的最强攻击技术

其他

  • 真的杀毒软件要勤更新,这样才能保证安全
  • 我自己的杀毒软件是腾讯电脑管家,但是很让人害怕的是我全盘扫面病毒的时候并没有任何反应,显示一切正常,只有对我管理后门程序的硬盘进行专门扫描时才查出了问题,虽然不知道具体原因,但是大家以后杀毒还是选择指定位置杀毒吧
  • 20145319 《网络攻防》免杀原理与实践
20145319 《网络攻防》免杀原理与实践