【应急响应】网络安全应急响应技术实战指南-Win系统排查
2023-10-3 01:43:12 Author: 利刃信安攻防实验室(查看原文) 阅读量:102 收藏

网络安全应急响应技术实战指南-Win系统排查

系统排查

在进行受害主机排查时,首先要对主机系统进行基本排查,方便对受害主机有一个初步的了解。 

系统基本信息

在基础排查时,可以使用 Microsoft 系统信息工具(Msinfo32.exe),它是Microsoft Windows NT 诊断工具(Winmsd.exe)的更新版本。 

系统信息工具

在命令行中输入【msinfo32】命令,打开【系统信息】窗口,可以显示出本地计算机的硬件资源、组件和软件环境的信息。除了各方面的概述信息,还可以对正在运行任务、服务、系统驱动程序、加载的模块、启动程序等进行排查。 

正在运行任务

在【系统信息】窗口中,单击【软件环境】中的【正在运行任务】选项,可查看正在运行任务的名称、路径、进程 ID 等详细信息。

服务

在【系统信息】窗口中,单击【软件环境】中的【服务】选项,可查看服务的名称、状态、路径等详细信息。

系统驱动程序

在【系统信息】窗口中,单击【软件环境】中的【系统驱动程序】选项,可查看系统驱动程序的名称、描述、文件等详细信息。

加载的模块 

在【系统信息】窗口中,单击【软件环境】中的【加载的模块】选项,可查看加载的模块的名称、路径等详细信息。

启动程序

在【系统信息】窗口中,单击【软件环境】中的【启动程序】选项,可查看启动程序的命令、用户名、位置等详细信息。

如果只是简单了解系统信息,还可以通过在命令行中输入【systeminfo】命令实现,可查看主机名、操作系统版本等详细信息。 

用户信息

在服务器被入侵后,攻击者可能会建立相关账户(有时是隐藏或克隆账户),方便进行远程控制。攻击者会采用的方法主要有如下几种:第 1 种是最明目张胆的,即直接建立一个新的账户(有时是为了混淆视听,账户名称与系统常用名称相似);第 2 种是激活一个系统中的默认账户,但这个账户是不经常使用的;第 3 种是建立一个隐藏账户(在 Windows 系统中,一般在账户名称最后加$)。无论攻击者采用哪种方法,都会在获取账户后,使用工具或是利用相关漏洞将这个账户提升到管理员权限,然后通过这个账户任意控制计算机。 

对于 Windows 系统中的恶意账户排查,主要有以下 4 种方法。

命令行方法 

在命令行中输入【net user】命令,可直接收集用户账户信息(注意,此方法看不到以$结尾的隐藏账户),若需查看某个账户的详细信息,可在命令行中输入【net user username】命令(username 为具体的用户名)。使用【net user k8h3d】命令,查看 k8h3d 账户的详细信息。

net user admin$ 11qq@MannixM /add

图形界面方法

打开【计算机管理】窗口,单击【本地用户和组】中的【用户】选项,可查看隐藏账户,名称以$结尾的为隐藏账户。也可以在命令行中输入【lusrmgr.msc】命令,直接打开图形界面,查看是否有新增/可疑的账户。 

注册表方法

打开【注册表编辑器】窗口,选择【HKEY_LOCAL_MACHINE】下 的【SAM】选项,为该项添加【允许父项的继承权限传播到该对象和所有子对象。包括那些在此明确定义的项目】和【用在此显示的可以应用到子对象的项目替代所有子对象的权限项目】权限,使当前用户拥有 SAM 的读取权限。

添加权限完成后按【F5】键,刷新后即可访问子项并查看用户信息。

同时,在此项下导出所有以 00000 开头的项,将所有导出的项与 000001F4(该项对应 Administrator 用户)导出内容做比较,若其中的 F 值相同,则表示可能为克隆账户。

对导出的 F 值进行比较,发现相同,说明系统中存在克隆账户。

wmic 方法

wmic 扩展 WMI(Windows Management Instrumentation,Windows管理工具),提供从命令行接口和批命令脚本执行系统管理支持。在命令行中输入【wmic useraccount get name,SID】命令,可以查看系统中的用户信息。

启动项

启动项是开机时系统在前台或者后台运行的程序。操作系统在启动时,通常会自动加载很多程序。启动项是病毒后门等实现持久化驻留的一种常用方法,在应急响应中也是排查的必要项目。

Windows 系统中的自启动文件是按照 2 个文件夹和 5 个核心注册表子键来自动加载程序的。除了通过相关的工具查看,还可以通过以下两种方法进行查看。

通过【系统配置】对话框查看 

在命令行中输入【msconfig】命令,打开 Windows 系统中的【系统配置】对话框,单击【启动】选项卡,可查看启动项的详细信息。

通过注册表查看 

注册表是操作系统中一个重要的数据库,主要用于存储系统所必需的信息。

