W tym artykule opiszemy nietypowy sposób pozwalający obejść wszystkie rozwiązania do bezpieczeństwa i to nie są żarty!

Załóżmy, że chcesz przenieść dane w firmie z jednego komputera na inny. Jeśli korzystasz z publicznych usług pocztowych, protokołów takich jak HTTP/HTTPS, FTP lub inne, systemy takie jak DLP (zapobieganie utracie/wyciekowi danych), jeśli są odpowiednio skonfigurowane w Twojej firmie powinny z łatwością wykryć i zapobiec temu działaniu. Okazuje się, że można znaleźć na to obejście, które potrafi oszukać wszystkie systemy bezpieczeństwa. Obejście to bazuje na technice wykradania danych poprzez wartości kolorów pikseli monitora, w której ekran jest używany jako kanał konwersji bitów.

 

Wprowadzenie

 

Nie tylko rozwiązania DLP mogę powodować ograniczenia przed wyciekiem danych, czy też ich bezpośrednim kopiowaniu na inny komputer. Niektóre firmy zabezpieczają się także przed kopiowaniem jakichkolwiek danych nawet podczas zdalnych połączeń sesji terminalowych np. przez RDP (zarówno z i do hosta, do którego się łączymy). Również inne metody połączenia do innego komputera przez konsolę VMware lub VNC mogą ograniczać możliwość przesyłania plików – z oczywistych powodów. Jako że przesyłanie kodu jest stosunkowo łatwiejsze do uzyskania za pomocą dostępnych na rynku technik, tak późniejsza eksfiltracja danych (wykradanie) nie należy już do prostych technik.

 

Jak omijane są współczesne systemy zabezpieczeń?

 

Nie tak dawno pisaliśmy o technice zwanej stenografia komputerowa pozwalającej na ukrywanie kodu w obrazie, dzięki której cyberprzestępcy mogą nadal czuć się bezkarni i niewykrywalni w sieci przez specjalistyczne oprogramowanie do bezpieczeństwa (przykład opisu takiego złośliwego oprogramowania znajdziesz tutaj). Ma to swoje zalety i dlatego ciągle powstają nowe metody pozwalające niezauważalnie kopiować i wykradać dane.

Do napisania tego artykułu zainspirował nas ciekawy koncept narzędzia o nazwie o PTP-RAT, który pozwala na wykradanie danych przy użyciu zdalnego połączenia do komputera (RDP, konsola VMWare, VNC) i migotającego obrazu wyświetlanego podczas sesji na ekranie. Narzędzie napisane jest w języku .NET, a jego twórcą jest Alan Monie. Oparte jest na architekturze klient-serwer.

 

Proof-of-concept narzędzia PTP-RAT

 

Początkowo twórca narzędzia w celu wykradzenia danych z komputera próbował wykorzystać pomysł Dave Lodga bazujący na kodowaniu danych w seryjnych kodach QR. Lecz w trakcie testów okazało się, że nie był to właściwy pomysł, ponieważ ograniczenia pojemnościowe kodu QR powodowały, że przeniesienie nawet 1MB zajmowało mu dużo czasu. Autor postanowił zatem zwiększyć przepustowość poprzez kodowanie danych przy użyciu indywidualnych wartości kolorów w pikselach (podobnie jak w steganografii) i miganiu ekranu zdalnego. Do tego celu skonstruował klienta PTP, który mógł przechwycić migający podczas połączenia RDP ekran i zrekonstruować z niego dane. W testach okazało się, że dla typowej rozdzielczość ekranu komputera 1920 × 1080 pikseli z 24-bitowym kolorem można było zakodować prawie 6 MB danych w jednym obrazie. Metoda oferowała zadowalające wyniki w sieci lokalnej. Jednak w przypadku testów, gdy połączenie RDP odbywało się na wolniejszych łączach (z mniejszą przepustowością) okazało się, że protokół RDP nieznacznie zmieniał wartości kolorów, tak że nie były one zauważalne dla człowieka, ale niszczyły zakodowane dane. Alan nie był w stanie zakodować tyle danych, ile początkowo się spodziewał. W finalnej wersji kodu PTP-RAT postanowił dać dobry margines błędu i zamiast kodować trzy bajty na piksel, postanowił zmienić kodowanie z dokładnością do 3 bitów na piksel (1 bit dla każdej wartości RGB w pikselu) w celu obsługi „błędów” kompresji protokołu RDP. Po wprowadzeniu tej zmiany i przetestowaniu przez połączenie RDP udało się przesłać 3 megabajtowy plik w ciągu kilku sekund.

 

