Bloc de mesaje pe server

SMB (abreviat din engleză.  Server message block ) - un protocol de rețea de nivel de aplicație pentru acces de la distanță la fișiere , imprimante și alte resurse de rețea, precum și pentru comunicarea între procese . Prima versiune a protocolului, cunoscută și sub numele de Common Internet File System (CIFS), a fost dezvoltată de IBM , Microsoft , Intel și 3Com în anii 1980; al doilea (SMB 2.0) a fost creat de Microsoft și a apărut cu Windows Vista . În prezent, SMB este asociat în principal cu sistemele de operare Microsoft Windows , unde este folosit pentru implementarea „Microsoft Windows Network” ( ing.  Microsoft Windows Network ) și „Sharing files and printers” ( ing.  File and Printer Sharing ).

Istorie

Prima versiune a protocolului a fost dezvoltată de angajatul IBM Barry Feigenbaum în 1983 [1] [2] .  SMB a fost implementat inițial prin NetBIOS (prin NBF , IPX/SPX sau NetBIOS peste TCP/IP ) și a fost folosit în rețelele MS-NET și LAN Manager pentru DOS , precum și Windows pentru grupuri de lucru . Microsoft a adăugat în mod regulat noi funcții la protocol; de exemplu, a doua versiune a Microsoft Networks SMB File Sharing Protocol Extensions a apărut în 1988, a treia versiune - în 1989 , versiunea 3.4 - în 1992 [3] .

În 1992, a apărut Samba  - o implementare gratuită a protocolului SMB pentru sisteme de operare asemănătoare UNIX (inițial pentru SunOS ). Deoarece Microsoft nu a publicat documentație pentru multe dintre completările sale la SMB, dezvoltatorii Samba au fost nevoiți să facă o inginerie inversă a protocolului.

În 1996, Microsoft a început să folosească un nou nume pentru versiunea augmentată a protocolului care a fost folosit în Windows NT 4.0  - CIFS ( English  Common Internet File System ); noul nume a rămas, SMB și CIFS au devenit practic sinonime [2] . Microsoft a încercat de ceva timp să transforme CIFS într-un standard internațional prin IETF , dar a oprit activitatea de standardizare după 2000 .

Windows 2000 a introdus pentru prima dată SMB direct prin TCP (fără NetBIOS); pentru aceasta este folosit portul 445 (SMB peste NBT a folosit portul 139).

Windows Vista a introdus o nouă versiune a protocolului - SMB 2.0 . Protocolul a fost foarte simplificat (SMB avea peste 100 de comenzi, în timp ce SMB 2 avea doar 19); în același timp, performanța a fost îmbunătățită (datorită mecanismului de stocare în cache, este posibilă combinarea mai multor comenzi SMB 2 într-o singură cerere de rețea și buffer-uri de citire și scriere crescute), în special în rețelele cu latență mare, scalabilitatea a fost îmbunătățită și capacitatea pentru a continua automat sesiunea în caz de deconectare temporară de la server a fost adăugat [4 ] . SMB 2 folosește același port (445) ca SMB, dar un antet de pachet diferit ( 0xFF 'S' 'M' 'B'în SMB, 0xFE 'S' 'M' 'B'în SMB 2) [5] .

Windows 8 are o nouă versiune a protocolului - SMB 3.0 . Noile funcții sunt prezentate pe site-ul web al dezvoltatorilor .

În 2008, sub presiunea Comisiei Europene , Microsoft a publicat o descriere a protocoalelor sale private, inclusiv SMB, pe site-ul web MSDN [6] .

Cum funcționează

SMB este un protocol bazat pe tehnologia client-server care oferă o modalitate ușoară pentru aplicațiile client de a citi și scrie fișiere și de a solicita servicii de la programele server în diferite tipuri de medii de rețea. Serverele oferă sisteme de fișiere și alte resurse (imprimante, segmente de e-mail, conducte numite și așa mai departe) pentru a fi partajate în rețea. Calculatoarele client pot avea propriile medii de stocare, dar au și acces la resursele partajate de server.

