Docker Forensics
Last updated
Last updated
Dowiedz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Dowiedz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Istnieją podejrzenia, że pewien kontener Docker został skompromitowany:
Możesz łatwo znaleźć modyfikacje dokonane na tym kontenerze w odniesieniu do obrazu za pomocą:
W poprzedniej komendzie C oznacza Zmienione, a A, Dodane.
Jeśli okaże się, że jakiś interesujący plik, na przykład /etc/shadow
, został zmodyfikowany, możesz go pobrać z kontenera, aby sprawdzić, czy nie ma w nim działalności złośliwej za pomocą:
Możesz również porównać to z oryginałem uruchamiając nowy kontener i wydobywając plik z niego:
Jeśli okaże się, że został dodany jakiś podejrzany plik, możesz uzyskać dostęp do kontenera i go sprawdzić:
Kiedy otrzymasz wyeksportowany obraz dockera (prawdopodobnie w formacie .tar
), możesz użyć container-diff, aby wydobyć podsumowanie modyfikacji:
Następnie możesz rozpakować obraz i uzyskać dostęp do blobów, aby wyszukać podejrzane pliki, które mogłeś znaleźć w historii zmian:
Możesz uzyskać podstawowe informacje z obrazu uruchomionego:
Możesz również uzyskać podsumowanie historii zmian za pomocą:
Możesz również wygenerować dockerfile z obrazu za pomocą:
Aby znaleźć dodane/zmodyfikowane pliki w obrazach dockerowych, można również użyć narzędzia dive (pobierz je z releases):
To pozwala Ci przeglądać różne bloki obrazów dockerowych i sprawdzać, które pliki zostały zmodyfikowane/dodane. Czerwony oznacza dodane, a żółty oznacza zmodyfikowane. Użyj tabulacji, aby przejść do innej widoku, a spacji, aby zwijać/otwierać foldery.
Za pomocą tego narzędzia nie będziesz mógł uzyskać dostępu do zawartości różnych etapów obrazu. Aby to zrobić, będziesz musiał rozpakować każdą warstwę i uzyskać do niej dostęp. Możesz rozpakować wszystkie warstwy obrazu z katalogu, w którym obraz został rozpakowany, wykonując:
Zauważ, że gdy uruchamiasz kontener Docker wewnątrz hosta możesz zobaczyć procesy uruchomione na kontenerze z hosta po prostu uruchamiając ps -ef
Dlatego (jako root) możesz wydobyć pamięć procesów z hosta i wyszukać dane uwierzytelniające tak jak w poniższym przykładzie.