이 섹션을 사용하여 rawProcessInfo.json, rawProcessWMIInfo.json, os.json 파일을 생성합니다. 이 스크립트는 Windows 운영 체제 기반 가상 시스템에서 검사 중에 실행되어 프로세스 세부 정보, OS 세부 정보, 네트워크 세부 정보를 수집합니다.
샘플 rawProcessInfo.json 파일
참고:
Get-Process -IncludeUserName
명령을 사용하고 JSON 파일로 변환하여 프로세스 세부 정보를 수집할 수 있습니다.- 샘플 JSON 파일의 키는 중요합니다.
-
는 프로세스와 관련된 모든 항목일 수 있습니다.- 괄호
<>
문자열을 적절한 값으로 변경합니다. 여기서- <number>는 정수 유형
- <text>는 문자열 유형
- <boolean>은 true 또는 false
-
<?>
는 null일 수도 있음
-
{ } 중괄호는 특정 개체를 나타냅니다.
- [ ] 대괄호는 목록을 나타내며 유사한 개체를 여러 개 포함할 수 있습니다.
[ { "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> }, { ... } ]
샘플 rawProcessWMIInfo.json 파일
참고:
rawProcessWMIInfo.json 파일은 실행 중인 프로세스에 대한 세부 정보가 포함된 동일한 작업 디렉토리에 있어야 합니다. PowerShell에서
Get-WmiObject -Class Win32_Process
명령을 사용하고 저장하기 전에 JSON 파일로 변환하여 프로세스 세부 정보를 수집할 수 있습니다.
[ { "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> } ]
샘플 os.json 파일
참고:
- os.json 파일은 장치 운영 체제별 세부 정보를 포함하는 동일한 작업 디렉토리에 있어야 합니다. PowerShell에서
(Get-WmiObject -class Win32_OperatingSystem).Caption
명령을 사용할 수 있습니다. - 샘플 JSON의 키는 중요합니다.
--
는 운영 체제와 관련된 모든 항목일 수 있습니다. 예: Windows 2016 Server의 경우 <text>는 Microsoft Windows Server 2016 Standard일 수 있습니다.
{ "network_detailed": [], "interfaces": [ "------" ], "ipv6": [ "-:----::----:----:----:----" ], "ipv4": [ "---.---.---.---" ], "mac_address": { "---": "--:--:--:--:--:--" }, "os_info": "--------------------------------------"
샘플 socketsOutFile.txt 파일
socketsOutFile.txt 파일은 모든 소켓 관련 정보를 포함하는 동일한 작업 디렉토리에 있어야 합니다. 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] ...
참고:
- 작업에서 로그를 보려면 동일한 작업 디렉토리 아래의 iris-agent.log 파일에 로그를 저장합니다.
- CPDA는 다음 인수를 허용하는
init
powershell 스크립트를 사용하여 실행해야 합니다.-osOutFile os.json
-processOutFile rawProcessInfo.json
-socketsOutFile socketsOutFile.txt
예:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe C:\Windows\Temp\irisAgent\WindowsCollector.ps1 -osOutFile os.json -processOutFile rawProcessInfo.json -socketsOutFile socketsOutFile.txt
- CPDA는 검사 작업의 일부로 읽을 수 있도록 rawProcessInfo.json, os.json, socketsOutFile.txt를 업데이트해야 합니다.
- CPDA 파일을 .ZIP 파일로 저장하고 사용자 지정 CPDA 구성을 추가할 수 있습니다.