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 ).
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] .
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:
å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.
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 .
URI- scheman | |
---|---|
Officiell | |
inofficiell |
Filsystem ( lista , jämförelse ) | |||||||
---|---|---|---|---|---|---|---|
Disk |
| ||||||
Distribuerat (nätverk) | |||||||
Särskild |
|