
Każdy, kto próbował uruchomić maszynę wirtualną w chmurze, wie, że standardowy port RDP, jeśli zostanie pozostawiony otwarty, zostanie niemal natychmiast zaatakowany falą prób łamania hasła z różnych adresów IP z całego świata.
W tym artykule pokażę, jak można skonfigurować automatyczną reakcję na próby łamania hasła poprzez dodanie nowej reguły do zapory. InTrust to do zbierania, analizy i przechowywania danych nieustrukturyzowanych, która ma już setki predefiniowanych reakcji na różne typy ataków.
W Quest InTrust można skonfigurować działania odpowiedzi na zdarzenia, gdy reguła zostanie uruchomiona. Z agenta zbierającego logi InTrust otrzymuje powiadomienie o nieudanej próbie autoryzacji na stacji roboczej lub serwerze. Aby skonfigurować dodanie nowych adresów IP do zapory, należy skopiować istniejącą specjalną regułę wykrywania wielu nieudanych autoryzacji i otworzyć jej kopię do edycji:

Wydarzenia w dziennikach Windows wykorzystują tzw. InsertionString. (to nieudane logowanie do systemu) i zobaczysz, że interesujące nas pola są przechowywane w InsertionString14 (Nazwa stacji roboczej) i InsertionString20 (Adres sieci źródłowej). W przypadku ataku z internetu pole Nazwa stacji roboczej będzie prawdopodobnie puste, dlatego ważne jest, aby w tym miejscu wstawić wartość z Adresu sieci źródłowej.
Tak mniej więcej wygląda tekst zdarzenia 4625
Nie udało się zalogować do konta.
Temat:
ID zabezpieczeń: S-1-5-21-1135140816-2109348461-2107143693-500
Nazwa konta: ALebovsky
Domena konta: LOGISTICS
ID logowania: 0x2a88a
Rodzaj logowania: 2
Konto, dla którego logowanie nie powiodło się:
ID zabezpieczeń: S-1-0-0
Nazwa konta: Paul
Domena konta: LOGISTICS
Informacje o niepowodzeniu:
Powód niepowodzenia: Konto zablokowane.
Status: 0xc0000234
Podstatus: 0x0
Informacje o procesie:
ID procesu wywołującego: 0x3f8
Nazwa procesu wywołującego: C:\Windows\System32\svchost.exe
Informacje o sieci:
Nazwa stacji roboczej: DCC1
Adres źródłowy sieci: ::1
Port źródłowy: 0
Szczegółowe informacje o uwierzytelnieniu:
Proces logowania: seclogo
Pakiet uwierzytelnienia: Negotiate
Usługi pośredniczące: -
Nazwa pakietu (tylko NTLM): -
Długość klucza: 0
Wydarzenie to jest generowane, gdy żądanie logowania kończy się niepowodzeniem. Powstaje na komputerze, na którym próbowano uzyskać dostęp.
Pola Tematu wskazują na konto w lokalnym systemie, które złożyło żądanie logowania. Najczęściej jest to usługa, taka jak usługa serwera, lub lokalny proces, taki jak Winlogon.exe lub Services.exe.
Pole Rodzaj logowania wskazuje, jakiego rodzaju logowanie zostało zażądane. Najczęściej spotykane typy to 2 (interaktywne) i 3 (sieciowe).
Pola Informacje o procesie wskazują, które konto i proces w systemie zażądały logowania.
Pola Informacje o sieci wskazują, skąd pochodziło zdalne żądanie logowania. Nazwa stacji roboczej nie zawsze jest dostępna i może być pusta w niektórych przypadkach.
Pola informacji o uwierzytelnieniu dostarczają szczegółowych informacji na temat tego konkretnego żądania logowania.
- Usługi pośredniczące wskazują, które usługi pośredniczące wzięły udział w tym żądaniu logowania.
- Nazwa pakietu wskazuje, który podprotokół był używany w protokołach NTLM.
- Długość klucza wskazuje długość wygenerowanego klucza sesji. Będzie to 0, jeśli nie zażądano klucza sesji.
Dodatkowo dodamy wartość Adres źródłowej sieci do tekstu zdarzenia.

Następnie należy dodać skrypt, który zablokuje adres IP w zaporze systemu Windows. Poniżej przykład, który można użyć do tego celu.
Skrypt do konfiguracji zapory
param(
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[string]
$SourceAddress
)
$SourceAddress = $SourceAddress.Trim()
$ErrorActionPreference = 'Stop'
$ruleName = 'Quest-InTrust-Block-Failed-Logons'
$ruleDisplayName = 'Quest InTrust: Blokuje adresy IP z nieudanych logowań'
function Get-BlockedIps {
(Get-NetFirewallRule -Name $ruleName -ErrorAction SilentlyContinue | get-netfirewalladdressfilter).RemoteAddress
}
$blockedIps = Get-BlockedIps
$allIps = [array]$SourceAddress + [array]$blockedIps | Select-Object -Unique | Sort-Object
if (Get-NetFirewallRule -Name $ruleName -ErrorAction SilentlyContinue) {
Set-NetFirewallRule -Name $ruleName -RemoteAddress $allIps
} else {
New-NetFirewallRule -Name $ruleName -DisplayName $ruleDisplayName -Direction Inbound -Action Block -RemoteAddress $allIps
}
Teraz można zmienić nazwę reguły i jej opis, aby później nie powstało zamieszanie.

Teraz należy dodać ten skrypt jako akcję odpowiedzi do reguły, włączyć regułę i upewnić się, że odpowiednia reguła jest włączona w polityce monitorowania dla trybu rzeczywistego. Na agencie musi być włączona możliwość uruchamiania skryptów odpowiedzi i konieczne jest podanie poprawnego parametru.

Po wykonanych konfiguracjach liczba nieudanych autoryzacji zmniejszyła się o 80%. Zysk? Jeszcze jaki!

Czasami następuje mały wzrost, ale to z powodu pojawienia się nowych źródeł ataków. Potem wszystko znowu wraca do normy.
W ciągu tygodnia do reguły zapory trafiło 66 adresów IP.

Poniżej tabela z 10 najczęściej używanymi nazwami użytkowników, które były wykorzystywane w próbach autoryzacji.
Nazwa użytkownika
Liczba
W procentach
administrator
1220235
40.78
admin
672109
22.46
użytkownik
219870
7.35
contoso
126088
4.21
contoso.com
73048
2.44
administrador
55319
1.85
server
39403
1.32
sgazlabdc01.contoso.com
32177
1.08
administrateur
32377
1.08
sgazlabdc01
31259
1.04
Opowiedz w komentarzach, jak masz zorganizowaną reakcję na zagrożenia bezpieczeństwa informacji. Jakiego systemu używasz, jak wygodny jest?
Jeśli chcesz zobaczyć InTrust w akcji, w formularzu kontaktowym na naszej stronie lub napisz do mnie osobiście.
Przeczytaj inne nasze artykuły na temat bezpieczeństwa informacji:
(popularny artykuł)
Źródło: habr.com
