Servermeddelandeblock

SMB (förkortat från engelska.  Server message block ) - ett nätverksprotokoll för applikationslager för fjärråtkomst till filer , skrivare och andra nätverksresurser, såväl som för kommunikation mellan processer . Den första versionen av protokollet, även känt som Common Internet File System (CIFS), utvecklades av IBM , Microsoft , Intel och 3Com på 1980-talet; den andra (SMB 2.0) skapades av Microsoft och dök upp med Windows Vista . För närvarande är SMB huvudsakligen associerat med Microsoft Windows- operativsystem , där det används för att implementera "Microsoft Windows Network" ( eng.  Microsoft Windows Network ) och "Dela filer och skrivare" ( eng.  Fil- och skrivardelning ).

Historik

Den första versionen av protokollet utvecklades av IBM- anställde Barry Feigenbaum 1983 [ 1] [2] .  SMB implementerades ursprungligen över NetBIOS (över NBF , IPX/SPX eller NetBIOS över TCP/IP ) och användes i MS-NET- nätverk och LAN Manager för DOS samt Windows för arbetsgrupper . Microsoft lade regelbundet till nya funktioner till protokollet; till exempel dök den andra versionen av Microsoft Networks SMB File Sharing Protocol Extensions upp 1988, den tredje versionen - 1989 , version 3.4 - 1992 [3] .

1992 dök Samba upp  - en gratis implementering av SMB-protokollet för UNIX -liknande operativsystem (ursprungligen för SunOS ). Eftersom Microsoft inte har publicerat dokumentation för mycket av sina tillägg till SMB, har Samba-utvecklarna varit tvungna att omvända protokollet.

1996 började Microsoft använda ett nytt namn för den utökade versionen av protokollet som användes i Windows NT 4.0  - CIFS ( Engelska  Common Internet File System ); det nya namnet fastnade, SMB och CIFS blev praktiskt taget synonyma [2] . Microsoft försökte under en tid göra CIFS till en internationell standard genom IETF , men stoppade standardiseringsarbetet efter 2000 .

Windows 2000 introducerade först SMB direkt över TCP (ingen NetBIOS); port 445 används för detta (SMB över NBT använde port 139).

Windows Vista introducerade en ny version av protokollet - SMB 2.0 . Protokollet har förenklats avsevärt (SMB hade över 100 kommandon, medan SMB 2 bara hade 19); samtidigt förbättrades prestandan (på grund av cachningsmekanismen är det möjligt att kombinera flera SMB 2-kommandon i en nätverksbegäran och ökade läs- och skrivbuffertar), speciellt i nätverk med hög latens, skalbarheten förbättrades och förmågan för att automatiskt fortsätta sessionen i händelse av tillfällig frånkoppling från servern lades till [4] . SMB 2 använder samma port (445) som SMB, men en annan pakethuvud ( 0xFF 'S' 'M' 'B'i SMB, 0xFE 'S' 'M' 'B'i SMB 2) [5] .

Windows 8 har en ny version av protokollet - SMB 3.0 . Nya funktioner beskrivs på utvecklarens webbplats .

Under 2008, under påtryckningar från Europeiska kommissionen , publicerade Microsoft en beskrivning av sina privata protokoll, inklusive SMB, på MSDN- webbplatsen [6] .

Hur det fungerar

SMB är ett protokoll baserat på klient-server- teknik som ger ett enkelt sätt för klientapplikationer att läsa och skriva filer och begära tjänster från serverprogram i olika typer av nätverksmiljöer. Servrar tillhandahåller filsystem och andra resurser (skrivare, e-postsegment, namngivna rör och så vidare) som ska delas på nätverket. Klientdatorer kan ha sina egna lagringsmedia, men har också tillgång till resurser som delas av servern.

