PowerShell Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΠΊΡΠΎ ΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠΎΡΡΡΠ΅Ρ, ΡΠ°ΠΊΠ° ΠΈ ΠΎΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈ ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ.
Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° PowerShell Π·Π° Π΄ΠΈΡΡΠ°Π½ΡΠΈΠΎΠ½Π½ΠΎ ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΡΠΈ ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° ΠΈΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈ ΠΏΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ. ΠΠ° ΡΠ΅Π»ΡΠ° ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ ΡΠ»Π΅Π΄Π²Π° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΊΡΠΈΠΏΡ.
function CSIRT{
param($path)
if ($psversiontable.psversion.major -ge 5)
{
$date = Get-Date -Format dd.MM.yyyy_hh_mm
$Computer = $env:COMPUTERNAME
New-Item -Path $path$computer$date -ItemType 'Directory' -Force | Out-Null
$path = "$path$computer$date"
$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname,
processid, commandline, parentprocessid
$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress,
localport, remoteaddress, remoteport, owningprocess, state
$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress,
localport, remoteaddress, remoteport, owningprocess, state
$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname|
where author -notlike '*ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ*' | where author -ne $null |
where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*'
$job = Get-ScheduledJob
$ADS = get-item * -stream * | where stream -ne ':$Data'
$user = quser
$runUser = Get-ItemProperty "HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
$runMachine = Get-ItemProperty "HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"
$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
$arrayName = "Processes", "TCPConnect", "UDPConnect", "TaskScheduled", "Users", "RunUser", "RunMachine",
"ScheduledJob", "AlternativeDataStream"
for ($w = 0; $w -lt $array.count; $w++){
$name = $arrayName[$w]
$array[$w] >> $path$name.txt
}
}
}ΠΡΡΠ²ΠΎ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΡΡΠ½ΠΊΡΠΈΡ CSIRT, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ΅ΠΌΠ° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΠΏΡΡ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠΎΠ½Π΅ΠΆΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠ° ΡΠ°Π±ΠΎΡΡΡ Π² PowerShell v5, Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° PowerShell, Π·Π° Π΄Π° ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°.
function CSIRT{
param($path)# ΠΏΡΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠΊΠ°ΠΆΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅
if ($psversiontable.psversion.major -ge 5)ΠΠ° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½Π° Π½Π°Π²ΠΈΠ³Π°ΡΠΈΡΡΠ° ΠΈΠ· ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π΄Π²Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: $date ΠΈ $Computer, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° ΠΈ ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π΄Π°ΡΠ°.
$date = Get-Date -Format dd.MM.yyyy_hh_mm
$Computer = $env:COMPUTERNAME
New-Item -Path $path$computer$date βItemType 'Directory' -Force | Out-Null
$path = "$path$computer$date"Π‘ΠΏΠΈΡΡΠΊ Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡ Π½Π°ΡΠΈΠ½: ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $process, Π½Π° ΠΊΠΎΡΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠ° get-ciminstance Ρ ΠΊΠ»Π°Ρ win32_process. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠ° Select-Object, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π² Π½Π°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠΎΠ²Π° ΡΠ΅ Π±ΡΠ΄Π°Ρ parentprocessid (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅Ρ PPID), creationdate (Π΄Π°ΡΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°), processed (ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° PID), processname (ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ°), commandline (ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅).
$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname, processid, commandline, parentprocessidΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ TCP ΠΈ UDP Π²ΡΡΠ·ΠΊΠΈ, ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ $netTCP ΠΈ $netUDP, Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠΈΡΠ΅ Get-NetTCPConnection ΠΈ Get-NetUDPEndpoint ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ.
$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state
$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, stateΠΠ΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π·Π°Π΄Π°Π½ΠΈΡ. ΠΠ° ΡΠ°Π·ΠΈ ΡΠ΅Π» ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠΈΡΠ΅ get-ScheduledTask ΠΈ Get-ScheduledJob. ΠΡΠΈΡΠ²ΠΎΡΠ²Π°ΠΌΠ΅ ΠΈΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ $task ΠΈ $job, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ, Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠΈΠ»ΡΡΠΈΡΠ°ΠΌΠ΅ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΈΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ, Π·Π° Π΄Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°ΠΌΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ. Π ΡΠΎΠ²Π° ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΡΡ Select-Object.
$task = get-ScheduledTask | Select-Object author, actions, triggers, state, description, taskname| where author -notlike '*ΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡ*' | where author -ne $null | where author -notlike '*@%systemroot%*' | where author -notlike '*microsoft*' # $task ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° Π°Π²ΡΠΎΡΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ βΠΠ°ΠΉΠΊΡΠΎΡΠΎΡΡβ, βMicrosoftβ, β*@%systemroot%*β, ΠΊΠ°ΠΊΡΠΎ ΠΈ βΠΏΡΠ°Π·Π½ΠΈβ Π°Π²ΡΠΎΡΠΈ
$job = Get-ScheduledJobΠ ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° NTFS ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡΠ° Π·Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π΄Π°Π½Π½ΠΈ (Alternate Data Streams, ADS). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠ°ΠΉΠ» Π² NTFS ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ²ΡΡΠ·Π°Π½ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΡΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ. Π§ΡΠ΅Π· ADS ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠΊΡΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΠΈΠ΄ΠΈΠΌΠΈ ΠΏΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. Π§ΡΠ΅Π· ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²Π½Π΅Π΄ΡΠΈΠΌ Π·Π»ΠΎΠ²ΡΠ΅Π΄Π΅Π½ ΠΊΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ Π΄Π° ΡΠΊΡΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΈ.
ΠΠ° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π΄Π°Π½Π½ΠΈ Π² PowerShell ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠ° get-item ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Windows stream Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° * Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΏΠΎΡΠΎΡΠΈ, Π·Π° ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $ADS.
$ADS = get-item * -stream * | where stream βne ':$Data' ΠΠΎΠ»Π΅Π·Π½ΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΈ ΡΠΏΠΈΡΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅, Π²Π»Π΅Π·Π»ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, Π·Π° ΡΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $user ΠΈ ΡΠ΅ ΠΉ ΠΏΡΠΈΡΠ²ΠΎΠΈΠΌ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° quser.
$user = quser ΠΠ»ΠΎΡΠΌΡΡΠ»Π΅Π½ΠΈΡΠΈ, Π·Π° Π΄Π° ΡΠ΅ Π·Π°ΠΊΡΠ΅ΠΏΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈΡ ΡΡΠ°ΡΡ. ΠΠ° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΠ±Π΅ΠΊΡΠΈΡΠ΅ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈΡ ΡΡΠ°ΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅ΡΠ° Get-ItemProperty.
Π©Π΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΄Π²Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ: $runUser β Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ $runMachine β Π·Π° ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ°.
$runUser = Get-ItemProperty
"HKCU:SoftwareMicrosoftWindowsCurrentVersionRun"
$runMachine = Get-ItemProperty
"HKLM:SoftwareMicrosoftWindowsCurrentVersionRun"ΠΠ° Π΄Π° Π·Π°ΠΏΠΈΡΠ²Π°ΡΠ΅ ΡΡΠ»Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΡΡΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΌΠ°ΡΠΈΠ² Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ ΠΈ ΠΌΠ°ΡΠΈΠ² Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅.
$array = $process, $netTCP, $netUDP, $task, $user, $runUser, $runMachine, $job, $ADS
$arrayName = "Processes", "TCPConnect", "UDPConnect", "TaskScheduled", "Users", "RunUser", "RunMachine",
"ScheduledJob", "Alternative Data Stream"Π, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΈΠΊΡΠ» for, ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ Π·Π°ΠΏΠΈΡΠ°Π½ΠΈ Π² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅.
for ($w = 0; $w -lt $array.count; $w++){
$name = $arrayName[$w]
$array[$w] >> $path$name.txt
Π‘Π»Π΅Π΄ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ 9 ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»Π°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠΈΡΠ΅ ΠΏΠΎ ΠΊΠΈΠ±Π΅ΡΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ PowerShell, Π·Π° Π΄Π° ΠΎΠ±ΠΎΠ³Π°ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ°, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠ° Π·Π° ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π² ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΡΠΈ. ΠΠΎΠ±Π°Π²ΡΠΉΠΊΠΈ ΡΠΊΡΠΈΠΏΡ Π² Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±Π΅Π· ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°ΠΌΠΏΠΈ, ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Ρ.Π½.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
