Enumeracja i omówienie słabości protokołu CIFS/SMB

2008-10-21 00:00:00 +0100


 

Autor: Daniel Wasyliszyn

 

Artykuł ten omawia słabe strony protokołu CISF/SMB używanego w sieciach Microsoft Network. Pragnę ukazać użytkownikom, że czasami nie zdajemy sobie sprawy, iż udostępniając folder, drukarkę czy plik narażamy nasz system na wykonywanie operacji, które na pewno by się nam nie spodobały. Ponadto operacje zachodzące w naszym systemie

( środowisko Windows ) umożliwiają nam pobranie informacji na temat „danych” jakie przechowujemy w komputerze.

Enumeracja to inaczej zdobywanie informacji na temat systemów komputerowych. W odróżnieniu jednak od np.: skanowania w przypadku enumeracji mamy do czynienia z inwazyjnością tego procesu polegającego na nawiązywaniu aktywnego połączenia i dokonywania konkretnego zapytania na temat jakie zasoby oferuje nam dany komputer. W tym jednak przypadku system sam udostępnia nam daną informację nie pytając nas nawet czy jesteśmy do tego uprawnieni.

 

Nie będę omawiał tutaj systemów z rodziny Win9x gdyż ich żywotność jest policzona polityką marketingową firmy Microsoft większość wykonywanych poleceń była na systemie Windows 2000 Professional z domyślną konfiguracją z zainstalowanymi SP1 i SP2 oraz kilkoma poprawkami Q318138, Q313829, Q313450, Q311967, Q300845, Q295688 i Q147222. Głównym protokołem używanym do udostępniania zasobów w sieciach Microsoft jest protokół NetBIOS lub też jest to rodzina protokołów o łącznej nazwie CIFS/SMB.

Praktycznie każdy użytkownik Internetu, który posiada jakikolwiek osobisty firewall zauważy, że często skanowane porty 137 – 139. Otóż jak się później dowiemy są to porty dzięki, któremu możliwe jest uzyskiwanie informacji na temat komputerów.

 

Wykaz usług systemu Windows 2000 podatnych na enumeracje

Tabelka nr.1

</col> </col>

UDP 137

Usługa nazw NetBIOS (NBNS)

TCP 139

Usługa sesji NetBIOS ( SMB przez NetBIOS)

TCP 53

Transfer strefy DNS

TCP 445

SMB przez TCP

TCP/UDP 389

LDAP

TCP/UDP 3268

Usługa wykazu globalnego

 

 

 

Najlepiej porty te odfiltrować na firewallu lub routerze, który jest podłączony do Internetu lub wyłączyć usługi, które działają na tych portach. No i można by było powiedzieć, że mamy już spokój i jesteśmy bezpiecznie. Jednak tak nie jest ponieważ większość włamań pochodzi sieci wewnętrznej LAN. O tym jak się przed nimi zabezpieczyć dowiemy się trochę dalej.

 

O dziwo większość informacji potrzebnych do enumeracji dostarczana jest z samym systemem Windows lub z jego narzędziami na płycie instalacyjnej :). Zacznijmy od polecenia net view \\ nazwa komputera lub adres IP dzięki, któremu możemy pobrać też informacje dotyczące całej domeny net view /domain . W przypadku jeżeli chcemy otrzymać informacje co konkretnie oferuje dany komputer wystarczy, że dopiszemy net view /domain:basia . Jeżeli nie lubimy shella wystarczy przejrzeć otoczenie sieciowe jednak nie zawszę uzyskamy informacje tak szybko. Następnym narzędziem, które przysłuży się nam w pozyskiwaniu informacji jest nbtstat dla przypomnienia :

nbtstat</strong> [-a nazwa_zdalna] [-A adres IP] [-c] [-n] [-R] [-r] [-S] [-s] [interwał]

Parametry</strong>

-a</strong> nazwa_zdalna Wyświetla tabelę nazw komputera zdalnego, używając nazwy tego komputera.

-A</strong> adres_IP Wyświetla tabelę nazw komputera zdalnego, używając adresu IP tego komputera

