Wiele razy w swoim życiu miałem do czynienia z sytuacjami, że oprogramowanie komputera nie działało poprawnie. Bardzo często powodem takiego stanu rzeczy był brak aktualizacji systemu operacyjnego lub poszczególnych programów. O ile na komputerze domowym niepodłączonym do internetu (a są jeszcze takie?) nie stanowi to krytycznej luki bezpieczeństwa, to na komputerach służbowych czy serwerach dbanie o aktualizacje bezpieczeństwa powinno być priorytetem. Dziś zaprezentuję w jaki sposób można sprawdzić poziom zabezpieczeń swoich maszyn — komputerów, serwerów, aplikacji. Przedstawione metody są znane  przede wszystkim pentesterom, ale też hakerom. Wiedza na temat tego, jak zdobywać informacje przydaje się nie tylko do samego włamywania się (od strony hackingu), ale też do lepszego zabezpieczania (od strony administratora).

UWAGA: ten tekst pisany jest wyłącznie w celach edukacyjnych. Nie używaj poniższego oprogramowania do skanowania czy włamywania się na komputery bez zgody ich właścicieli.

Zanim jednak przejdę do sedna, chciałbym wyjaśnić pojęcie, które pojawiło się w poprzednim akapicie. Pentester to osoba wyszukująca podatności i luki w systemach informatycznych, także symulująca ataki możliwe do przeprowadzenia przez hakerów (testy penetracyjne). Takie testy mają na celu ocenę bieżącego stanu zabezpieczeń systemu. Działania te polegają na analizie systemu pod kątem występowania nieaktualnego oprogramowania, błędnej konfiguracji programowej lub sprzętowej, czy nawet niewystarczającej wiedzy użytkownika/administratora. Zasadniczą różnicą między testem penetracyjnym a włamaniem jest fakt zgody atakowanej osoby czy firmy, która w takim teście występuje. Ponadto osoba przeprowadzająca test zobowiązana jest do przedstawienia raportu ze swojej pracy. W raporcie pentestera przedstawione są zatem w szczególności informacje o znalezionych podatnościach i odporności systemu na próby przełamania zabezpieczeń oraz wskazówki, jak można poprawić bezpieczeństwo systemu.

Na potrzeby tego artykułu, do zbudowania laba użyłem następujących narzędzi:

  • VirtualBox w wersji 6.1.22 z zainstalowanym rozszerzeniem VirtualBox Extension Pack,
  • Metasploitable2 — specjalnie przygotowana  maszyna wirtualna zawierająca oprogramowanie, które posiada luki bezpieczeństwa,
  • Kali Linux 2021 — dystrybucja linuxa przygotowana z myślą o wykonywaniu testów penetracyjnych, zawierająca wiele przydatnego oprogramowania.

Celowo nie pokazuję konfiguracji całego środowiska oraz pomijam niektóre kroki. Osoby zainteresowane przeprowadzeniem podobnych testów we własnym zakresie poradzą sobie samodzielnie. Artykuł ma na celu pokazanie jak łatwo jest się włamać na nieaktualny i dziurawy system. Chcę też przestrzec administratorów czy opiekunów systemów (a także normalnych użytkowników komputerów), aby nigdy nie tracili czujności.

Rozpoznanie

Pierwszą czynnością, od której należy zacząć, jest analiza sieci. Dzięki temu dowiemy się, czy są jakieś potencjalne cele do ataku. W Kali znajdziemy mnóstwo oprogramowania, które zbiera informacje o sieci.

Jak widać, jest z czego wybierać. Posłużę się dziś programem nmap, który znajduje się w domyślnej instalacji używanego systemu. Na początek zobaczmy jakie hosty są dostępne w sieci:

┌──(kali㉿kali)-[~]
└─$ arp -i eth1
Address           HWtype  HWaddress           Flags Mask            Iface
10.0.2.4           ether   08:00:27:d9:f6:01   C                     eth1
10.0.2.3           ether   08:00:27:05:64:19   C                     eth1
10.0.2.2           ether   52:54:00:12:35:00   C                     eth1
10.0.2.1           ether   52:54:00:12:35:00   C                     eth1

Widać, że aktywne są cztery hosty. Spróbujmy zatem dowiedzieć się o nich czegoś więcej:

