SQL: Łamanie haseł zapisanych w credentials lub w linked servers

8-Sie-2017

Jest kilka takich miejsc w SQL Server, gdzie administratorzy czasami umieszczają hasła użytkowników:

  • w definicji linked server, gdzie połączenie ma być wykonywane dla każdego użytkownika lokalnej maszyny z wykorzystaniem zdalnego loginu sql-owego
  • w definicji credentials, które są dalej wykorzystywane do uruchamiania jobów agenta na innym koncie niż konto SQL Agenta

Na pierwszy rzut oka może się wydawać, że te hasła są bezpieczne, bo przecież podczas wprowadzania zostaną wyświetlone gwiazdeczki, a na dodatek w tabelach systemowych hasła też nie można podejrzeć. No ale….

Tutaj https://github.com/NetSPI/Powershell-Modules/blob/master/Get-MSSQLLinkPasswords.psm1 znajduje się skrypt, który w oparciu o zapisy w rejestrze i w oparciu o najwyższe uprawnienia w SQL  Serverze potrafi zaszyfrowane hasło odszyfrować. Dokładniejszy opis tego jak to jest robione znajduje się https://blog.netspi.com/decrypting-mssql-database-link-server-passwords/

Podobnie z credetials. Tutaj jest skrypt: https://github.com/NetSPI/Powershell-Modules/blob/5c2e1490b8f6aad3c1e2905c2fe9af62a179b145/Get-MSSQLCredentialPasswords.psm1 a tutaj opis teorii za nim stojącej: https://blog.netspi.com/decrypting-mssql-credential-passwords/

Warto zauważyć, że w/w linki nie służą włamywaniu się na serwer, ale stanowią pomoc dla administratora, który przecież sam kiedyś te hasła wprowadził i np. je zapomniał. Pamiętajmy, że do uruchomienia powyższych skryptów są potrzebne uprawnienia sysadmin oraz lokalne logowanie na maszynę, na której jest zainstalowany SQL. Otwierane połączenie do SQL to DAC

Dodaj komentarz:

Autor: Rafał Kraik