Klienter ansluter till servern med TCP/IP (mer specifikt NetBIOS över TCP/IP ), NetBEUI eller IPX/SPX . Efter att anslutningen har upprättats kan klienter skicka kommandon till servern (dessa kommandon kallas SMB-kommandon eller SMB), vilket ger dem tillgång till resurser, låter dem öppna, läsa filer, skriva till filer och i allmänhet utföra hela listan med åtgärder som kan utföras med filsystemet. Men i fallet med användning av SMB, utförs dessa åtgärder via nätverket.

Som nämnts ovan fungerar SMB med olika protokoll . I OSI-nätverksmodellen används SMB-protokollet som ett applikations-/presentationslagerprotokoll och beror på lågnivåtransportprotokoll. SMB kan användas över TCP/IP , NetBEUI och IPX/SPX . Om TCP/IP eller NetBEUI är upptagen kommer NetBIOS API att användas. SMB kan också skickas över DECnet- protokollet . Digital (nu Compaq ) gjorde detta specifikt för deras PATHWORKS-produkt. NetBIOS, när det används över TCP/IP, har olika namn. Microsoft kallar det NBT i vissa fall och NetBT i vissa fall . Namnet RFCNB förekommer också .

Sedan början av SMB:s existens har många olika protokollvarianter utvecklats för att hantera den ständigt ökande komplexiteten i den datormiljö där det användes. Vi kom överens om att den faktiska versionen av protokollet som kommer att användas av klienten och servern kommer att bestämmas av kommandot negprot (förhandla protokoll). Denna SMB måste skickas först innan en anslutning upprättas. Den första versionen av protokollet var Core Protocol, känt som SMB-implementeringen av PC NETWORK PROGRAM 1.0. Den stöder korrekt hela uppsättningen av grundläggande operationer, som inkluderar:

SMB-huvudformat

åtta 16 24 32 bitar
kommando RCLS Reserverad FELA
ERR(forts.) REB/FLG Reserverad
Reserverad
Reserverad
Reserverad
träd-ID Process ID
användar ID multiplex ID
WCT VWV
BCC BUF
SMB-huvudstruktur

Huvudelementen i SMB-huvudstrukturen är:
   • Kommando  — protokollkommando.
   • RCLS  är felklasskoden.
   • ERR  - felkod.
   • Träd-ID (TID)  — ID för anslutningen till nätverksresursen.
   • Process ID (PID)  - Klientprocess-ID för den faktiska anslutningen.
   • Användar-ID (UID)  — användaridentifierare; används av servern för att kontrollera användarens åtkomsträttigheter.
   • Multiplex ID (MID)  — användargruppsidentifierare; används av servern för att kontrollera behörigheterna för användarens grupp.
   • WCT  är antalet parametrar efter rubriken.
   • BCC  är antalet byte med data som följer parametrarna.

Säkerhetsmekanismmodellen som används av Microsoft SMB-protokollet är i princip identisk med den för alla andra varianter av SMB-protokollet. Den består av två säkerhetsnivåer: användarnivå (användarnivå) och delningsnivå (delad resursnivå). En resurs (publicerad resurs) hänvisar till en fil, katalog, skrivare, vilken tjänst som helst som kan nås av klienter över ett nätverk.

Autentisering på användarnivå innebär att en klient som försöker komma åt en resurs på servern måste ha ett användarnamn (användarnamn) och lösenord (lösenord). Om den här autentiseringen lyckas har klienten åtkomst till alla tillgängliga serverresurser, förutom de med skydd på delningsnivå. Denna skyddsnivå tillåter systemadministratörer att ange vilka användare och användargrupper som har tillgång till viss data. Det används i Windows NT , Windows 2000 , Windows XP .

Autentisering på aktienivå innebär att åtkomst till en resurs styrs av ett lösenord som är specifikt inställt för den resursen. Till skillnad från användarnivå kräver denna säkerhetsnivå inget användarnamn för autentisering och etablerar ingen unikhet för den aktuella användaren. Denna nivå används i Windows NT, Windows 2000 och Windows XP för att ge en ytterligare nivå av säkerhetskontroll utöver användarnivån. Operativsystemen Windows 95 , Windows 98 och Windows ME implementerar endast denna skyddsnivå.

