[PL] Szurkogadanie #38

Homepage:

https://youtu.be/RlvYR905F6M

Description:

Wprowadzenie

Cześć!

Ja jestem Kacper Szurek a to podcast o bezpieczeństwie, z którego dowiesz się jak chronić swoja cyfrową tożsamość - odcinek 38.

W tym tygodniu.

Co to jest atak BadUSB? Czyli jak podpinając Raspberry Pi do routera można monitorować ruch w danej sieci.

Na czym polegał błąd SQL Injection w oprogramowaniu sklepu internetowego Magento oraz jak sklepy używające integracji z Paypalem są używane przez przestępców do sprawdzania poprawności kart kredytowych.

Co oznacza termin trust on first use w odniesieniu do internetowych komunikatorów - czyli o tym jak sprawdzać, kto czai się po drugiej stronie czatu.

Anonimizacja to nie taka prosta sprawa jak mogłoby się wydawać. Dlaczego samo zakrywanie danych w dokumentach nie zawsze wystarczy.

Kopiowanie plików z kontenera Kubernetes powodem wykonania kodu na komputerze administratora - o symlinkach w plikach tar.

A także jak wykorzystując dowiązania symboliczne można było podnieść swoje uprawnienia jeżeli korzystałeś z kart NVIDIA GeForce.

Podcast ten można również znaleźć na Spotify oraz Google i Apple Podcasts oraz Anchor.

Większość informacji do tego odcinka odnalazłem dzięki Weekendowej Lekturze Zaufanej Trzeciej Strony.

Jeżeli ten materiał Ci się spodobał rozważ zostawienie gwiazdki i recenzji w aplikacji Apple Podcasty.

Więcej informacji na temat bezpieczeństwa znajdziesz na naszej grupie od 0 do pentestera na Facebooku.

Zapraszam do słuchania.

1. W dzisiejszych czasach prawie w każdym domu posiadamy dostęp do Internetu.

Podobnie z miejscem pracy, uczelnią czy też kawiarnią.

Wszystko za sprawą routerów i switchy, które współpracując ze sobą umożliwiają nam dostęp do popularnych witryn.

Zazwyczaj bezpieczeństwo domowych rozwiązań opiera się na haśle do Wi-Fi, które należy wprowadzić, aby móc połączyć się z naszą siecią domową.

Inną opcją jest zwyczajowe podłączenie się kablem ethernetowym wprost do urządzenia - wtedy to hasło nie jest już wymagane.

Wszak zakładamy, że nasz dom to nasza twierdza i jeżeli ktoś jest w stanie wejść do mieszkania to mamy zdecydowanie większe problemy niż współdzielenie Internetu z przestępcą.

W firmach sprawa wygląda nieco inaczej.

Zwyczajowo, separuje się tam różne podsieci poprzez użycie VLANów.

Takie podejście umożliwia rozdzielenie różnych segmentów sieci i zwiększa bezpieczeństwo.

Chodzi bowiem o to, aby osoba z zewnątrz, podpinając się kablem do gniazdka znajdującego się w ścianie - nie uzyskała dostępu do naszych danych.

Myśląc o bezpieczeństwie myślimy bowiem o kablach, portach i Wi-Fi.

Ale co z samymi urządzeniami?

Podczas konferencji BSides w Londynie zaprezentowano ciekawą metodę ataku na sprzęt sieciowy.

Sporo routerów bowiem oprócz portów ethernetowych oraz gniazda zasilania posiada również port USB.

Na pierwszy rzut oka może się to wydawać dziwne, lecz ma sporo sensu - zwłaszcza w urządzeniach domowych, a także tych dopasowanych do małych przedsiębiorstw.

Tam istotne jest bowiem, aby sprzęt był jak najbardziej uniwersalny i aby posiadał jak najwięcej różnego rodzaju funkcjonalności.

Przy pomocy takiego portu można bowiem podłączyć drukarkę, sprawiając iż będzie dostępna dla wszystkich użytkowników w sieci albo też podpiąć dysk USB.

Ba, można tak również podpiąć zewnętrzny modem LTE.

Dzięki temu nasza sieć uzyskuje dodatkową warstwę redundancji.

Standardowo ruch jest bowiem kierowany do naszego zwyczajowego dostawcy Internetu.

W przypadku jego awarii, możemy automatycznie użyć naszego zapasowego, mobilnego Internetu.