Clienții se conectează la server folosind TCP/IP (mai precis, NetBIOS peste TCP/IP ), NetBEUI sau IPX/SPX . După ce conexiunea este stabilită, clienții pot trimite comenzi către server (aceste comenzi se numesc comenzi SMB sau SMB), ceea ce le oferă acces la resurse, le permite să deschidă, să citească fișiere, să scrie în fișiere și, în general, să execute întreaga listă de acțiuni care pot fi efectuate cu sistemul de fișiere. Totuși, în cazul utilizării SMB, aceste acțiuni sunt efectuate prin intermediul rețelei.

După cum am menționat mai sus, SMB funcționează folosind diferite protocoale . În modelul de rețea OSI , protocolul SMB este utilizat ca protocol de nivel Aplicație/Prezentare și depinde de protocoalele de transport de nivel scăzut. SMB poate fi utilizat peste TCP/IP , NetBEUI și IPX/SPX . Dacă TCP/IP sau NetBEUI este ocupat, va fi utilizat API-ul NetBIOS. SMB poate fi trimis și prin protocolul DECnet . Digital (acum Compaq ) a făcut acest lucru special pentru produsul lor PATHWORKS. NetBIOS, atunci când este utilizat peste TCP/IP, are diferite nume. Microsoft îl numește NBT în unele cazuri și NetBT în unele cazuri . Apare și numele RFCNB .

De la începutul existenței SMB, au fost dezvoltate multe variante de protocol diferite pentru a gestiona complexitatea tot mai mare a mediului de calcul în care a fost utilizat. Am convenit că versiunea reală a protocolului care va fi folosită de client și server va fi determinată de comanda negprot (negotiate protocol). Acest SMB trebuie trimis mai întâi înainte de stabilirea conexiunii. Prima versiune a protocolului a fost Core Protocol, cunoscut ca implementarea SMB a PC NETWORK PROGRAM 1.0. Acceptă în mod corespunzător întregul set de operațiuni de bază, care include:

Format antet SMB

opt 16 24 32 de biți
comanda RCLS Rezervat ERR
ERR(continuare) REB/FLG Rezervat
Rezervat
Rezervat
Rezervat
ID-ul arborelui ID proces
numele de utilizator ID multiplex
WCT VWV
BCC BUF
Structura antetului SMB

Elementele principale ale structurii antetului SMB sunt:
   ​​• Comandă  — comandă de protocol.
   • RCLS  este codul clasei de eroare.
   • ERR  - cod de eroare.
   • Tree ID (TID)  — ID-ul conexiunii la resursa de rețea.
   • Process ID (PID)  - ID-ul procesului client al conexiunii reale.
   • User ID (UID)  — identificatorul utilizatorului; folosit de server pentru a verifica drepturile de acces ale utilizatorului.
   • Multiplex ID (MID)  — identificatorul grupului de utilizatori; folosit de server pentru a verifica permisiunile grupului de utilizatori.
   • WCT  este numărul de parametri care urmează antetului.
   • BCC  este numărul de octeți de date care urmează parametrilor.

Modelul mecanismului de securitate utilizat de protocolul Microsoft SMB este practic identic cu cel al oricărei alte variante a protocolului SMB. Acesta constă din două niveluri de securitate: la nivel de utilizator (nivel de utilizator) și la nivel de partajare (nivel de resurse partajate). O partajare (resursă publicată) se referă la un fișier, director, imprimantă, orice serviciu care poate fi accesat de clienți printr-o rețea.

Autentificarea la nivel de utilizator înseamnă că un client care încearcă să acceseze o resursă de pe server trebuie să aibă un nume de utilizator (nume de utilizator) și o parolă (parolă). Dacă această autentificare are succes, clientul are acces la toate resursele serverului disponibile, cu excepția celor cu protecție la nivel de partajare. Acest nivel de protecție permite administratorilor de sistem să specifice ce utilizatori și grupuri de utilizatori au acces la anumite date. Este folosit în Windows NT , Windows 2000 , Windows XP .

