ΠΠ½Π°Π»ΠΈ Π»ΠΈ Π²Ρ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΡΠΈΠΏΡΠΎΠΌΠ°ΠΉΠ½Π΅ΡΡ ΠΌΠΎΠ³ΡΡ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Windows ΠΈ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ Π½Π΅Π·Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΡΡΡΠ°ΠΌΠΈ, ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΈΡΡΠΎΡΠ°Ρ ΡΠ΅ΡΡΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈ ΡΠΎΠΊΡΠ°ΡΠ°Ρ ΡΡΠΎΠΊ ΡΠ»ΡΠΆΠ±Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ? π
Π‘ΠΊΡΡΡΡΠ΅ ΠΌΠ°ΠΉΠ½Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ΅ΡΡΡΠ·Π½ΡΡ ΡΠ³ΡΠΎΠ·Ρ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠ΅ΡΠ΅Π³ΡΠ΅Π²Ρ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΡΠ½Π΅ΡΠ³ΠΎΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌΡ Π²ΡΡ ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠ· ΡΡΡΠΎΡ. ΠΠ°Π½Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΠΈΡ ΡΠ³ΡΠΎΠ· Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Windows ΠΈ open-source ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
π― ΠΠΊΡΠΏΡΠ΅ΡΡ-Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ²
ΠΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
ΠΠ°ΡΠ½ΠΈΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΡΠ΅Π· ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ (Ctrl+Shift+Esc):
- ΠΠΊΠ»Π°Π΄ΠΊΠ° "ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ": ΠΡΠΎΠ²Π΅ΡΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π¦Π ΠΈ ΠΠ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΏΠΎΠΊΠΎΡ
- ΠΠ½ΠΎΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ: ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π¦Π >15% ΠΈΠ»ΠΈ ΠΠ >5% Π±Π΅Π· Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- Π’Π΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π΄Π°ΡΡΠΈΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅Π³ΡΠ΅Π²Π°
π‘ ΠΠ°ΠΉΡΡ Π°ΠΊ: ΠΠ°ΠΉΠ½Π΅ΡΡ ΡΠ°ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΠ²ΠΎΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ ΠΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π·Π°Π΄Π°Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΠΎΠ½ΠΈΡΠΎΡ ΡΠ΅ΡΡΡΡΠΎΠ² (resmon.exe) Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΠ»ΡΠ±ΠΎΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ΅Π· PowerShell
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²:
# ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ
Get-Process | Sort-Object CPU -Descending | Select-Object -First 15 ProcessName,CPU,WorkingSet,Id
# ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ΅ΡΠ΅Π²ΡΡ
ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ
Get-NetTCPConnection | Where-Object {$_.RemotePort -in @(3333,4444,5555,7777,8080,9999)} |
Select-Object LocalAddress,RemoteAddress,RemotePort,OwningProcess,State
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ Π°Π½ΠΎΠΌΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ
Get-Process | Where-Object {$_.WorkingSet -gt 100MB} |
Sort-Object WorkingSet -Descending | Format-Table ProcessName,WorkingSet,CPU
πΠΠΎΡΠΎΠ³ΠΈΠ΅ Π³ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΈ ΠΊΠ°Π½Π°Π»Π°. ΠΡΠ»ΠΈ Π½Π°ΡΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΏΡΠΈΠ½ΠΎΡΡΡ Π²Π°ΠΌ ΠΏΠΎΠ»ΡΠ·Ρ, Π²Ρ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΎΠΌ. ΠΡΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΌΠΎΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ Π΄Π»Ρ ΠΠ°Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π±Π΅Π·ΠΎ Π²ΡΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ.ππ€ππ€π
π°ΠΠΠΠΠΠ ΠΠΠ’Π¬ ΠΠΠΠΠ ΠΠΠΠΠ Π’Π£Π’ ( ΠΠ’ 50 Π Π£ΠΠΠΠ )π°
ΠΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΠΎ QR-ΠΊΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π· Π‘ΠΠ. ΠΡΡΡΡΠΎ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈ Π±Π΅Π· ΠΊΠΎΠΌΠΈΡΡΠΈΠΈ.(ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π.)
Π‘ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, ΠΠΎΠΌΠ°Π½Π΄Π° "Π’.Π.Π₯.Π.Π Windows & Linux".
π WMI Forensics: ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ
ΠΠ½Π°Π»ΠΈΠ· WMI ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ
WMI (Windows Management Instrumentation) ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½ΡΡΠ²Π°. ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ:
# ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ
Get-WmiObject -Namespace root/subscription -Class __EventFilter |
Where-Object {$_.Name -match "miner|crypto|btc|xmr|update.*[0-9]{3,}"} |
Select-Object Name,Query,QueryLanguage
# ΠΠ½Π°Π»ΠΈΠ· ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΎΠ±ΡΡΠΈΠΉ
Get-WmiObject -Namespace root/subscription -Class __EventConsumer |
Select-Object Name,ScriptText,ExecutablePath | Format-List
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ ΡΠΈΠ»ΡΡΡ-ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ
Get-WmiObject -Namespace root/subscription -Class __FilterToConsumerBinding |
Select-Object Filter,Consumer
π¨ ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΠΎ: ΠΠ°ΠΉΠ½Π΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ WMI Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ. Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ!
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΡ WMI ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΡΡΡΠ° (Π·Π°ΠΌΠ΅Π½ΠΈΡΠ΅ "SuspiciousFilter" Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ)
Get-WmiObject -Namespace root/subscription -Class __EventFilter |
Where-Object Name -eq "SuspiciousFilter" | Remove-WmiObject
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ
Get-WmiObject -Namespace root/subscription -Class __EventConsumer |
Where-Object Name -eq "SuspiciousConsumer" | Remove-WmiObject
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ
Get-WmiObject -Namespace root/subscription -Class __FilterToConsumerBinding |
Where-Object {$_.Filter -match "SuspiciousFilter"} | Remove-WmiObject
ποΈ Π€ΠΎΡΠ΅Π½Π·ΠΈΠΊΠ° ΡΠ΅Π΅ΡΡΡΠ° Windows
ΠΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
ΠΠ°ΠΉΠ½Π΅ΡΡ Π²Π½Π΅Π΄ΡΡΡΡΡΡ Π² ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ΅Π΅ΡΡΡΠ° Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ:
# ΠΠ½Π°Π»ΠΈΠ· ΠΊΠ»ΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠΈ
$autorunKeys = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce"
)
foreach ($key in $autorunKeys) {
Get-ItemProperty -Path $key -ErrorAction SilentlyContinue |
Format-List | Out-String | Select-String -Pattern "miner|crypto|btc|xmr"
}
Π Π°ΡΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΠΎΠΈΡΠΊ Π² ΡΠ΅Π΅ΡΡΡΠ΅
# ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠ»ΡΠΆΠ±
Get-ChildItem "HKLM:\SYSTEM\CurrentControlSet\Services" |
ForEach-Object {
$service = Get-ItemProperty $_.PSPath
if ($service.ImagePath -match "temp|appdata|users.*downloads" -or
$service.DisplayName -match "update.*[0-9]{4,}|security.*[0-9]{4,}") {
$service | Select-Object PSChildName,DisplayName,ImagePath
}
}
# ΠΠ½Π°Π»ΠΈΠ· ΠΏΠΎΠ»ΠΈΡΠΈΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²
Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" |
ForEach-Object {
$debugger = Get-ItemProperty $_.PSPath -Name "Debugger" -ErrorAction SilentlyContinue
if ($debugger) { $debugger }
}
π ΠΠ½Π°Π»ΠΈΠ· Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π°Π΄Π°Ρ
ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Task Scheduler
# ΠΠΎΠΈΡΠΊ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ ΠΏΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°ΠΌ ΠΈΠΌΡΠ½
Get-ScheduledTask | Where-Object {
$_.TaskName -match "update.*[0-9]{4,}|security.*[0-9]{4,}|microsoft.*[0-9]{4,}|windows.*[0-9]{4,}" -or
$_.Author -eq "" -or $_.Author -eq $null
} | Select-Object TaskName,Author,State,@{Name='Actions';Expression={$_.Actions.Execute}}
# ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π·Π°Π΄Π°Ρ
Get-ScheduledTask | ForEach-Object {
$task = $_
$task.Actions | ForEach-Object {
if ($_.Execute -match "powershell|cmd|wscript|cscript" -and
$_.Arguments -match "hidden|bypass|encoded|downloadstring") {
[PSCustomObject]@{
TaskName = $task.TaskName
Execute = $_.Execute
Arguments = $_.Arguments
Author = $task.Author
}
}
}
}
π Π‘Π΅ΡΠ΅Π²ΠΎΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
Π£Π³Π»ΡΠ±Π»ΡΠ½Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ
# ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³-ΠΏΡΠ»Π°ΠΌ
$minerPorts = @(3333,4444,5555,7777,8080,8333,9999,14444,25,443,80)
Get-NetTCPConnection | Where-Object {$_.RemotePort -in $minerPorts -and $_.State -eq "Established"} |
ForEach-Object {
$process = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
[PSCustomObject]@{
ProcessName = $process.ProcessName
PID = $_.OwningProcess
LocalEndpoint = "$($_.LocalAddress):$($_.LocalPort)"
RemoteEndpoint = "$($_.RemoteAddress):$($_.RemotePort)"
State = $_.State
}
} | Format-Table
# ΠΠ½Π°Π»ΠΈΠ· DNS Π·Π°ΠΏΡΠΎΡΠΎΠ² (ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ DNS Client Events)
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-DNS-Client/Operational';ID=3008} -MaxEvents 1000 |
Where-Object {$_.Message -match "pool|mining|crypto|btc|xmr|monero"} |
Select-Object TimeCreated,Message
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³-ΠΏΡΠ»ΠΎΠ² ΡΠ΅ΡΠ΅Π· hosts
# ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ
ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³-ΠΏΡΠ»ΠΎΠ² Π² hosts file
$hostsPath = "$env:SystemRoot\System32\drivers\etc\hosts"
$blockList = @(
"xmr-eu1.nanopool.org",
"pool.supportxmr.com",
"xmr.pool.minergate.com",
"monerohash.com",
"monero.crypto-pool.fr"
)
foreach ($domain in $blockList) {
Add-Content -Path $hostsPath -Value "0.0.0.0 $domain"
}
π‘οΈ ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠ΅ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ
Memory Forensics
# ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΡ
ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
Get-Process | Where-Object {$_.ProcessName -match "svchost|winlogon|lsass"} |
ForEach-Object {
try {
$modules = $_.Modules | Where-Object {$_.FileName -match "temp|appdata|users"}
if ($modules) {
[PSCustomObject]@{
ProcessName = $_.ProcessName
PID = $_.Id
SuspiciousModules = ($modules.FileName -join "; ")
}
}
} catch {}
}
# ΠΠΎΠΈΡΠΊ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π· Π°Π½Π°Π»ΠΈΠ· ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡΠ°
Get-Process | Where-Object {
$_.ProcessName -in @("svchost","winlogon","lsass","explorer") -and
$_.WorkingSet -gt 50MB
} | Sort-Object WorkingSet -Descending
ΠΠ½Π°Π»ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ
# ΠΠΎΠΈΡΠΊ ΡΠΊΡΡΡΡΡ
ΠΌΠ°ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΈ Π΄Π°ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
Get-ChildItem -Path @("$env:TEMP","$env:APPDATA","$env:LOCALAPPDATA") -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
$_.Length -gt 1MB -and $_.Length -lt 50MB -and
$_.CreationTime -gt (Get-Date).AddDays(-30) -and
($_.Name -match "\.exe$|\.dll$" -or $_.Extension -eq "")
} | Select-Object FullName,Length,CreationTime,LastWriteTime
# ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΡΡΠΎΠ²ΡΡ
ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²
Get-ChildItem -Path "$env:TEMP" -Filter "*.exe" -Recurse -ErrorAction SilentlyContinue |
ForEach-Object {
$signature = Get-AuthenticodeSignature $_.FullName
if ($signature.Status -ne "Valid") {
[PSCustomObject]@{
File = $_.FullName
SignatureStatus = $signature.Status
Signer = $signature.SignerCertificate.Subject
}
}
}
π§Ή ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ
# ΠΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
Get-Process | Where-Object {
$_.ProcessName -match "miner|crypto|xmr" -or
($_.WorkingSet -gt 100MB -and $_.ProcessName -match "svchost.*[0-9]{4,}")
} | Stop-Process -Force
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π·Π°Π΄Π°Ρ
Get-ScheduledTask | Where-Object {
$_.TaskName -match "update.*[0-9]{4,}|microsoft.*[0-9]{4,}" -or
$_.Author -eq ""
} | Unregister-ScheduledTask -Confirm:$false
# ΠΡΠΈΡΡΠΊΠ° WMI
Get-WmiObject -Namespace root/subscription -Class __EventFilter |
Where-Object {$_.Name -match "miner|crypto|update.*[0-9]{4,}"} | Remove-WmiObject
# Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ°ΠΉΠ½Π΅ΡΠΎΠ²
Remove-Item -Path "$env:TEMP\*miner*" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:APPDATA\*crypto*" -Recurse -Force -ErrorAction SilentlyContinue
πΠΠΎΠΏΡΠΎΡ-ΠΡΠ²Π΅Ρ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ
πΉ Q: ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ°ΠΉΠ½Π΅Ρ ΠΏΠΎ Π²ΡΡΠΎΠΊΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π¦Π?
A: ΠΠΈΡΠΏΠ΅ΡΡΠ΅Ρ Π·Π°Π΄Π°Ρ β ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π² ΠΏΡΠΎΡΡΠΎΠ΅ >20-30% β ΠΡΠΎΡΠ΅ΡΡΡ β ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° ΠΏΠΎ Π¦Π β ΠΏΠΎΠΈΡΠΊ Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
πΉ Q: ΠΠ°ΠΊΠΈΠ΅ PowerShell ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π½Π°ΠΉΡΠΈ ΠΌΠ°ΠΉΠ½Π΅Ρ?
A: Get-Process | Sort-Object CPU -Descending; Get-NetTCPConnection | Where-Object {$_.RemotePort -in 3333,4444,5555}
πΉ Q: ΠΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ WMI Π½Π° Π²ΡΠ΅Π΄ΠΎΠ½ΠΎΡΠ½ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ?
A: Get-WmiObject -Namespace root/subscription -Class __EventFilter Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΠΈΠ»ΡΡΡΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ
πΉ Q: ΠΠ΄Π΅ ΠΌΠ°ΠΉΠ½Π΅ΡΡ ΠΏΡΡΡΡΡΡΡ Π² ΡΠ΅Π΅ΡΡΡΠ΅?
A: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, ΡΠ»ΡΠΆΠ±Ρ Π² HKLM\SYSTEM\CurrentControlSet\Services
πΉ Q: ΠΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ°ΠΉΠ½Π΅ΡΡ?
A: 3333, 4444, 5555, 7777, 8080, 9999, 14444 - ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΠΎΡΡΡ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³-ΠΏΡΠ»ΠΎΠ²
π‘οΈ ΠΡΠΎΡΠΈΠ»Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ΅Π²Π΅Π½ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°
# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ
$counterPath = "\Processor(_Total)\% Processor Time"
while ($true) {
$cpuUsage = (Get-Counter $counterPath).CounterSamples.CookedValue
if ($cpuUsage -gt 80) {
Write-Host "β οΈ ΠΡΡΠΎΠΊΠ°Ρ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π¦Π ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π°: $([math]::Round($cpuUsage,2))%" -ForegroundColor Red
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5
}
Start-Sleep 30
}
Π£ΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
- ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ AppLocker Π΄Π»Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π½Π΅Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Windows Defender Ρ ΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π·Π°ΡΠΈΡΠΎΠΉ
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ PowerShell ExecutionPolicy Π΄ΠΎ RemoteSigned
- ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ WMI ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ΅ΡΠ΅Π· Event Viewer (EventID 19-21)
π― ΠΠΊΡΠΏΠ΅ΡΡΠ½ΡΠ΅ ΡΠ΅ΠΊΡΠ΅ΡΡ ΠΈ Ρ Π°ΠΊΠΈ
π Π‘Π΅ΠΊΡΠ΅Ρ β1: ΠΠ°ΠΉΠ½Π΅ΡΡ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π»Π΅Π³ΠΈΡΠΈΠΌΠ½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΎΠ²Π΅ΡΡΠΉΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² - Π½Π°ΡΡΠΎΡΡΠΈΠΉ svchost.exe Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² System32.
π Π‘Π΅ΠΊΡΠ΅Ρ β2: ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΌΠ°ΠΉΠ½Π΅ΡΡ ΡΠ½ΠΈΠΆΠ°ΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΡΡΡΠΎΡΠΌΠΊΡΡ Π·Π°Π΄Π°ΡΡ ΠΈ Π½Π°Π±Π»ΡΠ΄Π°ΠΉΡΠ΅ Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ .
π Π‘Π΅ΠΊΡΠ΅Ρ β3: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ netstat -b Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠΎΠ·Π΄Π°ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ (ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ°Π²Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°).
π Π‘Π΅ΠΊΡΠ΅Ρ β4: ΠΠ°ΠΉΠ½Π΅ΡΡ ΡΠ°ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ mutex'Ρ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°. ΠΠΎΠΈΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ mutex'Ρ ΡΠ΅ΡΠ΅Π· Process Explorer.
π ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΊΡΡΡΡΡ ΠΌΠ°ΠΉΠ½Π΅ΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΡΠΎΡΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ, ΡΠ΅Π΅ΡΡΡΠ° ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Windows Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ PowerShell ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠΎΡΠ½ΡΠΉ Π°ΡΡΠ΅Π½Π°Π» Π΄Π»Ρ Π±ΠΎΡΡΠ±Ρ Ρ ΡΡΠΈΠΌΠΈ ΡΠ³ΡΠΎΠ·Π°ΠΌΠΈ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠΎΡΠΎΠ½Π½Π΅Π³ΠΎ ΠΠ.
ΠΠΎΠΌΠ½ΠΈΡΠ΅: ΠΏΠΎΡΡΠΎΡΠ½Π½ΡΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΈ ΠΏΡΠ΅Π²Π΅Π½ΡΠΈΠ²Π½ΡΠ΅ ΠΌΠ΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π΅Π΅ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΆΠ΅ Π²Π½Π΅Π΄ΡΠΈΠ²ΡΠΈΡ ΡΡ ΡΠ³ΡΠΎΠ·. π
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° ΠΊΠ°Π½Π°Π» Π’.Π.Π₯.Π.Π Windows & Linux, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΡΠ΅ Π»Π°ΠΉΠΊΠΎΠΌ ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Ρ Π΄ΡΡΠ·ΡΡΠΌΠΈ! π
#ΠΌΠ°ΠΉΠ½Π΅Ρ #Windows11 #ΠΊΡΠΈΠΏΡΠΎΠΌΠ°ΠΉΠ½ΠΈΠ½Π³ #Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ #PowerShell #WMI #ΡΠ΅Π΅ΡΡΡ #ΡΠΎΡΠ΅Π½Π·ΠΈΠΊΠ° #ΠΊΠΈΠ±Π΅ΡΠ·Π°ΡΠΈΡΠ° #malware #Π΄Π΅ΡΠ΅ΠΊΡΠΈΡ #ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ #ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ #Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° #ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ #Π¦Π #GPU #ΡΠ΅ΡΡ #ΠΏΡΠΎΡΠ΅ΡΡΡ #ΡΠ»ΡΠΆΠ±Ρ #Π·Π°Π΄Π°ΡΠΈ #Π°Π²ΡΠΎΠ·Π°Π³ΡΡΠ·ΠΊΠ° #ΡΠΊΡΡΡΡΠ΅ #Π²ΠΈΡΡΡΡ #ΡΡΠΎΡΠ½ #Ρ Π°ΠΊΠ΅ΡΡΡΠ²ΠΎ #IT #ΡΠ΅Ρ Π½ΠΎ #Windows #ΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