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 Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ°, ΠΊΠΎΡ ΡΠ΅ ΠΏΡΠ΅Π·Π΅ΠΌΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - ΠΏΠ°ΡΠ΅ΠΊΠ°ΡΠ° Π·Π° Π·Π°ΡΡΠ²ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°ΠΊΡΠΎΡ ΡΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ cmdlet ΡΠ°Π±ΠΎΡΠ°Ρ Π²ΠΎ 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, Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΡΠΈ Ρ Π³ΠΎ cmdlet-ΠΎΡ get-ciminstance ΡΠΎ ΠΊΠ»Π°ΡΠ°ΡΠ° win32_process. ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ cmdlet Select-Object, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΈΠ·Π»Π΅Π·Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ, Π²ΠΎ Π½Π°ΡΠΈΠΎΡ ΡΠ»ΡΡΠ°Ρ ΡΠΎΠ° ΡΠ΅ Π±ΠΈΠ΄Π°Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ (ID Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ PPID), Π΄Π°ΡΡΠΌ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ (Π΄Π°ΡΡΠΌ Π½Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅Ρ), ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½ (ID Π½Π° ΠΏΡΠΎΡΠ΅Ρ), ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅Ρ (ΠΈΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅Ρ), ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ( ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅).
$process = get-ciminstance -classname win32_process | Select-Object creationdate, processname, processid, commandline, parentprocessid
ΠΠ° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΡΠΈΡΠ΅ TCP ΠΈ UDP ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈ, ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ $netTCP ΠΈ $netUDP ΡΠΎ ΡΠΎΠ° ΡΡΠΎ ΡΠ΅ ΠΈΠΌ Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΠΈΡΠ΅ cmdlet-ΠΈΡΠ΅ Get-NetTCPConnection ΠΈ Get-NetTCPConnection, ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΎ.
$netTCP = Get-NetTCPConnection | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state
$netUDP = Get-NetUDPEndpoint | select-object creationtime, localaddress, localport, remoteaddress, remoteport, owningprocess, state
ΠΠ΅ Π±ΠΈΠ΄Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ° Π΄ΠΎΠ·Π½Π°Π΅ΡΠ΅ Π»ΠΈΡΡΠ°ΡΠ° Π½Π° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΈ Π·Π°Π΄Π°ΡΠΈ. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ cmdlets get-ScheduledTask ΠΈ Get-ScheduledJob. ΠΠ° ΠΈΠΌ Π³ΠΈ Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡΠ΅ $task ΠΈ $job, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΡΠ²ΠΈΡΠ½ΠΎ, ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ, Π° ΠΏΠΎΡΠΎΠ° Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΠΌΠ°Π»ΠΈΡΠΈΠΎΠ·Π½ΠΈ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ ΡΠΈΠ»ΡΡΠΈΡΠ°Π°Ρ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΠΈΡΠ΅ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ. ΠΠΎ ΡΠΎΠ° ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ cmdlet 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 ΠΏΠΎΡΡΠΎΠΈ ΡΠ°ΠΊΠ²ΠΎ Π½Π΅ΡΡΠΎ ΠΊΠ°ΠΊΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΏΠΎΡΠΎΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ADS). ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°ΡΠ° Π²ΠΎ NTFS ΠΌΠΎΠΆΠ΅ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π΅ ΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΠΊΠΎΠ²ΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈΠ½Π°. ΠΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ADS, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΡΠΊΡΠΈΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ ΡΡΠΎ Π½Π΅ Π±ΠΈ Π±ΠΈΠ»Π΅ Π²ΠΈΠ΄Π»ΠΈΠ²ΠΈ ΠΏΡΠ΅ΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΠ²Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΡΠ΅ Π²Π½Π΅ΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ/ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΡΠΎΠΊΡΠΈΡΠ°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
ΠΠ° ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ ΠΏΡΠ΅Π½ΠΎΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ PowerShell, ΡΠ΅ Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ get-item cmdlet ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° Π°Π»Π°ΡΠΊΠ° Π·Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° Windows ΡΠΎ ΡΠΈΠΌΠ±ΠΎΠ»ΠΎΡ * Π·Π° Π΄Π° Π³ΠΈ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ½ΠΈ ΠΏΡΠ΅Π½ΠΎΡΠΈ, Π·Π° ΠΎΠ²Π° ΡΠ΅ ΡΠ° ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° $ADS.
$ADS = get-item * -stream * | where stream βne ':$Data'
ΠΠ΅ Π±ΠΈΠ΄Π΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π΄ΠΎΠ·Π½Π°Π΅ ΡΠΏΠΈΡΠΎΠΊΠΎΡ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π½Π°ΡΠ°Π²Π΅Π½ΠΈ Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ; Π·Π° ΠΎΠ²Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° $user ΠΈ ΡΠ΅ ΡΠ° Π΄ΠΎΠ΄Π΅Π»ΠΈΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° quser.
$user = quser
ΠΠ°ΠΏΠ°ΡΠ°ΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²Π°Ρ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΎΡΠΎ ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅ Π·Π° Π΄Π° Π΄ΠΎΠ±ΠΈΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π° Π²ΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΠ° Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΡΠ΅ Π·Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ cmdlet-ΠΎΡ 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 ($w = 0; $w -lt $array.count; $w++){
$name = $arrayName[$w]
$array[$w] >> $path$name.txt
ΠΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°ΡΠ°, ΡΠ΅ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°Π°Ρ 9 ΡΠ΅ΠΊΡΡΡΠ°Π»Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΊΠΎΠΈ Π³ΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ΅Π½Π΅Ρ, ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»ΡΠΈΡΠ΅ Π·Π° ΡΠ°ΡΠ±Π΅Ρ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎΡΡ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ PowerShell Π·Π° Π΄Π° Π³ΠΈ Π·Π±ΠΎΠ³Π°ΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΡΠ΅ ΡΡΠΎ ΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π²ΠΎ Π½ΠΈΠ²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ°. Π‘ΠΎ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π·Π° ΡΡΠ°ΡΡΡΠ²Π°ΡΠ΅, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ Π½Π΅ΠΊΠΎΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π±Π΅Π· Π΄Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π΄Π΅ΠΏΠΎΠ½ΠΈΠΈ, ΡΠ»ΠΈΠΊΠΈ ΠΈΡΠ½.
ΠΠ·Π²ΠΎΡ: www.habr.com