如通过现象检查发现异常程序,则可以通过停止运行该进程的方式,判断其是否会重新启动。
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:
复制以下正则表达式。
(Folder|TaskName|Status|Author|Task To
Run|Scheduled Task State|Start Time|Start Date)(.*)
将正则表达式复制到搜索框中,点击【find all】,再【ctrl+c】复制匹配到的内容。
同时新建一个文档将复制的内容进行粘贴,但所有任务计划未分割不方便检查,因此还需要对过滤后的任务计划进行分割。
示例3:
复制以下正则表达式。
Start Date(.*)
Start Date$0\n
按【ctrl+h】将以上正则进行粘贴并替换所有。
最后形成如下文档:只记录任务计划名称,运行状态,创建者,程序路径,计划状态,启动时间,以方便对可能存在异常的对象进行检查。
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.txt
服务配置文件路径说明:
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:
复制以下单行内容并逐个替换。
Description REG_SZ
Description REG_EXPAND_SZ
ImagePath REG_EXPAND_SZ
ServiceDll REG_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】进行替换。
根据去重后的结果可直观的对服务所调用的程序进行检查。例如异常的程序路径,程序名称。同时工作量也会大大减少,因为原先需要分析9062行,现在只需要分析145行即可,如在145行中发现异常则可查看导出的服务配置文件进行深入分析。
1.5 用户登录
用户登录可在系统启动登录、注销登录时自动运行相关程序,是恶意程序的第四个自启机制。
注意点:操作系统中有两处配置文件可用于在登录时启动相关程序。
使用命令将用户登录配置文件导出检查。
示例1:
复制以下命令:
reg query HKEY_CURRENT_USER\Environment
/v UserInitMprLogonScript >
c:\yanlian\userlogin.txt
reg query
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit >> c:\yanlian\userlogin.txt
在命令行中粘贴将用户登录配置文件导出检查。
1.6 svchost及dll劫持
svchost.exe主要作用是将动态链接库(后缀为.dll的文件)以服务的方式运行。svchost.exe对系统的正常运行非常重要,是不能被结束的。通过服务、dll、com均可劫持注入到程序中启动。
注意点:
1 在入侵检查方向,更倾向于将svchost.exe作为一个单独的持久化检查项目,而非系统服务,因为检查方法完全不同;
2 同时svchost.exe不作为常规检查项,一般根据【现象检查】的结果寻找恶意程序。
存在异常监听端口,pid指向svchost.exe程序,需检查是否存在异常。通过第三方工具ProcessExplorer(简称pe)检查svchost.exe程序。
示例:
通过检查已监听端口,发现“异常”监听,pid指向800。
打开任务管理器,发现pid 800是svchost.exe程序,由于该程序的特性,需使用第三方工具pe进行检查。
通过pe工具可发现pid 800是由服务启动,根据启动路径可发现该程序是由正常路径启动,但程序是否被替换未知,启动的服务是netsvcs(小白杀手,当初虐了我n久),该服务下挂12个子服务。
在pe中双击该程序,点击【tcp/ip】,可发现49154端口是服务schedule监听。
点击【services】,可发现schedule服务启动的动态链接库绝对路径是
c:\windows\systemc32\schedsvc.dll,从而发现49154端口是哪个程序正在监听。
通过点击【view handles】可显示该程序所调用的clsid。
如存在启动、点击某个程序后恶意进程重新启动的情况,则可以对com劫持进行检查。
通过点击【view dlls】可显示该程序所调用的dll文件。