应急响应-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为某值的进程。
相关推荐
哲伦贼稳妥39 分钟前
一天认识一个硬件之机房地板
运维·网络·经验分享·其他
hgdlip2 小时前
如何快速切换电脑的ip地址
网络·tcp/ip·电脑
l1x1n04 小时前
No.2 笔记 | 网络安全攻防:PC、CS工具与移动应用分析
安全·web安全
程序员-珍4 小时前
虚拟机ip突然看不了了
linux·网络·网络协议·tcp/ip·centos
4647的码农历程4 小时前
Linux网络编程 -- 网络基础
linux·运维·网络
向李神看齐4 小时前
RTSP协议讲解
网络
Death2005 小时前
使用Qt进行TCP和UDP网络编程
网络·c++·qt·tcp/ip
魏大橙5 小时前
linux RCE本地/公网测试
网络·网络协议·udp
醉颜凉5 小时前
银河麒麟桌面操作系统V10 SP1:取消安装应用的安全授权认证
运维·安全·操作系统·国产化·麒麟·kylin os·安全授权认证
陈逸轩*^_^*5 小时前
Java 网络编程基础
java·网络·计算机网络