赞
踩
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在面向线程设计的计算机结构中,进程是线程的容器。无论是在Windows系统还是Linux系统中,主机在感染恶意程序后,恶意程序都会启动相应的进程,来完成相关的恶意操作,有的恶意进程为了能够不被查杀,还会启动相应的守护进程对恶意进程进行守护。
目录
对于Windows系统中的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程)及程序加载的DLL。对于进程的排查,一般有如下几种方法。
1)通过【任务管理器】查看比较直观的方法是通过【任务管理器】查看可疑程序。
但是需要在打开【任务管理器】窗口后,添加【命令行】和【映射路径名称】等进程页列,如图所示,以方便获取更多进程信息。
在排查进程时,可重点关注进程的映像路径名称及命令行是否可疑,从而进一步进行排查。如图所示,程序iexplore.exe为可疑进程
2)使用【tasklist】命令进行排查
在命令行中输入【tasklist】命令,可显示运行在计算机中的所有进程,可查看进程的映像名称、PID、会话名等信息
使用【tasklist】命令并添加特定参数,还可以查看每个进程提供的服务,如添加svc参数,即输入【tasklist/svc】命令,可以显示每个进程和服务的对应情况
对于某些加载DLL的恶意进程,可以通过输入【tasklist/m】命令进行查询
要想查询特定DLL的调用情况,可以使用命令【tasklist/m 名称】。如图所示,输入【tasklist/m ntdll.dll】命令,可查询调用ntdll.dll模块的进程
同时,【tasklist】命令还有过滤器的功能,可以使用【fi】命令进行条件筛选,结合关系运算符【eq】(等于)、【ne】(不等于)、【gt】(大于)、【lt】(小于)、【ge】(大于等于)、【le】(小于等于)等命令进行有效过滤
3)使用【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。
在排查中发现PID为2856的进程有大量网络连接。
也可以通过【netstat-anb】命令(需要管理员权限)快速定位到端口对应的程序;
4)使用PowerShell进行排查
有时对于有守护进程的进程,还要确认子父进程之间的关系,可以使用PowerShell进行查看,一般PowerShell在查询时会调用Wmi对象。
【Get-WmiObjectWin32_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个字段的内容。执行后的结果如图2.2.12所示。
5)使用【wmic】命令进行查询
(1)在命令行中使用【wmic process】命令,可以对进程情况进行查询。
但使用【wmic process list full/format:csv】命令,即以csv格式列出进程的所有信息,此时命令列出的信息过多,不便于阅读。
因此,可以使用【wmic process getname,parentprocessid,processid/format:csv】命令,以csv格式来显示进程的名称、父进程ID、进程ID
(2)同时【wmic】命令
还可以结合条件对进程进行筛选。【wmic process where processid=[PID] get parentprocessid】命令表示以PID的值作为条件来获取其父进程的PID情况。
如图所示,是获取PID的值为1888的进程的父进程PID的值,获取到的父进程PID的值为808。
其他类似命令如下。
【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为某值的进程
在命令行中输入【netstat】网络连接命令,可分析可疑端口、可疑IP地址、可疑PID及程序进程。如图所示,PID为2963的进程存在恶意外链情况。根据PID的值,利用【ls-alt/proc/PID】命令,可查看其对应的可执行程序。如图所示,使用【ls-alt/proc/2963】命令,可查看PID为2963的进程的可执行程序。
也可以利用【lsof-p PID】命令,查看进程所打开的文件。如图所示,使用【lsof-p 2963】命令,可查看PID为2963的进程所打开的文件,发现文件mbrn为可疑文件
如果是恶意进程,可以使用【kill-9 PID】命令结束进程,如【kill-9 2535】命令表示结束PID为2535的进程。
然后使用【rm-rf filename】命令可删除木马,如要删除mbrn文件,则可使用命令【rm-rf mbrn】。如果root用户都无法删除相关文件,那么很可能是因为该文件被加上了i属性。
使用【lsatter filename】命令,可查看文件属性,然后使用【chattr-i filename】命令,可移除i属性,进而删除文件。也有的进程因为存在守护进程而无法删除,我们可以先把进程挂起,查杀守护进程后,再返回将进程删除。
有些攻击者会将进程隐藏,以躲避排查,因此查看隐藏进程同样重要。按照顺序执行【ps-ef|awk '{print}'|sort-n|uniq >1】、【ls/proc|sort-n |uniq >2】和【diff1 2】命令,可以查看隐藏进程
对于挖矿进程的排查,可使用【top】命令查看相关资源占用率较高的进程,之后进行定位。
如图所示,发现PID为XXX的进程的CPU占用率较高,因此可进行重点排查。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。