进程排查
进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。无论在Windows还是Linux中,主机在感染恶意程序后,恶意程序都会启动相应进程来完成恶意操作。
Windows进程排查
对于Windows系统中的进程排查,主要是找到恶意进程的PID、程序路径,有时还需要找到PPID(PID的父进程)及程序加载的DLL。对于进程的查看,一般有如下几种方式:
-
通过【任务管理器】查看可疑进程。
在打开【任务管理器】窗口后,点击【查看】>>【选择列】添加【命令行】和【映射路径名称】等进程页列,以方便获取更多进程信息。

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

【tasklist】添加特定参数,还可以查看每个进程提供的服务。
如:添加svc参数,可以显示每个进程和服务对应的情况;

添加m参数,查询进程加载的恶意程序,

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

- 使用【netstat】命令进行排查;
在命令行中输入【netstat】,可以显示网络连接的信息,包括活动的TCP连接、路由器和网络接口信息。
-a 显示所有连接和侦听端口
-b 显示在创建每个连接或侦听端口时涉及的可执行程序
-n 以数字形式显示地址和端口号
-o 显示拥有的与每个连接关联的进程ID
-p 显示proto指定的协议的连接

常见的网络状态说明:
LISTENING:侦听状态
ESTABLISHED:建立连接
CLOSE_WAIT:对方主动关闭连接或网络异常导致连接中断
在排查过程中,一般会使用【netstat -ano | findstr “ESTABLISHED”】命令查看目前的网络连接,定位可疑的ESTABLEISHED。

- 使用【wmic】命令进行查询;
(1) 在命令行使用【wmic process】命令,可以对进程情况进行查询。
如果感觉很乱的话,可以使用【wmic process > c:/1.txt】输出到文本进行查看。

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

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

(4)【wmic process where processid=380 get parentprocessid】命令表示以PID的值作为条件来获取其父进程的PID情况;

(5)【wmic process where processid=4 get commandline】命令表示以PID的值作为条件来获取命令行;

- 【wmic process where name=“bind_4556.exe” call terminate】命令是指删除“bind_4556.exe”恶意程序的进程。
运行一个名为bind_4556.exe的恶意木马;

删除“bind_4556.exe”恶意程序的进程。
wmic process where name="bind_4556.exe" call terminate

再次查看;

- 【wmic process where processid=[PID] delete】命令是指删除PID为某值的进程。
再次打开木马;PID为2004;

删除PID为2004的恶意进程。
wmic process where processid=2004 delete

Linux进程排查
Linux系统的进程排查相对于Windows比较简单一点;
主要使用以下方式:
-
一般情况下使用【ps -aux】查看,但是对于进程排查的帮助不是特别大!

-
最常用的排查命令【netstat -ntap】查看网络连接情况和调用进程的PID再通过【ls -alt /proc/PID】查看进程的可执行文件。

-
【pwdx pid】 获取该pid的进程启动的时候的⽬录,并不⼀定是恶意⽂件所在的路径,只是启动恶意⽂件的路径;【systemctl status pid】 获取这个进程的status信息
-
获取异常进程pid;
(1)CPU占⽤
top -c -o %CPU
-c 参数显示进程的命令⾏参数
-p 参数指定进程的pid
按Q退出;
ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%cpu | head -n 5
cpu占⽤前5的进程信息

(2)内存占⽤
top -c -o %MEM
-c 参数显示进程的命令⾏参数
-p 参数指定进程的pid

ps -eo pid,ppid,%mem,%cpu,cmd --sort=-%mem | head -n 5
内存占⽤前5的进程信息

- 有些进程会起⼦进程,可以使⽤如下命令查看:
ps ajfx
如果⽆⼦进程,直接使⽤【kill -9 pid】 这样会直接杀死指定进程,但是,由这个进程产⽣的⼦进程不会被杀死;
如果进程起⼦进程,需要使⽤如下命令:【kill -9 -pid】 注意,这⾥pid前有个减号,表示杀掉这个进程组;
使⽤ ps ajfx 可以看到具体的PPID、PID、PGID、SID 信息;

程序运⾏起来后,会产⽣⼀个主进程,并且分配⼀个进程ID(pid),如果在运⾏期间起其他进程,那么这个其他进程就是⼦进程,同时分配相应的进程ID,并设置其PPID的值为⽗进程的pid,此时,⽗进程和所有⽣成的⼦进程会组合成⼀个进程组,并且分配⼀个进程组ID。所以,如果挖矿程序有调⽤⼦进程,那么就需要以进程组为单位杀死!










![[LeetCode周赛复盘] 第 320 场周赛20221120](https://img-blog.csdnimg.cn/0e6ec4c2aecd413e8ced0db3a4d68bb7.png)






![[附源码]java毕业设计-室内田径馆预约管理系统](https://img-blog.csdnimg.cn/389953bcb15549bba218a0552b549962.png)

