应急响应-Windows-进程排查

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

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

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

  • 在排查进程时,可重点关注进程的映像路径名称及命令行是否可疑,从而进一步进行排查,如图所示,程序iexplore.exe为可疑进程。

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

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

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

  • 要想查询特定DLL的调用情况,可以使用命令【tasklist /m 名称】。如图所示。输入【tasklist/m ntdll.dll】命令,可查询调用ntdll.dll模块的进程。

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

  • 例如,查看PID为992的进程,可使用命令【tasklist /svc /fi "PID eq 992"】查看,如图所示、。

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:重新显示选的统计信息,每次显示之间暂停时间间隔(以秒计)。常见的网络状态如下。
      • LISTRNING:侦听状态
      • ESTABLISHEN:建立连接
      • CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断
  • 在排查过程中,一般会使用【netstat -ano | findstr "ESTABLISHED"】命令查看当前的网络连接,定位可以的ESTABLISHED。如图所示。在排查中发现PID为2856的进程有大量的网络连接。

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

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

PowerShell排查
  • 有时对于有守护进程的进程,还要确认子夫进程之间的关系,可以使用PowerShell进行查看,一般PowerShekk在查询时会调用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命令查询
  • 在命令行中使用【wmic process】命令,可以对进程情况进行查询。但使用【wmic process list full /format:cvs】命令,即以cvs格式列出进程的所有信息,此时命令列出的信息过多,不便于阅读。因此,可以使用【 wmic process get name,parentprocessid,processid /format:csv 】

  • 其他类似命令如下。

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

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

  • 同时【wmic】命令还可以结合条件对进程进行筛选。
    • 【wmic process where processid=[PID] get parentprocessid 】命令以表示以PID的值作为条件来获取其父进程的PID情况。如图所示,是获取PID的值为1820的进程的父进程PID的值,获取到父进程PID的值为10556。
  • 其他类似命令如下
    • 【wmic process where processid=[PID] get commandline 】命令表示以PID的值作为条件来获取其命令行。
  • 在使用【wmic process】 命令查出恶意进程后,会结束恶意进程,一般使用命令如下
    • 【wmic process where name="malware.exe" call terminate】 命令是值删除"malware.exe" 恶意程序的进程。
    • 【wmic process where processid=[PID] delete】命令是指删除PID为某值的进程。
相关推荐
用户962377954481 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机1 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954481 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star1 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954481 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher3 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行6 天前
网络安全总结
安全·web安全
DianSan_ERP6 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
red1giant_star6 天前
手把手教你用Vulhub复现ecshop collection_list-sqli漏洞(附完整POC)
安全