安全技术运营的学习与笔记10
本篇涉及行为维度内容,主要是与安全场景中的沙箱系统有关。前几年我对沙箱的理解在刚开始接触安全方向工作时很迷茫,当时是纯小白的知识背景。不理解为啥它能获取到提交的文件行为状态与运行痕迹,最终能输出一份记录的结果以及可疑度结论,设计或开发这个系统是不是特别难。最后随着学习恶意文件分析,慢慢理解了沙箱核心的技术能力是监控功能(hook是核心),钩子技术能实现特定目的的监控功能,加之虚拟化技术的辅助使得自动化模拟分析成为可能。在沙箱中所有能实现的功能我们都能在本地自己逐个实现,沙箱是探索自动化分析路径的一个里程碑。沙箱作为一个产品自然就有优劣之分,判定的标准其实趋向于一致,一是架构二是能力。
书里提及了文件格式支持是否很全面,如果支持的格式不多,表明对某一种冷门的文件格式的分析沙箱将无能为力,换个角度其实就是免杀对抗的一种策略,例如ISO与VHD格式可以绕过Mark-of-the-Web控制。简而言之,MOTW是微软引入的一种缓解技术。NTFS文件系统标记从互联网下载的文件,Windows以安全的方式处理该文件。沙箱在某些场景下是无法监测的,例如UEFI Bootkit场景,涉及到底层的硬件固件层,沙箱可能只是监测到ring3层到ring0的行为。
行为监控是否足够丰富,行为采集的越多越容易依据行为对未知文件作出判断,但是由于恶意文件与正常文件的行为存在交叉重叠,因此单单依靠行为维度来判定未知文件的属性是片面的,会存在误报,现在的云沙箱大多会依靠威胁情报维度数据匹配流量数据或痕迹数据与特定的恶意文件行为属性来增强判定能力。监测越多的行为增强了数据的丰富性,利于在大量数据场景下利用AI来解决问题。取证应急常常涉及一种还原恢复场景,因此依据监测的行为数据可以反推来输出清除思路。
流量监控是在主动性恶意文件场景下会遇到的情况,由于会主动外连,特殊的流量交互会存在特别的特征,因此对流量的监测也可以作为检测的一环。
内存监控中主要提及了无文件攻击活动,沙箱的检测分析依赖于文件,而无文件攻击活动往往是不留下文件的,因此这些场景可能兼顾不到,目前通过搜索互联网资料还未发现沙箱在无文件攻击活动中有输出能力。
漏洞监控是沙箱可以实现的一个功能点,漏洞文件大部分场景下依赖于恶意文件,因此检测恶意文件或多或少会遇到存在漏洞利用的场景。换个角度思考一下,如果发现一个未知文件存在漏洞利用行为,那么将此未知文件直接判定为恶意文件确实是合理的。
内核环境可信分析,这是一个很底层的对抗策略,沙箱的本质是监控系统行为,因此恶意文件如若有较高的权限(沙箱分析文件会默认将其定位为管理员权限)也可以实现类似的功能,因此会存在对抗行为来阻止沙箱监控到正常的行为痕迹。在可信分析这种思路下,可以通过比对内核环境的完整性变动情况来判断是否造成了破坏。这与在UEFI Bootkit检测过程中思路一致,对固件的植入或更改将在与原始固件数据比对后存在异常,异常可作为固件是否被恶意篡改的痕迹。
反沙箱技术是一直以来活跃的场景,只要不被沙箱检测分析,恶意文件的存活时间将延长。之前就遇到一个golang木马利用GetPhysicallyInstalledSystemMemory函数来检测当前系统物理内存大小识别沙箱环境的例子,一旦获取失败就直接退出进程。为啥获取失败就直接退出进程呢?这是因为沙箱环境搭建的时候利用的虚拟化系统未正确设置好计算机的SMBIOS固件表数据,因此获取失败表明很可能存在沙箱的虚拟化环境中,于是乎恶意文件直接退出进程。
沙箱最终会作为动态分析系统的一环,以此来建设完善的检测系统应对复杂的安全场景与威胁。
行为维度中会存在与特征工程中的静态特征类似的应用,那就是行为规则,行为规则是收敛的,因为大量的恶意文件往往都存在类似的行为,但仅仅依赖行为规则去判断一个未知文件是否为恶意文件会存在大量的误报,这是恶意文件领域最值得挑战的目标,目前没有一个完美的检测系统。要利用行为规则来应对威胁,需要确保该行为规则具有较强的区分度,正常软件一般不会使用或者很少使用。
如果能用简单的方法解决风险就优先选择简单的方法,简单即是美,这是设计或工程领域的一个哲学,越复杂的想法与规则意味着越复杂的系统来实现,无法预料所带来的影响与风险成本。例如能用单一规则来完成检测效果时就优先考虑,只有当完全满足不了要求时才考虑复杂规则。规则的内容在运营工作场景下是最常见的,这里就不详细记录笔记了,总体来说有端点安全的规则,流量检测规则,IOA规则等。
下一篇会涉及决策树与AI在安全场景中的学习笔记