免入土(一)基础篇
免杀技术从入门到入土(一)基础篇
主要聚焦在了解基本概念和现存的查杀方法,进一步了解目前免杀的主要手段。
一、前言
为什么要开这么一个系列的文章呢?
主要还是想让自己多会一点东西,自己主攻渗透测试方面,又不打算向代码审计和安全开发深入,所以免杀可能是最符合我的方向。除了这些原因以外,可能还是因为之前自己打靶场,开了个 360 把自己杀破防了的缘故吧~(气死我了!!!!)
再者,免杀作为渗透测试里面的终极技术(如果你马都传不上去,或者说马都跑不起来,那你再厉害,不了埋没了吗?),早点接触可能对后续的学习也有很大的帮助吧。
就让我来看看这个被称为渗透测试中的“压轴题”的含金量吧!
免杀,启动!
二、基础概念
免杀,也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对⽴立⾯面,英⽂文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
远控免杀是指通过某些技术手段,使得远程控制工具或恶意软件避免被传统的杀毒软件、IDS(入侵检测系统)、IPS(入侵防御系统)等安全防护系统识别出来。
三、杀软
3.1 杀软的分类
- 免费版,对所有用户开放,例如:360安全卫士、360杀毒、火绒、电脑管家等等
- 企业版,也是收费版,我们把他称为EDR,对比免费版,查杀更加严格,特别是针对于内存的查杀,比如:卡巴斯基、ESET(NOD32)等等
3.2 杀软的检测方式
- 扫描技术
- 扫描压缩包技术;对压缩文件进行分析检查的技术
- 程序防窜改防护;保护程序避免被恶意程序修改
- 修复技术;对恶意程序所破坏的文件还原
- 智能扫描;扫描常用磁盘,系统关键位置,时间短
- 全盘扫描;扫描电脑全盘文件,时间长
- 勒索软件防护;保护电脑不受勒索软件的攻击
- 开机扫描;电脑开机时自动扫描,可以扫描压缩文档和不需要的程序
- 监控技术
- 内存监控:当发现内存中存在病毒的时候,就会主动报警;监控所有进程;监控读取到内存中的文件;监控读取到内存的网络数据。
- 文件监控:当发现写到磁盘上的文件中存在病毒,或者是被病毒感染,就会主动报警
- 邮件监控:当发现电子邮件的附件存在病毒时进行拦截。office钓鱼 宏病毒 这种
- 网页防护:阻止网络攻击和不安全下载。 mshta js脚本
- 行为防护:提醒用户可疑的应用程序行为。低危 和中
- 云查杀(实质就是病毒库由客户端移至服务端,一般分为两种情况,例如360)
- 客户端提取特征上传,在云端检测到对应特征所标明的是否病毒状态,并返回
- 客户端上传特征,在云端无法检测到,则上传文件,文件通过杀软系统进行评判,得出总评分,对于无结果的,进行鉴定系统评分,总共得出结果返回给用户,并入云端库
- 云查杀的特点基本也可以概括为特征查杀。
四、扫描引擎
4.1 特征码扫描
将扫描信息与病毒数据库进行对比,病毒库是一直更新的,如果信息与其中的任何一个病毒特征符合,杀毒软件就会判断此文件被病毒感染。
杀毒软件在进行查杀的时候,会挑选文件内部的一段或者几段代码来作为他识别病毒的方式,这种代码就叫做病毒的特征码;在病毒样本中,抽取特征代码;抽取的代码比较特殊,不大可能与普通正常程序代码吻合;抽取的代码要有适当长度,一方面维持特征代码的唯一性,另一方面保证病毒扫描时候不要有太大的空间与时间的开销。
4.2 特征码识别
- 文件特征码:对付病毒在文件中的存在方式:单一文件特征码、复合文件特征码(通过多处特征进行判断);
- 内存特征码:对付病毒在内存中的存在方式:单一内存特征码、复合内存特征码优点:速度快,配备高性能的扫描引擎;准确率相对比较高,误杀操作相对较少;很少需要用户参与。
4.3 文件校验和
对文件进行扫描后,可以将正常文件的内容,计算其校验和,将该校验和写入文件中或写入别的文件中保存;在文件使用过程中,定期地或每次使用文件前,检查文件现在内容算出的校验和与原来保存的校验和是否一致,因而可以发现文件是否感染病毒。
4.4 进程行为检测(沙盒模式)VT
行为检测通过hook关键api,以及对各个高危的文件、组件做监控防止恶意程序对系统修改。只要恶意程序对注册表、启动项、系统文件等做操作就会触发告警。最后,行为检测也被应用到了沙箱做为动态检测,对于避免沙箱检测的办法有如下几个:
- 延时执行,部分沙箱存在运行时间限制
- 沙箱检测,对诸如硬盘容量、内存、虚拟机特征做检测
- 部分沙箱会对文件重命名,可以检测自身文件名是否被更改
4.5 主动防御
主动防御并不需要病毒特征码支持,只要杀毒软件能分析并扫描到目标程序的行为,并根据预先设定的规则,判定是否应该进行清除操作。参考360的主动防御
五、常见的绕过技术
5.1 特征码免杀
一个加载器存在两个明显的特征:
一个是shellcode和硬编码字符串。我们需要消除这些特征,比较方便使用一个简单的异或加密就能消除shellcode的特征。
第二个是加载器的关联特征也需要消除,通过加入无意义的代码干扰反病毒引擎。
5.2 花指令免杀
花指令其实就是一段毫无意义的指令,也可以称之为垃圾指令。花指令是否存在对程序的执行结果没有影响,所以它存在的唯一目的就是阻止反汇编程序,或对反汇编设置障碍。
5.3 加壳免杀
简单地说,软件加壳其实也可以称为软件加密(或软件压缩),只是加密(或压缩)的方式与目的不一样罢了。壳就是软件所增加的保护,并不会破坏里面的程序结构,当我们运行这个加壳的程序时,系统首先会运行程序里的壳,然后由壳将加密的程序逐步还原到内存中,最后运行程序。当我们运行这个加壳的程序时,系统首先会运行程序的“壳”,然后由壳将加密的程序逐步还原到内存中,最后运行程序。加壳虽然对于特征码绕过有非常好的效果,加密壳基本上可以把特征码全部掩盖,但是缺点也非常的明显,因为壳自己也有特征,主流的壳如VMP, Themida等等。
5.4 内存免杀
shellcode直接加载进内存,避免文件落地,可以绕过文件扫描,但是针对内存的扫描还需对shellcode特征做隐藏处理。对windows来说,新下载的文件和从外部来的文件,都会被windows打上标记,会被优先重点扫描。然而,无文件落地可以规避这一策略。同时申请内存的时候采用渐进式申请,申请一块可读写内存,再在运行改为可执行。最后,在执行时也要执行分离免杀的策略。
5.5 分离免杀
即ShellCode和加载器分离。各种语言实现的都很容易找到,虽然看起来比较简单,但效果却是不错的。比如可以远程读取png中的shellcode。
5.6 资源修改
杀软在检测程序的时候会对诸如文件的描述、版本号、创建日期作为特征检测,可用restorator对目标修改资源文件。比如:加资源、替换资源、加签名等等
5.7 白名单免杀
利用一些系统自带的白程序加载payload,例如powershell、mshta等等…
六、常见杀软
常用命令:tasklist /SVG
6.1 常见杀软
- 国内杀软
360 全家桶、腾讯管家、火绒安全软件、安全狗、金山毒霸、电脑管家、瑞星等等……
- 国外杀软
卡巴斯基、AVAST、AVG、科摩多、火眼、诺顿、nod32、小红伞等等
6.2 杀软进程
- 360 全家桶:360tray.exe、360safe.exe、360ZhuDongFangYu.exe、360sd.exe
- 火绒:hipstray.exe、wsctrl.exe、usysdiag.exe
- 安全狗:SafeDogGuarsdCenter.exe、safedogupdatecenter.exe、safedogguardcenter.exe
- 瑞星:rstray.exe、ravmond.exe、rsmain.exe
- 卡巴斯基:AVP.EXE
- 小红伞:avfwsvc.exe、avgnt.exe、avguard.exe、avmailc.exe、avshadow.exe
- nod32:egui.exe、eguiProxy.exe、ekrn.exe
七、总结
在本章节我们主要是总结了一下在免杀中可能首先需要知道和了解的一些概念,包括免杀的定义、绕过方式、检测方式等等
- 检测方式主要还是围绕病毒的特征进行检测,无论是从文件本身还是对内存数据检测,能够发现病毒的特征就是检测病毒的关键;
- 免杀绕过即使想方设法去避免被杀软检测到病毒特征,因此需要尽可能的隐藏病毒特征,通过编码或者重写特征等方式实现,包括但不限于修改特征码、花指令、加壳、内存加载、分离、资源修改、白名单等等;