AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail rejestruje i monitoruje aktywność w Twoim środowisku AWS. Rejestruje szczegółowe dzienniki zdarzeń, w tym kto, co, kiedy i skąd, dla wszystkich interakcji z zasobami AWS. Zapewnia to ślad audytowy zmian i działań, pomagając w analizie bezpieczeństwa, audytowaniu zgodności i śledzeniu zmian zasobów. CloudTrail jest niezbędny do zrozumienia zachowań użytkowników i zasobów, poprawy postaw bezpieczeństwa i zapewnienia zgodności regulacyjnej.
Każde zarejestrowane zdarzenie zawiera:
Nazwę wywołanego interfejsu API:
eventName
Wywołaną usługę:
eventSource
Czas:
eventTime
Adres IP:
SourceIPAddress
Metodę agenta:
userAgent
. Przykłady:Signing.amazonaws.com - Z konsoli zarządzania AWS
console.amazonaws.com - Użytkownik główny konta
lambda.amazonaws.com - AWS Lambda
Parametry żądania:
requestParameters
Elementy odpowiedzi:
responseElements
Zdarzenia są zapisywane w nowym pliku dziennika około co 5 minut w pliku JSON, są przechowywane przez CloudTrail, a ostatecznie pliki dziennika są dostarczane do S3 około 15 minut po. Dzienniki CloudTrail mogą być agregowane między kontami i między regionami. CloudTrail pozwala na użycie integralności plików dziennika, aby móc zweryfikować, czy pliki dziennika pozostały niezmienione od momentu dostarczenia ich przez CloudTrail. Tworzy on skrót SHA-256 dzienników w pliku z sumą kontrolną. Skrót sha-256 nowych dzienników jest tworzony co godzinę. Podczas tworzenia ścieżki selektory zdarzeń pozwolą Ci wskazać ścieżkę do zalogowania: zdarzenia zarządzania, danych lub wniosków.
Dzienniki są zapisywane w wiadrze S3. Domyślnie używane jest szyfrowanie po stronie serwera (SSE-S3), więc AWS odszyfruje zawartość dla osób, które mają do niej dostęp, ale dla dodatkowego zabezpieczenia można użyć SSE z KMS i własnych kluczy.
Dzienniki są przechowywane w wiadrze S3 o następującym formacie nazwy:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Gdzie BucketName to:
aws-cloudtrail-logs-<accountid>-<random>
Przykład:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
W każdym folderze każdy dziennik będzie miał nazwę zgodną z tym formatem: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Konwencja Nazewnictwa Plików Dziennika
Ponadto pliki skrótu (do sprawdzenia integralności pliku) będą w tym samym wiadrze w:
Agregowanie Dzienników z Wielu Kont
Utwórz ścieżkę w koncie AWS, do którego chcesz dostarczyć pliki dziennika
Zastosuj uprawnienia do docelowego wiadra S3, pozwalając na dostęp międzykontowy dla CloudTrail i zezwalając każdemu kontu AWS, które potrzebuje dostępu
Utwórz nową ścieżkę w innych kontach AWS i wybierz utworzone wiadro w kroku 1
Jednak nawet jeśli możesz zapisać wszystkie dzienniki w tym samym wiadrze S3, nie możesz agregować dzienników CloudTrail z wielu kont do dzienników CloudWatch należących do jednego konta AWS.
Pamiętaj, że konto może mieć różne ścieżki z CloudTrail włączone, przechowujące te same (lub różne) dzienniki w różnych wiadrach.
Cloudtrail z wszystkich kont org do 1
Podczas tworzenia CloudTrail można wskazać, aby aktywować cloudtrail dla wszystkich kont w organizacji i uzyskać dzienniki tylko do 1 wiadra:
W ten sposób łatwo można skonfigurować CloudTrail we wszystkich regionach wszystkich kont i skoncentrować dzienniki w 1 koncie (które należy chronić).
Sprawdzanie Plików Dziennika
Możesz sprawdzić, czy dzienniki nie zostały zmienione, uruchamiając
Dzienniki do CloudWatch
CloudTrail może automatycznie wysyłać dzienniki do CloudWatch, dzięki czemu możesz ustawiać alerty, które ostrzegą Cię, gdy podejrzane działania zostaną wykonane. Zauważ, że aby umożliwić CloudTrailowi wysyłanie dzienników do CloudWatch, musi zostać utworzona rola, która pozwala na to działanie. Jeśli to możliwe, zaleca się używanie domyślnej roli AWS do wykonywania tych działań. Rola ta umożliwi CloudTrailowi:
CreateLogStream: Pozwala na tworzenie strumieni dzienników CloudWatch Logs
PutLogEvents: Dostarcza dzienniki CloudTrail do strumienia dzienników CloudWatch Logs
Historia zdarzeń
Historia zdarzeń CloudTrail pozwala na sprawdzenie w tabeli zapisanych dzienników:
Wnioski
Wnioski CloudTrail automatycznie analizują zdarzenia zarządzania zapisami z szlaków CloudTrail i ostrzegają Cię o nietypowej aktywności. Na przykład, jeśli wystąpi wzrost zdarzeń TerminateInstance
, który różni się od ustalonych bazelinów, zobaczysz to jako zdarzenie Wniosku. Te zdarzenia ułatwiają odnajdywanie i reagowanie na nietypową aktywność interfejsu API niż kiedykolwiek wcześniej.
Wnioski są przechowywane w tym samym kubełku co dzienniki CloudTrail pod adresem: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Bezpieczeństwo
Integralność plików dziennika CloudTrail |
|
Zatrzymaj nieautoryzowany dostęp |
|
Zapobiegaj usuwaniu plików dziennika |
|
Doradca dostępu
Doradca dostępu AWS polega na ostatnich 400 dniach dzienników AWS CloudTrail, aby zgromadzić swoje wnioski. CloudTrail rejestruje historię wywołań interfejsu API AWS i związanych z nimi zdarzeń wykonanych w koncie AWS. Doradca dostępu wykorzystuje te dane do pokazania, kiedy usługi były ostatnio używane. Analizując dzienniki CloudTrail, Doradca dostępu może określić, które usługi AWS zostały użyte przez użytkownika IAM lub rolę i kiedy miało to miejsce. Pomaga to administratorom AWS podejmować świadome decyzje dotyczące dostosowywania uprawnień, ponieważ mogą zidentyfikować usługi, które nie były używane przez długi czas i potencjalnie ograniczyć zbyt szerokie uprawnienia na podstawie rzeczywistych wzorców użycia.
Dlatego Doradca dostępu informuje o nadmierne przyznawane uprawnienia użytkownikom, aby administrator mógł je usunąć
Działania
Wyliczenie
Wstrzykiwanie CSV
Możliwe jest wykonanie wstrzykiwania CSV w CloudTrail, które wykona arbitralny kod, jeśli dzienniki zostaną wyeksportowane do formatu CSV i otwarte w programie Excel. Następujący kod wygeneruje wpis dziennika z nazwą ścieżki zawierającą ładunek:
Aby uzyskać więcej informacji na temat Wstrzykiwania CSV, sprawdź stronę:
Aby uzyskać więcej informacji na temat tej konkretnej techniki, sprawdź https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Ominięcie Wykrywania
Ominięcie HoneyTokens
HoneyTokens są tworzone w celu wykrywania wycieku wrażliwych informacji. W przypadku AWS są to klucze AWS, których użycie jest monitorowane, jeśli coś wyzwala działanie z tym kluczem, to ktoś musiał go ukraść.
Jednakże, monitorowanie to odbywa się za pośrednictwem CloudTrail, i istnieją niektóre usługi AWS, które nie wysyłają logów do CloudTrail (znajdź listę tutaj). Niektóre z tych usług będą odpowiadać błędem zawierającym ARN roli klucza, jeśli ktoś nieautoryzowany (klucz honeytoken) spróbuje uzyskać do niego dostęp.
W ten sposób atakujący może uzyskać ARN klucza bez wywoływania żadnego logu. W ARN atakujący może zobaczyć ID konta AWS i nazwę, łatwo jest poznać ID i nazwy kont firm HoneyToken, w ten sposób atakujący może zidentyfikować, czy token jest HoneyTokenem.
Wykrywanie HoneyTokens
Pacu wykrywa, czy klucz należy do Canarytokens, SpaceCrab, SpaceSiren:
Jeśli
canarytokens.org
pojawia się w nazwie roli lub ID konta534261010715
pojawia się w komunikacie błędu.Testując je bardziej niedawno, używają konta
717712589309
i wciąż mają ciągcanarytokens.com
w nazwie.Jeśli
SpaceCrab
pojawia się w nazwie roli w komunikacie błęduSpaceSiren używa uuids do generowania nazw użytkowników:
[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}
Jeśli nazwa wygląda jak losowo generowana, istnieje duże prawdopodobieństwo, że jest to HoneyToken.
Zauważ, że wszystkie publiczne API, które nie tworzyły logów CloudTrail, zostały naprawione, więc być może będziesz musiał znaleźć swoje własne...
Albo możesz uzyskać ID konta z zakodowanego wewnątrz klucza dostępu jak wyjaśniono tutaj i sprawdzić ID konta na liście kont AWS Honeytokens:
Aby uzyskać więcej informacji, sprawdź oryginalne badania.
Dostęp do infrastruktury osób trzecich
Niektóre usługi AWS tworzą pewną infrastrukturę, taką jak bazy danych lub klastry Kubernetes (EKS). Użytkownik komunikujący się bezpośrednio z tymi usługami (takimi jak interfejs API Kubernetes) nie będzie korzystał z interfejsu API AWS, dlatego CloudTrail nie będzie w stanie zobaczyć tej komunikacji.
Dlatego użytkownik mający dostęp do EKS, który odkrył adres URL interfejsu API EKS, mógłby lokalnie wygenerować token i komunikować się bezpośrednio z usługą API, nie będąc wykrytym przez CloudTrail.
Więcej informacji znajdziesz w:
pageAWS - EKS Post ExploitationModyfikowanie konfiguracji CloudTrail
Usuwanie ścieżek
Zatrzymaj ścieżki
Wyłącz logowanie wieloregionowe
Wyłączanie logowania za pomocą selektorów zdarzeń
W pierwszym przykładzie pojedynczy selektor zdarzeń jest podany jako tablica JSON z pojedynczym obiektem. "ReadWriteType": "ReadOnly"
wskazuje, że selektor zdarzeń powinien rejestrować tylko zdarzenia tylko do odczytu (więc CloudTrail insights nie będą sprawdzać zdarzeń zapisu na przykład).
Możesz dostosować selektor zdarzeń w zależności od swoich konkretnych wymagań.
Usuwanie logów za pomocą polityki cyklu życia S3
Modyfikacja konfiguracji kubełka
Usuń kubełek S3
Zmień politykę kubełka, aby zabronić zapisywania z usługi CloudTrail
Dodaj politykę cyklu życia do kubełka S3 w celu usuwania obiektów
Wyłącz klucz KMS używany do szyfrowania logów CloudTrail
Ransomware CloudTrail
Ransomware S3
Możesz wygenerować klucz asymetryczny i sprawić, aby CloudTrail szyfrował dane tym kluczem i usunąć klucz prywatny, aby zawartość CloudTrail nie mogła zostać odzyskana. To jest w zasadzie ransomware S3-KMS wyjaśniony w:
pageAWS - S3 Post ExploitationRansomware KMS
To jest najprostszy sposób wykonania poprzedniego ataku z różnymi wymaganiami uprawnień:
pageAWS - KMS Post ExploitationReferencje
Last updated