Remote Desktop Protocol (RDP) je protokol vyvinutý spoločnosťou Microsoft, ktorý umožňuje vzdialené pripojenie k počítačom alebo serverom cez sieť. RDP server je softvérová časť, ktorá prijíma tieto vzdialené pripojenia a umožňuje používateľom pracovať na vzdialenom počítači, akoby boli priamo pred ním.
Na Windows Server 2022 a iných serverových edíciách od Microsoftu, RDP server je súčasťou funkcionality Remote Desktop Services (RDS). RDS ponúka viaceré možnosti vzdialeného prístupu a umožňuje viacerým používateľom súčasne pracovať na serveri.
Brute force útok je typ útoku, ktorý sa snaží získať prístup k účtu alebo systému prostredníctvom opakovaných a automatických pokusov s rôznymi kombináciami hesiel. Tento spôsob útoku je pomenovaný podľa svojej jednoduchej, ale agresívnej povahy, kedy útočník „násilím“ skúša všetky možné kombinácie, kým nenájde správne heslo.
Princíp bruteforce útoku je založený na predpoklade, že heslo môže byť akékoľvek kombinácia znakov (čísla, písmená, špeciálne znaky) a že ak sa vykoná dostatočné množstvo pokusov, útočník nájde správne heslo. Tento útok môže byť úspešný, ak je heslo slabé alebo ak nie sú implementované žiadne dodatočné opatrenia na ochranu proti bruteforce útokom.
Existujú rôzne spôsoby, ako môže útočník vykonať bruteforce útok:
- Brute Force na prihlasovacej stránke:
- Útočník skúša kombinácie hesiel priamo na prihlasovacej stránke (napríklad webovom rozhraní alebo vzdialenom prístupe).
- Offline Brute Force:
- Útočník získava hesloové hashe (napríklad z databázy) a potom ich skúša offline pomocou rôznych heselných kombinácií.
- Dictionary Attack:
- Útočník používa zoznam bežných hesiel, tzv. „slovník“, a skúša ich postupne.
Ochrana pred bruteforce útokmi zahŕňa používanie silných hesiel, obmedzenie počtu neúspešných pokusov o prihlásenie, používanie viacfaktorovej autentifikácie (2FA/MFA) a monitorovanie neobvyklých aktivít na účtoch.
Je dôležité si uvedomiť, že bruteforce útoky sú považované za agresívne a neetické správanie. Organizácie by mali aktívne implementovať opatrenia na ochranu pred takýmito útokmi a zabezpečiť svoje systémy proti násilným pokusom o získanie prístupu.
Ochrana voči útokom
Blokovanie IP adries, ktoré skenujú zariadenie (napríklad pre bruteforce útoky), je jedným zo spôsobov ochrany pred potenciálnymi útočníkmi. Toto opatrenie môže byť implementované na úrovni sieťových zariadení, ako sú firewally, alebo na úrovni aplikácií, ktoré sú napadnuté. Tu je niekoľko krokov, ktoré môžete podniknúť:
- Firewall pravidlá:
- Nastavte firewall pravidlá, ktoré automaticky blokujú prístup z IP adries, ktoré sa správajú neobvykle alebo sa pokúšajú o prístup s neplatnými údajmi. Tieto pravidlá môžu sledovať neobvyklý tok sieťovej prevádzky, príliš veľa požiadaviek za krátky čas, alebo množstvo neúspešných prihlásení.
- Intrusion Detection/Prevention System (IDS/IPS):
- Použite systémy detekcie a prevencie intrúzií na monitorovanie a reagovanie na neobvyklú činnosť v sieti. IDS/IPS môže identifikovať a blokovať pokusy o skenovanie zariadení a iné nežiaduce aktivity.
- Monitorovanie logov:
- Pravidelne monitorujte logy zariadení a aplikácií. Hľadajte neobvyklé aktivity alebo opakovane neúspešné pokusy o prihlásenie. Ak sa zistí neštandardná činnosť, môže byť IP adresa blokovaná.
- Automatické blokovanie:
- Automatizujte proces blokovania IP adries, ktoré sa dopúšťajú nevhodnej činnosti. Môžete nastaviť systém tak, aby automaticky reagoval na určité typy útokov a blokoval prístup z problematických adries.
- Thresholds a obmedzenia:
- Nastavte prahy a obmedzenia na počet požiadaviek alebo neúspešných prihlásení za daný časový interval. Keď sa tieto prahy prekročia, môžu byť IP adresy automaticky blokované.
- Whitelisting a Blacklisting:
- Použite bielu a čiernu listinu IP adries. Biela listina povolí prístup iba z povolených adries, zatiaľ čo čierna listina zakáže prístup z určených adries.
- Geografické obmedzenia:
- Ak je to možné, obmedzte prístup len na konkrétne geografické oblasti, kde očakávate legitímnu prevádzku. To môže pomôcť obmedziť vplyv útokov zo špecifických regiónov.
Implementácia týchto opatrení v rámci bezpečnostnej stratégie môže značne znížiť riziko úspešného útoku prostredníctvom skenovania IP adries. Je však tiež dôležité, aby sa tieto opatrenia pravidelne aktualizovali a prispôsobovali sa novým hrozbám a taktikám útočníkov.
Implementácia ochrany
Ochrana pozostáva z dvoch modulov:
- Spracovanie LOG:
- Vytvaranie pravidiel pre firewall
Spracovanie LOG
$Last_n_Hours = [DateTime]::Now.AddHours(-5)
$badRDPlogons = Get-EventLog -LogName 'Security' -after $Last_n_Hours -InstanceId 4625 | ?{$_.Message -match 'logon type:\s+(3)\s'} | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$getip = $badRDPlogons | group-object -property IpAddress | where {$_.Count -gt 5} | Select -property Name
IP adresy ktoré sapodielaju na utoku sú uložené v premennej
$getip
Vytvátranie pravidiel pre firewall
Je potrebne vytvorit pravidlo na firewall
New-NetFirewallRule -DisplayName "BlockRDPBruteForce" –RemoteAddress 1.1.1.1 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Block
Práca s firewall:
$log = "C:\rdp_blocked_ip.txt"
$current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter ).RemoteAddress
foreach ($ip in $getip)
{
$current_ips += $ip.name
(Get-Date).ToString() + ' ' + $ip.name + ' The IP address has been blocked due to ' + ($badRDPlogons | where {$_.IpAddress -eq $ip.name}).count + ' attempts for 2 hours'>> $log # writing the IP blocking event to the log file
}
Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $current_ips
V tejto sekcii sa vytvori LOG subor kde je zapisany aj pocet neuspesnych pokusov o prihlasenie na RDP server.
C:\rdp_blocked_ip.txt
12/12/2023 12:27:36 PM 91.238.181.10 The IP address has been blocked due to 742 attempts for 2 hours
12/12/2023 12:27:36 PM 185.222.7.137 The IP address has been blocked due to 3673 attempts for 2 hours
12/12/2023 12:27:37 PM 185.161.248.31 The IP address has been blocked due to 301 attempts for 2 hours
12/12/2023 12:27:37 PM 188.120.232.81 The IP address has been blocked due to 276 attempts for 2 hours
Daný script je potrebné implementovať pomocou Task Sheduller aby sa spášťal opakovane.
Windows Task Scheduler (Plánovač úloh):
- Čo to je: Windows Task Scheduler je nástroj od spoločnosti Microsoft, ktorý umožňuje plánovať a automatizovať spustenie rôznych úloh na operačnom systéme Windows. Tieto úlohy môžu zahŕňať spustenie programov, skriptov, zálohovanie, aktualizácie a ďalšie operácie.
- Ako funguje: Používateľ môže vytvoriť úlohy v rozhraní Task Scheduler, určiť podmienky spustenia a konfigurovať ďalšie parametre. Úlohy môžu byť naplánované na špecifický čas alebo spustené na základe udalostí, ako napríklad pri prihlásení alebo odhlásení používateľa.
Vytvorenie Task Sheduller úlohy pomocu PowerShell:
$trigger = New-ScheduledTaskTrigger `
-Once `
-At (Get-Date) `
-RepetitionInterval (New-TimeSpan -Minutes 15) `
-RepetitionDuration (New-TimeSpan -Days (365 * 20))
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\block_rdp_attack.ps1"
Register-ScheduledTask -TaskName "BlockRDPBruteForce_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force
Návod na inštaláciu:
- stihnú ps1 script do priečinka „C:\PS\block_rdp_attack.ps1“
- Nainštalovať Task Sheduller politiku abz dochádyalo k spúštaniu scriptu
Script:
# Check if the rule already exists
$existingRule = Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" -ErrorAction SilentlyContinue
if ($existingRule -eq $null) {
# Rule doesn't exist, create a new one
New-NetFirewallRule -DisplayName "BlockRDPBruteForce" –RemoteAddress 1.1.1.1,1.1.1.1 -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Block
Write-Host "Firewall rule BlockRDPBruteForce created successfully."
} else {
# Write-Host "Firewall rule BlockRDPBruteForce already exists."
}
$Last_n_Hours = [DateTime]::Now.AddHours(-5)
$badRDPlogons = Get-EventLog -LogName 'Security' -after $Last_n_Hours -InstanceId 4625 | ?{$_.Message -match 'logon type:\s+(3)\s'} | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$getip = $badRDPlogons | group-object -property IpAddress | where {$_.Count -gt 5} | Select -property Name
$log = "C:\rdp_blocked_ip.txt"
$current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter ).RemoteAddress
foreach ($ip in $getip)
{
$current_ips += $ip.name
(Get-Date).ToString() + ' ' + $ip.name + ' The IP address has been blocked due to ' + ($badRDPlogons | where {$_.IpAddress -eq $ip.name}).count + ' attempts for 2 hours'>> $log # writing the IP blocking event to the log file
}
Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $current_ips
Odborník na kybernetickú bezpečnosť, správu Azure Cloud a VMware onprem. Využíva technológie, ako Checkmk a MRTG, na monitorovanie siete a zvyšovanie efektívnosti a bezpečnosti IT infraštruktúry. Kontakt: hasin(at)mhite.sk