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 -IncludeUserNamey 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).Captionen 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.txtEjemplo: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.