Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Proč je dobré nemít výchozí bránu a ještě lepší mít Windows Firewall
říjen 23
Proč je dobré nemít výchozí bránu a ještě lepší mít Windows Firewall

Myslím další pěkný příklad pravidla "nikdy nic nepředpokládej" (což je jedno z deseti přikázání profesionálního válečníka Richarda Marcinka). Co asi udělá hacker, který chce zůstat v síti svého "zákazníka" i potom, co ho odtud vyženou svinským krokem? Nechá tam nějaký trojan downloader. Pojďme se podívat, co to může znamenat, a že nebude zrovna jednoduché mu v tom zabránit.

Když je to nějaký prosťáček, tak někde na netu takový downloader stáhne a rozinstaluje. Proti prosťáčkům funguje antivirus (asi lépe řečeno antimalware). Antimalware snad zná nějaké obvyklé signatury trojan downloaderů a umí je tedy najít.

Když to ovšem není prosťáček tak udělá co? Nějakého si naprogramuje. Bude mít jistotu, že takový program nic nenajde.

Nojo, naprogramovat. To už chce hodně velké znalosti, že? Nesmysl. To je skript na 4 řádky v PowerShellu. Něco jako tohle - to je základ skriptu, který já používám na sledování funkčnosti SharePointu (a podobných najdete na internetu desítky):

$webClient = New-Object System.Net.WebClient

$webClient.Headers.Add( `
    "user-agent", `
    "sevecek-nlb-testing")

$webClient.Credentials = `
    [System.Net.CredentialCache]::DefaultCredentials

[string] $html = `
    $webClient.DownloadString("http://intranet")

Tenhle skript stahuje normální HTML. Může ale stahovat cokoliv jiného. Dokonce to dělá pod identitou aktuálního uživatele. Takže to umí chodit i přes ověřovanou proxy. Není potřeba mír dvacet let programátorských zkušeností na to, abyste to upravili na stažení nějakého textového souboru se skriptem, který chcete spouštět.

No a jak to potom spustíte? Paráda je, že PowerShell umí spouštět kód z proměnné pomocí Invoke-Expression - tedy jen a jen z paměti. Nemusíte ani nic ukládat na disk. Příklad následuje - v řetězcové proměnné je text skriptu, který se spustí (tohle vypíše procesy na počítači).

$memoryOnlyScript = `
    'echo "skriptu z retezce" ; get-process'

Invoke-Expression $memoryOnlyScript

Obrana?

Můžete zvážit tyhle možnosti:

  • zakázat PowerShell úplně
  • vyžadovat všechny skripty pouze digitálně podepsané
  • zablokovat přístup na internet ze serverů
  • zrušit alespoň výchozí bránu (default gateway), aby skript musel přes proxy a měl to tedy složitější

Všechny možnosti jsou nějak nedokonalé. PowerShell zakázat nechcete. Ten útočník si bude ten downloader nejspíš navíc spouštět pod SYSTEM účtem (viz. můj předchozí článeček o skrytých úlohách v WMI). Může si tedy se systémem dělat cokoliv a jakákoliv omezení si odebrat. Každé omezení je ale vždycky další hrebíček do rakve namachrovanýho hekříka. A to my chceme!

Přístup na internet je dobré omezit tím, pokud to jde, že zrušíte výchozí bránu a na internet se musí chodit přes proxy. A vypnete proxy pro system. Máte lepší kontrolu a skriptař to má přecejenom ztížené. Taky bych použil Windows Firewall. Můžete pro servery krásně přes GPO omezit odchozí spojení.

Proč by měly servery chodit někam na HTTP? Aktualizace? Máte WSUS, ne? A někdy potřebuju přecejenom internetit? Nepotřebujete internetovat ze serverů, to vám garantuju :-) Ale i kdyby, Windows Firewall přece umí omezit odchozí spojení i podle procesů. Tak si můžete povolit Internet Explorer a přecejenom se podíváte :-)

Zase. Je pravda, že SYSTEM si tahle omezení může sám odebrat. Ale ono to už zase víc a víc komplikuje ten útočníkův skript. Spíše v něm bude chyba, bude mu trvat déle, než to přizpůsobí konkrétnímu prostředí.

Comments

There are no comments for this post.

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments