22.01.2015 | 11:02

avatar

Adam Haertle

Nowy rodzaj ataku DDoS z wykorzystaniem serwerów MS SQL

W niedawnym ataku na stronę WWW atakujący wykorzystał mało znaną właściwość serwerów MS SQL, pozwalającą na uzyskanie 22-krotnego wzmocnienia ataku. Podatnych serwerów może być około 700 tysięcy, zatem warto przyjrzeć się problemowi.

Podstawowym narzędziem ataków DDoS jest wykorzystanie tzw. wzmocnienia (amplification). Polega ono na znalezieniu usług i serwerów, które po otrzymaniu krótkiego zapytania ze sfałszowanego adresu nadawcy prześlą na fałszywy adres dłuższą odpowiedź. Dzięki temu atakujący może np. wykorzystując łącze o przepustowości 100Mb/s wygenerować atak o mocy 10 czy 100 razy większej, ukrywając jednocześnie swoją tożsamość.

Ciekawe pakiety

W grudniu witryna WWW miasta Columbia padła ofiarą ataku DDoS. Atakujący wykorzystywał różne popularne techniki ataku takie jak wzmocnienie SSDP czy NTP. Części pakietów nie udało się jednak przypisać do żadnego znanego rodzaju ataku i poddano głębszej analizie. Wyglądały one tak:

Fragment listy pakietów

Fragment listy pakietów

a tak wyglądała ich zawartość:

Zawartość pakietów

Zawartość pakietów

Mamy więc pakiety UDP przychodzące na port 1434 i zawierające informacje o serwerach MS SQL. Jest to wynik działania usługi SQL Server Resolution Service, która w oparciu o SQL Server Resolution Protocol udziela klientowi informacji o konfiguracji serwera. Usługa ta jest aktywna na wszystkich serwerach MS SQL od wersji SQL Server 2000. Shodan wskazuje, że w sieci dostępne jest ponad 700 000 potencjalnie podatnych serwerów.

Osiągane w ten sposób wzmocnienie ataku zależy od konfiguracji wykorzystywanego serwera, ale średnio można przyjąć, że wyniesie ok 22x. Przykładowy skrypt w Pythonie testujący podatność serwera:

import socket
     HOST_IP = "192.168.1.1"
     sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     sock.connect((HOST_IP, 1434))
     qry = bytes.fromhex('02')
     sock.send(qry)
     ans = sock.recv(5120)
     print(ans)

Wyłączenie usługi na serwerze może nie być najlepszym rozwiązaniem, ponieważ może z niej korzystać cześć narzędzi bazodanowych. Znacznie lepiej jest trzy razy rozważyć sens umieszczania serwera MS SQL na publicznym adresie IP przy braku ograniczeń na ruch przychodzący i wychodzący.

Autorzy ataków DDoS szybko przyswajają rynkowe nowinki, zatem możemy się spodziewać, że wkrótce do ataków NTP czy SSDP dołącza także ataki MC-SQLR. Administratorzy serwerów MS SQL  – filtrujcie ruch lub chowajcie serwery w sieci wewnętrznej zanim dowiecie się, że były wykorzystane do ataku.

Powrót

Komentarze

  • avatar
    2015.01.22 13:16 k0sM3n

    tak napewno. Baza na publicznym ip bez zabezpieczen. Adam mysl troche

    Odpowiedz
    • avatar
      2015.01.22 13:48 Adam

      Przeczytaj jeszcze raz treść zdania, które sprawia Ci problem.

      Odpowiedz
    • avatar
      2015.01.22 14:34 rork

      To, że się da postawić serwer MS SQL na publicznym adresie, bez zabezpieczeń oznacza tylko jedno – że takich serwerów znajdziemy sporo…

      Odpowiedz
  • avatar
    2015.01.22 13:36 dokładnie

    No właśnie, Adam.

    Odpowiedz
  • avatar
    2015.01.22 15:35 mark

    „wykorzystując łącze o przepustowości 100MB”

    Wybaczcie czepialstwo, ale przepustowości nie mierzy się w MB lecz w bitach na sekundę.

    Odpowiedz
    • avatar
      2015.01.22 17:32 george

      Czemu? Przecież można podać długość przy rodzenia w m zamiast w cm. Przeliczyć nie potrafisz ;p?

      Odpowiedz
      • avatar
        2015.01.23 07:40 mark

        Chcesz powiedzieć, że dla Ciebie m (metry) to cm/s (centymetry na sekundę)?
        Poza tym nie wiem czego długość chcesz podawać przy rodzeniu. Chyba, że „przyrodzenia”. Obvious troll is obvious. :/

        Odpowiedz
      • avatar
        2015.01.23 11:14 ASSmodeus

        Jednostki czasu brakuje….

        Odpowiedz
        • avatar
          2015.01.26 02:23 vegii

          A jeśli chodzi o uwalenie pakietu shared-hostingu? :)

          Odpowiedz
    • avatar
      2015.01.28 09:35 sp

      100MB czyli jakieś 800 Mbps :P

      Odpowiedz
      • avatar
        2016.01.20 14:34 Kamil

        Nie prawda. 100 MB = 800 Mb, dopiero 100 MB/s = 800 Mbps (po angielsku). Ale po takim czasie, to pewnie w artykule nikt już nie będzie poprawiał, tym bardziej, że w slangu coraz częściej stosowany jest taki skrót myślowy, jaki zaprezentowałeś. :-)

        Odpowiedz
        • avatar
          2016.01.20 15:39 adamh

          Poprawione.

          Odpowiedz
          • avatar
            2016.01.20 16:00 Kamil

            A jednak. Dziękuję bardzo. :-)

  • avatar
    2015.01.22 20:50 czesław

    Ja też się zastanawiam jaki jest sens wystawiania portu 1434 na świat. Przecież są VPN i RDP, więc w czym problem administrować czy programować zdalnie?

    Ta liczba 700k tez przesadzona, kurcze nigdy nie spotkałem się z serwerem mssql wystawionym na zewnątrz.

    Odpowiedz
    • avatar
      2015.01.25 00:38 Krzysztof

      To brzmi całkiem realnie. Sam „padłem” ofiarą MS SQL Slammera w roku 200x przez po prostu omyłkowe ACLe na publiczny DMZowy adres serwera. A przy wielu projektach, które skanują dostępne usługi w sieci internet wykorzystanie takich „ofiar”, to tylko kwestia czasu…

      Odpowiedz

Zostaw odpowiedź do czesław

Jeśli chcesz zwrócić uwagę na literówkę lub inny błąd techniczny, zapraszamy do formularza kontaktowego. Reagujemy równie szybko.

Nowy rodzaj ataku DDoS z wykorzystaniem serwerów MS SQL

Komentarze