Jest to szczególnie istotne w czasach pracy zdalnej - kiedy to sporo osób pracuje z zacisza swojego domu.

W takich przypadkach awaria Internetu oznacza brak możliwości pracy.

Stąd też, taki dodatkowy backup jest coraz częściej wybieraną opcją.

Tylko, że takie podejście otwiera okno na nowy rodzaj ataku.

Jeżeli bowiem atakujący posiada fizyczny dostęp do routera, może do jego portu USB wpiąć cokolwiek chce.

W przypadku tej prezentacji do routera firmy Mikrotik wpięto Raspberry Pi Zero.

Jest to platforma komputerowa wymyślona aby wspierać naukę od podstaw.

Za około 100 złotych otrzymujemy miniaturowy komputerek, zdolny do wykonywania zapisanych w nim operacji.

W celu przeprowadzenia ataku programuje się to urządzenie w specyficzny sposób, tak aby symulowało ono, że jest modemem LTE.

Po podpięciu go do portu USB, router rozpoznaje to urządzenie jako interfejs WAN a następnie wysyła request DHCP w celu uzyskania adresu IP modemu.

W odpowiedzi, router zwraca swój adres IP i coś jeszcze.

W pakiecie DHCP oprócz adresu IP można również zawrzeć inne informacje - tak zwane opcje.

Jedną z opcji o numerze 121 jest Classless Static Routes.

Ta opcja pozwala na przekonanie routera, aby cały ruch internetowy, który do niego trafia był automatycznie przekazywany dalej do modemu LTE.

Mamy tutaj zatem do czynienia z atakiem Man in the Middle - kiedy to cały ruch wszystkich użytkowników jest przechwytywany przez atakującego i trafia w jego ręce.

Aby całość działała, należy jeszcze wykonać jedną, dodatkową czynność.

W tym momencie - cały ruch trafia do naszego Raspberry Pi - tylko, że urządzenie to samo w sobie nie posiada dostępu do Internetu.

Należy zatem znaleźć rozwiązanie, pozwalające nie tylko na monitorowanie tego ruchu, ale wysłanie go dalej w świat.

Badacz wykorzystał do tego celu serwer VPN.

W takiej oto konfiguracji cały ruch internetowy oprócz jednego adresu IP trafia do Raspberry Pi.

Tam to możliwe jest logowanie i wyciąganie interesujących nas informacji a następnie ruch ten poprzez serwer VPN jest kierowany dalej, w świat.

Bardzo ciekawy atak, co więcej możliwy do wykonania nie tylko w domowym sprzęcie, ale także w urządzeniach używanych w większych firmach.

Jeżeli bowiem atakujący uzyska fizyczny dostęp do sprzętu sieciowego - może z powodzeniem wpiąć do niego klucz USB.

I to wszystko co musi zrobić.

Zauważ proszę, że nie jest tu wymagany żaden login i hasło.

Co więcej - nie musimy tutaj atakować pojedynczych komputerów.

Router bowiem zbiera ruch z całej sieci.

Co więcej taki atak jest praktycznie niezauważalny dla użytkowników.

Jeżeli zatem, wykorzystują oni strony bez protokołu HTTPS i podają na nich swoje dane do logowania - mogą one zostać z łatwością przechwycone przez atakującego, ponieważ pojawiają się na Raspberry Pi w postaci czystego tekstu.

Co więcej taki atak nie jest drogi.

Samo urządzenie jest malutkie i tanie, co sprawia, że atakujący który raz wpiął je do naszej sieci nie musi po nie wracać.

W najgorszym wypadku straci bowiem tylko parę złotych, a w nagrodę może zyskać dużo więcej - nasze tajne dane.

2. Magento do popularne, darmowe oprogramowanie sklepu internetowego.

Parę dni temu odnaleziono w nim lukę, która pozwala na pobieranie danych z bazy danych bez posiadania żadnego loginu i hasła użytkownika.

Jak to możliwe?

W nowoczesnych stronach internetowych aby chronić się przed atakami typu SQL Injection stosuje się mechanizm Prepared Statement.

W SQL Injection atakujący kontroluje treść zapytania, jakie zostaje wykonane przez bazę danych.

Dzięki temu może on zwrócić dowolny rekord z tej bazy, a nie ten, który był wcześniej założony przez programistę.

