Kurz: Vybrané problémy bezpečnosti komunikací (VPBK), Katedra telekomunikační techniky, VŠB – Technická univerzita Ostrava
Projekt: Srovnání penetračních a monitorovacích nástrojů Nessus a Metasploit včetně praktického testování
Jméno: Bc. Kryštof Šara (SAR0130)
úvod
Moderní sítě vyžadují vysokou míru zabezpečení, aby bylo možno zachovat fungování služeb. Služby podléhají neustálému riziku vystavení nežádoucích dat skrze tzv. zranitelnosti. Zranitelnosti je možno využít též k zatížení a následné nedostupnosti služby, která zranitelnosti podléhá. Pro účely proaktivního vyhledávání takových (známých i nových) zranitelností systémů a služeb se používají techniky penetračního testování.
penetrační testování
Penetrační testování je metoda proaktivního etického hackingu. Jedná se v podstatě o legální pronikání do (zpravidla) živých počítačových systémů a služeb za účelem zjišťování aktivních zranitelností, které mají být zazáplatovány, a možných nezabezpečených vstupních vrat do těchto systémů. Jednou z metodik popisujících procesy penetračního testování a zhodnocování získaných výstupů je metodika PTES (Penetration Testing Execution Standard, obrázek 1). Metodika PTES se skládá s několika částí: [1]
Obr. 1: Metodika PTES a její komponenty pro iterativní penetrační testování systémů a zhodnocování rizik. Převzato z [1].
Procedury před testováním
Před samotným testování je třeba nashromáždit relevantní nástroje pro provedení penetračního testu. Příkladem budiž získání speciální linuxové distribuce Kali s nálednou konfigurací konkrétních nástrojů. [1]
Průzkum a rešerše nástrojů a zranitelností
Další metou je získávání informací o testované sítí, zaměstnancích, prostředcích apod. Pro tento účel je možné využít mj. speciální flagy nástroje nmap
, které mohou odhalit základní vstupní body do sítě a systémů.
[1]
Modelování hrozeb
Jekmile jsou odhaleny zranitelnosti systému, je důležité, aby byla též navržena a nasazena jednotlivá řešení a záplaty daných zranitelností, pro potřeby minimalizace dopadů případného reálného útoku a zneužití systému či systémů testované sítě organizace. V této fázi tedy dochází k modelování rizik a s tím spojených možných následků. Do této fáze je možno tést zahrnout budování vlastního DRS (Disaster Recovery Scenario), což je dokument popisující postupy při závažné havárii počítačového systému pro rychlou obnovu provozu poskytovaných služeb. [1]
Ohodocení možných rizik a dopadů na bezpečnost provozu je zpravidla zodpovědností penetračního testera či osoby dozorující provádění takového auditu.
Testování
Získání zranitelností je důležité též pro další krok metodiky, a to pro další prověření možnosti zneužití zranitelností a otevřených vrat do služeb. Zde tedy probíhá vlastní testování, spouštění nástrojů penetračního testingu a sledování výstupů jednotlivých nástrojů. [1]
Potestové vyhodnocení, analýza a doporučení
Po úspěšném napadení, proniknutí do testovaného systému je důležité také vyzkoušet další techniky proniknutí či tzv. eskalace práv (privilege escalation), která umožňuje mj. získání administrátorských práv nad cílovým systémem. Všechny úkony je třeba zapisovat k potestové analýze výstupů a konečné formulaci doporučení a postupů pro nápravu aktuální situace. [1]
Reportování výsledků
V neposlední řadě je na řadě sepsání reportu celého auditu a informování zainteresovaných osob především z vedení organizace a technického osazenstva. V praxi se často přikládají dvojí zprávy: souhrn analýzy a doporučení pro management, a podrobná technická zpráva pro systémové inženýry a operátory infrastruktury. [1]
nástroje
Následující kapitola zahrnuje popis, nastavení a provedení jednoduchého testování nástroji Nessus a Metasploit Framework.
Oba nástroje na počátku svého vývoje byly open-source. Nyní však pod záštitou velkých cybersecurity společností podléhají proprietárním licencím a uzavřenému kódu (především profesionální verze Metasploit a prakticky všechny nástroje Nessus).
Nessus
Jde o proprietární nástroj společnosti Tenable. Jedná se o komplexní balík nástrojů pro evaluaci hrozeb a zranitelností různých cílových služeb, především těch se síťovým rozhraním (HTTP, FTP, mail server apod.). [4]
instalace a konfigurace
Před stažením software Nessus je třeba provést jednoduchou registraci potenciálního zákazníka na stránkách Tenable. Stránka Downloads pro stažení balíku Nessus se zobrazí po úspěšné registraci. Balík RPM (pro RedHat-family linuxové distribuce) lze po staží nainstalovat pomocí:
|
|
Po instalaci je sada nástrojů uložena do složky /opt/nessus
. Zde se nachází také nástroj nessuscli
, který lze využít mj. k získání tokenu identifikující novou instanci Nessus, či k manuálnímu nahrání nové aktualizace. Službu nessusd
je třeba po instalaci spustit:
|
|
Webové rozhraní nabízené touto službou je poté dostupné na lokální adrese a portu 8834, tj. např. https://localhost:8834.
K inicializaci nástroje je třeba ještě provést offline registraci po zvolení cílového produktu (obr. 2) zadáním licence. Prakticky jde o spárování tokenu instance (je automaticky vygenerován a zobrazen nástrojem) a aktivačního kódu, který je k nalezení na adrese https://account.tenable.com/trials/ po přihlášení do portálu.
Obr. 2: Startovací stránka webového prostředí nástroje Nessus.
Pro registraci je třeba obnovit si vlastní heslo pomocí linku pro ztracené heslo při přihlášení do Tenable Community centra. V profilu lze poté nalézt aktivační kód, který se při offline registraci zadává spolu s tokenem vygenerovaným samotnou instancí Nessus. Po zaregistrování produktu je možné též stáhnout balík pluginů, které jsou nezbytné pro provedení jednotlivých testů.
Po stažení balíku pluginů je třeba tyto doinstalovat aktualizací systému: [5]
|
|
Případně lze aktualizaci také nahrát ručně prostřednictvím nastavení systému (About » Manual Software Update). [5]
Po nahrání aktualizace je třeba službu nessusd
restartovat:
|
|
Po nahrání aktualizace a restartování systému probíhá ještě nutná kompilace pluginů, aby bylo možné je využít pro testování různých služeb.
testování
Po úspěšné instalaci pluginů je možné zahájit samotné testování nástrojem Nessus. Po zkompilování pluginů je automaticky zobrazeno dialogové okno pro zahájení síťového testu (obr. 3).
Obr. 3: Startovací dialogové okno před zahájením běžného síťového testu ve webovém prostředí nástroje Nessus.
Zadáním IP adres (verze 4 i 6, či dokonce zadání CIDR) proběhne pomocí lokálního DNS resolveru překlad IP adres na tzv. hostnames (existence PTR DNS záznamů není pro test zásadní, jde spíš o ověření identity cílového hosta, jak je ukázáno na obr. 4).
Obr. 4: Automatický překlad IP adres na PTR DNS záznamy (hostnames) ve webovém prostředí nástroje Nessus.
Kliknutím na tlačítko Run Scan jsou následně proti zadaným hostům/serverům spuštěn základní set testů na zranitelnosti nalezených služeb. Výsledky testování jsou následně zobrazeny na obr. 5 a 6.
Obr. 5: Výsledek testování proti zadaným hostům na úvodní obrazovce vybraného skenu sítě.
Obr. 6: Podrobnější předhled zranitelností a informací získaných penetračním testem proti zvolenému cílovému hostiteli.
Metasploit
Jedná se o balík (framework) pro penetrační testování rozličných systémů. Cílem komunity je zajišťování bezpečnosti počítačových systémů prostřednictvím vydávání doporučení a upozornění na známé hrozby, které jsou aktualizovány na denní bázi. [2]
Na počátku se jednalo o open-source síťovou utilitu napsanou v jazyce Perl, nyní se jedná o Ruby aplikaci s širokým využitím a zaměřením pro testy. Vývoj probíhá pod záštitou firmy Rapid7 od roku 2007. Ačkoliv jsou pokročilé nástroje proprietární, verze Community poskytuje základní set nástrojů a služeb zdarma s otevřeným kódem. [2]
instalace a konfigurace
Balíky pro linuxové distribuce lze stáhnout jednoduše z repozitářů Metaspolit, např. rpm.metaspolit.com. Instalaci je poté možné spustít zadáním:
|
|
Je možné, že pro spuštění bude chybět knihovna libcrypto
na testerově systému. Pro dané účely je třeba knihovnu doinstalovat pomocí:
|
|
Poté již nic nebrání spuštění nástroje Metasploit pomocí příkazu msfconsole
(výstup zobrazen na obr. 7):
|
|
Obr. 7: Otevření Metaspolit Frameworku pomocí příkazu
msfconsole
v příkazové řádce (shellu) systému GNU/Linux. Na obrázku je zobrazen též výsek možných příkazů a nastavení ve spuštěném subshellu msf
.
testování
Testování nástrojem Metasploit probíhá v příkazové řádce (CLI) a pro běžného linuxového uživatele je použití poněkud pohodlné. Testy lze provádět tak, že se do nástroje nahraje příslušný exploit či pomocná knihovna a následně se proti testovanému systému spustí příkazem run
procedura zjišťování zranitelnosti, či často samotný útok na službu. Příkazem connect
se lze připojit k cílovému stroji a portu přímo (obr. 8).
Obr 8.: Bazální připojení k hostovi a portu (socketu) pomocí příkazu
connect
. Na obrázku je zobrazeno připojení k HTTP serveru a odeslání jednoduchého požadavku (GET /
) a odezvy na tento.
Pro základní testování HTTP/S endpointu lze použít pomocnou knihovnu auxiliary/scanner/http/title
a spustit test proti existující (funkční) webové adrese. Odezva testu je na obr. 9.
[6]
Obr. 9: Prostá odezva HTTP/S serveru schovaného za Cloudflare HTTP/DNS proxy.
Provedení útoku/analýzy služby SSH je možné pomocí pomocné knihovny scanner/ssh/ssh_login
. Tato knihovna umožňuje provádět též tzv. brute force slovníkové útoky k prolomení přístupu do systému.
[7]
Výstup testu:
závěr
Ačkoliv je nástroj Nessus konfigurovatelný též z příkazové řádky, nabízí pro své nastavení a spouštění testů téměř výhradně webové prostředí. Naproti tomu nástroj Metaspolit Framework funguje především jako rychlá a robustní CLI aplikace/utilita.
Osobně mi přijde příznivější použití v příkazové řádce, jelikož jakékoliv byť jednoduché GUI vyžaduje relativně velké množství logiky a režie (uživatelské kontrolery vstupu/výstupu, různé obrazovky/views apod.), zatímto prostředí CLI, případně textové UI (TUI) nabízí relativně rychlé použití a orientaci. Webové prostředí rovněž závisí na nějakém backendu, tedy HTTP službě, což dále přináší další režii pro zdrojový systém testera.