-c</strong> Wyświetla zawartość buforu nazw NetBIOS, wyświetlając dla każdej nazwy adres IP.

-n</strong> Wyświetla lokalne nazwy NetBIOS. Termin „registered” oznacza, że dana nazwa jest rejestrowana przez emisję (węzeł Bnode) lub usługę WINS (inne typy węzłów).

-R</strong> Ponownie ładuje plik Lmhosts po wyczyszczeniu wszystkich nazw z buforu nazw NetBIOS.

-r </strong>Wyświetla statystyki sieciowego rozpoznawania nazw dla systemu Windows. Na komputerze systemu Windows 2000, skonfigurowanym do używania usługi WINS, opcja zwraca liczbę nazw rozpoznanych i zarejestrowanych przy użyciu emisji lub usługi WINS.

-S </strong>Wyświetla zarówno sesję klienta, jak i sesję serwera, przy czym dla komputerów zdalnych wyświetlane są tylko adresy IP.

-s </strong>Wyświetla zarówno sesję klienta, jak i sesję serwera. Próbuje przekonwertować adres IP komputera zdalnego do nazwy używając pliku Hosts.

Najczęściej używane polecenie to : nbtstat –A adres IP lub nazwa hosta np.

nbtstat</strong> –A 169.254.95.232

NetBIOS Remote Machine Name Table

 

Name Type Status

---------------------------------------------

WIN <00> UNIQUE Registered

WIN98 <00> GROUP Registered

WIN <03> UNIQUE Registered

K <03> UNIQUE Registered

 

MAC Address = 00-00-1C-30-04-CB

 

Dzięki temu pozyskaliśmy tablicę nazw NetBIOS z zdalnego komputera oraz jego adres MAC karty sieciowej. Co oznaczają kolejne pola przedstawi tabela poniżej.

Tabelk nr. 2

</col> </col> </col> </col>

Nazwa NetBIOS</strong>

Sufiks</strong>

Typ Nazwy</strong>

Usługa</strong>

nazwa komputera

00

U

Workstation

nazwa komputera

01

U

Posłaniec ( dla komunikatów wysłanych do tego komputera)

_MS_BROWSE_

01

G

Master Browser

nazwa komputera

03

U

Posłaniec

nazwa komputera

06

U

Serwer RAS

nazwa komputera

IF

U

NetDDE

nazwa komputera

20

U

Serwer

nazwa komputera

21

U

Klient RAS

nazwa komputera

22

U

MS Exchange Interchange

nazwa komputera

23

U

MS Exchange Store

nazwa komputera

24

U

MS Exchange Directory

nazwa komputera

30

U

Serwer udostępniania modemów

nazwa komputera

31

U

Klient udostępniania modemów

nazwa komputera

43

U

SMS Client Remonte Control

nazwa komputera

44

U

SMS Remonte Control Tool

nazwa komputera

45

U

SMS Client Remonte Chat

nazwa komputera

46

U

SMS Client Remonte Transfer

nazwa komputera

4C

U

DEC Pathworks TCPIP

nazwa komputera

52

U

DEC Pathworks TCPIP

nazwa komputera

87

U

MS Exchange MTA

nazwa komputera

6A

U

Netmon Agent

nazwa komputera

BF

U

Netmon Application

nazwa komputera

03

U

Usługa posłaniec ( dla komunikatów przysłanych do tego użytkownika )

nazwa domeny

00

G

Domian Name

nazwa domeny

1B

U

Domian Master Browser

nazwa domeny

1C

G

Domian Controllers

nazwa domeny

1D

U

Master Browser

nazwa domeny

1E

G

Browser Service Elections

Inet~Services

1C

G

IIS

IS~nazwa_komputera

00

U

IIS

nazwa komputera

2B

U

Lotus Notes Sever

IRISMULTICAST

2F

G

Lotus Notes

IRISNAMESERVER

33

G

Lotus Notes

 

Typy nazw mogą przyjmować

Tabelka nr.3

</col> </col>

Typy nazw NetBIOS

Opis

Unique ( U )

Nazwa może mieć przypisany tylko jeden adres IP

Group ( G )

Nazwa jest unikatowa, ale może mieć wiele adresów IP

Multihomed ( M )

Nazwa jest unikatowa, ale może istnieć na wielu interfejsach jednego komputera

 

Tak więc nie trzeba wiele wiedzy na temat sieci komputerowych wystarczy nam tabelka i trochę cierpliwości jak to mówią po nitce do kłębka. Używając jednak narzędzia nbtstat spotkamy się jednak z małą niedogodnością w mianowicie praca tylko z jednym komputerem aby cały proces zautomatyzować mamy do dyspozycji narzędzie nbtscan , które jest darmowe wystarczy poszukać je na stronach WWW w Internecie. I już gładko i bez problemów w ciągu chwili za pomocą polecenia nbtscan 192.168.0.0/24 skanujemy całą sieć klasy C. Zalecałbym go jednak używać w sieciach LAN gdyż w Internecie nie spełnia raczej on dobrej funkcji.

Czyżby to był koniec naszych możliwości raczej nie. Jeżeli mamy do dyspozycji komputer z systemem Windows 2000 oraz płytę z Windows 2000 Professional Resource Kit to nasze możliwości rosną. Nie będę opisywał tutaj działania wszystkich narzędzi wystarczy tylko wspomnieć o: nltest służący do potwierdzający funkcjonowanie lokatora oraz kanału bezpiecznego ale również umożliwiający wykonywanie zapytań np.:

nltest /user:admin</strong>

 

User: admin

Rid: 0x1f4

Version: 0x10002

LastLogon: 32b71e40 01c2a39d = 12/14/2002 19:18:27

PasswordLastSet: 09dd3e90 01c2729e = 10/13/2002 10:51:01

AccountExpires: ffffffff 7fffffff = 5/10/650 1191:14:41

LastBadPasswordTime: 0dc37010 01c28f4a = 11/18/2002 22:32:54

PrimaryGroupId: 0x201

UserAccountControl: 0x210

CountryCode: 0x0

CodePage: 0x0

BadPasswordCount: 0x0

LogonCount: 0x2f

AdminCount: 0x1

SecurityDescriptor: 80140001 00000088 00000098 00000014 00000030 001c0002 00000001 0014c002 01050044 00000101 01000000 00000000 00580002 00000003 00140000 0002035b 00000101 01000000 00000000 00180000 000f07ff 00000201 05000000 00000020 00000220 00240000 00020044 00000501 05000000 00000015 1f6d0078 5e338cbb 320a1743 000001f4 00000201 05000000 00000020 00000220 00000201 05000000 00000020 00000220

AccountName: Admin

AdminComment: Wbudowane konto do administrowania komputerem/domen

Groups: 00000201 00000007

LmOwfPassword: 56b46fbd ef654e49 87167fc6 cd69c5c8

NtOwfPassword: dd088d05 ae81b167 eecedd9b 2cc6f6f8

NtPasswordHistory: 00010001

LmPasswordHistory: 00010001

The command completed successfully

 

Oczywiście w przypadku barku odpowiednich praw może się to skończyć w taki sposób.

nltest /user:admin</strong>

Cannot RegOpenKey to change DACL SAM\SAM\Domains\Account\Users\Names\admin subkey SAM Status = 5 0x5 ERROR_ACCESS_DENIED

Cannot open SAM\SAM\Domains\Account\Users\Names\admin Status = 5 0x5 ERROR_ACCESS_DENIED

The command completed successfully

 

Oczywiście jest to przykład wykonywania zapytania gdyż jeżeli nasz komputer należy do danej domeny to może wykonać zapytanie dotyczące całej domeny

nltest /dsclist:<nazwa domeny></strong>

rpcdump </strong>– najkrócej rzecz ujmując umożliwia uzyskiwania informacji na temat statusu usług RPC ( zdalne wywołanie procedur ) np.:

rpcdump /s win2000 /i</strong>

Querying Endpoint Mapper Database...

 

13 registered endpoints found.

 

 

Collecting Data.... This may take a while.

 

