• 使用脚本来监控新建进程及其父进程以及他们的命令行


    如今,流氓软件越来越多,其中也包含很多的知名软件厂商也赫然在列,肆意弹框,广告,篡改首页及系统设置,这些操作都是在后台静默完成,操作的流氓技术手段层出不穷,在运维过程中出现的反复问题,通过肉眼或者一定的技术手段可能都无法捕获到最终是哪个进程发起的流氓行为。为此,通过一定的脚本编程手段来加以辅助可谓事半功倍。举一简单例子,某用户计算机卸载了各种流氓软件后,没一会儿又安装上了,那么是如何安装上的,下面的脚本会告诉你答案。

    该功能一共有2个脚本,第一个是vbs主程序,用以实现监控,第二个是批处理,用以调用这个vbs,将vbs捕获的信息显示到窗口上。

    下面是VBS脚本代码:

    strComputer = "." 
    Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\" & strComputer & "
    ootcimv2") 
    Set colMonitoredProcesses = objWMIService. _ 
    ExecNotificationQuery("select * from __instancecreationevent " & " within 1 where TargetInstance isa 'Win32_Process'") 
    Wscript.echo "进程监控已开启,任何新建进程将会被捕获!"
    Do While 1
        Set objLatestProcess = colMonitoredProcesses.NextEvent
        sppid = objLatestProcess.TargetInstance.ParentProcessID
        Wscript.Echo time & " 发现新建进程-->" & "发起父进程Process ID:" & sppid
        Wscript.Echo "父进程命令行:" & GetParentProcessName(sppid)
        Wscript.Echo "创建新进程:" & objLatestProcess.TargetInstance.CommandLine
        Wscript.Echo "----------------------------------------------------------------"
    Loop
    
    Function GetParentProcessName(pid)
    On error resume next
    Dim sComputerName,WMI_Obj,WMI_ObjProps,ObjClsItem
    sComputerName="."
       Set WMI_Obj = GetObject("winmgmts:\" & sComputerName & "
    ootcimv2")
       Set WMI_ObjProps = WMI_Obj.ExecQuery("Select * from Win32_Process where ProcessId='" & pid & "'", , 48)
    
       For Each ObjClsItem in WMI_ObjProps
        GetParentProcessName = ObjClsItem.CommandLine
       Next
    End Function

    下面是bat批处理脚本代码:

    @echo off
    >nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
    if '%errorlevel%' NEQ '0' (
        echo 请求管理员权限...
        goto UACPrompt
    ) else ( goto gotAdmin )
    :UACPrompt
        echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
        echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
        "%temp%getadmin.vbs"
        exit /B
    :gotAdmin
        if exist "%temp%getadmin.vbs" ( del "%temp%getadmin.vbs" )
        pushd "%CD%"
        CD /D "%~dp0"
    cscript.exe //Nologo "%~dp0"procsm.vbs
    
    pause>nul

    将上面的2个脚本放在同一个目录中,然后运行批处理脚本,此时,批处理会调用UAC以管理员身份运行,随后载入执行vbs脚本,运行后,我们可以看到以下监控的效果:

  • 相关阅读:
    JS 拖动(验证码)滑块
    如何配置WebStorm开发Chrome插件项目
    常用Linux命令备查
    Vim常用快捷键汇总
    常用SQL语句备查
    Maven应用常见问题
    postgresql 关联表修改
    postgis坐标转换
    Geoserver自动发布服务
    GeoServer修改端口号
  • 原文地址:https://www.cnblogs.com/boltkiller/p/5897433.html
Copyright © 2020-2023  润新知