天天看点

python渗透测试入门之wmi进程监控

作者:ailx10
python渗透测试入门之wmi进程监控

近期收到了电子工业出版社赠送的一本网络安全书籍《python黑帽子》,书中一共24个实验,今天复现第22个实验( wmi进程监控),我的测试环境是windows10虚拟机(64位)+conda开发环境+python3.7。这个实验可以监控windows系统中运行的进程,有助于收集每个进程的启动信息,便于分析进程的好坏~

python渗透测试入门之wmi进程监控

ailx10

网络安全优秀回答者

网络安全硕士

去咨询

1、在py37hack环境中,将python脚本编译成exe可执行程序

python渗透测试入门之wmi进程监控

2、进入dist目录下安装并运行bhservice服务

python渗透测试入门之wmi进程监控

3、上面2个步骤可以忽略,这里开始利用WMI监控进程,运行monitor脚本,就可以监控之后运行的所有进程,这里我测试了calc计算器、notepad记事本、cmd命令行,全成功了,这里可以看到记录了计算机的用户名称、进程PID、还有进程所在文件位置等信息,非常nice ~

python渗透测试入门之wmi进程监控

4、喝个咖啡,等一会儿,打开脚本所在目录下的txt文件,查看计算机偷偷做了哪些事,这里记录了不少~

python渗透测试入门之wmi进程监控

参考代码:

# -*- coding: utf-8 -*-
# @Time    : 2022/6/26 7:10 PM
# @Author  : ailx10
# @File    : process_monitor.py

import os
import sys
import win32api
import win32con
import win32security
import wmi

def log_to_file(message):
    with open("process_monitor_log.csv","a") as fd:
        fd.write(f"{message}\r\n")

def monitor():
    head = "CommandLine,Time,Executable,Parent,PID,PID,User,Privileges"
    log_to_file(head)
    c = wmi.WMI()
    process_watcher = c.Win32_Process.watch_for("creation")
    while True:
        try:
            new_process = process_watcher()
            cmdline = new_process.CommandLine
            create_date = new_process.CreationDate
            executable = new_process.ExecutablePath
            parent_pid = new_process.ParentProcessId
            pid = new_process.ProcessId
            proc_owner = new_process.GetOwner()
            privileges = "N/A"
            process_log_message = (f"{cmdline},{create_date},{executable},{parent_pid},{pid},{proc_owner},{privileges}")
            print(process_log_message)
            print()
            log_to_file(process_log_message)
        except Exception:
            pass

if __name__ == "__main__":
    monitor()           
python渗透测试入门之wmi进程监控

发布于 2022-06-26 20:51