Båda dessa säkerhetsnivåer använder kryptering. Lösenordet krypteras innan det skickas till servern. Krypteringstyperna NTLM , NTLMv2 och äldre versioner av LAN Manager (LM) stöds av protokollet. Båda krypteringsmetoderna använder Response-Revoke-autentisering, där servern skickar en slumpmässigt genererad sträng till klienten, och klienten returnerar en tolkad sträng som återkallelse, vilket bevisar att klienten har tillräckliga referenser för att komma åt data.

Säkerhet

Under hela livet av referensimplementeringen av protokollet från Microsoft har informationssäkerhetsspecialister identifierat sårbarheter som tillåter en framgångsrik nätverksattack på en fjärrvärd. [7] [8] [9] Organisationen av attacken mot oskyddade SMB-servrar är en av de mest attraktiva bland angriparna [10] . Till exempel, genom att använda sårbarheter i SMB-protokollet, hackades Sony Pictures Entertainment [11] -servrar och skadlig programvara DoublePulsar , WannaCry [12] (sårbarhet EternalBlue ) och Petya [13] distribuerades .

Se även

Anteckningar

  1. Christopher R. Hertel. URL-schema för SMB-fildelning  (engelska)  (nedlänk) (8 januari 2003). Hämtad 21 oktober 2009. Arkiverad från originalet 3 juni 2012.
  2. 1 2 Andrew Tridgell. Myter om Samba  (engelska)  (länk ej tillgänglig) . Hämtad 2 juni 2011. Arkiverad från originalet 3 juni 2012.
  3. Dan Shearer. History of SMB  (engelska)  (inte tillgänglig länk) (16 november 1996). Hämtad 21 oktober 2009. Arkiverad från originalet 3 juni 2012.
  4. Joseph Barreto. SMB2, en komplett omdesign av huvudfjärrfilprotokollet för Windows  (engelska)  (nedlänk) (9 december 2008). Hämtad 22 oktober 2009. Arkiverad från originalet 3 juni 2012.
  5. SMB2 (nedlänk) . Wireshark. Hämtad 22 oktober 2009. Arkiverad från originalet 3 juni 2012. 
  6. [MS-CIFS : Common Internet File System (CIFS) Protocol]  (eng.) . Hämtad 11 augusti 2015. Arkiverad från originalet 5 november 2015.
  7. MS02-070: Fel i SMB-signering kan tillåta att gruppolicy ändras . Microsoft (1 december 2007). Hämtad 1 november 2009. Arkiverad från originalet 25 juli 2017.
  8. MS09-001: Sårbarheter i SMB kan tillåta fjärrkörning av kod . Microsoft (13 januari 2009). Hämtad 1 november 2009. Arkiverad från originalet 5 oktober 2009.
  9. Microsofts säkerhetsbulletin MS17-010 - Kritisk . technet.microsoft.com . Hämtad 13 maj 2017. Arkiverad från originalet 21 maj 2017.
  10. Varning (TA14-353A) Riktad destruktiv skadlig programvara . US-CERT . Hämtad 16 maj 2017. Arkiverad från originalet 20 december 2014.
  11. Sony Hackers använde Server Message Block (SMB) Worm Tool . Hämtad 16 maj 2017. Arkiverad från originalet 20 december 2014.
  12. WannaCry Ransomware Attack träffar offer med Microsoft SMB Exploit , eWeek . Hämtad 13 maj 2017.
  13. Petya ransomware-virus är tillbaka mitt i cyberattacker: schweizisk byrå , Reuters  (tis 27 juni 14:50:10 UTC 2017). Arkiverad från originalet den 27 juni 2017. Hämtad 27 juni 2017.

Länkar