Więcej na ten temat możesz znaleźć w odcinku OWASP TOP 10, w którym opowiadam o atakach Injection.

Metoda obrony wygląda następująco:

Programista tworzy zapytanie do bazy danych, które ma być wykorzystane w danym kawałku kodu.

W miejscach, w których mają się znaleźć dane od użytkownika używa pytajników.

Następnie takie gotowe zapytanie oraz dane od użytkowników są przekazywane do odpowiedniej funkcji.

Tam to specjalny mechanizm zajmuje się wszystkimi potencjalnie niebezpiecznymi znakami przekazanymi przez użytkownika, a następnie umieszcza je w zapytaniu w miejscu pozostawionych wcześniej przez programistę pytajników.

I to właśnie w tym mechanizmie znajdował się błąd, który był możliwy do wykorzystania w pewnym specyficznym przypadku.

Magento używało bowiem mapowania obiektowo-relacyjnego.

W tym podejściu nie trzeba pisać całego zapytania z palca.

Wykorzystuje się tutaj odpowiednie funkcje, które w tle tworzą prawidłowe zapytanie za nas.

Jedną z dostępnych opcji było użycie słów kluczowych from oraz to.

Dzięki temu można tworzyć zapytania, zwracające nam produkty, których cena jest większa niż x ale mniejsza niż y.

Błąd pojawiał się gdy słowa kluczowe from oraz to znajdowały się w jednym zapytaniu.

Zapytanie było bowiem tworzone po kolei.

Najpierw skrypt podmieniał pytajnik w polu from.

Zapytanie z podmienioną wartością było następnie wykorzystywane w kodzie, który podmieniał pytajnik na wartość to.

Tylko, że programiści zapomnieli o jednym, specyficznym przypadku.

Co bowiem w sytuacji, gdy użytkownik jako dane do pola from podał nie liczbę, ale tekst zawierający pytajnik?

Wtedy to po przeprocesowaniu pierwszego pola przez skrypt, stworzone w taki sposób zapytanie zawierało dodatkowy pytajnik - w środku pola from pomiędzy pojedynczymi cudzysłowami.

A to sprawiało, że gdy dochodziło do podmiany pola to - funkcja znajdowała dwa wystąpienia pytajnika.

Jedno - prawidłowe - podane przez programistę oraz drugie - dodatkowe, podane przez użytkownika w polu from.

Magento w takim wypadku podmieniało oba pytajniki na treść podaną do pola to.

To sprawiało, że w treści zapytania pojawiały się podwójne cudzysłowy.

Dzięki temu możliwe było takie manipulowanie zapytaniem do bazy danych, że zwracało ono dowolne wyniki.

Co ciekawe kawałek kodu odpowiedzialny za tą funkcjonalność istniał w kodzie Magento już od dłuższego czasu.

3. Pozostając dalej w temacie Magento.

W Internecie można kupić praktycznie wszystko.

Począwszy od kawy, komputera, a skończywszy na broni czy tez narkotykach.

Można tez nabyć numery kart kredytowych.

Tak, tak - to nie pomyłka.

Istnieją grupy osób, które sprzedają tego rodzaju informacje.

Tego rodzaju biznes wygląda następująco:

Przy pomocy różnego rodzaju technik - chociażby phishingu czy też włamań na serwery, zbiera się numery kart od niczego nieświadomych użytkowników.

Wśród przestępców, tak jak wśród innych zawodów, istnieją różnego rodzaju specjalizacje.

Jedni odpowiedzialni są za zbieranie numerów kart a inni wykorzystują tak zebrane informacje do zakupów towaru.

Potem tak uzyskane dobra są sprzedawane i czyste pieniądze trafiają do rąk przestępców.

Dane kart kupuje się w partiach - po kilkadziesiąt, kilkaset sztuk.

Oczywiście mało kto jest w stanie zagwarantować 100% działanie każdej karty z partii.

Karty przecież mają określoną datę ważności, ludzie rezygnują z niektórych kart czy też blokują je gdy są pewni wycieku.

Najpierw karty należy zatem sprawdzić - to znaczy upewnić się iż podany numer jest działający i może posłużyć do złośliwej transakcji.

Ostatnio przestępcy wykorzystują nowy pomysł na wykonanie tego procederu.

Magento pozwala na integrację z PayPalem - czyli ze stroną oferującą usługi płatnicze.

