8 perc
Pentest alapok 3.
Az előző részek során sikerült körüljárnunk pár alapfogalommal és koncepcióval a penetration testing-et. A mostani cikkben tovább bővítjük az eszköztárunkat, és elkezdünk jobban elmerülni a gyakorlatban.
Szolgáltatás enumeráció
A hibák kihasználását, megelőzi a hibák megtalálása. Ehhez fel kell derítenünk, hogy mik okozhatnak hibát. Ilyenkor abba a szerepbe kell helyeznünk magunkat, mint egy külső támadó, azaz nem tudunk semmit a rendszer belső működésről, ezt úgy nevezzük, hogy black-box penetration testing. Tehát információt kell gyűjtenünk először. A gyűjtés fő célja, hogy meg tudjuk milyen operációs rendszer fut a teszt alatt lévő gépen, és milyen szolgáltatásokat szolgál.
Szolgáltatásnak nevezünk egy olyan programot, ami valamilyen feladatot lát el egy felhasználónak vagy gépnek. Egy szolgáltatás a világgal egy porton keresztül kommunikál a külvilággal, így egy támadó és ezáltal mi is a portokat, és az azokon lévő szolgáltatásokat fogjuk végignézni, hibákat keresve. A szolgáltatásoknál félrekonfigurációt, kihasználható jogosultságokat vagy nem szándékos működést keresünk.
Eddig a szolgáltatások elérésénél csak portokról volt szó, de ha egy hálózatban akarjuk a szolgáltatást elérni, akkor szükségünk van egy IP címre. Egy IP cím és egy port együtt egy “socket”-et alkotnak. Ez a kettő változó egyértelműen meghatároz egy célt egy számítógépen. Így egy számítógép, azaz egy IP cím esetén, összesen 65535 portot kellene megvizsgálnunk. Ha ezt manuálisan tennénk, lehet a Naprendszer is kihűle mire végeznénk. Szerencsére léteznek programok, amik automatizálják ezt a folyamatot. Az erre a feladatra leghasználtabb szoftver az Nmap(Network Mapper).
Nmap
Az Nmap egy nyílt forráskódú, hálózati felfedezésre és biztonsági aduitációra használt szoftver. Több hálózaton lévő eszköz vizsgálatára is képes, de mi főként csak egy célponton fogjuk használni.
Kimenete megad egy táblát, mely tartalmazza a célpont portjait, protokolljait és szolgáltatásait. A portoknál lehet az állapot open, filtered vagy closed. A zárt portoknál nincsen szolgáltatás ami hallgatozna rajtuk. Nyitott port azt jelenti, hogy van szolgáltatás mögötte. Szűrt pedig azt jelenti, hogy a tűzfal valamilyen szabálya megakadályozza az nmap-ot, hogy megállapítsa a port állapotát. A táblázat továbbá, megfelelő felparaméterezésnél, tartalmazza a szolgáltatások verzióját is, amely sokszor hasznos nekünk, hiszen régi verzióknál előfordulhatnak sérülékenységek, melyeket kihasználhatjuk.
Most pedig nézzük meg ezt példákon keresztül.
Kezdjük a legegyszerűbb szkenne, ahol arra láttok példát hogy a 10.129.47.125 címen elérhető számítógépet vizsgáljuk. Alapméretezetten az nmap csak az első 1000 portot vizsgálja. Ezek közül itt látszik, hogy a 135, 139, 445 és 5985 port van nyitva.
/home/valko [valko@base] [11:22]
> nmap 10.129.47.125
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-08 11:22 CET
Nmap scan report for 10.129.47.125
Host is up (0.049s latency).
Not shown: 996 closed tcp ports (conn-refused)
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
5985/tcp open wsman
Nmap done: 1 IP address (1 host up) scanned in 0.87 seconds
Következő példában az -sV paramétert használjuk egy másik gépen. Az -sV-vel az nmap megpróbálja az adott szolgáltatás verzióját is lekérdezni, ami ahogy említettem sokszor hasznos információ nekünk. Továbbá a -p paramétert is használtam ami után megadhatjuk, hogy a 0-65535 tartományban, melyik portokat ellenőrizzük. Ha minden portot szeretnénk ellenőrizni azt a -p- paraméterrel tudjuk jelölni, ez viszont hoszabb ideig is eltarthat. A példában látszik, hogy a szolgáltatás verziójén kívül, az operációs rendszert is megtudta állapítani.
/home/valko [valko@base] [11:55]
> nmap -sV -p0-2000 10.129.113.80
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-08 11:55 CET
Nmap scan report for 10.129.113.80
Host is up (0.048s latency).
Not shown: 2000 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
Service Info: OS: Unix
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 4.74 seconds
Utolsó paraméter amit megakarok mutatni az az -sC, ami alapméretezetten le fog futtatni pár default szkriptet a porton, hogy több információt kicsikarjon belőle egy szolgáltatás esetén. Az előző címen használva láthajuk, hogy itt igazán hasznosnak bizonyult ez a funkció, mivel megtudta mondani az FTP szerverről, hogy az Anonymous login be van kapcsolva, azaz jelszó nélkül be tudunk jeletkezni. A flag.txt is ott figyel az FTP szerveren :)).
/home/valko [valko@base] [11:55]
> nmap -sV -sC -p0-2000 10.129.113.80
Starting Nmap 7.95 ( https://nmap.org ) at 2025-02-08 12:02 CET
Nmap scan report for 10.129.113.80
Host is up (0.047s latency).
Not shown: 2000 closed tcp ports (conn-refused)
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-syst:
| STAT:
| FTP server status:
| Connected to ::ffff:10.10.14.242
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| At session startup, client count was 4
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 32 Jun 04 2021 flag.txt
Service Info: OS: Unix
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.10 seconds
Több paraméterrel is el lehet létni egy nmap utasítást, de többet nem nagyon szeretnék részletezni. Ugyanakkor ha kiváncsi vagy, egy man nmap
-pal mindig el tudod olvasni az nmap használati utasítását.
Szolgáltatások
Az nmap segít felderíteni nekünk az elérhető szolgáltatásokat, de nekünk kell rájönni, hogy mit kell az adott szolgáltatásnál vizsgálnunk. Most megnézünk pár protokollt melyeket használnak ezek a szolgáltatások, amikkel találkozhattok a boxok törése közben.
FTP
Az FTP (File Transfer Protocol) egy eléggé standard és gyakori protokol, és sokszor tartalmaz érdekes információt. Az előző nmap szken során is kiderült, hogy az FTP alapméretezett portján hallgatózik egy vsFTPd 3.0.3-ás verziójú szolgáltatás. Itt az is kiderűlt, hogy az anonymous bejelentkezés lehetséges.
Az FTP külön portot használ az utasítások átadására és az adatok cseréjére. Ennek akkor érdemes utánajárni, ha valamely tűzfal beállításunk miatt ez a kapcsolat nem jöhet létre (lásd active mode vs passive mode).
Csatlakozzunk ehhez az FTP szerverhez az ftp CLI programmal:
/home/valko [valko@base] [16:13]
> ftp 10.129.146.156
Connected to 10.129.146.156.
220 (vsFTPd 3.0.3)
Name (10.129.146.156:valko): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 32 Jun 04 2021 flag.txt
226 Directory send OK.
ftp> get flag.txt
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for flag.txt (32 bytes).
226 Transfer complete.
32 bytes received in 0.0024 seconds (13 kbytes/s)
ftp>
Az FTP egy kliens/szerver modellt követő protokoll, ahol fájlok átvitele valósítható meg. Egy biztonságosabb verziója az SFTP, amely az SSH protokollt és kulcsokat használva teszi meg ugyanezt.
Használhatóak az alapvető terminálos utasítások mint az ls, cd de ezen felül a get is, amivel az FTP szerverről tudunk fájlokat átmásolni az FTP kliensre. A put ugyanez csak másik irányba.
SMB
Az SMB (Server Message Block) protokoll egy olyan alkalmazás-rétegben használt protokoll, ami főleg fájlok, nyomtatók, soros portok megosztására használnak. Az SMB főleg Windowos környezetben volt használatban de azóta lettek Linuxos környezetben is használt megvalósítások, mint pl. a Samba.
Az SMB többféleképpen futhat a hálózaton:
- közvetlenül TCP-vel a 445-ös porton;
- NetBIOS API-t használva UDP(137, 138) és TCP(137, 139) portokon;
Az SMB-t használó szolgáltatások, nagy felületet adnak a támadásra, és mozgást egy rendszerben, vertikálisan és horizontálisan is. Egyes SMB verziók sérülékenyek lehetnek RCE(Remote Code Execution)-re, mint például a notorius EternalBlue. Létfontosságú, hogy alaposan megvizsgáljuk az ilyen szolgáltatásokat.
Megosztott könyvtárak
Az SMB lehetővé teszi könyvtárak megosztását a felhasználók számára. Sokszor ezekben a könyvtárakban találunk bizalmas, érzékeny adatokat. Az eszköz amellyel hozzáférünk ezekhez a könyvtárakhoz, az a smbclient. Az smbclient -L paramétere ki listázza az elérhető megosztott könyvtárakat, az -N pedig skippeli a jelszót (guest access).
/home/valko [valko@base] [8:44]
> smbclient -N -L \\\\10.129.105.168
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
WorkShares Disk
SMB1 disabled -- no workgroup available
A fenti példában látható az smbclient használata arra, hogy kilistázzuk a megosztott könyvtárakat. Itt látszik, hogy van egy WorkShares nevezetű könyvtár ami vendég módban is elérhető. Próbáljunk meg csatlakozni rá.
/home/valko [valko@base] [8:47]
smbclient \\\\10.129.105.168\\WorkShares
Can't load /etc/samba/smb.conf - run testparm to debug it
Password for [WORKGROUP\valko]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Mar 29 10:22:01 2021
.. D 0 Mon Mar 29 10:22:01 2021
Amy.J D 0 Mon Mar 29 11:08:24 2021
James.P D 0 Thu Jun 3 10:38:03 2021
5114111 blocks of size 4096. 1734228 blocks available
smb: \>
Az üres jelszóval, mint vendég, hozzáfértünk ehhez a megosztáshoz. Látszik, hogy van ezen belül egy ‘Amy.J’ könyvtár és egy ‘James.P’ könyvtár.
/home/valko [valko@base] [9:04]
> smbclient \\\\10.129.105.168\\WorkShares
Can't load /etc/samba/smb.conf - run testparm to debug it
Password for [WORKGROUP\valko]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Mar 29 10:22:01 2021
.. D 0 Mon Mar 29 10:22:01 2021
Amy.J D 0 Mon Mar 29 11:08:24 2021
James.P D 0 Thu Jun 3 10:38:03 2021
5114111 blocks of size 4096. 1750503 blocks available
smb: \> cd James.P
smb: \James.P\> ls
. D 0 Thu Jun 3 10:38:03 2021
.. D 0 Thu Jun 3 10:38:03 2021
flag.txt A 32 Mon Mar 29 11:26:57 2021
5114111 blocks of size 4096. 1750503 blocks available
smb: \James.P\> get flag.txt
getting file \James.P\flag.txt of size 32 as flag.txt (0.2 KiloBytes/sec) (average 0.2 KiloBytes/sec)
Ha van jogosultságunk, akkor használhatjuk a megszokott utasításokat mint pl. az ls vagy a cd. Továbbá egy fájlnál az FTP-nél is használt get is müködik.
Kövesd a cikk sorozatot, hogy egyre mélyebben elmerüljél a tanagyagban!