Vuls to narzędzie do badania podatności przeznaczone do pracy w systemach Linux i FreeBSD. Nie wymaga agenta, jest darmowy i z powodzeniem można go używać zamiast zaawansowanych skanerów.
Vuls został napisany głównie w języku Go i może działać w różnych środowiskach. Narzędzie to da się uruchomić w chmurze, na lokalnych serwerach lub używając Dockera. Jest kompatybilne także z najważniejszymi dystrybucjami systemu operacyjnego Linux. Vuls wspiera wiele baz danych podatności, takich jak NVD, JVN, OVAL, RHSA/ALAS/ELSA/FreeBSD-SA.
Za pomocą tego oprogramowania można skanować różne systemy operacyjne przy użyciu różnych metod. Istnieje opcja skanowania lokalnych zasobów hosta oraz zdalnego skanowania hostów/serwerów za pomocą SSH. Vuls zapewnia kilka metod skanowania: szybkie, które nie wymaga uprawnień roota oraz zaawansowane (głębokie), które tych uprawnień wymaga. Narzędzie umożliwia badanie wielu serwerów jednocześnie. Po zakończeniu skanowania istnieje możliwość wysłania wyników za pomocą e-maila lub Slacka.
W tym przewodniku pokażemy, jak zainstalować skaner podatności Vuls na serwerze Debian w wersji 12, jak skonfigurować bazy danych CVE, a następnie przeskanować lokalny system i zdalną maszynę.
Instalowanie zależności
Instalację przeprowadzimy na dystrybucji systemu Debian w wersji 12. Zanim zaczniemy instalować Vulsa, musimy upewnić się, że wszystkie zależności są zainstalowane. Jako zależności instalujemy pakiety debian-goodies oraz reboot-notifier. W tym celu najpierw należy zaktualizować indeks pakietów Debiana:
$ apt-get update
Następnie instalujemy pakiety debian-goodies oraz reboot-notifier:
$ apt-get install debian-goodies reboot-notifier
Po zakończeniu tego procesu wgrywamy Vulsa za pomocą skryptu instalacyjnego. Skrypt ten automatycznie skompiluje i zainstaluje Vulsa oraz dodatkowe narzędzia w systemie operacyjnym. Aby zainstalować Vulsa, uruchamiamy kod, którego część załączamy pod linkiem:
$ bash < (curl -s itwa.pl/119)
Skrypt instalacyjny wgra najnowszą wersję Golanga, a następnie skompiluje i zainstaluje narzędzia takie jak go-cti, go-cve-dictionary, goval-dictionary, go-exploitdb, go-kev, go-msfdb i gost.
Po zakończeniu instalacji sprawdzamy katalog /usr/local/bin, w którym znajduje się plik binarny dla Vulsa wraz z narzędziami:
$ cd ls /usr/local/bin/
Po sprawdzeniu lokalizacji możemy zweryfikować, czy Vuls działa poprawnie. W tym celu wyświetlamy wiadomości pomocy, korzystając z polecenia:
$ vuls help
Konfigurowanie Vulsa
Po zainstalowaniu należy skonfigurować narzędzie, co umożliwi skanowanie serwera lub hosta. W tym celu należy utworzyć nowy katalog pod Vuls, a także utworzyć pliki konfiguracyjne dla instalacji Vulsa. Dodatkowo definiujemy bazy danych CVE w formie baz danych SQLite.
W pierwszym kroku przygotowujemy nowy katalog /opt/vuls i przechodzimy do niego. Następnie tworzymy nowy plik config. toml za pomocą edytora nano. Plik config.toml zawiera konfigurację baz danych Vulsa, ale można w nim także zdefiniować hosty, które będziemy skanowali.
$ mkdir -p /opt/vuls; cd /opt/vuls
$ nano config.toml
[cveDict]
type = „sqlite3”
SQLite3Path = „/opt/vuls/cve.sqlite3”
[ovalDict]
type = „sqlite3”
SQLite3Path = „/opt/vuls/oval.sqlite3”
[gost]
type = „sqlite3”
SQLite3Path = „/opt/vuls/gost.sqlite3”
[metasploit]
type = „sqlite3”
SQLite3Path = „/opt/vuls/go-msfdb.sqlite3”
Zapisujemy plik. Następnie uruchamiamy poniższe polecenie, aby zweryfikować konfigurację Vulsa:
$ vuls configtest
Jeżeli wszystkie parametry zostały skonfigurowane poprawnie, test nie powinien wykazać błędów.
Tworzenie baz danych CVE
Bazy danych CVE można pobierać z różnych źródeł, używając narzędzi dostarczonych wraz z pakietem Vuls. W prezentowanym przez nas przykładzie pobrane zostaną bazy danych CVE z Debian Security Tracker, NVD, OVAL i Metasploit.
W celu pobrania odpowiednich danych należy przejść do katalogu /opt/vuls:
$ cd /opt/vuls
W celu pobrania i zbudowania bazy danych CVE z wielu źródeł wprowadzamy następujące polecenia:
$ gost fetch debian –dbpath /opt/vuls/gost.sqlite3
$ go-cve-dictionary fetch nvd \
–dbpath /opt/vuls/cve.sqlite3
$ goval-dictionary fetch debian 12 \
–dbpath /opt/vuls/oval.sqlite3
$ go-msfdb fetch msfdb –dbpath /opt/vuls/go-msfdb.sqlite3
Po zakończeniu procesu pobierania danych bazy CVE będą dostępne w katalogu /opt/vuls. Pobieranie baz może zająć nawet kilkadziesiąt minut.
Skanowanie hosta lokalnego
Po skonfigurowaniu Vulsa i pobraniu baz danych CVE możemy przeskanować własny lokalny system. W tym celu musimy zdefiniować odpowiednią sekcję w pliku config.toml:
$ nano config.toml
W tym pliku możemy też wprowadzić konfigurację, pozwalającą na integrację bazy danych CVE z Vulsem:
[servers]
[servers.lokalny]
host = „127.0.0.1”
port = „local”
scanMode = [ „fast-root” ]
Zapisujemy plik. Następnie, aby zweryfikować konfigurację narzędzia, uruchamiamy polecenie:
$ vuls configtest
Skanowanie przeprowadzamy, używając komendy:
$ vuls scan lokalny
Po zakończeniu procesu wyniki będą dostępne w terminalu. Aby uzyskać szczegółowy raport, trzeba uruchomić polecenie:
$ vuls tui
Skanowanie zdalnego serwera
W tej sekcji przeskanujemy zdalny serwer z użyciem Vulsa. W tym celu musimy edytować plik config.toml i dopisać w nim:
$ nano config.toml
[servers.zdalny]
host = „adres_IP_zdalnego_serwera”
port = „22”
user = „nazwa_konta_użytkownika”
keyPath = „/home/sammy/.ssh/id_rsa”
scanMode = [ „deep” ]
Zapisujemy plik. Następnie uruchamiamy polecenie służące do weryfikowania konfiguracji Vulsa:
$ vuls configtest
Skanowanie przeprowadzamy za pomocą komendy:
$ vuls scan zdalny
Po zakończeniu procesu wyniki będą dostępne w terminalu. Aby uzyskać szczegółowy raport, trzeba uruchomić polecenie:
$ vuls tui
Konkurencja dla Vulsa
Vuls działa na podstawie lokalnych źródeł danych, takich jak pliki CVE oraz bazy danych dostawców, co pozwala na szybką identyfikację potencjalnych luk w zabezpieczeniach. Dzięki swoim funkcjom, spośród których wymienić można łatwą integrację z systemami zarządzania bezpieczeństwem oraz możliwość skanowania wielu hostów w jednej operacji, Vuls jest wydajnym rozwiązaniem dla administratorów systemów.
Na rynku znajdziemy jednak wiele narzędzi służących do skanowania podatności. Wśród nich wyróżniają się:
- Nessus – jedno z najpopularniejszych narzędzi, które zapewnia kompleksową ocenę bezpieczeństwa, w tym skanowanie podatności w aplikacjach webowych, sieciach i systemach operacyjnych. Jest bardziej rozbudowane niż Vuls, ma zaawansowane funkcje raportowania oraz integracji z innymi platformami. Jest jednak płatnym rozwiązaniem, co może okazać się barierą dla mniejszych organizacji.
- OpenVAS – OpenVAS jest opensource’owym odpowiednikiem Nessusa, który ma podobne możliwości w zakresie wykrywania luk w zabezpieczeniach. Jego zaleta to bezpłatność, ale jego konfiguracja jest nieco bardziej skomplikowana, a wsparcie społeczności mniejsze w porównaniu z płatnymi rozwiązaniami.
- Qualys – platforma zapewniająca skanowanie podatności w chmurze. Integruje analizę bezpieczeństwa z innymi usługami IT. Jest to rozwiązanie odpowiednie dla dużych organizacji, wyposażone w wiele funkcji, ale koszty jego wdrożenia są wysokie.
- Retina Network Security Scanner – narzędzie mające podobne funkcje jak Vuls, ale wyposażone w bardziej zaawansowane opcje analizy podatności w sieciach i urządzeniach internetu rzeczy. Retina jest często używana przez organizacje, które potrzebują bardziej złożonego podejścia do zarządzania bezpieczeństwem w dużych środowiskach IT.
Vuls wyróżnia się prostotą i niskimi kosztami eksploatacji. Jednak w przypadku dużych organizacji, które potrzebują bardziej rozbudowanych funkcji analitycznych i większego wsparcia, rozwiązania takie jak Nessus czy Qualys będę zdecydowanie lepszym wyborem.
Autor
Kamil Folga
Absolwent Zachodniopomorskiego Uniwersytetu Technologicznego. Od 15 lat implementuje zaawansowane rozwiązania głosowe oraz bezprzewodowe.