Dzięki temu użytkownik płaci na stronie PayPala - a sklep praktycznie natychmiastowo otrzymuje informację na temat statusu takiej transakcji.

Co więcej - przy pomocy PayPala można także płacić używając kart płatniczych.

I to właśnie ta metoda jest używana w złośliwy sposób.

Przestępcy bowiem inicjalizują transakcję na zerowa kwotę, wykorzystując skradzione numery kart.

W zależności od kodu odpowiedzi zwracanej przez serwer wiedzą, czy numer karty jest prawidłowy.

Co więcej - ponieważ de facto nic nie kupują, ofiara nadal nie jest świadoma, że ktoś posiada jej dane.

Wszak - nadal żadne pieniądze nie zostały jeszcze ukradzione.

4. Z roku na rok zwiększa się świadomość użytkowników internetowych komunikatorów.

Coraz częściej rozumiemy, że korzystając z tego rodzaju narzędzi sprzedajemy swoja prywatność w zamian za wygodę.

Wszak serwisy te mogą w automatyczny sposób śledzić treści przesyłanych przez nas wiadomości, a następnie wykorzystywać je do targetowanych reklam, które idealnie dopasowują się do naszych potrzeb.

Rozmawiasz z narzeczoną o nowym pięknym domu?

Widzisz w swojej przeglądarce oferty biur nieruchomości.

Piszesz z kolegą o nowym samochodzie - wyświetlają Ci się informacje o ratach 0% przy zakupie tegorocznego rocznika.

Stąd też rosnącą popularność zyskują komunikatory oferujące tak zwany end-to-end encryption.

W teorii dane są szyfrowane na naszym telefonie i w takiej postaci go opuszczają.

Następnie po drugiej stronie, tak przesłana wiadomość jest deszyfrowana i odczytywana przez odbiorcę.

O ile klucze używane do całego procederu nie zostały skompromitowane - zewnętrzne podmioty nie są w stanie odczytać tak przesyłanych wiadomości.

Ale ta forma komunikacji posiada jeden minus.

Chodzi o termin TOFU czyli Trust on First Use a luźnie tłumacząc to na polski - zaufanie podczas pierwszego użycia.

Aby bowiem całe to szyfrowanie miało sens musimy wiedzieć, że po drugiej stronie rzeczywiście mamy do czynienia z osobą, z którą chcemy się skontaktować.

Co bowiem z tego że wyślemy zaszyfrowaną wiadomość, jeżeli trafi ona do innej osoby niż ta, której oczekujemy.

Zazwyczaj działa to następująco:

Podczas instalacji oprogramowania, generuje ono unikalny klucz służący do szyfrowania.

Składa się on z dwóch części - publicznej oraz prywatnej.

Identyfikator tej publicznej części jest wysyłany do naszego rozmówcy w formie kilkudziesiecioznakowego identyfikatora.

Osoba po drugiej stronie - powinna skontaktować się z nami przy pomocy innego środka komunikacji - najlepiej osobiście, i porównać wyświetlany na telefonie identyfikator, z tym, który należy do nas.

Jeżeli wszystko się zgadza - mamy pewność, że wiadomość będzie mogła zostać odszyfrowana tylko przez naszego znajomego.

I tak wszystko działa aż do pewnego momentu, kiedy to albo my albo nasz znajomy kupuje nowy telefon lub też ponownie instalujemy daną aplikację.

Wtedy to klucze generowane są na nowo, a naszym znajomym w oknie czatu pojawia się drobna informacja, iż nasze klucze zostały zmienione.

Gdybyśmy chcieli się trzymać sztywno protokołu, w momencie natrafienia na taką informację powinniśmy ponownie skontaktować się z naszym znajomym przy użyciu bezpiecznego łącza i potwierdzić jego nowy klucz.

Ale umówmy się, kto tak robi w rzeczywistości?

Jak zatem rozwiązać problem pierwszego użycia?

Teraz przedstawię propozycję firmy Keybase.

Tutaj - ponownie - każde urządzenie - niekoniecznie telefon, generuje swój unikalny klucz, wykorzystywany do szyfrowania.

Tylko, że podczas dodawania nowego urządzenia do naszego konta - ten nowy klucz, jest podpisywany poprzez zaufany klucz, znajdujący się na którymś z naszych innych urządzeń.

Dzięki temu - nasz odbiorca nie musi za każdym razem kontaktować się z nami, gdy używamy nowego urządzenia.

