HTB Sherlock - Knock Knock Writeup
Scenariusz Zadania
Krytyczny serwer deweloperski Forela został zaatakowany przez grupę cyberprzestępców. Serwer deweloperski został przypadkowo pozostawiony otwarty do internetu, co nie powinno było mieć miejsca. Starszy deweloper Abdullah powiedział zespołowi IT, że serwer był w pełni zabezpieczony i nadal trudno jest zrozumieć, jak doszło do ataku i jak atakujący uzyskał dostęp w pierwszej kolejności. Forela niedawno rozpoczęła ekspansję swojej działalności w Pakistanie, a Abdullah był odpowiedzialny za całą infrastrukturę wdrożeniową i zarządzanie nią. Zespół ds. bezpieczeństwa musi jak najszybciej opanować i naprawić zagrożenie, ponieważ dalsze szkody mogą być katastrofalne dla firmy, zwłaszcza na kluczowym etapie ekspansji w innym regionie. Na szczęście w podsieci działało narzędzie do przechwytywania pakietów, które zostało skonfigurowane kilka miesięcy temu. Zrzut ruchu sieciowego obejmuje okres incydentu (1-2 dni), ponieważ nie wiemy dokładnie, kiedy atakujący uzyskał dostęp. Jako nasz analityk śledczy, otrzymałeś zrzut ruchu siecowego do oceny, jak atakujący uzyskał dostęp. Ostrzeżenie: Ta analiza będzie wymagała elementu OSINT, aby zostać w pełni ukończona.
(ang. A critical Forela Dev server was targeted by a threat group. The Dev server was accidentally left open to the internet which it was not supposed to be. The senior dev Abdullah told the IT team that the server was fully hardened and it’s still difficult to comprehend how the attack took place and how the attacker got access in the first place. Forela recently started its business expansion in Pakistan and Abdullah was the one IN charge of all infrastructure deployment and management. The Security Team need to contain and remediate the threat as soon as possible as any more damage can be devastating for the company, especially at the crucial stage of expanding in other region. Thankfully a packet capture tool was running in the subnet which was set up a few months ago. A packet capture is provided to you around the time of the incident (1-2) days margin because we don’t know exactly when the attacker gained access. As our forensics analyst, you have been provided the packet capture to assess how the attacker gained access. Warning : This Sherlock will require an element of OSINT to complete fully.)
Artefakty
Do rozwiązania zadania otrzymaliśmy jeden plik o nazwie Capture.pcap
, który jest zrzutem ruchu sieciowego. Plik obejmuje ruch z jednego dnia oraz 2 godzin, 40 minut i 12 sekund, od 2023-03-20 15:37:35 do 2023-03-21 18:17:48, i zawiera 293 921 pakiety (Rys. 1).
Aby zorientować się, jakie adresy biorą udział w przepływie ruchu, najpierw spróbowałem wykryć, które adresy IP wymieniają największą ilość informacji. W tym celu skorzystałem z zakładki “Conversations”. Tam zauważyłem dwa wyróżniające się adresy IP, 3.109.209.43 i 172.31.39.46, które wymieniły między sobą aż 134 231 pakietów, co znacznie je wyróżnia spośród pozostałych (Rys 2).
Po przefiltrowaniu komunikacji dla tych dwóch adresów IP, rozpocząłem przeglądanie od końca pliku i zauważyłem, że między nimi występuje komunikacja za pomocą protokołu FTP. Z analizy tej komunikacji można wywnioskować, że adres 3.109.209.43 należy do klienta (czyli atakującego), a adres IP 172.31.39.46 należy do serwera (Rys. 3).
Rozwiązanie
Zadanie 1
Które porty atakujący znalazł otwarte podczas fazy enumeracji? (ang. Which ports did the attacker find open during their enumeration phase?)
Przeglądając dalej ruch sieciowy, zauważyłem, że zaraz po pakietach ICMP wysyłanych przez atakującego, występuje próba skanowania portów 21, 22, 80, 443, 3306, 6379 i 8086. Dla 21, 22, 3306, 6379, 8086 portów zachodzi pełna procedura TCP SYN, zgodnie z tym, co opisywałem w wcześniejszym artykule podczas rozwiązywania Aptnightmare (Rys. 4).
Odpowiedź: 21,22,3306,6379,8086
Zadanie 2
Jaki jest czas UTC, kiedy atakujący rozpoczął atak na serwer? (ang. Whats the UTC time when attacker started their attack against the server?)
Wróciłem do początku komunikacji pomiędzy serwerem a atakującym i wybrałem pierwszy pakiet, w którym czas wskazywał na 21/03/2023 10:42:23 (Rys. 5).
Odpowiedź: 21/03/2023 10:42:23
Zadanie 3
Jaki jest identyfikator techniki MITRE użytej przez atakującego do uzyskania początkowego dostępu? (ang. What’s the MITRE Technique ID of the technique attacker used to get initial access?)
Po odfiltrowaniu ruchu dla portu TCP 21 można zauważyć, że atakujący podczas próby uzyskania dostępu korzysta z listy zdefiniowanych użytkowników (Rys. 6), co oznacza, że prawdopodobnie już skądś pozyskał taką listę.Dodatkowo, w przechwyconym zrzucie ruchu można zauważyć, że dla tych kont wykorzystuje różne kombinacje podobnych haseł (Rys. 7).Zgodnie z opisem MITRE, technika ta wygląda na Brute Force: Password Spraying i posiada identyfikator T1110.003.
Odpowiedź: T1110.003
Zadanie 4
Jakie są poprawne dane uwierzytelniające użyte do uzyskania początkowego dostępu? (ang. What are valid set of credentials used to get initial foothold?)
Przeglądając ruch dla portu 21, znalazłem dwie odpowiedzi Login successful
z serwera. W obu przypadkach, po wybraniu opcji follow the stream
, otrzymujemy odpowiedź na to pytanie. Na rysunku 8 zdecydowałem się przedstawić drugą znalezioną odpowiedź, ponieważ dopiero po jej wybraniu w opcji follow the stream
mamy dostęp do całej komunikacji atakującego po zalogowaniu się na serwer FTP (rys. 9).
Odpowiedź: tony.shephard:Summer2023!
Zadanie 5
Jaki jest złośliwy adres IP wykorzystany przez atakującego do uzyskania początkowego dostępu? (ang. What is the Malicious IP address utilized by the attacker for initial access?)
Odpowiedź na to pytanie uzyskałem podczas wstępnej analizy pliku Capture.pcap
. W trakcie analizy zidentyfikowałem adres IP atakującego jako 3.109.209.43
.
Odpowiedź: 3.109.209.43
Zadanie 6
Jaka jest nazwa pliku, który zawierał dane konfiguracyjne i dane uwierzytelniające? (ang. What is name of the file which contained some config data and credentials?)
W komunikacji znalazłem informację, że atakujący pobrał dwa pliki z serwera FTP: .backup
oraz fetch.sh
(Rys. 10).Po wyeksportowaniu plików za pomocą opcji Export Objects -> FTP-DATA i sprawdzeniu ich zawartości, doszedłem do wniosku, że oba zawierają wrażliwe dane. W pliku fetch.sh
widzimy, że nawiązywane jest połączenie z bazą danych i wykonywane jest zapytanie SELECT, co wygląda to na zwykłe pobieranie danych albo healthcheck. Natomiast plik .backup
wygląda na plik konfiguracyjny. Po chwili poszukiwań znalazłem, że jest to plik konfiguracyjny dla knockd.
Odpowiedź: .backup
Zadanie 7
Na którym porcie działała krytyczna usługa? (ang. Which port was the critical service running?)
Z pliku konfiguracyjnego .backup
widzimy polecenie iptables z przekierowaniem na port 24456
(Rys. 12).
Odpowiedź: 24456
Zadanie 8
Jaka jest nazwa techniki użytej do uzyskania dostępu do tej krytycznej usługi? (ang. Whats the name of technique used to get to that critical service?)
Odpowiedź na to pytanie znalazłem podczas identyfikacji pliku konfiguracyjnego .backup
(Rys 12).
Odpowiedź: Port Knocking
Zadanie 9
Z którymi portami należało się komunikować, aby uzyskać dostęp do krytycznej usługi? (ang. Which ports were required to interact with to reach the critical service?)
Z pliku konfiguracyjnego .backup
(Rys. 14).
Odpowiedź: 29999,45087,50234
Zadanie 10
Jaki jest czas UTC, kiedy zakończyła się interakcja z portami wymienionymi w poprzednim pytaniu? (ang. Whats the UTC time when interaction with previous question ports ended?)
Sprawdzając czas ostatniego wysłanego pakietu dla każdego z portów, otrzymałem odpowiedź: 21/03/2023 10:58:50
(Rys. 15).
Odpowiedź: 21/03/2023 10:58:50
Zadanie 11
Jakie są poprawne dane uwierzytelniające do krytycznej usługi? (ang. What are set of valid credentials for the critical service?)
Analizując plik pcap, znalazłem komunikację pomiędzy atakującym a serwerem na porcie 24456
. Po sprawdzeniu zawartości pakietów zauważyłem, że jest to komunikacja za pomocą protokołu FTP (Rys. 16).Dlatego wybrałem opcję “decode as FTP” w Wireshark. Dzięki temu widok w Wireshark był bardziej przejrzysty (Rys. 17).Po wybraniu “follow the stream” otrzymałem całą komunikację atakującego, a także login i hasło użyte do poprawnego zalogowania się do krytycznej usługi (Rys. 18).
Odpowiedź: abdullah.yasin:XhlhGame_90HJLDASxfd&hoooad
Zadanie 12
O której godzinie UTC atakujący uzyskał dostęp do krytycznego serwera? (ang. At what UTC Time attacker got access to the critical server?)
Po wybraniu pakietu, w którym serwer informuje klienta o poprawnym zalogowaniu do usługi, otrzymałem odpowiedź na pytanie (Rys. 19).
Odpowiedź: 21/03/2023 11:00:01
Zadanie 13
Jaki jest identyfikator konta AWS (AccountID) i hasło dla dewelopera “Abdullah”? (ang. Whats the AWS AccountID and Password for the developer “Abdullah”?)
Po sprawdzeniu komunikacji prowadzonej przez atakującego można zauważyć, że pobrał on kilka plików za pomocą protokołu FTP (Rys. 20).Po wybraniu opcji “Export Objects -> FTP-data” w Wireshark, zauważyłem, że do wcześniejszej listy plików .backup
oraz fetch.sh
doszły nowe pliki (Rys. 21). Ponieważ ich liczba nieznacznie wzrosła, zdecydowałem się wyeksportować wszystkie.Odpowiedź na pytanie znalazłem w pliku .archived.sql
, który jest dumpem bazy danych MySQL (Rys. 22).
Odpowiedź: 391629733297:yiobkod0986Y[adij@IKBDS
Zadanie 14
Jaki jest ostateczny termin zatrudnienia deweloperów dla Forela? (ang. Whats the deadline for hiring developers for forela?)
Przeglądając wyeksportowane pliki, w pliku Tasks to get Done.docx
znalazłem odpowiedź na pytanie (Rys. 23).
Odpowiedź: 30/08/2023
Zadanie 15
Kiedy planowany był przyjazd CEO Forela do Pakistanu? (ang. When did CEO of forela was scheduled to arrive in pakistan?)
Przeglądając wyeksportowane pliki, w pliku reminder.txt
znalazłem odpowiedź na pytanie (Rys. 24).
Odpowiedź: 08/03/2023
Zadanie 16
Atakujący był w stanie wykonać directory traversel i uciec z chroot jail. Spowodowało to, że atakujący mógł poruszać się po systemie plików jak normalny użytkownik. Jaka jest nazwa użytkownika, innego niż root, który ma ustawioną powłokę /bin/bash jako domyślną? (ang. The attacker was able to perform directory traversel and escape the chroot jail. This caused attacker to roam around the filesystem just like a normal user would. Whats the username of an account other than root having /bin/bash set as default shell?)
Przeglądając wyeksportowane pliki, w pliku passwd
znalazłem odpowiedź na pytanie (Rys. 25).
Odpowiedź: cyberjunkie
Zadanie 17
Jaka jest pełna ścieżka pliku, który doprowadził do uzyskania dostępu SSH do serwera przez atakującego? (ang. Whats the full path of the file which lead to ssh access of the server by attacker?)
Analizując komunikację FTP, zauważyłem, że atakujący porusza się po systemie plików za pomocą polecenia CWD
i przechodzi do katalogu /opt/reminders
. Następnie z tego katalogu pobiera plik .reminder
(Rys. 26).
Odpowiedź: /opt/reminders/.reminder
Zadanie 18
Jakie jest hasło SSH, którego atakujący użył do uzyskania dostępu do serwera i uzyskania pełnego dostępu? (ang. Whats the SSH password which attacker used to access the server and get full access?)
Zawartość pliku .reminder
informuje, że atakujący znalazł hasło w repozytorium Git (Rys. 27).Krótkie poszukiwania w pliku pcap nie przyniosły żadnych rezultatów. Nie znalazłem żadnej komunikacji, która mogłaby sugerować, że atakujący miał jakieś interakcje z serwerem Git. Wskazówkę dostarczył mi główny opis zadania, z którego wynika, że do rozwiązania niektórych zadań będzie trzeba wykonać lekki OSINT. Pierwsze, co przyszło mi do głowy, to portal GitHub, dlatego pierwszą rzeczą, jaką zrobiłem, było wpisanie w Google zapytania site:github.com Forela
. W wyniku otrzymałem link do repozytorium Forela Finance (Rys. 28).Po odwiedzeniu tego repozytorium nie byłem do końca pewien. Oczywiście w ostatniej wersji pliku na pewno nie będzie hasła. Zgodnie z notatką zostało ono usunięte (Rys. 27). Natomiast po wybraniu drugiego commita zauważyłem hasło w diffie (Rys. 29).
Odpowiedź: YHUIhnollouhdnoamjndlyvbl398782bapd
Zadanie 19
Jaki jest pełny adres URL, z którego atakujący pobrał ransomware? (ang. Whats the full url from where attacker downloaded ransomware?)
Z treści zadania wynika, że atakujący pobrał ransomware jako plik. Na początku sprawdziłem, czy w dostępnych plikach do eksportu znajduje się jakaś wskazówka. W tym celu wybrałem “Export Objects -> HTTP Stream”, a następnie zmieniałem filtr Content-Type
. Po wybraniu opcji application/zip
(Rys. 31, strzałka 1), ku mojemu zadowoleniu, na liście pojawił się tylko jeden plik, który dodatkowo nazywał się Ransomware2_server.zip
(Rys. 31, strzałka 2). Po wybraniu pliku zostałem od razu przekierowany do pakietu w Wireshark odpowiadającego początkowi przesyłanego pliku ZIP (Rys. 31, strzałka 3).Następnie, po wybraniu follow the stream
, otrzymujemy żądanie wysłane w celu pobrania pliku (Rys. 32).
Odpowiedź: http://13.233.179.35/PKCampaign/Targets/Forela/Ransomware2_Server.zip
Zadanie 20
Jaka jest nazwa i wersja narzędzia, którego atakujący użył do pobrania ransomware? (ang. Whats the tool/util name and version which attacker used to download ransomware?)
Z realizacji poprzedniego zadania, w follow the stream
dostępny jest nagłówek user-agent
(Rys. 32).
Odpowiedź: Wget/1.21.2
Zadanie 21
Jaka jest nazwa ransomware? (ang. Whats the ransomware name?)
Po wyeksportowaniu pliku ZIP podczas realizacji zadania nr 18, rozpakowałem go, a następnie w katalogu src
znalazłem rozwiązanie zadania. W oczy rzuciła mi się nazwa podobna do innego popularnego kiedyś ransomware, który do tej pory jest bohaterem niejednego artykułu – WannaCry (Rys. 33).
Odpowiedź: GonnaCry