0 10 20 30 40 50 60 70 80 90 100

|----|----|----|----|----|----|----|----|----|----|

...................................................

 

 

 

ncacn_np(Connection-oriented named pipes)

 

\\WIN2000[\PIPE\scerpc] [5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc] Messenger Service :YES

 

\\WIN2000[\PIPE\ntsvcs] [5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc] Messenger Service :YES

 

 

 

ncacn_spx(Connection-oriented SPX)

 

~00000000000000000000[24576] [378e52b0-c0a9-11cf-822d-00aa0051e40f] :NO

 

~00000000000000000000[24576] [1ff70682-0a51-30e8-076d-740be8cee98b] :NO

 

 

 

ncacn_ip_tcp(Connection-oriented TCP/IP)

 

192.168.1.1[1025] [378e52b0-c0a9-11cf-822d-00aa0051e40f] :YES

 

192.168.1.2[1025] [378e52b0-c0a9-11cf-822d-00aa0051e40f] :YES

 

192.168.1.1[1025] [1ff70682-0a51-30e8-076d-740be8cee98b] :YES

 

192.168.1.2[1025] [1ff70682-0a51-30e8-076d-740be8cee98b] :YES

 

 

 

ncalrpc(Local Rpc)

 

[ntsvcs] [5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc] Messenger Service :YES

 

[LRPC00000234.00000001] [378e52b0-c0a9-11cf-822d-00aa0051e40f] :YES

 

[LRPC00000234.00000001] [1ff70682-0a51-30e8-076d-740be8cee98b] :YES

 

 

 

ncadg_ip_udp(Datagram (connectionless) UDP/IP)

 

192.168.1.2[1026] [5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc] Messenger Service :YES

 

192.168.1.1[1026] [5a7b91f8-ff00-11d0-a9b2-00c04fb6e6fc] Messenger Service :YES

 

 

 

rpcdump completed sucessfully after 6 seconds

 

Otrzymaliśmy następujące informacje rodzaje usług adresy IP co ciekawe istnieje adres wirtualny możemy zatem podejrzewać, że komputer podłączony jest do dwóch podsieci.

 

getmac </strong>– pozwala nam na pobranie adresu MAC trochę w bardziej rozszerzonej formie.

getmac </strong>\\win2000

 

Information for machine \\win2000

Transport Address Transport Name

----------------- --------------

00-00-1C-30-04-CB \Device\NwlnkNb

00-00-00-00-00-00 \Device\NetbiosSmb

00-00-1C-30-04-CB \Device\NetBT_Tcpip_{B7A2C76C-9247-49C2-B71B-9D6869B7F7A8}

 

 

 

Po co się jednak męczyć skoro można to wszystko osiągnąć za pomocą LanGuard firmy GFI www.gfi.com wszystko ładne pokazane bez żadnych problemów. Tak swoją drogą polecam produkty tej firmy wszystko ładnie zrobione i na swoim miejscu.

 

LanGuard to połączenie skanera i analizatora zabezpieczeń z możliwości odgadywania haseł. W lewym okienku od początku mamy nazwa NETBIOS do poszczególnych odznaczeń odsyłam do tabelki nr.2 dalej nazwa użytkownika, adres MAC, grupa robocza i prawdopodobny rodzaj systemu operacyjnego. W węźle shares udostępnione zasoby Groups to rodzaje grup na danym komputerze podobnie jak Users – użytkownicy. Poszczególne węzły w dalszej kolejności to między innymi ustawienia zabezpieczeń haseł czyli konfiguracja zabezpieczeń ( długość hasła, historia haseł itp. ) otwarte porty a także potencjalne dziury w zabezpieczeniach. W prawym okienku możemy zapoznać się metodą „badania” danego hosta. LanGuard wykorzystuje pustą sesję do uzyskania tych informacji a ta tutaj mała prezentacja to początek jego możliwości : ).

