Learn & practice AWS Hacking:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Learn & practice GCP Hacking: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
_**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**.
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.
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.
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:
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.
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ć:**
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:
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**.
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.
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**.
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** ](../../windows-hardening/lateral-movement/psexec-and-winexec.md) i [**smbexec**](../../windows-hardening/lateral-movement/smbexec.md).\
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.**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
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"`
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](./#smb-relay-attack).
Protocol_Name: SMB #Protocol Abbreviation if there is one.
Port_Number: 137,138,139 #Comma separated if there is more than one.
Protocol_Description: Server Message Block #Protocol Abbreviation Spelled out
Entry_1:
Name: Notes
Description: Notes for SMB
Note: |
While Port 139 is known technically as ‘NBT over IP’, Port 445 is ‘SMB over IP’. SMB stands for ‘Server Message Blocks’. Server Message Block in modern language is also known as Common Internet File System. The system operates as an application-layer network protocol primarily used for offering shared access to files, printers, serial ports, and other sorts of communications between nodes on a network.
#These are the commands I run in order every time I see an open SMB port
With No Creds
nbtscan {IP}
smbmap -H {IP}
smbmap -H {IP} -u null -p null
smbmap -H {IP} -u guest
smbclient -N -L //{IP}
smbclient -N //{IP}/ --option="client min protocol"=LANMAN1
Ucz się i ćwicz Hacking AWS:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
Ucz się i ćwicz Hacking GCP: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegram**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Dziel się trikami hackingowymi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repozytoriów na githubie.