AWS - CloudTrail Enum
CloudTrail
AWS CloudTrail rejestruje i monitoruje aktywność w Twoim środowisku AWS. Zbiera szczegółowe logi zdarzeń, w tym kto, co, kiedy i skąd, dla wszystkich interakcji z zasobami AWS. Zapewnia to ścieżkę audytu zmian i działań, wspomagając analizę bezpieczeństwa, audyt zgodności i śledzenie zmian zasobów. CloudTrail jest niezbędny do zrozumienia zachowań użytkowników i zasobów, poprawy postawy bezpieczeństwa i zapewnienia zgodności z przepisami.
Każde zarejestrowane zdarzenie zawiera:
Nazwę wywołanego API:
eventName
Wywołaną usługę:
eventSource
Czas:
eventTime
Adres IP:
SourceIPAddress
Metodę agenta:
userAgent
. Przykłady:Signing.amazonaws.com - Z AWS Management Console
console.amazonaws.com - Użytkownik root konta
lambda.amazonaws.com - AWS Lambda
Parametry żądania:
requestParameters
Elementy odpowiedzi:
responseElements
Zdarzenia są zapisywane do nowego pliku logu mniej więcej co 5 minut w pliku JSON, są przechowywane przez CloudTrail, a ostatecznie pliki logów są dostarczane do S3 około 15 minut później. Logi CloudTrail mogą być agregowane między kontami i regionami. CloudTrail pozwala na użycie integralności plików logów, aby móc zweryfikować, że Twoje pliki logów nie zostały zmienione od momentu ich dostarczenia przez CloudTrail. Tworzy SHA-256 hash logów wewnątrz pliku digest. SHA-256 hash nowych logów jest tworzony co godzinę. Podczas tworzenia Trail selektory zdarzeń pozwolą Ci wskazać, które zdarzenia mają być logowane: zarządzanie, dane lub wgląd.
Logi 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 bezpieczeństwa możesz użyć SSE z KMS i własnymi kluczami.
Logi są przechowywane w wiadrze S3 o następującym formacie nazwy:
BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD
Nazwa wiadra:
aws-cloudtrail-logs-<accountid>-<random>
Przykład:
aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/
Wewnątrz każdego folderu każdy log będzie miał nazwę w następującym formacie: AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz
Konwencja nazewnictwa plików logów
Ponadto, pliki digest (do sprawdzania integralności plików) będą w tym samym wiadrze w:
Agregowanie logów z wielu kont
Utwórz Trial na koncie AWS, na które chcesz dostarczać pliki logów
Zastosuj uprawnienia do docelowego wiadra S3, umożliwiając dostęp między kontami dla CloudTrail i pozwól każdemu kontu AWS, które potrzebuje dostępu
Utwórz nowy Trail na innych kontach AWS i wybierz użycie utworzonego wiadra w kroku 1
Jednakże, nawet jeśli możesz zapisać wszystkie logi w tym samym wiadrze S3, nie możesz agregować logów CloudTrail z wielu kont do CloudWatch Logs należących do jednego konta AWS.
Pamiętaj, że konto może mieć różne Trails z CloudTrail włączone przechowujące te same (lub różne) logi w różnych wiadrach.
Cloudtrail ze wszystkich kont organizacji do jednego
Podczas tworzenia CloudTrail, możliwe jest wskazanie, aby aktywować cloudtrail dla wszystkich kont w organizacji i uzyskać logi w jednym wiadrze:
W ten sposób możesz łatwo skonfigurować CloudTrail we wszystkich regionach wszystkich kont i scentralizować logi na jednym koncie (które powinieneś chronić).
Sprawdzanie plików logów
Możesz sprawdzić, czy logi nie zostały zmienione, uruchamiając
Logs to CloudWatch
CloudTrail może automatycznie wysyłać logi do CloudWatch, dzięki czemu możesz ustawić alerty ostrzegające o podejrzanych działaniach. Należy pamiętać, że aby CloudTrail mógł wysyłać logi do CloudWatch, musi zostać utworzona rola, która na to pozwala. Jeśli to możliwe, zaleca się użycie domyślnej roli AWS do wykonywania tych działań. Ta rola pozwoli CloudTrail na:
CreateLogStream: Pozwala na tworzenie strumieni logów CloudWatch Logs
PutLogEvents: Dostarczanie logów CloudTrail do strumienia logów CloudWatch Logs
Event History
CloudTrail Event History pozwala na przeglądanie w tabeli logów, które zostały zarejestrowane:
Insights
CloudTrail Insights automatycznie analizuje zdarzenia zarządzania zapisem z tras CloudTrail i ostrzega o nietypowej aktywności. Na przykład, jeśli nastąpi wzrost zdarzeń TerminateInstance
, który różni się od ustalonych bazowych wartości, zobaczysz to jako zdarzenie Insight. Te zdarzenia sprawiają, że znalezienie i reagowanie na nietypową aktywność API jest łatwiejsze niż kiedykolwiek.
Wnioski są przechowywane w tym samym bucket co logi CloudTrail w: BucketName/AWSLogs/AccountID/CloudTrail-Insight
Security
CloudTrail Log File Integrity |
|
Stop unauthorized access |
|
Prevent log files from being deleted |
|
Access Advisor
AWS Access Advisor opiera się na ostatnich 400 dniach logów AWS CloudTrail, aby zebrać swoje wnioski. CloudTrail rejestruje historię wywołań API AWS i powiązanych zdarzeń w koncie AWS. Access Advisor wykorzystuje te dane, aby pokazać, kiedy usługi były ostatnio używane. Analizując logi CloudTrail, Access Advisor może określić, które usługi AWS użytkownik IAM lub rola uzyskały dostęp i kiedy ten dostęp miał miejsce. Pomaga to administratorom AWS podejmować świadome decyzje dotyczące doprecyzowania uprawnień, ponieważ mogą zidentyfikować usługi, które nie były używane przez dłuższy czas i potencjalnie zmniejszyć zbyt szerokie uprawnienia na podstawie rzeczywistych wzorców użytkowania.
Dlatego Access Advisor informuje o niepotrzebnych uprawnieniach przyznanych użytkownikom, aby administrator mógł je usunąć
Actions
Enumeration
CSV Injection
Możliwe jest przeprowadzenie ataku CSV injection w CloudTrail, który wykona dowolny kod, jeśli logi zostaną wyeksportowane w formacie CSV i otwarte w Excelu. Poniższy kod wygeneruje wpis logu z nieprawidłową nazwą Trail zawierającą payload:
For more information about CSV Injections check the page:
For more information about this specific technique check https://rhinosecuritylabs.com/aws/cloud-security-csv-injection-aws-cloudtrail/
Bypass Detection
HoneyTokens bypass
Honeyokens są tworzone, aby wykrywać wyciek wrażliwych informacji. W przypadku AWS są to klucze AWS, których użycie jest monitorowane, jeśli coś wywoła działanie z tym kluczem, to ktoś musiał ukraść ten klucz.
Jednak Honeytokens, takie jak te stworzone przez Canarytokens, SpaceCrab, SpaceSiren używają albo rozpoznawalnej nazwy konta, albo tego samego ID konta AWS dla wszystkich swoich klientów. Dlatego, jeśli możesz uzyskać nazwę konta i/lub ID konta bez tworzenia jakiegokolwiek logu przez Cloudtrail, możesz dowiedzieć się, czy klucz jest honeytokenem, czy nie.
Pacu ma kilka reguł do wykrywania, czy klucz należy do Canarytokens, SpaceCrab, SpaceSiren:
Jeśli
canarytokens.org
pojawia się w nazwie roli lub ID konta534261010715
pojawia się w komunikacie o błędzie.Testując je bardziej niedawno, używają konta
717712589309
i nadal mają ciągcanarytokens.com
w nazwie.Jeśli
SpaceCrab
pojawia się w nazwie roli w komunikacie o błędzie.SpaceSiren 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 na losowo wygenerowaną, istnieje duże prawdopodobieństwo, że jest to HoneyToken.
Uzyskaj ID konta z ID klucza
Możesz uzyskać ID konta z zakodowanego wewnątrz klucza dostępu, jak wyjaśniono tutaj i sprawdzić ID konta z listą kont Honeytokens AWS:
Sprawdź więcej informacji w oryginalnym badaniu.
Nie generuj logu
Najbardziej efektywna technika jest w rzeczywistości prosta. Po prostu użyj klucza, który właśnie znalazłeś, aby uzyskać dostęp do jakiejś usługi w swoim własnym koncie atakującego. To sprawi, że CloudTrail wygeneruje log w TWOIM WŁASNYM koncie AWS, a nie w koncie ofiary.
Rzecz w tym, że wynik pokaże błąd wskazujący ID konta i nazwę konta, więc będziesz mógł zobaczyć, czy to jest Honeytoken.
Usługi AWS bez logów
W przeszłości były pewne usługi AWS, które nie wysyłały logów do CloudTrail (znajdź listę tutaj). Niektóre z tych usług odpowiedzą błędem zawierającym ARN roli klucza, jeśli ktoś nieautoryzowany (klucz honeytoken) spróbuje uzyskać do nich dostęp.
W ten sposób atakujący może uzyskać ARN klucza bez wywoływania jakiegokolwiek logu. W ARN atakujący może zobaczyć ID konta AWS i nazwę, łatwo jest poznać ID i nazwy kont firm HoneyToken, więc w ten sposób atakujący może zidentyfikować, czy token jest HoneyToken.
Zauważ, że wszystkie publiczne API, które odkryto, że nie tworzą logów CloudTrail, są teraz naprawione, więc może będziesz musiał znaleźć swoje własne...
Więcej informacji znajdziesz w oryginalnym badaniu.
Dostęp do infrastruktury zewnętrznej
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 (jak API Kubernetes) nie używa API AWS, więc CloudTrail nie będzie w stanie zobaczyć tej komunikacji.
Dlatego użytkownik z dostępem do EKS, który odkrył URL API EKS, może wygenerować token lokalnie i komunikować się bezpośrednio z usługą API bez wykrycia przez CloudTrail.
Więcej informacji w:
AWS - EKS Post ExploitationModyfikowanie konfiguracji CloudTrail
Usuwanie śladów
Zatrzymaj trails
Start trails
List trails
Get trail status
Delete trails
Create trails
Update trails
Lookup events
List public keys
List tags
Add tags
Remove tags
Wyłącz logowanie w wielu regionach
Wyłączanie logowania przez selektory zdarzeń
W pierwszym przykładzie, pojedynczy selektor zdarzeń jest podany jako tablica JSON z jednym obiektem. "ReadWriteType": "ReadOnly"
wskazuje, że selektor zdarzeń powinien rejestrować tylko zdarzenia tylko do odczytu (więc CloudTrail insights nie będzie sprawdzać zdarzeń zapisu na przykład).
Możesz dostosować selektor zdarzeń w oparciu o swoje specyficzne wymagania.
Usuwanie logów za pomocą polityki cyklu życia S3
Modyfikacja konfiguracji Bucket
Usuń S3 bucket
Zmień politykę bucket, aby odmówić wszelkich zapisów z usługi CloudTrail
Dodaj politykę cyklu życia do S3 bucket, aby usuwać obiekty
Wyłącz klucz kms używany do szyfrowania logów CloudTrail
Cloudtrail ransomware
S3 ransomware
Możesz wygenerować klucz asymetryczny i sprawić, że CloudTrail zaszyfruje dane tym kluczem, a następnie usunąć klucz prywatny, aby zawartość CloudTrail nie mogła zostać odzyskana. To jest zasadniczo S3-KMS ransomware wyjaśnione w:
AWS - S3 Post ExploitationKMS ransomware
To jest łatwiejszy sposób na przeprowadzenie poprzedniego ataku z różnymi wymaganiami dotyczącymi uprawnień:
AWS - KMS Post ExploitationReferencje
Last updated