企业APT攻击取证(windows版本)
Posted 玩电脑的辣条哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了企业APT攻击取证(windows版本)相关的知识,希望对你有一定的参考价值。
当年,APT这个词刚出现的时候震慑了一大群安全同学,“APT(Advanced Persistent Threat)是指高级持续性威胁”,这个专业定义让大家都无比崇拜。
随着逐步研究与接触,尤其是在处理过APT入侵后,慢慢明白,其实所谓apt攻击,就是一个黑客或黑客组织死心眼,一门心思要搞你。他们针对你使用专门的新技术,进来后耐心的收集信息,逃避检测长期潜伏,最终窃取最有价值的数据。其实这个过程和职业小偷一个道理,分析你家的基本情况,如作息时间、出门时间、资产情况、个人信息等,然后利用针对你家的专用信息,如你的生日,打开你家的密码门锁。进去不急着偷东西,而是装摄像头、监听器等,长期监视你的活动,获取银行密码、保险箱密码、各种找回密码的问题等等,最后再获取巨大的金钱利益。特点无非就是:
1、隐蔽性强,就是利用针对性的高技术或偏门的方法,让你的防御、检测措施生效;
2、耐心度高,长期潜伏不作恶,让你的行为检测无的放矢;
3、高速收割,和检测、拦截系统打时间差,在被阻止前窃取完成;
针对以上三点,当前针对apt攻击主要从三个维度发现
1、终端、网络行为异常;
2、大数据分析,终端行为偏移正常、行为聚类后的终端孤点等;
3、情报数据、情报关联数据,如历史用的病毒手法、md5、url、ip、域名和ip对应关系、历史关系等;
但其实这三个方案无论怎么检测发现,最终都只是发现疑似apt攻击,大量误报无法避免,如用户主动访问恶意url、用户今天无聊所以操作行为偏移正常逻辑等等。所以最终定性还是靠人工确定,说白了就是检测发现疑似被apt入侵的终端,安全人员还需要通过取证获取机器数据,最后分析取证后的数据才能最终定性是否存在apt入侵行为。
所以今天我们就来谈谈APT入侵的取证思路,先从整体看下:
如上就是apt入侵的通用流程,我们结合此流程,根据黑客入侵的路径和动作,探讨下要采集哪些数据或日志来分析我们的终端是不是正在被入侵或被入侵过了。
Google翻查各种工具,看的我一脸懵逼呀,各种介绍的高大上工具,什么Autopsy、Volatility、redline等一堆一堆的,本人才疏学浅,感觉要不就是专注于一个方面,如文件痕迹、内存分析等,要不就是各种基于已知的ioc分析,没找到任何一个完全适合windows入侵取证的工具。为了不至于无路可走,决定放飞思路,diy一下。
根据日常我们要取证的场景:
终端出现异常点,或就是看它不爽,我们怎么取证什么数据才能定性是否被黑客入侵?
取证工具简单化,不考虑那么多ui、关联数据等问题,终端我们可以接触,所以复杂需要关联的或图形化的,我们直接在机器看,不必须让取证工具变得那么复杂。
分析下,我们通过黑客入侵各个阶段的做法来看我们要取什么证据
进入/执行阶段
第一阶段:病毒文件或代码进入电脑(磁盘或内存)
a) 攻击难度低:合法自动进入
-
钓鱼邮件的附件,利用自动下载附件的功能,也可诱导用户下载
-
Im工具等,利用自动下载,或诱导下载
-
U盘插入,利用摆渡u盘,诱导使用被恶意丢弃的u盘等
-
浏览器访问,这个大量文件到临时目录,只不过难于执行起来
-
共享盘挂载,这个虽然不是本地磁盘,但是还是可以直接运行的
-
各种同步盘,如云和终端同步,多终端同步等,例如攻破云盘上传恶意文件后,文件自动同步到终端。
-
P2p下载方,修改资源块,替换正常块。(没遇到过,推测可行)
b) 攻击难度中:诱导用户直接下载(包括配置好自动下载地址)或拷贝病毒
-
浏览器、下载工具等主动下载,多为捆绑病毒或替换正常软件(软件供应链),这也是当前感染病毒最多的渠道,互联网虽好,但也是到处有坑!
-
应用软件,或应用软件组件更新等
-
邮件、im、word等交流工具中的链接,诱导用户下载
-
U盘文件拷贝
c) 攻击难度高:漏洞利用进入
-
浏览器漏洞,各种cve
-
邮件漏洞,如打开触发漏洞的邮件本身,则会自动下载病毒(一个途径,笔者未遇到过)
-
其他软件漏洞,这就比较广了,主要是各种常用软件,尤其是提供输入、网络接受数据等功能的,例如发送畸形包,让某软件下载病毒文件。
第二阶段:病毒文件或代码变为内存中可运行代码
a) 诱导用户主动运行
-
Office各种宏,利用自动宏或诱导用户启动宏拉取恶意文件或代码
-
社工诱导,如im聊天诱导、邮件诱导、诱惑文件名诱导等等
-
冒充正常文件名
b) U盘自动运行
-
这个就不解释了,这也是u盘被利用的原因,插入即可完成进入和执行两步,高效快捷!
c) 漏洞自动运行
-
这个主要是代码类,漏洞利用直接注入shellcode,修改ip运行。
综上,在该阶段我们要获取
1、邮件附件情况,包括下载和执行
2、im接受文件情况,包括下载和执行
3、u盘自动运行情况、拷贝情况
4、office宏的执行情况
5、浏览器临时文件情况
6、共享挂载情况
7、同步盘情况
8、p2p下载情况
9、浏览器、下载工具等下载情况
10、应用软件的自动更新和更新配置情况
11、浏览器、邮件、其他软件等的漏洞情况和漏洞触发(尽可能)情况
12、程序启动情况
潜伏/控制阶段
第一阶段:提权
a) 命令提权,网上很多,笔者研究不深,主要是利用cmd、powershell等
b) 漏洞提权
第二阶段:窃取
a) 窃取单终端信息,如账户密码、本机敏感文档
b) 窃取沦陷终端可触达的网络信息、服务信息,如网络拓扑、内网web系统等
c) 窃取后续扩散必须数据,如其他终端或服务器的权限数据、登陆方法、弱点情况等
第三阶段:外传
a) 传统socket,较少了
b) http、https、ftp、ssh等通用协议外传,较普遍,但其普遍性造成被检测几率大
c) 隐蔽隧道,如dns、icmp、各种协议 over http等,相对隐蔽度较高,近年dns是常规方法,有兴趣的可参考笔者写的关于dns的文章,个人认为屏蔽才是根本,检测终有漏报。
第四阶段:隐藏
a) 磁盘文件看不到,如文件驱动、钩子、ntfs流、自动删除等
b) 网络通信看不到,如驱动、钩子等
c) 内存数据看不到,如各种混淆、加密等
第五阶段:持久化
a) 参考autoruns,各种重启位置
b) 利用常用软件、dll等,诱导用户主动启动
c) 重复漏洞攻击,采用较少,漏洞利用尤其不确定性,无法很好保证一定能执行。
综上,在该阶段我们要获取
1、cmd、powershell等命令执行日志
2、终端文件触碰、删除情况
3、网络各种协议的通信情况,尤其是扫描
4、各种底层驱动、钩子等情况
5、内存数据
6、windows启动项位置
7、常用软件、模块情况
扩散/收割阶段
第一阶段:收割
a) 压缩编码,尽量减小体积,分片等
b) 隐蔽外传,包括空闲外传,防止终端性能异常;夜间外传,防止用户感知;夹杂外传,混在正常通信中,躲避检测等
第二阶段:扩散
a) 网络扩散,如445漏洞利用、扫描弱点后发包等
b) 利用im、邮件等工具扩散
c) 利用内部共享系统等扩散
综上,在该阶段我们要获取
1、流量情况,偏重大小
2、畸形协议情况
3、网络通信情况,尤其是扫描
4、im、邮件等外发情况,尤其是非用户操作的
5、共享等系统的上传情况,尤其是非用户操作的
最终,结合windows系统情况,具体取证位置如下
邮件附件名、邮件来源、邮件附件内容等(包括接收和发送),这里一般涉及到office宏、powershell、vbs、js等各种脚本
安全日志,主要是监控恶意进程的启动,包括脚本文件(vbs,js等),具体开启哪些请参考https://www.ultimatewindowssecurity.com/securitylog/encyclopedia
进程,用于判定新增进程,包括脚本文件(vbs,js等)
模块,用于判定新增模块
dns缓存,包括系统和浏览器,判定外连下载情况
浏览器历史记录,判定用户主动访问下载情况
浏览器历史记录返回的页面内容(页面内容可能随时间变动,如可能,建议使用异常期间内容),判定网页挂马、漏洞下载等
软件列表,包括版本,用于判定漏洞
系统补丁情况,分析漏洞利用
系统启动项情况
office宏运行情况
各种脚本权限情况,如powershell权限、js终端是否解析、vbs等
usb拷贝日志,自动执行情况
同步盘下载日志、共享挂载日志或现状、p2p下载日志、临时目录下载现状、下载目录文件现状
各类软件更新或组件下载配置
im工具接收目录文件现状、发送情况
内存,判定shellcode,但分析是难点,后续考虑单独写一下,不过站在取证角度,拿回来是必须的
全部软件对应的文件和加载模块对应的文件
各种底层数据,如钩子、ssdt等
文件访问日志,可考虑过滤驱动实现
cmd历史、powershell历史等
网络包包体,用于分析隐藏通信
网络通信日志
共享等系统的使用情况
经过分析,最终确认apt入侵的取证位置如上,通过采集如上数据可分析出黑客入侵全路径的操作,但黑客手法层出不穷,笔者也是建立在自己了解的知识层面,欢迎私信探讨!谢谢!
以上是关于企业APT攻击取证(windows版本)的主要内容,如果未能解决你的问题,请参考以下文章
《Python黑帽子:黑客与渗透测试编程之道》读书笔记:自动化攻击取证