DNSFS: Najstraszniejszy hak na chmurę, jaki kiedykolwiek zobaczysz
DNSFS: Najdziwniejszy Sztuczka z Chmurowym Magazynowaniem, Jaką Zobaczysz
Zacznijmy od eksperymentu myślowego. Wyobraź sobie, że przechowujesz swoje pliki nie na AWS S3, nie w żadnej wyrafinowanej rozproszonej bazie danych, ale w cache'ach DNS milionów serwerów rozsianych po całym internecie. Twoje dane dosłownie unosiłyby się wokół globu, porozrzucane na urządzeniach, których nie kontrolujesz, w resolverach, o których istnieniu prawdopodobnie nawet nie wiedziałeś.
Brzmi jak wycinek z powieści cyberpunkowej, prawda? Otóż ktoś to faktycznie zbudował.
Odkrycie w Cache'u DNS, Które To Wszystko Zapoczątkowało
Zanim przejdziemy do szalonych rzeczy, porozmawiajmy o czymś, co większość programistów bierze za pewnik: TTL-ach DNS. Kiedy wysyłasz zapytanie o nazwę domeny, resolver cacheuje ten wynik przez określony czas, zanim sprawdzi ponownie. Większość z nas zakłada, że to kilka minut lub godzin maximum.
Ale jest haczyk: niektóre resolvery chętnie cacheują wpisy przez cały tydzień, jeśli odpowiednio je o to poprosisz.
To odkrycie doprowadziło do fascynującego pytania: skoro cache DNS może przechowywać dane tak długo, czy moglibyśmy celowo przechowywać w nich pliki? Nie tylko wyszukiwania domen, ale prawdziwe dane?
Odpowiedź, ku zaskoczeniu wielu, brzmi: tak.
Poznaj DNSFS: Przechowywanie Plików na Widoku
DNSFS czerpie inspirację z wcześniejszego hacka o nazwie PingFS, który przechowywał dane w sekcjach payload pakietów ICMP ping. Problem z PingFS? Musiałeś non-stop pingować tam i z powrotem, żeby utrzymać dane przy życiu. Jeśli przestałeś transmisję, dane znikały.
DNSFS znacząco poprawia ten koncept. Ponieważ resolvery DNS cacheują odpowiedzi, raz zapisawszy fragment danych w cache resolvera, ten fragment wytrwa bez potrzeby ciągłego odpytywania. Resolver robi robotę za ciebie.
Pomyśl o tym przez chwilę. Praktycznie wykorzystujesz infrastrukturę innych ludzi — bez ich wiedzy — jako rozproszony, redundantny system przechowywania plików.
Jak To Właściwie Działa
Techniczna implementacja jest równie sprytna, co niepokojąca.
Żeby to ugryźć, potrzebujesz otwartych resolverów DNS — serwerów, które odpowiedzą na zapytania o dowolną domenę, nie tylko te, za które są odpowiedzialne. Technicznie rzecz biorąc, powinny być odcięte firewallem od publicznego internetu, bo stanowią ryzyko DDoS reflection. Ale tu jest haczyk: miliony urządzeń są wysyłane z błędnie skonfigurowanymi usługami DNS, które są osiągalne z zewnątrz.
System działa przez rozbicie plików na malutkie kawałki, zakodowanie ich jako zapytania DNS i rozproszenie tych zapytań po całym internecie. Każdy resolver, który otrzyma i zcacheuje zapytanie, teraz przechowuje fragment twojego pliku. Żeby odzyskać dane, po prostu odpytujesz te same resolvery i składasz kawałki z powrotem.
Piękno (i zarazem przerażenie) tego systemu polega na tym, że dane wytrwują w cache'u aż do wygaśnięcia TTL — bez potrzeby utrzymywania ciągłego połączenia.
Skanowanie Internetu w Poszukiwaniu Otwartych Resolverów
Tu robi się ciekawie i trochę nieswojo.
Zbudowanie DNSFS wymaga znalezienia otwartych resolverów rozrzuconych po internecie. To oznacza skanowanie miliardów adresów IP, żeby zidentyfikować, które z nich odpowiedzą na zapytania DNS dla dowolnych domen.
Jeden deweloper użył masscan w połączeniu z przemyślanymi regułami BPF (Berkeley Packet Filter), żeby efektywnie wyłapać tylko te resolvery, które będą przydatne — odfiltrowując serwery autorytatywne i inne szumy. Rezultat? Prawie 4 miliony otwartych resolverów DNS rozsianych po całym globie.
Rozkład geograficzny jest zaskakujący. Chiny prowadzą z ponad 1,4 miliona otwartych resolverów, za nimi USA, Korea Południowa, Rosja i Brazylia. Ale ciekawsza metryka: gdy normalizeujesz to względem użytkowników internetu, małe narody jak Saint Kitts i Nevis mają niesamowicie wysoką gęstość resolverów — mniej więcej jeden resolver na 51 osób.
Dlaczego To Ma Znaczenie (Poza Efektem „Wow")
Bądźmy szczerzy: DNSFS absolutnie nie jest produkcyjnym rozwiązaniem storage. Jest wolne, ненадёжное, kompletnie niezaudytowane i prawdopodobnie koszmar bezpieczeństwa. Przeprowadzanie pełnego skanowania internetu w poszukiwaniu otwartych resolverów również budzi poważne pytania etyczne o zgodzie i granicach sieci.
Ale nie o to tutaj chodzi.
DNSFS reprezentuje ten rodzaj kreatywnego, przesuwającego granice myślenia, który posuwa nasze rozumienie systemów sieciowych do przodu. Uświadamia, ile błędnie skonfigurowanej infrastruktury istnieje w internecie, prowokując ważne rozmowy o wzmacnianiu bezpieczeństwa. Demonstruje zaskakującą trwałość cache'owanych danych w systemach rozproszonych. I pokazuje, jak pozornie sztywne protokoły można wykorzystać w nieoczekiwany sposób.
To również przypomnienie, że internet jest o wiele bardziej chaotyczny, niż nam się wydaje. Te miliony otwartych resolverów? Działają na domowych routerach, urządzeniach IoT, sprzęcie enterprise'owym i wszystkim pomiędzy. Większość administratorów nie ma pojęcia, że ich usługi DNS są dostępne z zewnątrz.
Wnioski dla Deweloperów
DNSFS nie będzie wkrótce przechowywać twoich danych aplikacyjnych, ale oferuje cenne lekcje:
Protokoły to tylko punkty wyjścia. DNS został zaprojektowany do resolwowania nazw. To nie znaczy, że jest ograniczony tylko do tego przypadku użycia.
Założenia bezpieczeństwa mają znaczenie. Otwarte resolvery istnieją, bo ktoś coś błędnie skonfigurował. Zawsze audytuj ekspozycję swojej infrastruktury.
Kreatywne ograniczenia rodzą innowacje. Najlepsze hacki często powstają z pracy w ramach nieoczekiwanych limitów. DNSFS istnieje, bo ktoś zadał pytanie „a co jeśli wykorzystamy cache?"
Internet jest dziwniejszy i bardziej plastyczny, niż większość z nas sądzi. Czasem najciekawsze systemy to te, które prawdopodobnie w ogóle nie powinny działać.
Spotkałeś się z nietypowymi exploitami protokołów lub kreatywnymi hackami infrastruktury? Zespół NameOcean uwielbia słuchać o pomysłowych sposobach, w jakie deweloperzy posuwają technologię do granic możliwości.