Wystarczy tylko, że sprawdzi czy nowy klucz jest podpisany przy pomocy klucza, któremu wcześniej ufaliśmy.

Zakłada się tu bowiem, że ufamy wszystkim wcześniejszym urządzeniom.

Więc, jeżeli któreś z nich twierdzi - że nowy klucz jest nasz - również i ten klucz zaczynamy traktować jako zaufany.

Czy takie rozwiązanie się sprawdzi i zostanie wykorzystane przez inne podmioty?

Czas pokaże.

5. Anonimizacja danych to nie taka prosta sprawa jak mogło by się wydawać.

W przeszłości było już kilka wpadek związanych z tym tematem.

Chociażby udostępnianie plików w formacie PDF, gdzie niektóre dane zostały zaciemnione przy pomocy czarnego prostokąta.

I rzeczywiście - taki sposób dochowania tajemnicy mógłby się sprawdzić, gdyby tak przygotowany plik został wydrukowany.

Tylko, że metoda taka niekoniecznie działa - jeżeli tak zanonimizowany plik jest udostępniany dalej w formacie PDF.

Ten prostokąt jest bowiem kolejną, dodatkową warstwą, nakładaną na źródłowy dokument.

To co znajduje się pod spodem tak nałożonej grafiki, dalej jest zapisane w pliku i może być w bardzo prosty sposób odzyskane.

Ale do nie do końca prawidłowej anonimizacji może również dojść w innym wypadku.

Jakiś czas temu mieliśmy do czynienia z pierwszą karą GDPR nałożoną w Polsce.

Sprawa dotyczy firmy, która pobierała z publicznych rejestrów informacje o przedsiębiorcach, a następnie tak pobrane dane wykorzystywała w swoich projektach.

Urząd Ochrony Danych Osobowych na swojej stronie opublikował decyzję o karze.

Postanowił jednak zanonimizować nazwę firmy.

Cały trud poszedł jednak na marne.

Dlaczego? Jak możemy dowiedzieć się na łamach portalu prywatnik.pl w treści dokumentu zamieszczono taką oto informację:

“Spółka zamieściła na swojej stronie internetowej w zakładce Dane i prywatność/Informacja o przetwarzaniu danych osobowych” informacje o przetwarzaniu danych osobowych.

Informacja ta była dostępna na podstronie /RODO.

Wystarczyło więc proste zapytanie do Google z nazwą zakładki aby ustalić nazwy potencjalnych firm, które mogły otrzymać karę.

Wykorzystując te informacje można było z dużym prawdopodobieństwem określić z jaką dokładnie firmą mamy do czynienia.

Wszak fraza “Dane i prywatność”/”Informacja o przetwarzaniu danych osobowych” jest na tyle unikalna iż nie widnieje na dużej ilości stron.

Zwłaszcza w tej konkretnej kolejności wyrazów.

Tak oto anonimizacja okazuje się całkowicie nieskuteczna.

Zastanawia także dlaczego urząd postanowił ocenzurować ten dokument.

Na całe szczęście firma, która otrzymała karę sama się ujawniła - co pokazuje iż podana wyżej metoda odzyskiwania poufnych danych okazała się skuteczna.

6. Kubernetes to oprogramowanie do automatyzacji instalacji, skalowania i zarządzania aplikacji skonteneryzowanych.

Umożliwia więc uruchomienie naszego kodu w bardzo prosty sposób, w kilku węzłach roboczych.

Kubernetes uruchamia za Ciebie kontenery i konfiguruje loadbalancing.

Do zarządzania całym narzędziem używa się komendy kubectl.

Jedną z opcji, która jest tam dostępna jest cp - pozwalająca na kopiowanie danych pomiędzy kontenerami i maszyną użytkownika.

Jak taka operacja działa od środka?

Jeżeli chcemy skopiować jakieś pliki z kontenera na nasz komputer - są one pakowane do pliku tar w środowisku kontenera.

Następnie ten to plik jest przesyłany na nasz komputer gdzie następnie jego treść jest wypakowywana i dostępna dla nas.

Trzeba przyznać iż jest to spore udziwnienie prostej, wydawało by się, komendy.

Owszem, ma to sens - w przypadku wielu plików - aby najpierw je spakować i przesłać jako jeden, duży plik na komputer użytkownika.

