前言
在进行 应急响应时,我们首先需要对系统进行一个全面的排查,发现可能存在问题的点,如是否存在恶意进程,恶意文件等。本篇文件就来看看win下手工排查时常用的系统命令。
一般会从下面的方面进行排查:系统排查,用户信息排查,进程排查,服务排查,文件痕迹排查,日志排查,内存分析,流量分析,威胁情报。
系统排查
系统排查主要是为了快速的了解机器的一些基本信息,包括系统版本,硬件信息等
1)msinfo32命令:系统信息工具
通过该命令可以查看系统的一些基本信息,如进程信息,网络连接,加载的模块等等
2)systeminfo
也可以通过systeminfo命令来查看这些信息
用户信息排查
在服务器被入侵后,攻击者可能会建立相关账户(有时是隐藏或克隆账户),方便进行远程控制。攻击者会采用的方法主要有如下几种:
第1种是最明目张胆的,即直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似);
第2种是激活一个系统中的默认账户,但这个账户是不经常使用的;
第3种是建立一个隐藏账户(在Windows系统中,一般在账户名称最后加$)。
无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。
1)net user命令查看用户信息
net user
PS:该命令看不到以$结尾的隐藏账户
net user username可以查看账号的详细信息
2)计算机管理窗口查看
直接打开计算机管理或者在命令行输入lusrmgr.msc可以打开界面查看账户信息
该方式可以看到隐藏的用户
3)通过注册表查看
打开【注册表编辑器】窗口,选择【HKEY_LOCAL_MACHINE】下的【SAM】选项,为该项添加【允许父项的继承权限传播到该对象和所有子对象。包括那些在此明确定义的项目】和【用在此显示的可以应用到子对象的项目替代所有子对象的权限项目】权限,使当前用户拥有SAM的读取权限
添加权限完成后按【F5】键,刷新后即可访问子项并查看用户信息
同时,在此项下导出所有以00000开头的项,将所有导出的项与000001F4(该项对应Administrator用户)导出内容做比较,若其中的F值相同,则表示可能为克隆账户。
4)wmic方法
wmic扩展WMI(Windows Management Instrumentation,Windows管理工具),提供从命令行接口和批命令脚本执行系统管理支持。在命令行中输入【wmic useraccount get name,SID】命令,可以查看系统中的用户信息
启动项
启动项是开机时系统在前台或者后台运行的程序。操作系统在启动时,通常会自动加载很多程序。启动项是病毒后门等实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。
1)通过系统配置查看
命令行输入msconfig,打开系统配置对话框
2)注册表
注册表是操作系统中一个重要的数据库,主要用于存储系统所必需的信息。注册表以分层的组织形式存储数据元素。数据项是注册表的基本元素,每个数据项下面不但可以存储很多子数据项,还可以以键值对的形式存储数据。注册表的启动项是恶意程序的最爱,很多病毒木马通过注册表来实现在系统中的持久化驻留。特别是我们在安装了新的软件程序后,一定不要被程序漂亮的外表迷惑,需要看清楚它的本质,是否是木马的伪装外壳或是捆绑程序,必要时可以根据备份来恢复注册表。
注册表目录的含义如下。
(1)HKEY_CLASSES_ROOT(HKCR):此处存储的信息可确保在Windows资源管理器中执行时打开正确的程序。它还包含有关拖放规则、快捷方法和用户界面信息的更多详细信息。
(2)HKEY_CURRENT_USER(HKCU):包含当前登录系统的用户的配置信息,有用户的文件夹、屏幕颜色和控制面板设置。
(3)HKEY_LOCAL_MACHINE(HKLM):包含运行操作系统的计算机硬件特定信息,有系统上安装的驱动器列表及已安装硬件和应用程序的通用配置。
(4)HKEY_USERS(HKU):包含系统上所有用户配置文件的配置信息,有应用程序配置和可视设置。
(5)HKEY_CURRENT_CONFIG(HCU):存储有关系统当前配置的信息。
与系统启动相关的启动项通常位于以下几个位置:
- HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun
- HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunOnce
- HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunOnce
启动项主要有以下几种类型:
- 用户登录启动项:位于`HKEY_CURRENT_USER`下的启动项,仅针对当前用户生效,当用户登录时被执行。
- 系统启动启动项:位于`HKEY_LOCAL_MACHINE`下的启动项,影响所有用户,随着系统启动而执行。
- Run/RunOnce启动项:分别用于持续和一次性启动程序,RunOnce启动项在启动后会自动删除。
计划任务
由于很多计算机都会自动加载“任务计划”,“任务计划”也是恶意病毒实现持久化驻留的一种常用手段,因此在应急响应事件排查时需要重点排查。
1)计算机管理->系统工具->任务计划程序->任务计划程序库
2)powerShell下Get-ScheduledTask
3)命令行中schtasks
防火墙规则
Windows系统防火墙最基本的用途是对出、入的数据包进行检测。防火墙规则包括入站规则和出站规则。
入站规则:根据规则中的过滤条件,过滤从公网到本地主机的流量。
出站规则:根据规则中的过滤条件,过滤从本地主机到公网的流量。
1)windows Defender防火墙->高级设置->入站规则/出站规则
2)命令行:netsh
netsh Firewall show state 可显示当前防火墙的网络配置状态
进程排查
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在面向线程设计的计算机结构中,进程是线程的容器。无论是在Windows系统还是Linux系统中,主机在感染恶意程序后,恶意程序都会启动相应的进程,来完成相关的恶意操作,有的恶意进程为了能够不被查杀,还会启动相应的守护进程对恶意进程进行守护。
怎么判断是恶意进程?
对于Windows系统中的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程)及程序加载的DLL。
1)任务管理器
打开任务管理器,添加命令行获取更多信息
可以通过进程名和命令行来判断是否是恶意进程
2)命令行:tasklist
在命令行中输入【tasklist】命令,可显示运行在计算机中的所有进程,可查看进程的映像名称、PID、会话名等信息
3)使用netstat命令进行排查
netstat
显示网络连接的信息,包括活动的TCP连接、路由器和网络接口信息,是一个监控TCP/IP网络的工具。
常用的命令
netstat-ano|findstr "ESTABLISHED" 显示目前的网络连接,可以用来查看是否有外部恶意IP,在排查相关的进程。
netstat -anb 快速定位端口对应的程序,需要管理员权限
4)powershell命令
Get-WmiObject Win32_Process|select Name,ProcessId,ParentProcessId,Path
5)使用vmic命令进行查询
wmic process
wmic process list full /format:csv 以csv格式列出进程的所有信息
wmic process get name,parentprocessid,processid /format:csv 筛选部分信息
其它类似命令
wmic process get ExecutablePath,processid /format:csv
wmic process get name,ExecutablePath,processid,parentprocessid /format:csv|findstr /I "appdata"
wmic process where processid=[PID] get parentprocessid
wmic process where processid=[PID] get commandline
wmic process where name="malware.exe" call terminate 删除进程
wmic process where processid=[PID] delete 删除PID为某值的进程
服务排查
服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。服务非常适合在服务器上使用,通常在为了不影响在同一台计算机上工作的其他用户,且需要长时间运行功能时使用。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。
1)services.msc
运行上面的命令,可打开【服务】窗口,查看所有的服务项,包括服务的名称、描述、状态等
文件排查
在应急响应排查的过程中,由于大部分的恶意软件、木马、后门等都会在文件维度上留下痕迹,因此对文件痕迹的排查必不可少。一般,可以从以下几方面对文件痕迹进行排查:
(1)对恶意软件常用的敏感路径进行排查;
(2)在确定了应急响应事件的时间点后,对时间点前后的文件进行排查;
(3)对带有特征的恶意软件进行排查,这些特征包括代码关键字或关键函数、文件权限特征等。
1)敏感目录
(1)各个盘下的temp(tmp)相关目录。
(2)对于一些人工入侵的应急响应事件,有时入侵者会下载一些后续攻击的工具。Windows系统要重点排查浏览器的历史记录、下载文件和cookie信息,查看是否有相关的恶意痕迹。
(3)查看用户Recent文件。Recent文件主要存储了最近运行文件的快捷方式,可通过分析最近运行的文件,排查可疑文件。一般,Recent文件在Windows系统中的存储位置如下:
C:Documents and SettingsAdministrator(系统用户名)Recent;
C:Documents and SettingsDefault UserRecent。
(4)预读取文件夹查看。Prefetch是预读取文件夹,用来存放系统已访问过的文件的预读取信息,扩展名为pf。之所以自动创建Prefetch文件夹,是为了加快系统启动的进程。Windows系统利用“预读取”技术,在实际用到设备驱动程序、服务和shell程序之前装入它们。这种优化技术也被用到应用软件上,系统对每个应用软件的前几次启动情况进行分析,然后创建一个描述应用需求的虚拟“内存映像”,并把这些信息保存到WindowsPrefetch文件夹中。一般,在Windows 7系统中可以记录最近128个可执行文件的信息,在Windows 8到Windows 10系统中可以记录最近1024个可执行文件。一旦建立了映像,之后应用软件的装入速度可大幅提升。Prefetch文件夹的位置为“%SystemRoot%Prefetch”。
2)时间点查找
应急响应事件发生后,需要先确认事件发生的时间点,然后排查时间点前、后的文件变动情况,从而缩小排查的范围。
(1)可列出攻击日期内新增的文件,从而发现相关的恶意软件。
可以使用forfiles命令来查找相应时间点的新增文件
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy/MM/dd | dd}]
描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。
参数列表:
/P pathname 表示开始搜索的路径。默认文件夹是当前工作的
目录 (.)。
/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。
/S 指导 forfiles 递归到子目录。像 "DIR /S"。
/C command 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。
默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展名。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
要在命令行包括特殊字符,字符请以 0xHH
形式使用十六进制代码(例如,0x09 为 tab)。
内部 CMD.exe 命令前面应以 "cmd /c" 开始。
/D date 选择文件,其上一次修改日期大于或等于 (+),
或者小于或等于 (-) 用 "yyyy/MM/dd" 格式指定的日期;
或选择文件,其上一次修改日期大于或等于 (+)
当前日期加 "dd" 天,或者小于或等于 (-) 当前
日期减 "dd" 天。有效的 "dd" 天数可以是
0 - 32768 范围内的任何数字。如果没有指定,
"+" 被当作默认符号。
/? 显示此帮助消息。
示例:
FORFILES /?
FORFILES
FORFILES /P C:WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C: /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 在 30 前就被更改。"
FORFILES /D 2001/01/01
/C "cmd /c echo @fname 在 2001年1月1日就是新的。"
FORFILES /D +2024/7/27 /C "cmd /c echo @fname 今天是新的。"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
例如查找2024/07/27新增的文件
forfiles /m *.exe /d +2020/2/12 /s /p c: /c "cmd/c echo @path @fdate @ftime" 2>null
(2)对文件的创建时间、修改时间、访问时间进行排查。对于人工入侵的应急响应事件,有时攻击者会为了掩饰其入侵行为,对文档的相应时间进行修改,以规避一些排查策略。例如,攻击者可能通过“菜刀类”工具改变修改时间。因此,如果文件的相关时间存在明显的逻辑问题,就需要重点排查了,极可能是恶意文件。文件的修改时间为2015年,但创建时间为2017年,存在明显的逻辑问题,这样的文件就需要重点进行排查。
3)webshell
在应急响应过程中,网站是一个关键的入侵点,对Webshell(网站入侵的脚本工具)的查找可以通过上述方法进行筛选后再进一步排查。还可以使用D盾、HwsKill、WebshellKill等工具对目录下的文件进行规则查询,以检测相关的Webshell。
D盾:https://www.d99net.net/
火绒安全软件--木马病毒查杀工具:https://www.huorong.cn/
总结
上面总结了在应急响应时win系统的一些方面,在应急响应时要根据实际情况选择恰当的方式进行排查。
原文始发于微信公众号(信安路漫漫):win常见应急排查
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论