注册表以分层的组织形式存储数据元素。数据项是注册表的基本元素,每个数据项下面不但可以存储很多子数据项,还可以以键值对的形式存储数据。注册表的启动项是恶意程序的最爱,很多病毒木马通过注册表来实现在系统中的持久化驻留。特别是我们在安装了新的软件程序后,一定不要被程序漂亮的外表迷惑,需要看清楚它的本质,是否是木马的伪装外壳或是捆绑程序,必要时可以根据备份来恢复注册表。 

注册表目录的含义如下。 

(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):存储有关系统当前配置的信息。 

这里以“驱动人生”病毒作为查询案例,通过注册表和命令进行查询,会发现“驱动人生”建立了 WebServers 和Ddriver 两个键值,分别是病毒的信息窃取模块和病毒的主程序。 

任务计划

由于很多计算机都会自动加载“任务计划”,“任务计划”也是恶意病毒实现持久化驻留的一种常用手段,因此在应急响应事件排查时需要重点排查。

任务计划是 Windows 系统的一个预置实现某些操作的功能,利用这个功能还可实现自启动的目的,获取任务计划的方法有以下几种。 

(1)打开【计算机管理】窗口,选择【系统工具】中【任务计划程序】中的【任务计划程序库】选项,可以查看任务计划的名称、状态、触发器等详细信息。 

(2)在 PowerShell 下输入【Get-ScheduledTask】命令,可查看当前系统中所有任务计划的信息,包括任务计划的路径、名称、状态等详细信息。 

(3)在命令行中输入【schtasks】命令,可获取任务计划的信息。该命令是一个功能更为强大的超级命令行计划工具,它含有【at】(在较旧的系统中才可以用)命令行工具中的所有功能,获取任务计划时要求必须是本地Administrators 组的成员。

其他

Windows 系统防火墙最基本的用途是对出、入的数据包进行检测。 

防火墙规则包括入站规则和出站规则。入站规则:根据规则中的过滤条件,过滤从公网到本地主机的流量。出站规则:根据规则中的过滤条件,过滤从本地主机到公网的流量。两种规则都可以按需自定义流量过滤的条件。换句话说,入站规则与进入主机的流量有关。如果在主机上运行一个 Web 服务器,那就必须告诉防火墙允许外部用户访问主机。出站规则与流出主机的流量有关,会将应用程序分类,允许部分应用程序访问外网,而其他应用则不能。如果想让浏览器(IE、火狐、Safari、Chrome、Opera 等)访问外网,但同时阻止访问某些网站,则可以在出站规则中插入命令,表示允许或不允许哪些网站通过防火墙。有些恶意软件会通过设置防火墙策略进行流量转发等操作,如驱动人生病毒对防火墙的设置。 

打开【Windows 防火墙】窗口,单击【高级设置】,然后选择【入站规则】或【出站规则】可查看防火墙的入站规则或出站规则。

也可以在命令行中输入【netsh】命令进行查看。使用【netsh Firewall show state】命令,可显示当前防火墙的网络配置状态。

新操作系统使用新命令

netsh advfirewall firewall show rule name=all dir=in type=dynamic

进程排查

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在面向线程设计的计算机结构中,进程是线程的容器。无论是在 Windows 系统还是 Linux 系统中,主机在感染恶意程序后,恶意程序都会启动相应的进程,来完成相关的恶意操作,有的恶意进程为了能够不被查杀,还会启动相应的守护进程对恶意进程进行守护。 

对于 Windows 系统中的进程排查,主要是找到恶意进程的 PID、程序路径,有时还需要找到 PPID(PID 的父进程)及程序加载的 DLL。对于进程的排查,一般有如下几种方法。

通过【任务管理器】查看

比较直观的方法是通过【任务管理器】查看可疑程序。但是需要在打开【任务管理器】窗口后,添加【命令行】和【映射路径名称】等进程页列,以方便获取更多进程信息。 

在排查进程时,可重点关注进程的映像路径名称及命令行是否可疑,从而进一步进行排查。

使用【tasklist】命令进行排查 

在命令行中输入【tasklist】命令,可显示运行在计算机中的所有进程,可查看进程的映像名称、PID、会话名等信息。

使用【tasklist】命令并添加特定参数,还可以查看每个进程提供的服务,如添加 svc 参数,即输入【tasklist /svc】命令,可以显示每个进程和服务的对应情况。

对于某些加载 DLL 的恶意进程,可以通过输入【tasklist /m】命令进行查询。

要想查询特定 DLL 的调用情况,可以使用命令【tasklist /m 名称】。

同时,【tasklist】命令还有过滤器的功能,可以使用【fi】命令进行条件筛选,结合关系运算符【eq】(等于)、【ne】(不等于)、【gt】(大于)、【lt】(小于)、【ge】(大于等于)、【le】(小于等于)等命令进行有效过滤。

使用【netstat】命令进行排查 

在命令行中输入【netstat】命令,可显示网络连接的信息,包括活动的 TCP 连接、路由器和网络接口信息,是一个监控 TCP/IP 网络的工具。相关参数如下。 

-a:显示所有连接和侦听端口。 

-b:显示在创建每个连接或侦听端口时涉及的可执行程序。 

