Utilice esta sección para crear los archivos rawProcessInfo.json, rawProcessWMIInfo.json y os.json. Estos scripts se ejecutan durante la introspección en la máquina virtual basada en el sistema operativo Windows para recopilar detalles del proceso, detalles del sistema operativo y detalles de la red.
Un archivo rawProcessInfo.json de ejemplo
Nota:
- Puede utilizar el comando
Get-Process -IncludeUserName
y convertirlo en un archivo JSON para recopilar los detalles del proceso. - Las claves del archivo JSON de ejemplo son importantes.
-
puede ser cualquier cosa específica para el proceso.- Cambie las cadenas de corchetes
<>
por los valores adecuados, donde- <número> es de tipo entero
- <texto> es de tipo cadena
- <booleano> es verdadero o falso
-
<?>
también puede ser un valor nulo
-
La llave { } significa objetos específicos
- El corchete [ ] significa lista y puede tener varios objetos similares.
[ { "BasePriority": <number>, "ExitCode": <number>, "HasExited": <boolean>, "ExitTime": <time or null>, "Handle": <number>, "SafeHandle": { "IsInvalid": <boolean>, "IsClosed": <boolean> }, "HandleCount": <number>, "Id": <number>, "MachineName": <string>, "MainWindowHandle": <number>, "MainWindowTitle": <string>, "MainModule": { "ModuleName": <string>, "FileName": <string>, "BaseAddress": <number>, "ModuleMemorySize": <number>, "EntryPointAddress": <number>, "FileVersionInfo": <string>, "Site": null, "Container": null }, "MaxWorkingSet": <number>, "MinWorkingSet": <number>, "Modules": [ <string> ], "NonpagedSystemMemorySize": <number>, "NonpagedSystemMemorySize64": <number>, "PagedMemorySize": <number>, "PagedMemorySize64": <number>, "PagedSystemMemorySize": <number>, "PagedSystemMemorySize64": <number>, "PeakPagedMemorySize": <number>, "PeakPagedMemorySize64": <number>, "PeakWorkingSet": <number>, "PeakWorkingSet64": <number>, "PeakVirtualMemorySize": <number>, "PeakVirtualMemorySize64": <number>, "PriorityBoostEnabled": <boolean>, "PriorityClass": <number>, "PrivateMemorySize": <number>, "PrivateMemorySize64": <number>, "PrivilegedProcessorTime": { "Ticks": <number>, "Days": <number>, "Hours": <number>, "Milliseconds": <number>, "Minutes": <number>, "Seconds": <number>, "TotalDays": <number>, "TotalHours": <number>, "TotalMilliseconds": <number>, "TotalMinutes": <number>, "TotalSeconds": <number> }, "ProcessName": <string>, "ProcessorAffinity": <number>, "Responding": <boolean>, "SessionId": <number>, "StartInfo": { "Verb": <number>, "Arguments": <number>, "CreateNoWindow": <boolean>, "EnvironmentVariables": <string>, "Environment": “[<key1>, <value>] [<key2>,<value>]", "RedirectStandardInput": <boolean>, "RedirectStandardOutput": <boolean>, "RedirectStandardError": <boolean>, "StandardErrorEncoding": <string>, "StandardOutputEncoding": <string>, "UseShellExecute": <boolean>, "Verbs": <string>, "UserName": <string>, "Password": <string>, "PasswordInClearText": <string>, "Domain": <string>, "LoadUserProfile": <boolean>, "FileName": <string>, "WorkingDirectory": <string>, "ErrorDialog": <boolean>, "ErrorDialogParentHandle": <number>, "WindowStyle": <number> }, "StartTime": <string>, "SynchronizingObject": null, "Threads": [ <string1>, <string2> ], "TotalProcessorTime": { "Ticks": <number>, "Days": <number>, "Hours": <number>, "Milliseconds": <number>, "Minutes": <number>, "Seconds": <number>, "TotalDays": <number>, "TotalHours": <number>, "TotalMilliseconds": <number>, "TotalMinutes": <number>, "TotalSeconds": <number> }, "UserProcessorTime": { "Ticks": <number>, "Days": <number>, "Hours": <number>, "Milliseconds": <number>, "Minutes": <number>, "Seconds": <number>, "TotalDays": <number>, "TotalHours": <number>, "TotalMilliseconds": <number>, "TotalMinutes": <number>, "TotalSeconds": <number> }, "VirtualMemorySize": <number>, "VirtualMemorySize64": <number>, "EnableRaisingEvents": <boolean>, "StandardInput": null, "StandardOutput": null, "StandardError": null, "WorkingSet": <number>, "WorkingSet64": <number>, "Site": null, "Container": null, "UserName": <string>, "Name": "inetinfo", "SI": <number>, "Handles": <number>, "VM": <number>, "WS": <number>, "PM": <number>, "NPM": <number>, "Path": <string>, "Company": <string>, "CPU": <number>, "FileVersion": <string>, "ProductVersion": <string>, "Description": <string>, "Product": <string>, "__NounName": <string> }, { ... } ]
Un archivo rawProcessWMIInfo.json de ejemplo
Nota: El archivo
rawProcessWMIInfo.json debe estar en el mismo directorio de trabajo, que contiene más detalles sobre los procesos en ejecución. Puede utilizar el comando
Get-WmiObject -Class Win32_Process
en PowerShell y convertirlo en el archivo JSON antes de guardarlo para recopilar los detalles del proceso.
[ { "Scope": { "IsConnected": <boolean>, "Options": "<text>", "Path": "<text>" }, "Path": { "Path": "<text>", "RelativePath": "<text>", "Server": "<text>", "NamespacePath": "<text>", "ClassName": "<text>", "IsClass": <boolean>, "IsInstance": <boolean>, "IsSingleton": <boolean> }, "Options": { "UseAmendedQualifiers": <boolean>, "Context": "", "Timeout": "<text>" }, "ClassPath": { "Path": "<text>", "RelativePath": "<text>", "Server": "<text>", "NamespacePath": "<text>", "ClassName": "<text>", "IsClass": <boolean>, "IsInstance": <boolean>, "IsSingleton": <boolean> }, "Properties": [ "<text>" ], "SystemProperties": [ "<text>" ], "Qualifiers": [ "<text>" ], "Site": null, "Container": null, "PSComputerName": "<text>", "ProcessName": "<text>", "Handles": <number>, "VM": <number>, "WS": <number>, "__GENUS": <number>, "__CLASS": "<text>", "__SUPERCLASS": "<text>", "__DYNASTY": "<text>", "__RELPATH": "<text>", "__PROPERTY_COUNT": <number>, "__DERIVATION": [ "<text>" ], "__SERVER": "<text>", "__NAMESPACE": "<text>", "__PATH": "<text>", "Caption": "<text>", "CommandLine": null, "CreationClassName": "<text>", "CreationDate": "<text>", "CSCreationClassName": "<text>", "CSName": "<text>", "Description": "<text>", "ExecutablePath": null, "ExecutionState": null, "Handle": "<number>", "HandleCount": <number>, "InstallDate": null, "KernelModeTime": <number>, "MaximumWorkingSetSize": null, "MinimumWorkingSetSize": null, "Name": "<text>", "OSCreationClassName": "<text>", "OSName": "<text>", "OtherOperationCount": <number>, "OtherTransferCount": <number>, "PageFaults": <number>, "PageFileUsage": <number>, "ParentProcessId": <number>, "PeakPageFileUsage": <number>, "PeakVirtualSize": <number>, "PeakWorkingSetSize": <number>, "Priority": <number>, "PrivatePageCount": <number>, "ProcessId": <number>, "QuotaNonPagedPoolUsage": <number>, "QuotaPagedPoolUsage": <number>, "QuotaPeakNonPagedPoolUsage": <number>, "QuotaPeakPagedPoolUsage": <number>, "ReadOperationCount": <number>, "ReadTransferCount": <number>, "SessionId": <number>, "Status": null, "TerminationDate": null, "ThreadCount": <number>, "UserModeTime": <number>, "VirtualSize": <number>, "WindowsVersion": "<text>", "WorkingSetSize": <number>, "WriteOperationCount": <number>, "WriteTransferCount": <number> } ]
Un archivo os.json de ejemplo
Nota:
- El archivo os.json debe estar en el mismo directorio de trabajo, que tendrá detalles específicos del sistema operativo del dispositivo. Puede utilizar el comando
(Get-WmiObject -class Win32_OperatingSystem).Caption
en PowerShell. - Las claves del JSON de ejemplo son importantes.
--
puede ser algo específico del sistema operativo. Por ejemplo: para Windows 2016 Server, <text> puede ser Microsoft Windows Server 2016 Standard.
{ "network_detailed": [], "interfaces": [ "------" ], "ipv6": [ "-:----::----:----:----:----" ], "ipv4": [ "---.---.---.---" ], "mac_address": { "---": "--:--:--:--:--:--" }, "os_info": "--------------------------------------"
Un archivo socketsOutFile.txt de ejemplo
El archivo socketsOutFile.txt debe estar en el mismo directorio de trabajo, que contiene toda la información relacionada con los sockets. Puede utilizar el comando
en PowerShell.(netstat -bano |
Out-String
) -replace
'(?m)^ (TCP|UDP)'
,
'$1'
-replace
'\r?\n\s+([^\[])'
,
"
`t`$
1"
-replace
'\r?\n\s+\['
,
"
`t
["
”
Active Connections Proto Local Address Foreign Address State PID TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4 Can not obtain ownership information TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 736 RpcSs [svchost.exe] ...
Nota:
- Para ver los registros en la tarea, guarde los registros en el archivo iris-agent.log en el mismo directorio de trabajo.
- El CPDA debe ejecutarse con el script de PowerShell
init
, que acepta los siguientes argumentos:-osOutFile os.json
-processOutFile rawProcessInfo.json
-socketsOutFile socketsOutFile.txt
Ejemplo:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Windows\Temp\irisAgent\WindowsCollector.ps1 -osOutFile os.json -processOutFile rawProcessInfo.json -socketsOutFile socketsOutFile.txt
- El CPDA debe actualizar rawProcessInfo.json, os.json y socketsOutFile.txt para que se pueda leer como parte de la tarea de introspección.
- Puede guardar los archivos CPDA en un archivo .ZIP y Agregar una configuración de CPDA personalizada.