No dobrze, ale gdzie tkwi błąd w tej funkcjonalności?

Podczas tworzenia plików tar oprócz plików, mogą one zawierać informację na temat symlinków.

Symlink albo inaczej dowiązanie symboliczne, to coś w stylu skrótu pod Windowsem.

Wskazuje on, odwołując się za pomocą nazwy, na dowolny inny plik lub katalog.

Ten mechanizm często bywa powodem błędów bezpieczeństwa, ponieważ podczas wypakowywania plików - jeżeli nie sprawdzimy, czy są to zwykłe pliki czy też symlinki - możemy przez przypadek stworzyć odnośnik prowadzący w zupełnie inne miejsce niż nam się wydaje.

Ale jak stworzenie pliku może doprowadzić do wykonania kodu na serwerze?

Atak wygląda następująco.

Atakujący przygotowuje specjalnie spreparowany kontener z popularnym oprogramowaniem, na przykład serwerem WWW.

Jest to dokładna kopia oficjalnego kontenera, z tym że zmieniono w niej jeden, konkretny plik - a mówiąc dokładnie plik tar.

Ten to podczas swojego wykonania do wynikowego archiwum dodaje dwa dodatkowe pliki - z których jeden jest dowiązaniem symbolicznym a drugim plikiem .bashrc.

Tak przygotowany obraz jest pobrany z repozytorium na komputer użytkownika i uruchomiony w infrastrukturze Kubernetesa.

Teraz następuje długie oczekiwanie na użytkownika, który w pewnym momencie zechce skopiować jakiś plik z kontenera na swój komputer.

W tym celu wykonuje komendę kubectl cp.

Wtedy to plik wybrany przez użytkownika jest pakowany w kontenerze przy pomocy programu tar.

Tylko, że nie przez oryginalną wersję tylko lekko zmodyfikowaną - która dokleja do takiego archiwum złośliwą treść.

Tak przygotowany plik tar jest następnie kopiowany na maszynę użytkownika a następnie wypakowywany do bieżącego katalogu.

Tutaj do wypakowywania nie używa się komendy tar - a kawałka kodu stworzonego w języku Go.

Ten to kawałek kodu - broni przed atakami path traversal - nie pozwalając na zapisanie pliku w katalogu, który znajduje się wyżej w hierarchii od bieżącego.

Ale równocześnie pozwala on na stworzenie na dysku dowiązania symbolicznego.

A więc najpierw tworzony jest symlink, który wskazuje do katalogu /proc/self/cwd/.

Drugi plik ze złośliwą komendą natomiast, znajduje się w podkatalogu, o nazwie takiej samej jak wcześniej stworzony symlink.

Ponieważ to dowiązanie zostało stworzone wcześniej, skrypt próbując zapisać plik do tego katalogu - nie zapisuje go do bieżącego katalogu - tak jak założył programista - a do katalogu wskazanego przez dowiązanie.

A ponieważ wykorzystujący podatność kontroluje treść pliku tar - może wskazać na dowolny katalog w systemie użytkownika.

Tym razem wskazuje się bieżący katalog zalogowanego użytkownika i tworzy się w nim plik .bashrc.

Zawartość tego pliku jest bowiem automatycznie wykonywana przez system gdy uruchamiana jest nowa instancja basha.

Tak to poprzez pobranie pliku ze złośliwego kontenera można doprowadzić do wykonania kodu na komputerze ofiary.

7. Ten odcinek jest mocno techniczny.

Teraz o podniesieniu uprawnień w systemie Windows przy użyciu oprogramowania firmy NVIDIA.

NVIDIA GeForce Experience jest instalowany automatycznie w systemie, w którym używana jest karta graficzna GeForce tegoż producenta.

Oprogramowanie to pozwala na przechwytywanie grafiki a także transmisje live do serwisów streamingowych.

O podniesieniu uprawnień mówimy wtedy, kiedy użytkownik może wykonać jakąś akcję, której normalnie nie powinien móc wykonać.

W Windowsie zazwyczaj chodzi zatem o sytuacje, w której normalny użytkownik, który nie należy do grupy administratorów - może wykonać dowolna komendę na danym systemie.

Czyli, chociażby stworzyć nowe konto administratora.

Zazwyczaj podczas wykorzystywania i odnajdowania tego rodzaju podatności zaczyna się od zlokalizowania procesów z wysokimi uprawnieniami.