-e:显示以太网统计信息。可以与-s 结合使用。 

-f:显示外部地址的完全限定域名(FQDN)。 

-n:以数字形式显示地址和端口号。 

-o:显示拥有的与每个连接关联的进程 ID。 

-p proto:显示 proto 指定的协议的连接。 

-q:显示所有连接、侦听端口和绑定的非侦听 TCP 端口。绑定的非侦听端口不一定与活动连接相关联。 

-r:显示路由表。 

-s:显示每个协议的统计信息。默认情况下,显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息。 

-t:显示当前连接卸载状态。 

-x:显示 NetworkDirect 连接、侦听器和共享终结点。 

-y:显示所有连接的 TCP 连接模板。无法与其他选项结合使用。 

interval:重新显示选定统计信息,每次显示之间暂停时间间隔(以秒计)。 

常见的网络状态说明如下。 

LISTENING:侦听状态。 

ESTABLISHED:建立连接。 

CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断。 

在排查过程中,一般会使用【netstat -ano | findstr "ESTABLISHED"】命令查看目前的网络连接,定位可疑的 ESTABLISHED。

通过【netstat】命令定位出 PID,再通过【tasklist】命令进行程序定位,发现PID 为 2856 的进程有大量网络连接后,使用【tasklist | find "2856"】命令可查看具体的程序。

也可以通过【netstat -anb】命令(需要管理员权限)快速定位到端口对应的程序。

使用 PowerShell 进行排查

有时对于有守护进程的进程,还要确认子父进程之间的关系,可以使用

PowerShell 进行查看,一般 PowerShell 在查询时会调用 Wmi 对象【Get-WmiObject Win32_Process | select Name, ProcessId, ParentProcessId, Path】命令中 Get-WmiObject Win32_Process 表示获取进程的所有信息,select Name, ProcessId, ParentProcessId, Path 表示选择 Name, ProcessId, ParentProcessId, Path 4 个字段,整个命令表示显示所有进程信息中的 Name, ProcessId, ParentProcessId, Path 4 个字段的内容。

使用【wmic】命令进行查询 

(1)在命令行中使用【wmic process】命令,可以对进程情况进行查询。但使用【wmic process list full /format:csv】命令,即以 csv 格式列出进程的所有信息,此时命令列出的信息过多,不便于阅读。因此,可以使用【wmic process getname,parentprocessid,processid /format:csv】命令,以 csv 格式来显示进程的名称、父进程 ID、进程 ID。

其他类似命令如下。 

【wmic process get ExecutablePath, processid /format:csv】命令表示以 csv 格式来显示进程路径、进程 ID 信息。 

【wmic process get name, ExecutablePath, processid, parentprocessid /format:csv | findstr /I "appdata"】命令表示以 csv 格式来显示进程的名称、进程路径、进程 ID、父进程 ID 信息。 

(2)同时【wmic】命令还可以结合条件对进程进行筛选。 

【wmic process where processid=[PID] get parentprocessid】命令表示以 PID 的值作为条件来获取其父进程的 PID 情况。

其他类似命令如下。 

【wmic process where processid=[PID] get commandline】命令表示以 PID 的值作为条件来获取其命令行。 

(3)在使用【wmic process】命令查出恶意进程后,会结束恶意进程,一般使用如下命令结束恶意进程。 

【wmic process where name="malware.exe" call terminate】命令是指删除"malware.exe"恶意程序的进程。 

【wmic process where processid=[PID] delete】命令是指删除PID为某值的进程。 

服务排查 

服务可以理解为运行在后台的进程。这些服务可以在计算机启动时自动启动,也可以暂停和重新启动,而且不显示任何用户界面。服务非常适合在服务器上使,通常在为了不影响在同一台计算机上工作的其他用户,且需要长时间运行功能时使用。在应急响应排查过程中,服务作为一种运行在后台的进程,是恶意软件常用的驻留方法。 

打开【运行】对话框,输入【services.msc】命令,可打开【服务】窗口,查看所有的服务项,包括服务的名称、描述、状态等。

应用系统名称


主管单位


主要负责人


运维单位


直接负责人


应用系统url


所属网络


外网IP


内网IP


攻击IP


攻击时间


发现时间


阻断时间


应用系统漏洞存在位置


事件类型


后门位置


处置措施


青藤扫描结果


涉及主机情况


系统排查

异常任务


异常驱动


异常模块


异常程序


用户信息

异常账号


异常登录


启动项

异常启动项


任务计划

异常任务计划


进程排查

异常进程


异常连接


服务排查

异常服务


文件痕迹排查

敏感目录


时间点查找


特殊文件


系统命令


内存后门检测


历史命令


WebShell


日志分析

系统日志


应用日志


影响危害


结论



文章来源: http://mp.weixin.qq.com/s?__biz=MzU1Mjk3MDY1OA==&mid=2247506930&idx=1&sn=41bcd83c4aa11059f1ae0d0fdfc1f53c&chksm=fbfb6b3fcc8ce22993aca7edba9ebe171bd9c9c52c12b3382a1d97b4c0865f07806b409d272a&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh