Defender: antywirus Windowsa. Ile jest wart i jak go skonfigurować? Część IV
Interfejs graficzny systemowego Defendera jest bardzo przystępny i łatwy w użyciu. Jest tak przystępny, że może prędko sprawić trudności użytkownikom, którzy szukają w nim zaawansowanych ustawień oraz szczegółów działania. Na szczęście, ukrycie opcji i detali w UI nie poszło w parze z usunięciem ich z programu. Wiele interesujących cech Defendera oraz cały wachlarz szczegółów dotyczących jego pracy dostarczą nam systemowy Dziennik Zdarzeń oraz dedykowane cmdlety środowiska PowerShell.
15.11.2020 | aktual.: 15.11.2020 18:14
Ponieważ Defender usiłuje przejąć część rynku korporacyjnych antywirusów, dostarcza bardzo rozbudowane środowisko logowania, celem dostarczania dokładnych raportów ochrony do większych systemów SIEM. Dostawca logów "Microsoft-Windows-Windows Defender" i jego dziennik "Operational", dostarczane razem z Windows, zawierają bardzo dokładne informacje na temat tego, czym Defender zajmuje się podczas pracy w tle. Mimo swojej objętości, logi te mogłyby być jednak nieco lepsze: nie dowiemy się z nich na przykład o przesyłanych do chmury próbkach. Ale zapoznamy się z wieloma innymi informacjami.
Dziennik Zdarzeń
Na przykład, gdy silnik Defendera znajdzie zagrożenie, utworzy w Dzienniku Zdarzeń ślad informujący o nim i przydzieli mu klasyfikację Ostrzeżenie. Gdy użytkownik podejmie akcję (lub po chwili Defender podejmie ją automatycznie), w Dzienniku zostanie utworzony drugi ślad, tym razem o poziomie Informacja. Dopiero niepowodzenie w usunięciu zagrożenia wygeneruje ślad o klasyfikacji Błąd.
Aby zapoznać się z historią wszystkich zagrożeń wykrytych przez Defendera, należy przeszukać Dziennik pod kątem zdarzeń o identyfikatorach 1006, 1015 i 1116. Zawierają one informacje o zatrzymaniu działania wirusa, wykrycia pliku z wirusem lub zablokowaniu podejrzanego zachowania. Osiągniemy to następującym poleceniem:
[code=powershell]Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" | `Where-Object { $.Id -eq 1006 -or $.Id -eq 1015 -or $_.Id -eq 1116 }[/code]
cmdlety użytkowe
Jest to jednak informacja interesująca z perspektywy administratora, zbierającego logi ze wszystkich stacji roboczych pod swoją opieką. Dla użytkowników końcowych, Microsoft przygotował bardziej przystępne polecenia, dzięki którym nie jest potrzebne samodzielne filtrowanie i przetwarzanie wpisów z Dziennika. Mowa o Get-MpThreat oraz Get-MpThreatDetection.
Get-MpThreat pokaże mniej więcej to, co pojawia się na interaktywnych powiadomieniach w razie wykrycia zagrożenia. Jest to cmdlet patrzący z perspektywy ochrony: własności zwracanego przez niego obiektu dotyczą takich rzeczy, jak to czy zagrożenie dalej jest aktywne, czy udało mu się wykonać, jaka jest nazwa wirusa i poziom zagrożenia, oraz w jakim został wykryty elemencie.
Get-MpThreatDetection jest bliższy wyjściu z Dziennika Zdarzeń i zawiera szczegóły z perspektywy badania incydentów bezpieczeństwa: kiedy nastąpiło wykrycie, która wersja silnika i definicji tego dokonała, czy akcja prewencyjna zakończyła się sukcesem. Zagrożenie widoczne tylko raz w Get-MpThreat może obfitować wieloma wpisami w Get-MpThreatDetection, jeżeli antywirus "walczył" z nim i podejmował wiele kroków. Aby poznać listę wszystkich wirusów wykrytych na komputerze przez Defendera, należy wydać polecenie:
[code=powershell]Get-MpThreatDetection | % { Get-MpThreatCatalog -ThreatID $_.ThreatID | Select-Object -ExpandProperty ThreatName } | Sort-Object -Unique[/code]
Zapraszamy do podzielenia się listą w komentarzach (lub pochwaleniem się, że jest pusta!)
Zdarzenia administracyjne
Incydenty bezpieczeństwa to jednak nie tylko wykrycie wirusów. Istnieje znacznie więcej "niepokojących" zdarzeń, o których może informować logowanie Defendera. Należą do nich:
Zatrzymanie skanowania (1002)Awaria skanowania (1005, 2031)Niepowodzenie podjęcia akcji obrony przed wirusem (1008, 1118)Historia ochrony została wyczyszczona (1013, 1014)Niepowodzenie akcji obrony w stopniu podważającym skuteczność pracy (1119)Nieudana aktualizacja (2001, 2003, 2006, 2012, 2021)Usunięcie wszystkich definicji (!) (2013)Awaria silnika (3002, 3007, 5008)Ochrona jest wyłączona (5001, 5010, 5012)Przewlekle nieaktualne definicje (5101)
Odpytanie Dziennika o powyższe wydarzenia da się osiągnąć następującymi poleceniami:
[code=powershell]$worryingEvents = "1002", "1005", "1006", "1008", "1013", "1014", "1015", "1116", "1118", "1119", "2001", "2003", "2006", "2012", "2013", "2021", "2031", "3002", "3007", "5001", "5008", "5010", "5012", "5101"Get-WinEvent -LogName "Microsoft-Windows-Windows Defender/Operational" | Where-Object { $worryingEvents -contains $_.Id } [/code]
Scenariusz idealny to taki, w którym otrzymana lista jest oczywiście pusta.
Kontrolka "Check Engine"
Stan Defendera opisany w sposób najogólniejszy można otrzymać na pomocą cmdletu Get-MpComputerStatus. Jest on zaawansowanym odpowiednikiem panelu z zielonymi/żółtymi ikonami stanu z Centrum Zabezpieczeń. Możemy zbadać, czy wszystkie składniki antywirusa działają poprawnie (choć powinna to zapewniać Ochrona przed naruszeniami):
[code=powershell]$s = Get-MpComputerStatus# Silnik nie uległ awarii$r = $s.AMRunningMode -eq "Normal"# Wszystkie narzędzia ochrony włączone$t = $true ; "AMServiceEnabled", "AntispywareEnabled", "AntivirusEnabled", "BehaviorMonitorEnabled", "IoavProtectionEnabled", "IsTamperProtected", "NISEnabled", "OnAccessProtectionEnabled" | Foreach-Object { if (\(s.\)_ -ne "True") {$t = $false} }# Definicje aktualne$u = $true ; "AntispywareSignatureAge", "AntivirusSignatureAge", "NISSignatureAge", "QuickScanAge" | % { if (\(s.\)_ -ne 0 ) {$u = $false}# Komputer nie ma zaległego skanu, restartu celem usunięcia wirusa ani nie czeka na decyzje użytkownika$c =$s.ComputerState -eq 0# Wszystkie powyższe warunki spełnione jednocześnie$r -and $t -and $u -and $c[/code]W kolejnej części zajmiemy się ustawieniem zaawansowanych parametrów Defendera, z uwzględnieniem tego, które ustawienia są ignorowane przez Ochronę przed naruszeniami.