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í:

1
sudo rpm -i ~/Downloads/Nessus-10.8.4-fc38.x86_64.rpm

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:

1
sudo systemctl start nessusd.service

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]

1
sudo /opt/nessus/sbin/nessuscli update ~/Downloads/all-2.0.tar.gz

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:

1
sudo systemctl restart nessusd.service

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:

1
sudo rpm -i ~/Downloads/metasploit-framework-6.4.63~20250512102730~1rapid7-1.el6.x86_64.rpm

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í:

1
sudo dnf install libxcrypto-compat

Poté již nic nebrání spuštění nástroje Metasploit pomocí příkazu msfconsole (výstup zobrazen na obr. 7):

1
msfconsole

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]

1
2
use auxiliary/scanner/http/title
run https://www.littr.eu httpTrace=true verbose=true

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]

1
2
use scanner/ssh/ssh_login
run ssh://10.4.6.50 verbose=true

Výstup testu:

1
2
3
4
[*] 10.4.6.50:22 - Starting bruteforce
[*] Error: 10.4.6.50: Metasploit::Framework::LoginScanner::Invalid Cred details can't be blank, Cred details can't be blank (Metasploit::Framework::LoginScanner::SSH)
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

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.

reference

ref. noreference
[1]https://medium.com/@alexandergts98/using-kali-linux-nessus-and-metasploit-to-test-for-vulnerabilities-6080a8d5214
[2]https://www.upguard.com/blog/metasploit-vs-nmap-for-ethical-hacking
[3]https://jubriledun.hashnode.dev/vulnerability-scanning-nmap-nessus-metasploitable-2
[4]https://docs.tenable.com/nessus/Content/GettingStarted.htm
[5]https://docs.tenable.com/nessus/Content/OfflineInstallPluginsManually.htm
[6]https://docs.metasploit.com/docs/pentesting/metasploit-guide-http.html
[7]https://docs.metasploit.com/docs/pentesting/metasploit-guide-ssh.html