W tym artykule postaram się przedstawić walkthrough kolejnego Sherlocka z HackTheBox. Jest to Sherlock typu Easy, który skupia się na analzie zawartości pliku pcap i json.
PRZYGOTOWANIE ŚRODOWISKA
Po rozpakowaniu archiwum otrzymujemy dwa pliki:
- meerkat.pcap
- meerkat-alerts.json
IDENTYFIKACJA APLIKACJI
Pytanie na to odpowiedź znajdujemy za pomocą programu 'jq', który posłuży nam do parsowania danych zawartych w pliku .json. Za pomocą poniższej komendy listujemy wszystkie sygnatury (tylko nazwy):
We believe our Business Management Platform server has been compromised. Please can you confirm the name of the application running?
jq -r '.[].alert.signature' meerkat-alerts.json | sort -u
BonitaSoft
RESEARCH PODATNOŚCI
W przypadku drugiego pytania musimy posłużyć się informacją którą udało nam się uzyskać w przypadku poprzedniego pytania, a konkretnie CVE-2022-25237. Szybki research na temat podatności, np: https://rhinosecuritylabs.com/application-security/cve-2022-25237-bonitasoft-authorization-bypass/
Możemy wywnioskować, że atakujący będzie próbować techniki Brute Force w celu uzyskania danych logowania użytkownika. Sprawdźmy nasz plik .pcap.
We believe the attacker may have used a subset of the brute forcing attack category - what is the name of the attack carried out?
Zawężamy nasz ruch za pomocą filtra do ruchu 'http' następnie klikamy PPM na dowolny request typu POST i wybieramy Follow → HTTP Stream. Po obejrzeniu kilku takich przypadków widzimy, że atakujący wydaje się wykorzystywać rzeczywiste nazwy użytkownika i nietypowe hasła - być może pochodzące z wycieków. To może sugerować Credential stuffing.
Credential stuffing
Does the vulnerability exploited have a CVE assigned - and if so, which one?
CVE-2022-25237
OBEJŚCIE FILTRA AUTORYZACJI
Dalej analizując plik .pcap widzimy http://forela.co.uk:8080/bonita/API/pageUpload;i18ntranslation?action=add co wskazuje na dodanie parametru i18ntranslation tak jak to było opisane w analizie podatności RhinoSecurity.
Which string was appended to the API URL path to bypass the authorization filter by the attacker's exploit?
i18ntranslation
LICZENIE KOMBINACJI LOGOWANIA
Do odpowiedzi na kolejne pytanie wykorzystamy program tcpdump który pozwala analizować duże pliki .pcap i, np. przycinać je do interesujących nas danych, np. ruch tylko HTTP lub zapytania typu POST, aby kolejno wykorzystać odfiltrowany ruch na analizy w programie Wireshark.
Widzimy wszystkie próby unikalnych loginów i haseł już odfiltrowanych (install & install które się powtarzają):
How many combinations of usernames and passwords were used in the credential stuffing attack?
tcpdump -nn -s 0 -A -r meerkat.pcap \
| grep -oE "username=[^&]+&password=[^& ]+" \
| grep -v "username=install&password=install" \
| sort -u
Dodatkowo dorzucając parametr 'wc -l' otrzymamy sam wynik:
tcpdump -nn -s 0 -A -r meerkat.pcap \
| grep -oE "username=[^&]+&password=[^& ]+" \
| grep -v "username=install&password=install" \
| sort -u \
| wc -l
56
POMYŚLNE LOGOWANIE
Na pytanie o hasło i login na które udało się zalogować ponownie wykorzystujemy tcpdump i poniższą komendę:
Which username and password combination was successful?
tcpdump -nn -s 0 -A -r meerkat.pcap \
| egrep "username=|HTTP/1.1 204"
Na samym dole powinniśmy widzieć login i hasło z kodem odpowiedzi 204. Do usunięcia znaków specjalnych możemy użyć CyberChef i URL Decode lub podmienić ręcznie.
[email protected]:g0vernm3nt
IDENTYFIKACJA SERWISU UDOSTĘPNIANIA TEKSTU
Na kolejne pytanie możemy spróbować odpowiedzieć za pomocą prostej komendy:
tcpdump -nn -s 0 -A -r meerkat.pcap | grep GET
Analizując wyniki pastes.io wygląda podejrzanie.
If any, which text sharing site did the attacker utilise?
pastes.io
NAZWA KLUCZA PUBLICZNEGO
Spróbujemy otworzyć adres który udało nam się znaleźć przy okazji poprzedniego pytania https://pastes.io/raw/bx5gcr0et8. Prawdopodobna nazwa pliku to 'hffgra4unv'.
Please provide the filename of the public key used by the attacker to gain persistence on our host.
hffgra4unv
PLIK ZMODYFIKOWANY DLA PERSISTENCE
Widzimy również, że ścieżka na którą plik został zapisany to /home/ubuntu/.ssh/authorized_keys
Can you confirm the file modified by the attacker to gain persistence?
/home/ubuntu/.ssh/authorized_keys
TECHNIKA MITRE ATT&CK
Technika zastosowana przez atakującego to Account Manipulation: SSH authorized Keys
Źródło: https://attack.mitre.org/techniques/T1098/004/
Can you confirm the MITRE technique ID of this type of persistence mechanism?
T1098.004
WNIOSKI
Ten walkthrough pokazał kompleksową analizę ataku wykorzystującego podatność w BonitaSoft. Poznaliśmy łańcuch ataków od credential stuffing, przez wykorzystanie CVE-2022-25237, aż po ustanowienie persistence za pomocą kluczy SSH.
Kluczowe umiejętności które wykorzystaliśmy:
- Analiza plików PCAP za pomocą tcpdump i Wireshark
- Parsowanie danych JSON za pomocą jq
- Identyfikacja ataków credential stuffing
- Research podatności CVE
- Analiza technik persistence zgodnych z MITRE ATT&CK
- Dekodowanie URL encoded data
Tego typu analizy są niezbędne podczas odpowiedzi na incydenty bezpieczeństwa, szczególnie przy podejrzeniu kompromitacji systemów przez zewnętrznych atackers.