Po odnalezieniu takich procesów sprawdza się, czy możliwe jest przekonanie ich do wykonania jakiejś dodatkowej czynności.

Jeżeli proces działa z uprawnieniami SYSTEM - czyli najwyższymi możliwymi uprawnieniami, to ma on dostęp do każdego katalogu czy też pliku znajdującego się na dysku twardym.

Może zatem odczytywać a także zapisywać wszędzie tam, gdzie zwykły użytkownik nie może.

W tym przypadku chodziło o zapisywanie danych do pewnego specyficznego pliku.

To zapisywanie odbywało się z poziomu konta SYSTEM.

Ale dostęp do tego pliku miał każdy użytkownik na danym systemie - każdy czyli nawet zwykłe konto użytkownika.

A taka sytuacja jest niebezpieczna.

Dlaczego? Ponieważ podobnie jak w sytuacji z Kubernetesem, pod Windowsem można stworzyć dowiązanie symboliczne o ile posiada się dostęp do danego pliku.

Wtedy to - proces, zapisując dane do takiego pliku - tak naprawdę zapisuje je w inne miejsce, wskazane przez użytkownika przy pomocy dowiązania.

Do stworzenia symlinków można użyć narzędzia symboliclink-testing-tools stworzonego przez James Forshaw.

Tutaj ważna uwaga: aby cały proces się udał, katalog w którym tworzymy dowiązanie musi być pusty.

Tak to możemy zapisać treść wygenerowaną przez oprogramowanie NVIDIi do kontrolowanego przez nas pliku w innym katalogu niż spodziewa się tego program.

Ale aby podnieść swoje uprawnienia fajnie było by kontrolować treść, jaka jest tam zapisywana.

W tym wypadku było to proste - aplikacja zapisywała bowiem adres URL, kontrolowany przez użytkownika.

Cały exploit wyglądał zatem następująco.

Najpierw należy uruchomić komputer w trybie safe mode.

Dzięki temu serwis NVIDIi się nie załaduje.

Jest to konieczne, ponieważ trzeba usunąć pliki z katalogu - tak aby móc stworzyć dowiązanie symboliczne.

A jeden z plików nie może być usunięty, ponieważ jest używany przez tą usługę.

Potem tworzony jest symlink, wskazujący na katalog Startup.

Teraz wystarczy już tylko poczekać aż na komputer zaloguje się użytkownik z uprawnieniami administratora.

Wtedy to w ramach jego konta wykona się kod z katalogu Startup - w którym to możemy zamieścić dowolną komendę.

Taka ścieżka wykonania wydaje się być mało prawdopodobna, demonstruje jednak dlaczego zapis do pliku poprzez proces z wysokimi uprawnieniami powinien być wykonywany z dochowaniem najwyższej staranności.

8. Jeden z użytkowników Twittera opublikował bardzo interesujący wpis.

Brzmi on następująco:

Używam menadżera haseł.

Wszędzie mam ustawione dwuskładnikowe uwierzytelnienie.

Kiedy jakaś strona prosi mnie o odpowiedzi na pytania, które mogłyby posłużyć do odzyskania mojego hasła - generuję unikalny 32-znakowy ciąg.

Nie używam nazwiska panieńskiego mojej matki, imienia mojego zwierzaka i innych, publicznie dostępnych danych jako hasła.

Monitoruję swój adres email w poszukiwaniu włamań a także przeglądam wydatki na swojej karcie kredytowej.

Wydaje mi się, że robię wszystko aby ochronić swoje cyfrowe życie.

Ale czy to wystarczy?

Dalej stara się uzyskać informację - czy można wynająć firmę, która za pieniądze sprawdziłaby - czy jego życie jest tak bezpieczne jak mu się wydaje.

Owszem tego rodzaju usługi istnieją dla dużych firm oraz gwiazd wielkiego formatu - ale czy zwykły Kowalski ma jakąś alternatywę?

A co wy o tym sądzicie?

Jakie dodatkowe porady przekazalibyście użytkownikowi Twittera aby jeszcze lepiej zabezpieczył swoje cyfrowe JA?

Dajcie znać w komentarzach.

I to już wszystko w tym odcinku.

Serdecznie zapraszam do subskrypcji kanału a my widzimy się już za tydzień.

Cześć!

1 2 3 4 5 6 7 8

Timeline: