Naciśnij Enter, aby wyszukać

WINDOWS

Malware pod lupą: Wykorzystaj PowerShell do diagnostyki

PowerShell
Reklama

Każdy z nas to zna: komputer nagle zwalnia, wiatraki wyją bez powodu, a Ty masz to dziwne przeczucie, że „coś tu nie gra”. Zanim odpalisz ciężkie skanery antywirusowe, warto zajrzeć pod maskę systemu. Jako serwisanci rzadko polegamy wyłącznie na automatyce – najszybsze i najbardziej precyzyjne odpowiedzi daje nam PowerShell.

W tym tekście pokażę Ci, jak przeprowadzić wstępny audyt bezpieczeństwa. Pamiętaj jednak: to narzędzia diagnostyczne, a nie wyrocznia. Każdy wynik wymaga chłodnej głowy i dodatkowej weryfikacji.

Ważne: Wszystkie poniższe komendy należy uruchamiać w PowerShellu z uprawnieniami Administratora.

Reklama

1. Gdzie ukrywa się malware? Folder AppData pod lupą

Wiele zagrożeń instaluje się w folderze AppData – jest on domyślnie ukryty i pozwala na zapis bez uprawnień administratora. Jednak uwaga: korzystają z niego też popularne programy (jak Spotify czy Discord).

Aby wyłapać procesy startujące z tej lokalizacji, użyj:

Get-Process | Where-Object { $_.Path -like "*AppData*" } | Select-Object Name, Id, Path

Na co zwrócić uwagę? Jeśli widzisz proces o nazwie będącej bełkotem (np. xhf82.exe), to sygnał ostrzegawczy. Zanim go jednak zamkniesz, sprawdź podpis cyfrowy pliku. Brak podpisu lub dziwny wystawca to poważna poszlaka.

2. Kto „gada” z internetem? Analiza połączeń

Złośliwe oprogramowanie często musi komunikować się z serwerem sterującym (C2). Możemy sprawdzić aktywne połączenia i przypisać je do konkretnych procesów.

Get-NetTCPConnection -State Established | ForEach-Object {
$proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
if ($proc) {
[PSCustomObject]@{
ProcessName = $proc.Name
LocalPort = $_.LocalPort
RemoteAddress = $_.RemoteAddress
RemotePort = $_.RemotePort
}
}
} | Format-Table -AutoSize

Interpretacja: Jeśli Notepad.exe (notatnik) utrzymuje połączenie z zagranicznym IP, jest to sytuacja skrajnie nienaturalna. Zawsze sprawdzaj podejrzane adresy IP w serwisach typu VirusTotal.

3. Pułapka na hakerów: Włączamy Script Block Logging

Wiele nowoczesnych ataków odbywa się „bezplikowo” – kod wykonuje się prosto w pamięci RAM. Standardowe logi tego nie widzą. Aby widzieć każdy wykonany skrypt (nawet ten zaszyfrowany!), musisz włączyć Script Block Logging.

Możesz to zrobić szybko przez Rejestr (jako Admin):

$path = "HKLM:\Software\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging"
if (-not (Test-Path $path)) { New-Item -Path $path -Force }
Set-ItemProperty -Path $path -Name "EnableScriptBlockLogging" -Value 1

Teraz każde polecenie zostanie zapisane w podglądzie zdarzeń (Event Viewer). To Twoja „czarna skrzynka” po ewentualnym ataku.

4. Uwaga na maskowanie: -EncodedCommand

Hakerzy wiedzą, że ich skrypty są podejrzane, dlatego używają obfuskacji. Najpopularniejszą metodą jest -EncodedCommand (lub skróty -enc, -e), która zamienia czytelny skrypt w ciąg niezrozumiałych znaków Base64.

Jeśli w logach lub autostarcie widzisz coś takiego: powershell.exe -EncodedCommand JABhID0A... …to znaczy, że ktoś próbuje coś przed Tobą ukryć. Nigdy nie ignoruj takich wpisów!

5. AMSI – Twój cichy ochroniarz (który czasem przesadza)

W Windowsie działa AMSI (Anti-Malware Scan Interface). To pomost między PowerShellem a Twoim antywirusem. Zanim skrypt się uruchomi, AMSI wysyła go do skanowania.

  • Zaleta: Blokuje złośliwe skrypty, zanim narobią szkód.
  • Wada: Czasem blokuje legalne skrypty administratora, jeśli wydają mu się „podejrzane” (np. przez użycie specyficznych funkcji systemowych). Jeśli Twój skrypt nagle przestaje działać z błędem „Blocked by Virus”, to sprawka AMSI.

6. Świeże pliki i autostart

Na koniec zawsze sprawdź, co się zmieniło w systemie w ciągu ostatnich 48 godzin oraz co startuje wraz z Windowsem:

# Nowe pliki .exe
Get-ChildItem -Path C:\ -Recurse -Include *.exe -ErrorAction SilentlyContinue |
Where-Object { $_.CreationTime -gt (Get-Date).AddDays(-2) } | Select-Object FullName

# Harmonogram zadań (poza Microsoftem)
Get-ScheduledTask | Where-Object { $_.State -ne "Disabled" -and $_.TaskPath -notlike "*Microsoft*" }

Podsumowanie: Wiedza to Twoja pierwsza linia obrony

PowerShell daje niesamowitą widoczność, ale pamiętaj:

  • Weryfikacja: Nigdy nie usuwaj plików „na oko”. Korzystaj z baz hashów.
  • Uprawnienia: Bez konta Administratora nie zobaczysz pełnego obrazu.
  • Ciągłość: Regularne sprawdzanie autostartu to najlepszy nawyk higieny cyfrowej.
Reklama
UDOSTĘPNIJ
ciasteczka
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.