1.文章概述
本文主要介绍windows以及linux应急响应方面的知识以及排除思路以及笔者日常使用的相关的优秀工具。
2.windows篇
windows终端的应急排除的话,我一般先会查看该终端的网络连接情况来判断是否有异常的连接,根据连接的地址我们可以去威胁情报平台(比如奇安信的TI)查询是否是恶意的或者为已知IOC,同时需要对产生可疑网络连接的进程进行进一步分析我这里使用的是pchunter工具。
可以通过工具看到产生网络连接对应的进程以及相关端口
对于进程我们需要首先检查是否有数字签名,子父进程的关系,进程的运行参数,进程加载的dll是否有签名是否是可疑的dll(dll劫持白加黑),对可疑的进程或者dll可以在第三方平台进行检测或者沙箱跑行为看是否存在恶意的行为。可以通过pchunter工具批量检查当前没有签名的进程或者进程中加载了没有签名的模块,同时需要查看命令行参数是否有攻击行为。查看子父进程关系以及命令行参数最好还是使用process explorer
通过process exploer软件可以清晰的看到子父进程之间的关系,svchost-wmiprvse-cmd具有经验的攻击检测人员可以很明显发现这种进程链很明显是通过wmi手法横向移动的时候受害终端产生的进程链,同时这命令行也是十分可疑的使用通过网络传输在远程主机上创建具有以“__”开头的特定名称和 unix 时间戳的临时文件执行里面的命令
同时也需要检查进程中是否存在可疑的线程,通常攻击者会注入系统进程来达到权限维持或提升的操作,通常是对产生网络连接的进程需要检查一下线程情况,这里通过火绒剑对怀疑的进程检查其线程,主要看是否存在没有模块没有版本没有描述的线程在运行的情况
同时可疑进程打开的文件句柄也是需要检查的,通过分析可疑进程打开的文件句柄发现如下可疑文件:C:\Windows\System32\bxomofr.dll,由于svchost进程一般加载dll只有两种方式:
1.通过服务注册一个dll;
2.Svchost进程依赖的dll会在服务启动时加载;
除此外,一个dll不会通过打开文件句柄的方式进行加载(通常以句柄方式打开的文件都是数据类型的文件,而不是dll文件),因此上述文件十分可疑。
我们在使用process explorer工具可以开启签名校验以及virustotal检查协助我们分析判断,CPU或内存资源 长时间或过高占用的进程以及孤儿进程也是怀疑对象
对可疑的进程也需要查看该程序在磁盘中以及在内存中硬编码的字符串来帮助我们判断是否可疑可以看字符串中是否存在可疑的IPURL以及危险函数啊键盘按键啊之类的,同时程序运行起来后在磁盘中字符串与在内存中的字符串差距应该是不大的 如果该进程很有可能内存的内容被修改了,当然对可疑的可以直接跑沙箱,或者自己使用工具监控其运行行为
当我们从网络,进程都不是很好判别出来的时候我们可以看看启动项的信息看看有没有线索协助我们分析,攻击者一般都会留下后门来维持持久化。主要也是检查启动项中是否存在可疑的程序可以通过没有签名的文件,文件路径,文件名,注册的名称等进行怀疑,对可疑的程序可以进行跑沙箱或者virustotal等平台进行信誉度检测,维持持久化的程序需要重点关注其加载的dll,很多都是利用白程序服务加载恶意的dll来躲避我们分析,比如一个windowsdefend服务被攻击者通过dll劫持,使其加载恶意的dll你使用pchunter或者其他工具分析的时候你肯定会忽略掉这种白服务,所以前面提到的进程加载的dll打开的文件句柄进程中的线程等都需要重点关注。
这里最好使用autoruns对启动项进行检查这里记录了大部分的能够实现自启动的方法,直接选择everything这一选项就可以了everything就是所有其他选项的集合,同时可以开启virustotal扫描协助你判断。
同时还有一些维持持久化的方法比如文件关联,映像劫持隐藏用户,是否有可疑的未签名的驱动加载了,进程是否被挂钩等都需要检测,这里可以使用pchunter电脑体检功能快速帮你输出检查项,但是对于部分内容比如钩子检查是否误报等需要专业的同事协助你分析。简单的隐藏用户文件关联等我相信大部分同学都会鉴别是否是误报
对于排查清理过程中遇到一些文件隐藏的情况,可以通过pchunter里面的文件功能查找定位并清除隐藏属性,对于删不掉的程序也可以使用该工具强制删除。everything工具也可以查找显示出隐藏文件。
遇到病毒木马或者异常外连c2等攻击行为反复出现的情况一般来说是后门持久化没有清除干净,如果无法通过上面的方法发现的话最好安装sysmon来记录日志以及自带的windows日志通过日志分析来定位出具体方法。分析这两种日志好用的免费工具就是sysmonview以及APT-hunter,logontracer
分析sysmon日志我们只需要将日志以xml格式导出,然后导入sysmonview中,可以看到他以每个进程会话维度将该进程会话发生的所有事件串了起来,同时我们导入virustotal,ipstack的APIkey后还可以帮我们分析文件是否报毒,帮你定位IP地址,通过这个工具我们可以很方便分析日志中发生的行为。
从图中我们可以看到cmd启动了adfind同时adfind的命令行参数以及adfind在VT上的信誉度
从图中我们可以看到autoruns进程产生了网络连接外连IP以及IP的真实地址
其还有强大的搜索功能可以模糊匹配日志中存在的任何信息并把匹配上的事件都显示出来,将日志中所有的进程以进程树的样子显示出来
图中搜索了mimikatz然后下方显示了所有日志中字段带有mimikatz的日志
导入的日志以进程树方式显示
windows日志我们可以通过LogonTracer工具他是一种通过可视化和分析 Windows Active Directory 事件日志来调查恶意登录的工具。此工具将在登录相关事件中找到的主机名(或 IP 地址)和帐户名相关联,并将其显示为图形。这样,就可以看到在哪个帐户登录尝试发生以及使用了哪个主机。工具帮我们分析了各种类型的登录以及一些内置的规则来检测一些恶意攻击比如dcsync,ms14-068等红色的是管理员账户,绿色是主机,蓝色是普通账户,可以很明显看到登录类型登录认证的方式,他也通过了内置的一些规则以及一些模型帮忙筛选出来一些可能是PTH方式登录的。这里主要使用了下面几种日志
4624: Successful logon
4625: Logon failure
4768: Kerberos Authentication (TGT Request)
4769: Kerberos Service Ticket (ST Request)
4776: NTLM Authentication
4672: Assign special privileges
APT-Hunter 工具可以自动化帮我们收集windows上可用的日志与其内置的规则进行匹配,帮我们从大量日志中筛选出可疑的协助我们分析。使用该工具分析完成后会生成一个csv文件里面记录了各种日志匹配上规则产生的事件,可以看到从security日志他分析出了PTT攻击以及一些计划任务被用户创建可疑的powershell命令事件严重等级也标注出来了。
其实windows日志记录了很多内容并不是只有4624可以协助我们分析,4688记录了的子父进程命令行参数同样是十分重要的,当然也不止security日志还有很多powershell,winrm,bits等日志,大部分同学可能没有时间或精力去记住这些或者查询这些使用上面的工具自动化帮我们检索有用的日志其实也是够用了。但是这个规则肯定是不完善的建议定位到攻击的时间点后自己慢慢审日志.
终端上的安全软件的日志也是我们重点关注的对象,里面会记录未知文件的云查。终端新落盘的文件一般会触发安全杀软的实时防护,对其进行扫描检查判断其黑白,黑的一落盘就已经已经被查杀了,当然如果是未知的PE文件的话则会上传到杀软的云中心继续进行鉴定。所以未知文件也是我们需要重点关注的,攻击者很有可能上传了免杀样本。
同时这里也提一下LastActivityView软件他可以从各种来源收集信息,包括注册表,Windows的事件日志,Windows的Prefetch文件夹(C:\ windows \ Prefetch),Windows的Minidump文件夹(C:\ Windows \ Minidump)等来记录当前电脑的使用记录,方便我们分析。
安全软件一般来说都还有主防的日志以及病毒查杀的日志可以协助我们分析,主防主要是拦截的恶意行为比如攻击者想通过命令行修改注册表敏感的注册表键值可能被杀毒监控者如果修改则很有可能被拦截行为比如net user a a /add 这种添加用户的命令一般都会被主防拦截,病毒查杀的日志则我们帮助我们判断当前电脑被查杀的文件有可能攻击者第一次上传的文件并没有免杀导致被安全软件查杀这时候我们可以提取样本分析。
一般来说看查杀记录的报毒名我们也能简单分辨样本类型一般报毒名可能采用的是4段命名法第一段是病毒的类型是木马还是后门蠕虫等第二段是运行的平台32位还是64还是linux之类第三段是家族是否有家族第四段就是家族变种了。可以看到病毒记录里面有记录黑客工具pchunter的使用还有后门meterpreter还有script脚本木马等。
这里介绍一下简单的PE文件分析
静态分析的话主要就是查看文件的创建时间啊有没有签名以及有没有加壳,使用了哪些API函数,以及文件的硬编码字符串。
动态分析的话一般可以使用systracer,procmon或者火绒剑进行行为分析,看行为是否有恶意的。
procmon工具:在虚拟机里面启动procmon然后运行样本来观测其行为,我们可以先不使用过滤器,运行样本完成后我们选择process tree来观测样本行为
我这里运行了一个宏样本可以看到winword进程启动了mshta并且下方命令行显示了mshta产生了网络连接,这时候我们可以通过下方的3个按钮来查看具体的行为我一般选择include subtree查看当前进程的进程树
可以根据上面的按钮来对行为进行进一步筛选分析因为行为的量庞大的,上面4个分别是注册表,文件,网络,进程或线程。也可以直接使用过滤器对操作进行过滤我一般查看以下7个行为,这几个行为可以看到对系统造成了哪些修改
火绒剑同理不过这些动作是中文并且清晰的统计了每个动作的数量对于一些量大也不是很重要的我们可以忽略查看。但是火绒剑不只是行为监控强大,他同时还具有pchunter,process explorer,以及可以对内存dump等,不过每个工具都有不可替代性,用多了就有所体会了。
systracer应该是行为监控中最简单的了双击运行要监控的程序即可,程序对系统的修改以及一些行为也很清晰在软件中显示相较于前面2个软件监控点较少所以对应的日志也相应较少。
沙箱分析推荐使用微步或者app.any.run或者virustotal,通过上传这些平台我们主要是查看引擎报毒情况从报毒名来查看是否是某个家族某个黑客工具协助我们分析判断,同时还可以看到样本在沙箱环境中运行的行为,以及样本第一次上传的时间以及IOC等,我们最好把样本多传几个平台因为每个平台的数据可能不太一样可能是因为调接口数据的原因,也可能是调用的杀软引擎不一致,一个杀软应该来说有好几种引擎(从下图可以看到同样的样本微步看tencent不报毒但是VT上报毒了)
个人比较喜欢使用anyrun他可以把样本运行过程中的行为很清楚的显示给我们无论是流量还是进程树,还可以对中间释放或者下载的文件进行再次下载上传分析,从下图可以看到该样本下载了一个新的PE文件file4.exe.这个平台也是免费下载样本的平台非常好用。
3.linux篇
linux应急响应大体思路基本与windows一致都是看有没有异常的网络连接,通过网络连接定位进程,检查进程以及文件是否是恶意的,同时也是需要检查计划任务服务rootkit等持久化项。github上也总结了linux相关或者windows的相关排查命令(https://github.com/theLSA/emergency-response-checklist), 当然也有比较好的工具集成了这些检测项,Gscan工具实现主机侧Checklist的自动全面化检测,根据检测结果自动数据聚合,进行黑客攻击路径溯源。该工具最好与rootkit排查工具一块使用。
rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root 权限登录到系统。
rootkit主要有两种类型:文件级别和内核级别。
文件级别的rootkit: 一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等。
内核级rootkit: 是比文件级rootkit更高级的一种入侵方式,它可以使攻击者获得对系统底层的完全控制权,此时攻击者可以修改系统内核,进而截获运行程序向内核提交的命令,并将其重定向到入侵者所选择的程序并运行此程序。从而可以实现对任意目录、文件、磁盘内容、进程、网络连接与流量的隐藏、窃取和篡改,并提供隐蔽的后门可供黑客直接登录到受害服务器执行更多操作。
目前常使用的检测rootkit的工具Chkrootkit和Rkhunter可以协助我们对已知的rootkit进行检测,不过他主要是对已知类型Rootkit的文件等特征判断,无法检测出未知的rootkit。要检测未知的rootkit还是需要使用Volatility内存取证工具分析判断.在应急响应过程中web日志以及数据库日志对于我们来说也是需要排查的,可以找出攻击者的webshell以及入侵IP。同样的工具直接出来的结果肯定是片面的,我们最好把常用的检测命令写成脚本统一收集起来分析防止漏报.这里介绍一个开源的检测脚本https://github.com/al0ne/LinuxCheck, 这个脚本不仅收集了常用的排查命令还有其他方面的检测。
4.总结
由于已经有很多文章或者github里面总结了应急过程中常用的排查命令,本文并没有介绍一一介绍演示这些常用命令,文章中也只是简单的介绍了笔者经常使用的比较好的工具,并未详细讲解每个工具如何使用,日常应急过程其实主要就是看进程看网络看持久化项看日志来帮助我们分析定位问题,工具只是帮助我们简化工作,真正的威胁狩猎应急响应是需要丰富的实操经验以及对大量攻击手法产生的行为的了解,纸上得来终觉浅,绝知此事要躬行。