Autentificarea la nivel de partajare înseamnă că accesul la o resursă este controlat de o parolă setată special pentru resursa respectivă. Spre deosebire de nivelul de utilizator, acest nivel de securitate nu necesită un nume de utilizator pentru autentificare și nu stabilește nicio unicitate pentru utilizatorul curent. Acest nivel este utilizat în Windows NT, Windows 2000 și Windows XP pentru a oferi un nivel suplimentar de control al securității dincolo de nivelul de utilizator. Sistemele de operare Windows 95 , Windows 98 și Windows ME implementează doar acest nivel de protecție.

Ambele niveluri de securitate folosesc criptarea. Parola este criptată înainte de a fi trimisă la server. Tipurile de criptare NTLM , NTLMv2 și versiunile mai vechi ale LAN Manager (LM) sunt acceptate de protocol. Ambele metode de criptare folosesc autentificarea Response-Revoke, în care serverul trimite clientului un șir generat aleatoriu, iar clientul returnează un șir analizat ca revocare, ceea ce demonstrează că clientul are suficiente acreditări pentru a accesa datele.

Securitate

De-a lungul vieții implementării de referință a protocolului de la Microsoft, specialiștii în securitatea informațiilor au identificat vulnerabilități care permit un atac de rețea cu succes asupra unei gazde la distanță. [7] [8] [9] Organizarea atacului asupra serverelor SMB neprotejate este una dintre cele mai atractive dintre atacatori [10] . De exemplu, folosind vulnerabilități în protocolul SMB, serverele Sony Pictures Entertainment [11] au fost sparte și au fost distribuite malware DoublePulsar , WannaCry [12] (vulnerabilitate EternalBlue ) și Petya [13] .

Vezi și

Note

  1. Christopher R. Hertel. Schema URL de partajare a fișierelor SMB  (engleză)  (link descendent) (8 ianuarie 2003). Consultat la 21 octombrie 2009. Arhivat din original pe 3 iunie 2012.
  2. 1 2 Andrew Tridgell. Mituri despre Samba  (engleză)  (link nu este disponibil) . Consultat la 2 iunie 2011. Arhivat din original pe 3 iunie 2012.
  3. Dan Shearer. Istoria SMB  (engleză)  (link indisponibil) (16 noiembrie 1996). Consultat la 21 octombrie 2009. Arhivat din original pe 3 iunie 2012.
  4. Joseph Barreto. SMB2, o reproiectare completă a protocolului principal de fișiere la distanță pentru Windows  (engleză)  (downlink) (9 decembrie 2008). Consultat la 22 octombrie 2009. Arhivat din original la 3 iunie 2012.
  5. SMB2 (link descendent) . Wireshark. Consultat la 22 octombrie 2009. Arhivat din original la 3 iunie 2012. 
  6. [MS-CIFS : Protocol Common Internet File System (CIFS)]  (ing.) . Preluat la 11 august 2015. Arhivat din original la 5 noiembrie 2015.
  7. MS02-070: Defectul în semnarea SMB poate permite modificarea politicii de grup . Microsoft (1 decembrie 2007). Consultat la 1 noiembrie 2009. Arhivat din original la 25 iulie 2017.
  8. MS09-001: Vulnerabilitățile din SMB ar putea permite executarea de cod de la distanță . Microsoft (13 ianuarie 2009). Consultat la 1 noiembrie 2009. Arhivat din original pe 5 octombrie 2009.
  9. Microsoft Security Bulletin MS17-010 - Critical . technet.microsoft.com . Preluat la 13 mai 2017. Arhivat din original la 21 mai 2017.
  10. Alertă (TA14-353A) Programe malware distructive vizate . US-CERT . Preluat la 16 mai 2017. Arhivat din original la 20 decembrie 2014.
  11. Hackerii Sony au folosit instrumentul vierme Server Message Block (SMB) . Preluat la 16 mai 2017. Arhivat din original la 20 decembrie 2014.
  12. Atacul WannaCry Ransomware a lovit victimele cu Microsoft SMB Exploit , eWeek . Preluat la 13 mai 2017.
  13. Virusul ransomware Petya a revenit pe fondul atacurilor cibernetice: agenția elvețiană , Reuters  (marți, 27 iunie, 14:50:10 UTC 2017). Arhivat din original pe 27 iunie 2017. Preluat la 27 iunie 2017.

Link -uri