Jednak dla tych dla, których czarny ekran shella to świętość wystarczy tutaj wspomnieć o prostym narzędziu jakim jest nslookup oczywiście dotyczy on raczej protokołu TCP jednak w sieciach Windows 2000 opartej o ActivDirectory pozwala nam na uzyskiwaniu wielu cennych informacji. Czyż jednak nie jest to trochę dziwne, że w tak prosty sposób można uzyskać te informacje?. Odpowiedź jest prosta wszystkiemu jest winny sam protokół CIFS/SMB, który to w swojej specyfikacji uwzględnia odpowiednie interfejsy API pozwalające nam na wykorzystanie tych luk. Jednak nie zwalajmy wszystko na protokół zawszę na końcu pozostaje człowiek i to on konfiguruję cały system. Tak więc wszystkie te informacje dostępne są dzięki portom 139 i 445 UDP i TCP . Informacje te mogą pobrać nawet nie uwierzytelnieni użytkownicy za pomocą pustej sesji jeżeli oczywiście powyższe porty są otwarte.

Przykład nawiązania pustej sesji:

C:\> net use \\213.25.160.10\IPC$ /user:admin \Administrator

Nawiązujemy połączenie z ukrytym “zasobem” komunikacji międzyprocesorowej ( IPC$ ) z adresem IP 213.25.160.10 jako użytkownik ( /user:admin ) z hasłem ( ”Administrator” ) bingo !. Może się to wydać śmieszne ale spotykałem się kilkakrotnie z czymś takim np.: user admin i hasło admin głupota ludzka nie zna granic.

Jeżeli uda nam się nawiązać pustą sesję to jesteśmy w domu a gwarantuję, że na wszystkich „świeżych” systemach Win2000 nie ma z tym problemów można np. wykorzystać konto Gościa. Nawiązaliśmy już pustą sesję co dalej możemy zatem przystąpić do zbierania informacji o naszym celu. I tutaj znowu w sukurs przychodzi nam firma z pod flagi okienek oferując nam NTRK i narzędzia takie jak srvcheck, srvinfo, nltest .

Przykład użycia srvinfo :

C:\>srvinfo \\win2000

 

Server Name: WIN2000

Security: Users

NT Type: NT Advanced Server -

Version: 5.0

Build: 2195, Dodatek Service Pack. 2

Current Type: Uniprocessor Free

Product Name: Microsoft Windows 2000

Registered Owner: k

Registered Organization: k

ProductID: 52817-335-5084301-09476

Original Install Date: Sun Oct 13 12:38:14 2002

Domain: Error 2

PDC: Error 2453

Hotfixes:

[SP2SRP1]:

[Q318138]:

[Q313829]:

[Q313450]:

[Q311967]:

[Q300845]:

[Q295688]:

[Q147222]:

Drive: [FileSys] [ Size ] [ Free ] [ Used ]

C$ FAT32

D$ FAT32

E$ FAT32

F$ FAT32

H$ NTFS 1750 232 1518

Services:

[Stopped] Urz

[Stopped] Zarz

[Running] Przegl

[Running] Us

[Stopped] ClipBook

[Running] Klient DHCP

[Stopped] Us

[Running] Mened

[Running] Klient DNS

[Running] Dziennik zdarze

[Running] System zdarze

[Stopped] Us

[Running] Serwer

[Running] Stacja robocza

[Running] Us

[Running] Messenger

[Stopped] NetMeeting Remote Desktop Sharing

[Stopped] Distributed Transaction Coordinator

[Running] Windows Installer

[Stopped] DDE sieci

[Stopped] DSDM DDE sieci

[Stopped] Logowanie do sieci

[Running] Po

[Stopped] Us

[Running] Magazyn wymienny

[Running] Us

[Running] Plug and Play

[Running] Agent zasad IPSEC

[Running] Magazyn chroniony

[Stopped] Mened

[Running] Mened

[Stopped] Routing i dost

[Running] Us

[Stopped] Lokalizator us

[Running] Zdalne wywo

[Stopped] QoS RSVP

[Running] Mened

[Stopped] Pomocnik karty inteligentnej

[Stopped] Karta inteligentna

[Running] Harmonogram zada

[Running] Us

[Running] Zawiadomienie o zdarzeniu systemowym

[Stopped] Udost

