section

Nessus - skenování zranitelností

18.06.2022 | Tag Bezpečnost

Při penetračních testech je Nessus často skloňovaný pojem. Jde o velmi populární skener zranitelností, který lze použít pro kontrolu stavu infrastruktury, či k prozkoumání prostředí. V článku chci ukázat práci s jeho free verzí a trochu jej přiblížit.

Nessus má dostupnou placenou a neplacenou verzi. Neplacená verze, Nessus Essentials, je licenčně limitována počtem skenovaných hostů na 16 adres. Počítání licencí má nějaká pravidla. Například výsledek skenu dostupných hostů se do tohoto limitu nezapočítává, další skeny nad hosty už ano. Skenovaný host drží licenci 90 dní, pokud na něm nebude po tu dobu proveden sken, licenci uvolní. Licenci bere host, ne skeny nad ním provedené, takže nad jedním hostem lze provádět různé skeny podle libosti.

NESS3

Pro získání free licenčního klíče je potřeba se zaregistrovat na stránkách Tenable. Následně na zadaný mail přijde klíč, který se do instalace Nessusu zadá. Registraci je také možné provést přímo přes rozhraní Nessusu po jeho instalaci. Instalovat lze na Windows i Linux systémy, záleží na preferencích admina. Já zvolila jako podklad Kali Linux, ale jen proto, že to byl jediný už natočený a celkem aktuální systém. V ostrém prostředí bych pravděpodobně použila čistý Debian. Doporučila bych (jako vždycky) nastudovat Nessus guidu a projít si systémové požadavky. Nessus není vyloženě výkonově náročný, ale měl by mít dostatek prostředků v závislosti na velikosti skenovaného prostředí.

Síťové umístění Nessusu chce rozmyslet. Pro relevantní výsledky by skener a skenovaný systém měly být blízko sebe a neměl by mezi nimi stát nějaký bezpečnostní prvek, který by výsledek skenu zkreslil. Ano, opět záleží na záměru, ale pokud chceme vidět stav systému samotného, zakrytí zranitelností díky firewallu před ním nám moc nepomůže. Vcelku snadné se jeví přemisťování ve virtualizaci, kde jsem síťovku VM s Nessusem vždy po skenu jednoho systému přendala do jiné sítě a mohla takhle projít většinu segmentů napřímo. U velkých instalací v rozsáhlé topologii má Nessus k dispozici agenty, kteří se linkují do centrální konzole. Rozloží se tak zátěž skeneru a teoreticky se tak mohou podchytit oddělené sítě, nicméně to jsem blíže nezkoumala.

Samotná instalace je velmi jednoduchá pro Linux i Windows. Konkrétně u Linuxu po instalaci balíčku stačí nastartovat (a případně dát do enable stavu) nessusd službu a přistoupit na GUI, kde se nastaví klíč a vytvoří první admin účet.

Primární rozhraní pro management skeneru je webové GUI dostupné po instalaci na https://adresaserveru:8834. Port i adresa, na kterých skener poslouchá, se dají následně přes settings změnit. Je k dispozici také CLI utilita nessuscli, která umožňuje řídit některé části systému, ale nedokáže GUI plně nahradit.

NESS7

Po instalaci si Nessus automaticky stáhne a zkompiluje všechny pluginy pro skenování, což zabere vcelku dost času, chce to trpělivost. Pak už je systém připravený k použití. Pluginy by se následně měly automaticky aktualizovat. Seznam existujících pluginů se dá najít na stránce Tenable plugins. Jde o programy, které hledají a reagují na nějakou popsanou zranitelnost, nebo systémovou konfiguraci. Jsou dále kategorizovány a následně použity ve skenech. Doporučuji se na tu stránku s výpisem pluginů podívat a projít si aspoň zhruba, jaké pluginy jsou k dispozici. Je jich totiž opravdu mnoho a dokáží skenovat různé služby, ne jen Windows nebo Linux servery. Dají se testovat Cisco prvky, Palo Alto, Apache či Nginx, VCenter a tak dále. Nessus má široký záběr.

NESS1

Nessus má ve svém GUI k dispozici spoustu šablon skenů pro různé účely, ze kterých se následně samotné skeny vytvářejí. Případně se dají vytvářet i vlastní. Další vlastnosti skenů se dají konfigurovat buďto per sken, nebo pomocí politik, které se na vytvářené skeny navážou. Skeny lze provádět se zadaným loginem do systému, nebo bez něj. S loginem je sken podrobnější, protože se skener dostane hlouběji. Nicméně má to většinou dost prerekvizit, které se musí na skenovaném systému nastavit. Bez loginu skener vidí jen „povrchové“ zranitelnosti a informace, ale to kolikrát stačí.

NESS2