Jak działa PTP-RAT?

 

Każdy błysk ekranu zaczyna się od nagłówka zawierającego charakterystyczny ciąg znaków „PTP-RAT-CHUNK”, po którym następuje sekwencja kolejnych numerów obrazów. Uruchomiony na komputerze klient PTP zaczyna robić zrzuty ekranu z częstotliwością dwukrotnie większą niż częstotliwość transmisji (częstotliwość Nyquista).

UWAGA! Współczynnik częstotliwości Nyquista to minimalna szybkość, z jaką sygnał może być próbkowany bez wprowadzania błędów.

Jeśli klient wykryje prawidłowy nagłówek, dekoduje informacje o kolorze z pikseli i czeka na następny błysk. Gdy tylko prawidłowy nagłówek nie zostanie wykryty, rekonstruuje wszystkie błyski i zapisuje wynik w pliku.

Twórca narzędzia PTP-RAT jeszcze nie opublikował jego kodu, lecz sprawdziliśmy go skanerem VirusTotal i otrzymaliśmy wynik 11/70 silników AV. Narzędzie samo w sobie jest bardzo lekkie (zajmuje 72 KB !!!) i skopiowanie jego kodu (nawet binarnie) nie stanowi najmniejszego problemu.

PTP-RAT w Virus Total

 

Scenariusz wykradania danych z komputera

 

Załóżmy, że nasz atakujący jest zalogowany na komputerze z systemem operacyjnym Windows 10. Na nim posiada otwartą sesję na zdalnym serwerze Windows 2016 zlokalizowanym gdzieś w centrum danych (w naszym przypadku Microsoft Azure). Sesja RDP ma poblokowane wszystkie możliwości kopiowania przez schowek oraz zblokowany transfer plików.

W naszym scenariuszu wykorzystamy narzędzie PTP-RAT do przekopiowania naszego ulubionego narzędzia do zabawy z biletami kerberos – kekeo.exe (plik zajmuje 579KB) z Windowsa 2016 na Windows 10.

 

Klient PTP-RAT (Receiver)

 

Powyższy rysunek przedstawia pulpit Windows 10 z uruchomionym narzędziem PTP-RAT działającym jako Klient (receiver) do odbierania danych z interfejsu ekranu. Klient w tym momencie jest aktywowany i czeka na odpowiedź z serwera PTP w celu zakończenia swojego procesu próbkowania (współczynnikiem Nyquista). Pomyślne zakończenie procesu pobierania próbek z ekranu dostarczy dane z eksfiltracji danych z ekranu – zostanie przesłany plik.

 

Serwer PTP-RAT (Sender)

 

Powyższy rysunek przedstawia komputer z Windows 2016 z uruchomionym narzędziem PTP-RAT działającym jako serwer do wysyłania danych do klienta PTP-RAT uruchomionego na Windows 10 za pomocą migania ekranu. Po kliknięciu przycisku „Send file” i wybraniu pliku „kekeo.exe” ekran monitora komputera zacznie migać szarym ekranem. Ukryty zostanie także kursor myszy, aby nie powodować zakłóceń w pikselach.

Tutaj odbywa się cała magia. Po wybraniu kekeo.exe i wybraniu „Open” ekran monitora komputera wykonał 2 sekwencje obrazów, niczym w filmie Kaszpirowskiego.