[Running] Bufor wydruku

[Stopped] Dzienniki wydajno

[Running] System Scanner Agent

[Running] Telefonia

[Stopped] Telnet

[Running] Klient

[Stopped] Zasilacz awaryjny (UPS)

[Stopped] Mened

[Stopped] Us

[Running] Instrumentacja zarz

[Running] Rozszerzenia sterownika Instrumentacji zarz

Network Card [0]:

 

Ukłony dla panów z Microsoftu dziękujemy wam bardzo : ). No i proszę mamy usługi udostępnione zasoby zainstalowane poprawki czegoś nam tu jeszcze jednak brakuję. Przydałyby się informację o użytkownikach i z tym problemem możemy poradzić dzięki produktom firmy z Redmonton i płytce CD-ROM NTRK oraz kilku małym plikom o nazwach: usrstat, showgrps, local, global. Jednak liderem w tej klasyfikacji jest DumpSec firmy Somarsoft dostępna jest również wersja graficzna. Czy jednak nie możemy mieć wszystkiego w jednym – oczywiście wystarczy tylko poszukać i trafimy na pewno na dwa chyba najlepsze narzędzia są to: enum opracowany przez grupę Razor z firmy Bindview oraz nete, którego ojcem jest Sir Distic. Nie będę tutaj omawiał szczegółów zainteresowanych odsyłam do Internetu. Zasada działania jest zawszę taka sam wykorzystanie pustych sesji.

 

Po lekturze tego krótkiego działu chyba należy usiąść i płakać jednak nie jest tak do końca firma Microsoft wprowadziła kilka zaleceń , które pozwolą się nam poczuć pewniej są to:

  1. Blokada portów 135-139 i 445 TCP i UDP na poziomie sieci i komputera.

  2. Wyłączyć usługi SMB / albo bezpieczeństwo albo wygoda : ) panowie i panie /

  3. Ustawienie klucza RestricAnonymous na 2 www.suport.microsft.com/support/kbarticles/Q143/4/74.asp

RestricAnonymous został wprowadzony z SP3 od systemów NT4 dokładna jego lokalizacja to w rejestrze HKLM\SYSTEM\CurrentControlSet\Control\LSA\RestricAnonymous jest to wartość

REG_DWORD i może przyjmować wartości: 0,1 i2.

Opis wartości RestricAnonymous

 

</col> </col>

Wartość</strong>

Poziom bezpieczeństwa</strong>

0

Brak. Korzysta z domyślnych uprawnień

1

Nie zezwala na enumeracje kont SAM i nazw

2

Brak dostępu bez wyraźnych zezwoleń dla anonimowych użytkowników

 

Zmiany te trzeba wprowadzać ręcznie tylko NT 4 gdyż w Win 2000 ustawienia te konfiguruje się za pomocą MMC - > Zasad zabezpieczeń najlepiej odmówić dostępu dla połączeń anonimowych.

  1. Wyłączyć usługi Ogłaszania alertów i posłaniec.

 

Do szczegółów odsyłam na strony Microsoft, która chyba najlepiej powinna wiedzieć co sprzedaje. A najbardziej zabawne jest to, że w swoich dwóch flagowych systemach Win2000 i WinXP ustawienia całego sytemu dla protokołu CIFS/SMB są najmniej restrykcyjne. Oczywiście dla dobra klienta wszystko ma być kompatybilne z poprzednią wersją systemów NT i Win9x. Jeżeli zaś nie daj Boże jesteśmy szczęśliwymi posiadaczami środowisk mieszanych czyli nie Win2000 ale komputery z Win9x czy NT. No to musimy nieźle się napocić, żeby zapewnić jej bezpieczeństwo skomplikowane hasła uświadamianie użytkowników itp.

 

Może zabrzmi to trochę głupio ale najszybciej można znaleźć informacje umożliwiające nam włamanie się do komputera w samej sieci czyli tym co jest przesyłane wystarczy tylko znaleźć tego czego szukamy zwłaszcza haseł i nazw użytkowników.

Jak można dowiedzieć się takich rzeczy ?.

Jeżeli mamy do czynienia z świadomym administratorem sieci to ustawi on blokadę konta, na które chcemy się zalogować a jak wiemy potrzebne jest nam jakieś konto umożliwiające zalogowanie się. Myślący haker nie będzie próbował zgadywać hasła admina gdyż myślący admin poustawiał wszystkie możliwe zabezpieczenia np.: brak możliwości zalogowania się z sieci na dany komputer. Ale od czego jest konto Gościa, które jakby nie było jest domyślnie wyłączone, najbardziej śmieszny jest fakt, że pomimo wyłączenia danego konta w przypadku odgadnięcia jego hasła otrzymamy inny komunikat systemowy. Będzie to komunikat 1331 o treści

„ Błąd logowania : konto jest obecnie wyłączone” . Jaki z tego wniosek mamy hasło tylko próby odgadnięcia hasła spowodowały wyłączenie konta dlaczego by nie spróbować później. Mała informacja konto Gościa w Win2000 ma domyślnie puste hasło czyli jeżeli będziemy próbować wielokrotnego logowania na tym koncie to limit logowania nigdy nie zostanie przekroczony chyba, że zostało to zmienione. Najlepsza metoda to usunięcie konta Gość za pomocą narzędzi DelGuest, które znajdziemy na stronie http://ntsecurity.nu/toolbox co prawda narzędzie to nie ma autoryzacji Microsoftu ale nie wpływa ono na działanie sytemu bynajmniej u mnie tak było kiedy je sprawdzałem pozostaje nam jeszcze druga metoda to zablokowanie go. Ale czy tylko konto Gościa występuję w sieciach można spróbować np. konto pani Marysi z księgowości - głupota ludzka nie zna granic o zgrozo.

Jest taka reklama „ Po co się męczyć ..... cię wyręczy” wpisując kolejne hasła i czekając na wynik skorzystajmy z dobrodziejstw techniki.

NAT ( NetBIOS Auditing Tool ) – dzięki temu narzędziu możemy prowadzić ataki słownikowe na SMB jednak jego możliwości są ograniczone do jednego komputera dodatkowo po odgadnięciu prawidłowej informacji uwierzytelniającej natychmiast próbuje uzyskać dostęp. Jego zaleta to szybkość zaś dostarczenie mu odpowiednich informacji ( jeżeli dobrze zapoznaliśmy się z początkiem artykułu dotyczącego enumeracji ) powoduję, że uzyskanie dostępu powinno być łatwiejsze niż zabranie dziecku cukierka. Dla bardziej wymagających użytkowników polecam SMBGrind narzędzi z firmy Network Associate Inc. Praktycznie zasady działania są takie same ale SMBGrind pracuje szybciej ponieważ pracuje w kilku równoległych wątkach dodatkowo program potrafi fałszować wpisy w logach podstawiając nazwę systemu NetBIOS a nie jego adres IP co nie trudno zmienić.

 

Jak temu wszystkiemu zaradzić?. Microsoft zaleca zablokowanie lub wyłączenie SMB co zostało omówione wyżej. Dodatkowo należy wymusić złożoność hasła, włączenie blokowania kont po określonej liczbie nieudanych logowań, włączenie inspekcji nieudanych logowań oraz przeglądanie dziennika zdarzeń a także wyłączanie nieużywanych kont. Wszystko jest to dostępne w MMC –> Ustawienia zabezpieczeń.

