https://chacker.pl/
Aby zademonstrować zdolność dta-dataleak do wykrywania wycieków danych, zaimplementowałem kolejny prosty serwer o nazwie dataleak-test-xor. Dla uproszczenia, ten serwer dobrowolnie „przecieka” zanieczyszczone pliki do gniazda, ale dta-dataleak może w ten sam sposób wykrywać pliki wyciekające przez exploit. Listing przedstawia odpowiedni kod dla serwera.
Listing : dataleak-test-xor.c


Serwer otwiera gniazdo na porcie localhost 9999 (1) i używa go do odebrania wiadomości (2) zawierającej listę nazw plików. Dzieli tę listę na pojedyncze nazwy plików za pomocą funkcji o nazwie split_filenames, która jest pominięta w zestawieniu (3). Następnie otwiera wszystkie żądane pliki (4) i wybiera losowo dwa z otwartych plików (5). Należy zauważyć, że w realistycznym przypadku użycia dta-dataleak, dostęp do plików byłby uzyskiwany za pomocą exploita, a nie udostępniany dobrowolnie przez serwer. Na potrzeby tego przykładu serwer odczytuje zawartość dwóch losowo wybranych plików wiersz po wierszu (6), łącząc każdą parę wierszy (po jednym wierszu z każdego pliku) za pomocą operacji XOR (7). Połączenie wierszy spowoduje, że dta-dataleak połączy ich kolory skażeń, demonstrując łączenie skażeń na potrzeby tego przykładu. Na koniec, wynik dwóch linii XOR jest przesyłany przez sieć (8), zapewniając „wyciek danych” do wykrycia przez dta-dataleak. Teraz zobaczmy, jak dta-dataleak wykrywa próbę wycieku danych, a konkretnie, jak kolory skażeń są łączone, gdy wyciekające dane zależą od wielu plików. Listing przedstawia wynik uruchomienia programu dataleak-test-xor z zabezpieczeniem dta-dataleak. Powtarzające się fragmenty wyniku zostały skrócone za pomocą „…”.
Listing : Wykrywanie próby eksfiltracji danych za pomocą dta-dataleak


W tym przykładzie serwer dataleak-test-xor jest uruchamiany z funkcją Pin, używając dta-dataleak jako narzędzia Pin w celu ochrony przed wyciekami danych (1). Natychmiast następuje pierwsze wywołanie systemowe odczytu związane z procesem ładowania dataleak-test-xor (2). Ponieważ te bajty są odczytywane z biblioteki współdzielonej, która nie ma przypisanego koloru skażenia, dta-dataleak ignoruje odczyt. Następnie przykład uruchamia sesję netcat, aby połączyć się z serwerem (3) i wysłać mu listę nazw plików do otwarcia (4). Narzędzie dta-dataleak przechwytuje zdarzenia otwarcia dla wszystkich tych plików i przypisuje każdemu z nich kolor skażenia (5). Następnie serwer losowo wybiera dwa pliki, które mają zostać ujawnione. W tym przypadku okazują się to pliki z deskryptorem pliku 8 (6) i 5 (7). W przypadku obu plików, dta-dataleak przechwytuje zdarzenia odczytu i zanieczyszcza odczytane bajty powiązanymi z nimi kolorami zanieczyszczania (odpowiednio 0x08 i 0x01). Następnie dta-dataleak przechwytuje próbę wysłania przez serwer zawartości pliku, która jest teraz łączona za pomocą operacji XOR, przez sieć (8). Sprawdza zanieczyszczanie bajtów, które serwer ma zamiar wysłać (9), zauważa, że są one zanieczyszczone tagiem 0x09 (10), a następnie wyświetla alert i przerywa działanie programu. Tag 0x09 to kombinacja dwóch kolorów zanieczyszczania: 0x01 i 0x08. Z alertu wynika, że kolory te odpowiadają odpowiednio plikom dta-execve.cpp i echo.c. Jak widać, analiza zanieczyszczania ułatwia wykrywanie wycieków informacji i dokładne określenie, które pliki zostały zanieczyszczone. Można również użyć scalonych kolorów zanieczyszczania, aby określić, które źródła zanieczyszczania przyczyniły się do wartości bajtu. Nawet przy użyciu zaledwie ośmiu kolorów skaz istnieją nieskończone możliwości tworzenia potężnych narzędzi DTA!