┌──(kali㉿kali)-[~]
└─$ nmap -sV -p- 10.0.2.1-4
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-14 17:57 EDT
Nmap scan report for 10.0.2.1
Host is up (0.00016s latency).
Not shown: 65534 closed ports
PORT   STATE SERVICE VERSION
53/tcp open  domain  (generic dns response: NOTIMP)
1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at https://nmap.org/cgi-bin/submit.cgi?new-service :
SF-Port53-TCP:V=7.91%I=7%D=6/14%Time=60C7D0E4%P=x86_64-pc-linux-gnu%r(DNSV
SF:ersionBindReqTCP,E,"\0\x0c\0\x06\x81\x84\0\0\0\0\0\0\0\0");

Nmap scan report for 10.0.2.4
Host is up (0.00059s latency).
Not shown: 65505 closed ports
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
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
3632/tcp  open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
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
6697/tcp  open  irc         UnrealIRCd (Admin email admin@Metasploitable.LAN)
8009/tcp  open  ajp13       Apache Jserv (Protocol v1.3)
8180/tcp  open  http        Apache Tomcat/Coyote JSP engine 1.1
8787/tcp  open  drb         Ruby DRb RMI (Ruby 1.8; path /usr/lib/ruby/1.8/drb)
33285/tcp open  nlockmgr    1-4 (RPC #100021)
35082/tcp open  mountd      1-3 (RPC #100005)
58079/tcp open  status      1 (RPC #100024)
59005/tcp open  java-rmi    GNU Classpath grmiregistry
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: 4 IP addresses (2 hosts up) scanned in 131.03 seconds

Maszyna, która mogła by nas zainteresować z punktu widzenia nieaktualnego oprogramowania to 10.0.2.4. Widzimy tu wiele otwartych portów, a każdy z nich to potencjalny cel ataku. Można zauważyć, że uruchomione oprogramowanie jest w bardzo nieaktualnych wersjach. Sprawdźmy zatem, czy znane są jakieś exploity (programy, których celem jest wykorzystanie znanych luk bezpieczeństwa) na niektóre z dostępnych serwisów. Do tego celu użyjemy bardzo popularnego pakietu metasploit.

Serwer WWW

Po uruchomieniu metasploita za pomocą polecenia msfconsole, spróbujmy uzyskać trochę więcej informacji o serwerze http. Na początek użyjemy modułu auxiliary/scanner/http/http_version.

Wiemy już, że naszym potencjalnym celem jest serwer Apache w wersji 2.2.8 z zainstalowanym modułem mod_dav oraz PHP w wersji 5.2.4. Zanim przejdziemy do dalszego skanowania metasploitem, warto sprawdzić, czy administrator nie zostawił nam pliku phpinfo.php.

Jak widać, plik taki znajduje się na serwerze. Zawiera on przydatne informacje np. o użytych rozszerzeniach, czy lokalizacji plików konfiguracyjnych. Skoro wiemy już co jest odpowiedzialne za serwowanie stron www, spróbujmy znaleźć inne webaplikacje na tym serwerze. W tym celu użyjemy innego skanera, mianowicie auxiliary/scanner/http/dir_scanner.

Znaleźliśmy kolejne potencjalne wektory ataku: cgi-bin wskazujący, że serwer może uruchamiać pliki binarne oraz phpMyAdmin. Sprawdźmy zatem, czy mamy dostępne jakieś exploity.

Spróbujmy go zatem użyć:

Sukces! Otrzymaliśmy zdalny dostęp do serwera, wykorzystując luki w php. Jako że apache uruchomiony jest z użytkownika www-data, to tylko takie uprawnienia aktualnie mamy. Naszym celem jest jednak zdobycie konta administratora. Spróbujmy zatem innego wektora ataku.

Serwer FTP

Na serwerze uruchomione są dwa serwery FTP: vsftpd w wersji 2.3.4 oraz ProFTPD w wersji 1.3.1. Spróbujmy dowiedzieć się czegoś o tym pierwszym.

┌──(kali㉿kali)-[/usr/share/nmap/scripts]
└─$ nmap --script ftp-vsftpd-backdoor 10.0.2.4
(…)
PORT     STATE SERVICE
21/tcp   open  ftp
| ftp-vsftpd-backdoor: 
|   VULNERABLE:
|   vsFTPd version 2.3.4 backdoor
|     State: VULNERABLE (Exploitable)
|     IDs:  BID:48539  CVE:CVE-2011-2523
|       vsFTPd version 2.3.4 backdoor, this was reported on 2011-07-04.
|     Disclosure date: 2011-07-03
|     Exploit results:
|       Shell command: id
|       Results: uid=0(root) gid=0(root)
(…)

Tym razem wykorzystaliśmy skrypt nmapa o nazwie ftp-vsftpd-backdoor. Sprawdza on, czy zainstalowana wersja jest podatna na atak. W odpowiedzi widzimy, że jest podatna na atak oznaczony CVE-2011-2523. Spróbujmy zatem użyć metasploita, aby dostać się na maszynę.

Jak widać, tym razem z pełnym powodzeniem uzyskaliśmy dostęp do terminala z uprawnieniami root.

Serwer Samba

Podobny wynik uzyskamy, jeśli spróbujemy exploitować serwer wymiany plików z systemami Windows (Samba). Tego typu oprogramowanie jest często spotykane w firmowych sieciach wewnętrznych. Oczywiście, i tym razem użyjemy metasploit, tym razem jednak używając exploita exploit/multi/samba/usermap_script z payloadem payload/cmd/unix/reverse. Konfiguracja oraz wynik uruchomienia na screenie:

Serwer MySQL

Narzędzie metasploit nadaje się też do ataków siłowych (brute force). Dla przykładu skaner auxiliary/scanner/mysql/mysql_login:

Ta konkretna konfiguracja sprawdza, czy na mysql można zalogować się userem root bez hasła. Jak widać, próba zakończyła się powodzeniem. Nic nie stoi jednak na przeszkodzie, aby uzupełnić opcje PASS_FILE czy USER_FILE odpowiednimi plikami zawierającymi loginy i hasła, a metasploit zacznie próby logowania na kombinacje wszystkich loginów i haseł z plików. Jeżeli jakaś próba się powiedzie, dostaniemy w odpowiedzi login i hasło. Z tymi danymi baza stoi przed nami otworem.

Podsumowanie

Jak widać, sam wywiad na temat tego, co znajduje się w sieci, nie jest specjalnie skomplikowany. Mając świadomość, jakie usługi u nas działają, możemy sami spróbować znaleźć i użyć odpowiednie exploity. Jeśli uda nam się przełamać zabezpieczenia — koniecznie trzeba przeprowadzić aktualizacje. Jeśli nie — nie wolno spocząć na laurach. Można się też zastanowić, czy hakowanie rzeczywiście jest takie proste. Wszak wystarczy wydać parę poleceń i ma się roota na zdalnej maszynie. W zaprezentowanych przykładach było łatwo. W środowisku laboratoryjnym nie działają żadne systemy IDP/IPS, nie ma więc problemu, żeby robić „hałas” w sieci. Również użycie specjalnie przygotowanego systemu z niezałatanymi dziurami wiele ułatwia. W rzeczywistym środowisku działają (lub powinny — jeśli nie, poproś swojego administratora o skonfigurowanie takowych) różnego rodzaju firewalle czy systemy monitorujące ruch sieciowy, które wyłapują anomalie i niestandardowe pakiety. Te potrafią skutecznie opóźnić, czy nawet zablokować różnego rodzaju ataki oraz informują administratorów o podejrzanych działaniach. Także odpowiednia konfiguracja usług (na przykład niepozostawianie pustych lub domyślnych haseł, instalacja oprogramowania typu fail2ban do blokowania prób brute force) pomaga zabezpieczać serwery. Ale nade wszystko trzeba pamiętać o aktualizacji swojego oprogramowania. Producenci starają się wydawać łatki bezpieczeństwa tak szybko, jak to jest możliwe. W przypadku krytycznych podatności, takie aktualizacje wydawane są niemal natychmiastowo. Jednak każdego dnia odkrywane są nowe luki 0-day na różne programy. Baza exploitów jest ciągle aktualizowana.

Powyższe przykłady pokazują w działaniu raptem kilka narzędzi dostępnych dla pentesterów czy hakerów. Do dyspozycji mamy cały zbiór narzędzi do skanowania sieci, OSINTu, skanowania systemów pod kątem występowania konkretnych podatności, analizy webaplikacji, baz danych, łamaczy haseł, narzędzi do atakowania sieci Wi-Fi, narzędzi wspomagających ataki socjotechniczne i wiele innych. Zaprezentowane w tym artykule stanowią jedynie ułamek możliwości tego, co jest do dyspozycji. Zainteresowanych tematem polecam strony takie jak https://niebezpiecznik.pl, https://z3s.pl czy https://sekurak.pl. Prawie codziennie pojawiają się na nich informacje o nowych podatnościach czy metodach działania hakerów. Wiedza na temat sposobów ich działania na pewno nie zaszkodzi, a w kluczowych momentach może nas uchronić przed tragicznymi skutkami ich działalności.

Autorem tekstu jest Łukasz Wojtyczka.