Co jednak możemy zrobić jeżeli nasze hasła przesyłane są przez sieć LAN. Technologia Ethernetu pozwala nam na podsłuchiwanie całej transmisji oraz analizowaniu jej. Królem wśród snifferów dla sieci SMB jest LC3 oraz jego moduł SMBCapture. Jak to się dzieje, że informacje te są tak łatwo dostępne przecież transmisja w sieci jest kodowana a hasło nie jest przesyłane siecią ale używana jest procedura wyzwanie – odpowiedź. Żeby naświetlić problem czytelnikowi musimy zgłębić nieco tajniki algorytmu LM. Przecież hasła są 14 znakowe a złamanie tego hasła nie jest zbyt proste. A więc LM tworzy hasło na podstawie dwóch siedmio znakowych części czyli rozdziela 14 znakowe hasło. Pierwsza część czyli 8 bajtów wyprowadzanych jest z pierwszych siedmiu znaków hasła użytkownika drugie 8 –bajtów wyprowadzane ze znaków od 8 –ego do 14 –ego czyli de facto mamy dwa hasła po 8 –bajtów co dla dzisiejszych mocy obliczeniowych CPU jest drobnostką. Oczywiście można się przed tym bronić utrudniając sniffing za pomocą sieci przełączanych. Ponadto dotyczy to tylko systemów starszych niż Win2000 gdyż zmieniając ustawienia w Win2000 odrzuca on protokół NTLM w wersji 1 akceptując tylko wersje 2, którego bezpieczeństwo i algorytm szyfrowania został znacznie poprawiony. Jednak po co się męczyć przechwytywać informacje w sieci łamać hasła jeżeli wystarczy podszyć się pod serwer a klient sam udostępni nam swoje dane. Atak nazywamy „człowiek w środku” w przypadku SMB możemy go wykonać za pomocą SMBRelay jest to fałszywy serwer SMB, który zbiera informacje o użytkownikach w sieci czyli ich hasła itp. a także potrafi być pośrednikiem mało tego w przypadku stosowania podpisów cyfrowych w komunikacji SMB negocjuje on stosowanie połączenia o mniejszym poziomie bezpieczeństwa czyli bez podpisu cyfrowego. Dodatkowo w logach nic nie znajdziemy bo w zasadzie są to „normalne” połączenia. Brawa dla twórców programu czyli Sir Dystic. Aby zabezpieczyć się przed możliwością używania tego narzędzia należy wymusić stosowanie podpisywania cyfrowego dla klienta i serwera. Na koniec tylko dodam, że istnieje jeszcze możliwości użycia Samby do ataku słownikowego ale to już temat na inny artykuł : ).

 

Nasuwa się tutaj jednak pytanie dlaczego Microsoft znając słabości protokołu SMB stosuje go dalej w swoich systemach komputerowych czyż nie powinien skierować swoich kroków w drugą stronę tak jak to było w przypadku NFS gdzie opracowano nowy całkowicie system plików sieciowych AFS zwiększając jego bezpieczeństwo skalowalność. Z jednej strony możemy zauważyć, że zostały poczynione jakieś kroki w tym kierunku z drugiej strony Microsoft ograniczony jest zapewnieniem kompatybilności ze swoimi starszymi systemami. I tak jak w każdym projekcie bywa - złe założenia mogą powodować, iż nawet dobry system ma wady, które potrafią go dyskredytować jeszcze zanim powstanie. Pisząc ten artykuł nie było moim celem przedstawianie CIFS/SMB jako złego rozwiązania. Ale raczej ukazanie, użytkownikom sieci Microsoft jak niewiele wiemy i ile jeszcze musimy się dowiedzieć abyśmy byli świadomi pewnych zagrożeń. Na tym zakończyłbym te rozważania małą puentą „Nie ma złych systemów są tylko źli informatycy”.

 

Zasoby WWW.

Nbtscan http://www.inetcat.org/software/nbtsacn.html

DumpSec http://www.somarsoft.com

Enum http://www.razor.bindview.com

Nete http://pron.newhackcity.net/~sd/netbios.html

SMBRealy http://pron.newhackcity.net/~sd/smbrealy

SMBGrid http://www.nai.com

LC3 http://www.atstake.com

Specyfikacja CIFS/SMB udostępniana przez Microsoft ftp://ftp.microsoft.com/developr/drg/cifs

Windows 2000 Professional Resource Kit 2000 CD-ROM

Artykuły na temat protokołu NTLM 2 i uruchomienia go dla Win 95/98/2000/NT http://www.suport.microsoft.com/support/kb/articles/Q239/8/69.asp

Omówienie słabych stron szyfrowania LM ( wyzwanie - odpowiedź )

http://www.securityfocus.com/archive/1/7336