139,445 - Pentesting SMB
Port 139
System Podstawowego Wejścia-Wyjścia Sieci** (NetBIOS)** to protokół oprogramowania zaprojektowany w celu umożliwienia aplikacjom, komputerom i stacjom roboczym w lokalnej sieci (LAN) interakcji z urządzeniami sieciowymi oraz ułatwienia transmisji danych w sieci. Identyfikacja i lokalizacja aplikacji oprogramowania działających w sieci NetBIOS odbywa się za pomocą ich nazw NetBIOS, które mogą mieć do 16 znaków długości i często różnią się od nazwy komputera. Sesja NetBIOS między dwiema aplikacjami jest inicjowana, gdy jedna aplikacja (działająca jako klient) wydaje polecenie "wywołania" innej aplikacji (działającej jako serwer) przy użyciu TCP Port 139.
Port 445
Technicznie, port 139 jest określany jako ‘NBT over IP’, podczas gdy port 445 jest identyfikowany jako ‘SMB over IP’. Akronim SMB oznacza ‘Server Message Blocks’, który jest również nowocześnie znany jako Common Internet File System (CIFS). Jako protokół sieciowy na poziomie aplikacji, SMB/CIFS jest głównie wykorzystywany do umożliwienia wspólnego dostępu do plików, drukarek, portów szeregowych oraz ułatwienia różnych form komunikacji między węzłami w sieci.
Na przykład, w kontekście systemu Windows, podkreśla się, że SMB może działać bezpośrednio nad TCP/IP, eliminując konieczność korzystania z NetBIOS nad TCP/IP, poprzez wykorzystanie portu 445. Z drugiej strony, w różnych systemach, obserwuje się użycie portu 139, co wskazuje, że SMB jest wykonywane w połączeniu z NetBIOS nad TCP/IP.
SMB
Protokół Server Message Block (SMB), działający w modelu klient-serwer, jest zaprojektowany do regulowania dostępu do plików, katalogów i innych zasobów sieciowych, takich jak drukarki i routery. Głównie wykorzystywany w serii systemów operacyjnych Windows, SMB zapewnia zgodność wsteczną, umożliwiając urządzeniom z nowszymi wersjami systemu operacyjnego Microsoftu bezproblemową interakcję z tymi działającymi na starszych wersjach. Dodatkowo, projekt Samba oferuje rozwiązanie typu open source, umożliwiające implementację SMB na systemach Linux i Unix, co ułatwia komunikację międzyplatformową za pomocą SMB.
Udostępniane przez serwer SMB udziały, reprezentujące dowolne części lokalnego systemu plików, mogą sprawić, że hierarchia będzie widoczna dla klienta częściowo niezależnie od rzeczywistej struktury serwera. Listy Kontroli Dostępu (ACL), które definiują prawa dostępu, pozwalają na dokładną kontrolę nad uprawnieniami użytkowników, w tym atrybutami takimi jak wykonaj
, odczytaj
i pełny dostęp
. Te uprawnienia mogą być przypisane do poszczególnych użytkowników lub grup, w zależności od udziałów, i są odrębne od lokalnych uprawnień ustawionych na serwerze.
IPC$ Share
Dostęp do udziału IPC$ można uzyskać poprzez anonimową sesję null, co pozwala na interakcję z usługami udostępnionymi za pośrednictwem nazwanych rur. Narzędzie enum4linux
jest przydatne w tym celu. Właściwie wykorzystane, umożliwia pozyskanie:
Informacji o systemie operacyjnym
Szczegółów dotyczących domeny nadrzędnej
Zestawienia lokalnych użytkowników i grup
Informacji o dostępnych udziałach SMB
Skutecznej polityki bezpieczeństwa systemu
Ta funkcjonalność jest kluczowa dla administratorów sieci i specjalistów ds. bezpieczeństwa w ocenie stanu bezpieczeństwa usług SMB (Server Message Block) w sieci. enum4linux
zapewnia kompleksowy widok środowiska SMB docelowego systemu, co jest niezbędne do identyfikacji potencjalnych luk w zabezpieczeniach i zapewnienia, że usługi SMB są odpowiednio zabezpieczone.
The above command is an example of how enum4linux
might be used to perform a full enumeration against a target specified by target_ip
.
Czym jest NTLM
Jeśli nie wiesz, czym jest NTLM lub chcesz wiedzieć, jak to działa i jak to wykorzystać, ta strona o NTLM będzie dla Ciebie bardzo interesująca, ponieważ wyjaśnia jak działa ten protokół i jak możesz go wykorzystać:
NTLMEnumeracja serwera
Skanuj sieć w poszukiwaniu hostów:
Wersja serwera SMB
Aby szukać możliwych exploitów dla wersji SMB, ważne jest, aby wiedzieć, która wersja jest używana. Jeśli ta informacja nie pojawia się w innych używanych narzędziach, możesz:
Użyć modułu pomocniczego MSF _auxiliary/scanner/smb/smb_version
Lub tego skryptu:
Wyszukaj exploit
Możliwe Poświadczenia
Nazwa użytkownika | Typowe hasła |
(puste) | (puste) |
gość | (puste) |
Administrator, admin | (puste), hasło, administrator, admin |
arcserve | arcserve, backup |
tivoli, tmersrvd | tivoli, tmersrvd, admin |
backupexec, backup | backupexec, backup, arcada |
test, lab, demo | hasło, test, lab, demo |
Atak Brute Force
Informacje o Środowisku SMB
Uzyskaj Informacje
Enumeracja użytkowników, grup i zalogowanych użytkowników
Te informacje powinny być już zbierane z enum4linux i enum4linux-ng
Enumeracja lokalnych użytkowników
Oneliner
Metasploit - Enumeracja lokalnych użytkowników
Enumerowanie LSARPC i SAMR rpcclient
rpcclient enumerationPołączenie GUI z linuxa
W terminalu:
xdg-open smb://cascade.htb/
W oknie przeglądarki plików (nautilus, thunar, itp.)
smb://friendzone.htb/general/
Enumeracja folderów udostępnionych
Lista folderów udostępnionych
Zawsze zaleca się sprawdzenie, czy można uzyskać dostęp do czegokolwiek, jeśli nie masz poświadczeń, spróbuj użyć null poświadczeń/użytkownika gościa.
Połącz/Wypisz udostępniony folder
Ręczne enumerowanie udziałów systemu Windows i łączenie się z nimi
Możliwe, że jesteś ograniczony w wyświetlaniu jakichkolwiek udziałów maszyny hosta, a gdy próbujesz je wylistować, wydaje się, że nie ma żadnych udziałów do połączenia. Dlatego warto spróbować ręcznie połączyć się z udziałem. Aby ręcznie enumerować udziały, warto zwrócić uwagę na odpowiedzi takie jak NT_STATUS_ACCESS_DENIED i NT_STATUS_BAD_NETWORK_NAME, podczas korzystania z ważnej sesji (np. sesji null lub ważnych poświadczeń). Mogą one wskazywać, czy udział istnieje i nie masz do niego dostępu, czy też udział w ogóle nie istnieje.
Typowe nazwy udziałów dla celów systemu Windows to
C$
D$
ADMIN$
IPC$
PRINT$
FAX$
SYSVOL
NETLOGON
(Typowe nazwy udziałów z Network Security Assessment 3rd edition)
Możesz spróbować połączyć się z nimi, używając następującego polecenia
lub ten skrypt (używając sesji null)
przykłady
Enumeruj udostępnienia z Windows / bez narzędzi firm trzecich
PowerShell
CMD konsola
MMC Snap-in (graficzny)
explorer.exe (graficzny), wprowadź \\<ip>\
, aby zobaczyć dostępne, nieukryte udostępnienia.
Zamontuj udostępniony folder
Pobierz pliki
Przeczytaj poprzednie sekcje, aby dowiedzieć się, jak połączyć się z użyciem poświadczeń/Pass-the-Hash.
Commands:
mask: określa maskę, która jest używana do filtrowania plików w katalogu (np. "" dla wszystkich plików)
recurse: włącza rekurencję (domyślnie: wyłączone)
prompt: włącza wyświetlanie komunikatów o nazwach plików (domyślnie: włączone)
mget: kopiuje wszystkie pliki pasujące do maski z hosta na maszynę kliencką
(Informacje z podręcznika smbclient)
Domain Shared Folders Search
Snaffler****
CrackMapExec pająk.
-M spider_plus [--share <share_name>]
--pattern txt
Szczególnie interesujące z udziałów są pliki o nazwie Registry.xml
, ponieważ mogą zawierać hasła dla użytkowników skonfigurowanych z autologon za pomocą zasad grupy. Lub pliki web.config
, ponieważ zawierają dane uwierzytelniające.
Udział SYSVOL jest czytelny dla wszystkich uwierzytelnionych użytkowników w domenie. Możesz tam znaleźć wiele różnych skryptów batch, VBScript i PowerShell. Powinieneś sprawdzić skrypty w nim, ponieważ możesz znaleźć wrażliwe informacje, takie jak hasła.
Odczyt rejestru
Możesz być w stanie odczytać rejestr używając niektórych odkrytych danych uwierzytelniających. Impacket reg.py
pozwala ci spróbować:
Post Exploitation
Domyślna konfiguracja serwera Samba zazwyczaj znajduje się w /etc/samba/smb.conf
i może zawierać niektóre niebezpieczne konfiguracje:
Ustawienie | Opis |
| Czy zezwolić na wyświetlanie dostępnych udziałów w bieżącym udziale? |
| Czy zabronić tworzenia i modyfikacji plików? |
| Czy zezwolić użytkownikom na tworzenie i modyfikowanie plików? |
| Czy zezwolić na łączenie się z usługą bez użycia hasła? |
| Czy honorować uprawnienia przypisane do konkretnego SID? |
| Jakie uprawnienia muszą być przypisane do nowo utworzonych plików? |
| Jakie uprawnienia muszą być przypisane do nowo utworzonych katalogów? |
| Jaki skrypt musi być wykonany przy logowaniu użytkownika? |
| Który skrypt powinien być wykonany, gdy skrypt zostanie zamknięty? |
| Gdzie musi być przechowywany wynik magicznego skryptu? |
Polecenie smbstatus
podaje informacje o serwerze i o tym, kto jest połączony.
Authenticate using Kerberos
Możesz uwierzytelnić się w kerberosie za pomocą narzędzi smbclient i rpcclient:
Wykonywanie poleceń
crackmapexec
crackmapexec może wykonywać polecenia wykorzystując dowolny z mmcexec, smbexec, atexec, wmiexec, przy czym wmiexec jest domyślną metodą. Możesz wskazać, którą opcję preferujesz użyć za pomocą parametru --exec-method
:
Obie opcje tworzą nową usługę (używając \pipe\svcctl przez SMB) na maszynie ofiary i wykorzystują ją do wykonania czegoś (psexec prześle plik wykonywalny do udziału ADMIN$ a smbexec wskaże na cmd.exe/powershell.exe i w argumentach umieści ładunek --technika bezplikowa--). Więcej informacji o psexec i smbexec. W kali znajduje się w /usr/share/doc/python3-impacket/examples/
Używając parametru -k
, możesz uwierzytelnić się za pomocą kerberos zamiast NTLM.
wmiexec/dcomexec
Cicho wykonaj powłokę poleceń bez dotykania dysku lub uruchamiania nowej usługi za pomocą DCOM przez port 135. W kali znajduje się w /usr/share/doc/python3-impacket/examples/
Używając parametru -k
, możesz uwierzytelnić się za pomocą kerberos zamiast NTLM.
Wykonuj polecenia za pomocą Harmonogramu zadań (używając \pipe\atsvc przez SMB). W kali znajduje się w /usr/share/doc/python3-impacket/examples/
Impacket reference
https://www.hackingarticles.in/beginners-guide-to-impacket-tool-kit-part-1/
Bruteforce dane logowania użytkowników
To nie jest zalecane, możesz zablokować konto, jeśli przekroczysz maksymalną dozwoloną liczbę prób
Atak SMB relay
Ten atak wykorzystuje zestaw narzędzi Responder do przechwytywania sesji uwierzytelniania SMB w wewnętrznej sieci i przekazywania ich do docelowej maszyny. Jeśli sesja uwierzytelniania jest udana, automatycznie przeniesie cię do powłoki systemowej. Więcej informacji na temat tego ataku tutaj.
SMB-Trap
Biblioteka Windows URLMon.dll automatycznie próbuje uwierzytelnić się do hosta, gdy strona próbuje uzyskać dostęp do jakiejś treści za pośrednictwem SMB, na przykład: img src="\\10.10.10.10\path\image.jpg"
Dzieje się to w przypadku funkcji:
URLDownloadToFile
URLDownloadToCache
URLOpenStream
URLOpenBlockingStream
Które są używane przez niektóre przeglądarki i narzędzia (takie jak Skype)
SMBTrap używając MitMf
Kradzież NTLM
Podobnie jak w przypadku SMB Trapping, umieszczanie złośliwych plików na docelowym systemie (za pośrednictwem SMB, na przykład) może wywołać próbę uwierzytelnienia SMB, co pozwala na przechwycenie hasha NetNTLMv2 za pomocą narzędzia takiego jak Responder. Hash można następnie złamać offline lub użyć w ataku SMB relay.
Automatyczne polecenia HackTricks
Last updated