Pierwszy zakodowany obraz (pierwsza sekwencja)
Drugi zakodowany obraz (druga sekwencja)

Scenariusz niczym z filmu science fiction, migoczące obrazy, przez które przesyłane są dane. Brzmi to interesująco. W tym momencie rozpoczął się proces próbkowania danych. Plik wyjściowy (dane eksfiltrowane) zostaną przesłane (wyświetlane), a na naszym komputerze z Windows 10 z uruchomionym klientem PTP-RAT pojawia się okno dialogowe do zapisania pliku i podania jego nazwy.

 

Zapisanie wykradzionych danych

 

Po pomyślnym zakończeniu procesu próbkowania z wykorzystaniem 2 szarych ekranów na komputerze z uruchomionym narzędziem PTP-RAT w trybie klienta (Windows 10) pojawi się okno dialogowe zapisywania plików i będziemy mogli z powodzeniem zapisać plik pod nazwą „kekeo.exe”. W celu sprawdzenia, czy cała komunikacja się powiodła uruchamiamy plik kekeo.exe na naszym komputerze i nie dowierzamy.

Pomyślne uruchomienie pliku kekeo.exe przekopiowanego w 2 obrazach na ekranie komputera podczas sesji RDP

UWAGA! Cały proces przesyłania danych można także wykonać w odwrotnym kierunku – z komputera Windows 10 możemy przesłać plik na serwer Windows 2016. W scenariuszu do kopiowania danych możemy także użyć klienta VMWare lub VNC.

Poniżej zamieszczamy film, na którym zaprezentowany jest cały powyższy scenariusz.

 

Podsumowanie

 

Jak pokazuje powyższy artykuł i opisywany w nim scenariusz metoda PTP-RAT stanowi poważne zagrożenie dla współczesnego oprogramowania do bezpieczeństwa. Pokazuje ekstremalne obejście zabezpieczeń z zaimplementowanym mechanizmem kontroli sprzętowej i programowej. Do pełni szczęścia/nieszczęścia widzimy tutaj jeden problem – skopiowanie narzędzia (o wadze 72 KB !!) na docelową maszynę i odpowiednie jego uruchomienie (tryb Serwer). Istnieją jednak metody na skopiowanie i ukrycie tak małego programu, lecz nie jest to przedmiot tego artykułu. W innych artykułach na stronie opisaliśmy różne metody pozwalające to wykonać.

 

Czy narzędzie omija wszystkie systemy do bezpieczeństwa?

 

Na ta chwilę nie mamy wiedzy, że nie. Na pewno nie pomogą nam tutaj żadne logi, systemy SIEM, sondy IPS itp. Z pomocą może nam przyjść dodatkowa ochrona i kontrola uruchamianych programów na komputerach, ale też w ograniczonym stopniu. Również powinniśmy zwracać uwagę i monitorować połączenia RDP do serwerów oraz końcówek w sieci, a także przez klienta VMWare i VNC do serwerów. Nagrywanie sesji RDP w postaci filmu wideo jako dowód, połączeń przez klienta VMWare oraz VNC wydaje się być także dobrą metodą na dokumentowanie tego typu zachowania użytkowników. Funkcję nagrywania oferują niektóre rozwiązania PAM (Privilege Account Management) dostępne na rynku.

Autor narzędzia nie opublikował jeszcze kodu źródłowego, więc na obecną chwilę posiadamy jedynie sygnaturę jego oficjalnej i jedynej wersji. Może reverse engineering kodu pomoże nam poznać, co dokładnie dzieje się w środku.

Zapraszamy do kontaktu i dzielenia się ta informacją wśród wszystkich zainteresowanych osób.


Uwaga! Artykuł służy jedynie do celów edukacyjnych. Wiedza w nim zaprezentowana nie powinna być używana w złym celu, a wykonywanie testów robisz na własna odpowiedzialność.

Podziel się z innymi tym artykułem!