应急响应的时候,我们需要判断一个系统是否有被黑客入侵,本篇给大家介绍一些在应急响
应时Windows入侵检查的一些知识点。
检查概述
由于无法站在攻击者视⻆审视其做过哪些攻击行为,因此标准化的检查内容可以规避非标准
化的⻛险。
例如操作系统虽然没有异常登录日志,但如果不检查操作系统用户即会存在遗漏从而产生⻛
险,同时也可规避上次检查ab内容,本次检查bc内容的非标准化⻛险。
因此无论每个人的标准是否统一,取⻓补短逐渐完善自己的标准化是建议进行的。
windows操作系统入侵检查流程图如下所示:
现象检查
可通过监测告警、日常巡检等主动机制发现存在的异常事件,如果没有主动发现,则只能在安全事件发生后被动发现。以下说明在被入侵后对可能存在的异常现象进行检查。
现象检查发现的异常程序不可直接删除,应先验证异常进程是否存在自我守护机制,否则安
全事件无法得到根除。
1.1已监听端口
已监听端口并非一个独立的对象,而是和进程相关联,进程如果需要对外提供访问接口,则
必须通过监听端口的方式对外开放,常用于在内网中部署正向后⻔程序。
注意点:
1在操作系统初始化正常运行后,建议记录已监听端口的基线值,供日常巡检使用;
2受操作系统、关键路径中的网络层访问控制影响。
例如检查已监听端口是否存在异常。则运行cmd命令行,使用netstat -ano |findstr LIST
命令检查已监听端口。
示例:
点击【开始菜单】,搜索框中输入【cmd】,右键点击【cmd.exe】程序,选择【以管理员身份运行】
使用netstat -ano |findstr LIST命令检查已监听端口。含义如下:
1左1列,程序协议;
2左2列,本地监听地址和端口;
3左3列,外部地址(留空);
4左4列,状态为监听;
5左5列,程序pid。
可根据已知程序不会监听的端口进行判断是否存在异常,并根据该链接的pid进行深入分
析。
1.2已建立连接
已建立连接分为入站连接和出站连接,入站意为访问操作系统本地的方向,出站意为操作系
统访问外部的方向。
注意点:
1受操作系统、关键路径中的网络层访问限制影响;
2服务端如存在主动外联则需要重点检查。
例如检查已建立连接是否存在异常。则使用netstat -ano |findstr EST命令检查已建立连
接。
示例:
查询结果,可根据非常规连接判断是否存在异常,并根据该链接的pid进行深入分析
示例:
查询结果,可根据非常规连接判断是否存在异常,并根据该链接的pid进行深入分析:
1.3系统进程
cpu资源被占满、异常的已监听端口、异常的已建立连接在深入分析时都会检查系统进程。
注意点:不建议使用任务管理器进行系统进程检查,因为可供分析的维度较少,且容易被进
程名欺骗,操作系统允许相同名称但不同执行路径的进程同时存在。
例如检查系统进程是否存在异常,使用以下命令获取系统进程详细信息。
wmic process get
caption,commandline,creationDate,executablepath,handle,handleCount
> c:\yanlian\test.txt
示例:
在cmd命令行中复制以上命令并回⻋执行
打开C:\yanlian\process.txt,可看到6列内容,含义如下所示:
1 caption:进程名;
2 commandline:进程名、程序执行路径、进程执行参数;
3 creationDate:进程启动时间(格式为:年月日时分秒);
4 executablepath:程序执行路径;
5 handle:进程pid;
6 handleCount:该进程的父进程pid。
可根据进程名、进程执行参数、进程启动时间、程序执行路径判断是否存在异常,并根据异
常点进行深入分析。
持久化检查
如通过现象检查发现异常程序,则可以通过停止运行该进程的方式,判断其是否会重新启
动。
1.1任务计划
任务计划可以将任何脚本或程序定时启动。如被黑客利用则会充当恶意程序的守护机制。
注意点:不建议使用图形化任务计划程序进行检查,因为数量、层级较多不方便检查。
检查任务计划是否存在异常的方法:
1使用schtasks /query /fo LIST /v
>c:\yanlian\schtasks.txt命令获取任务计划;
2使用正则(Folder|TaskName|Status|Author|Task To Run|Scheduled Task State|Start
Time|Start Date)(.*)过滤任务计划关键字段;
3使用正则Start Date(.*)和Start Date$0\n分割不同任务计划。
示例:
导出计划任务
形成如下文档:只记录任务计划名称,运行状态,创建者,程序路径,计划状态,启动
时间,以方便对可能存在异常的对象进行检查。
1.2自启动项
自启动项可在系统启动时自动运行相关程序,恶意程序的第二个自启机制。
注意点:不建议使用图形化msconfig工具进行检查,因为名称、路径较⻓则不方便取证。
使用以下命令将自启动项导出检查。
reg export
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
c:\yanlian\autorun.reg
示例:
输入命令将自启动项配置文件导出。
检查导出的启动项配置是否异常
1.3环境变量
环境变量用于将系统路径变量化,如被黑客利用则会以最高权限运行恶意程序,例如将环境
变量%systemroot%变更为其他路径,同时建立system32文件夹并将恶意程序通过服务启
动。
注意点:环境变量%systemroot%修改后需进行恢复,否则系统无法正常重启。
使用set命令将环境变量导出检查。
示例:
输入命令将环境变量配置文件导出
检查导出的环境变量配置是否存在异常。
1.4系统服务
服务可在系统启动时自动运行相关程序或启动后延迟运行相关程序,是恶意程序的第三个自
启机制
注意点:不建议使用图形化services.msc程序进行检查,因为数量、层级较多不方便检查。
1使用命令将服务配置文件导出检查;
2过滤包含Description、ImagePath、ServiceDll的字段;
3过滤包含(.*)(\.dll|\.exe)(.*)的字段;
4删除Description REG_SZ,Description
REG_EXPAND_SZ,ImagePath
REG_EXPAND_SZ,ServiceDll
REG_EXPAND_SZ无关字符
5将/ Processid(.*)替换为空;
6将,-(.*)替换为空;
7将@替换为空;
8根据环境变量检查结果对%systemroot%,%windir%进行替换;
9将^[a-z]*\.dll\n替换为空;
10排序、统一小写和去重后进行服务检查。
示例1:
选择一条命令将服务配置文件导出。
reg query
"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services" /s
> c:\yanlian\service_001.txt
reg query
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services" /s
> c:\yanlian\service_set.t
服务配置文件路径说明:
1 ControlSet001:系统真实的服务配置信息;
2 ControlSet002:最后一次成功启动的服务配置信息;
3 CurrentControlSet:系统运行时的服务配置信息;
4系统启动时,从ControlSet001复制到CurrentControlSet中;
5系统运行时,修改的都是CurrentControlSet中的信息;
6系统重启时,从CurrentControlSet复制到ControlSet001中;
7系统正常启动时,从ControlSet001、CurrentControlSet复制到ControlSet002;
8开机选择“最近一次正确配置”时,从ControlSet002复制到CurrentControlSet中。
服务配置说明:
1 ImagePath:服务所启动程序的路径;
2 Parametes\servicedll:程序调用的真实dll文件路径;
3 Start:0/boot,1/system,2 /自动,3 /手动,4 /禁用;
4 DelayedAutostart:1 /延迟启动;
5 Type:程序类型。
示例2:
输入以下正则表达式进行内容过滤。
(Description|ImagePath|ServiceDll\)(.*)
点击【.*】启用正则匹配,输入正则表达式,点击【find all】后复制。
示例3:
输入以下正则表达式进行内容过滤。
(.*)(\.dll|\.exe)(.*)
点击【find all】后复制
示例4:
复制以下单行内容并逐个替换。
DescriptionREG_SZ
DescriptionREG_EXPAND_SZ
ImagePathREG_EXPAND_SZ
ServiceDllREG_EXPAND_SZ
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例5:
复制以下内容并替换。
/Processid(.*)
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例6:
复制以下内容并替换。
,-(.*)
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例7:
复制以下内容并替换。
@
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例8:
复制以下内容并替换。
%systemroot% c:\windows
%windir% c:\windows
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例9:
复制以下内容并替换。
^[a-z]*\.dll\n
替换方法为在【find】框中粘贴,【replace】框中内容为空,点击【replace all】进行替换
示例10:
对过滤后的程序路径进行排序
全选所有内容将所有大写字母转换为小写
对过滤后的程序路径进行去重
对过滤后的程序路径进行去重。
根据去重后的结果可直观的对服务所调用的程序进行检查。例如异常的程序路径,程序名
称。同时工作量也会大大减少,因为原先需要分析9062行,现在只需要分析145行即可,
如在145行中发现异常则可查看导出的服务配置文件进行深入分析
请登录/注册后在FreeBuf发布内容哦