Dovolila bych si menší upozornění. Dejte velký pozor na to, co skenujete a jak velký rozsah volíte. Síťové skeny jsou hlučné a snadno detekovatelné. Většina lepších bezpečnostních prvků na ně okamžitě přijde a dost agresivně zareaguje. Také internetoví poskytovatelé a oddělení bezpečnosti je nevidí rádi. V rámci firmy se tím dá testovat bdělost adminů, ale obecně pokud chcete mít klid, hlídejte si rozsah skenu a dávejte odpovědným osobám vědět, že sken chcete provést.

NESS6

A další upozornění – skenování zranitelností je věc jedna, ale jejich odstranění je věc druhá. Zdá se to logické, ale potkala jsem spoustu lidí, pro které bylo skenování zranitelností gró celého procesu a následné odstranění nálezů už brali jako triviální záležitost. Tak to není. Odstranit zranitelnost nalezenou při skenu správně, kompletně a přitom zachovat potřebnou přístupnost systému je často velmi obtížné a občas nemožné. Opravdu to chce dobrou znalost dané platformy, prostředí a rozum v hrsti, protože většinou nestačí postiženou část prostě vypnout. Obzvláště u Windows systémů a webových aplikací je následná mitigace velmi zábavná.

V rámci ukázky jsem dělala sken zranitelností s loginem proti mému Windows AD serveru a sken zranitelností bez loginu proti serveru networkcat.

Pro credentialed sken jsou potřeba zvláštní nastavení na serveru, aby se do něj Nessus dostal. Pokud je sken s loginem žádoucí, doporučuji opět držet se guidy pro vytvoření prostupu a po skenu všechna nastavení vrátit do původního stavu. Není úplně jednoznačně poznat, zda se přihlášení zdařilo či ne, Nessus to sám o sobě nepoví a sken i při neplatném přihlášení doběhne. Ve výsledcích skenu však pravděpodobně budou pluginy, které řeknou, že se nepovedlo přihlásit. Namátkou plugin id 19506, který vypisuje informace o samotném skeneru, je schopný říct, zda se použil login.

NESS5

První sken cílil na Windows Server 2019 s nainstalovanými rolemi AD DS, AD CS, DNS, RDS, NPS a možná ještě pár dalšími. Jde o testovací prostředí, které zapínám jen sporadicky a nijak neřeším aktualizace nebo hardening nastavení. Tolik tedy k první skenované adrese. Na screenech níže je vidět prvotní stav zranitelností a stav následný po opravě toho nejhoršího.

NESS14
NESS8

Výsledkem tohoto skenu bylo cca 170 nálezů s různou závažností. Pokusila jsem se odstranit critical, high a medium výsledky, ať je to zajímavější. Závažnost info jsou většinou spíše informace o systému, než vyložené zranitelnosti. Záleží na každém, zda a jak je hodlá řešit. V mém případě byla většina závažných zranitelností způsobená chybějícími aktualizacemi, po velkém instalačním kolečku se tedy většina odstranila. Další část zranitelností se týkala podpory TLS 1.0 a 1.1. Tam bylo potřeba zasáhnout do registrů. Těmito opravami se povedlo většinu závažných zranitelností stáhnout. Nakolik to ovlivnilo chod systému, nejsem schopná posoudit, jelikož jde o testovací stroj. V reálu bych byla opatrnější.

Druhý sken byl nad serverem, kde žije networkcat.cz. Nebyl s loginem, neměl proto takový dosah, i tak se však pár nálezů objevilo. Primárně šlo o podporu SHA1 u SSH, což jsem konfiguračně v sshd souboru opravila.

NESS10
NESS13

Provedené skeny je možné v čase mezi sebou porovnávat. Dělá se tak v historii skenů, kde se vyberou dva skeny k porovnání a přes tlačítko Diff vpravo nahoře se ukáže rozdíl. Diff poukazuje na zranitelnosti, které se v rámci porovnávaných skenů objevily, nebo zmizely. Je to šikovné pro průběžnou kontrolu stavu skenovaného serveru.

NESS11
NESS12

Dále lze z provedeného skenu nechat vytvořit PDF či HTML report, Nessus pro to dává k dispozici několik šablon. Formátování reportů se mi zdá velmi pěkně vyvedené a narozdíl od jiných automaticky generovaných PDF je to ve skutečnosti použitelné.

NESS9
NESS4

To by za mě bylo k Nessusu vše. Jde o silný nástroj, který při správném použití v ochraně prostředí hodně pomůže. Mimochodem, existuje spousta podobných projektů pro hlídání infrastruktury. Velice zajímavý je web shodan.io, který pravidelně skenuje internet a umožňuje svou databázi prohledávat. Dají se tak dohledat veřejně dostupné servery a zařízení a podívat se, jak z pohledu internetu vypadají. Další hezký web je SSL Labs od Qualys, který umožňuje skenovat weby a na základě vybraných kritérií je známkuje. Projekt je zaměřený na správnou implementaci TLS, takže rating se točí kolem toho. Pokud však vystavujete veřejně nějakou webovou službu, opět je to zajímavý ukazatel stavu. Samozřejmě podobných stránek a nástrojů je celá řada, je z čeho vybírat.