AWS - Lambda Persistence
Lambda
Więcej informacji znajdziesz tutaj:
AWS - Lambda EnumLambda Layer Persistence
Możliwe jest wprowadzenie/backdoor warstwy w celu wykonania dowolnego kodu podczas wykonywania lambdy w sposób ukryty:
AWS - Lambda Layers PersistenceLambda Extension Persistence
Wykorzystując Lambda Layers, możliwe jest również nadużycie rozszerzeń i utrzymanie się w lambdzie, a także kradzież i modyfikacja żądań.
AWS - Abusing Lambda ExtensionsVia resource policies
Możliwe jest przyznanie dostępu do różnych akcji lambdy (takich jak wywołanie lub aktualizacja kodu) zewnętrznym kontom:
Versions, Aliases & Weights
Lambda może mieć różne wersje (z różnym kodem w każdej wersji). Następnie można utworzyć różne aliasy z różnymi wersjami lambdy i ustawić różne wagi dla każdej z nich. W ten sposób atakujący mógłby stworzyć backdoorowaną wersję 1 i wersję 2 z tylko legalnym kodem i wykonywać wersję 1 tylko w 1% żądań, aby pozostać niezauważonym.
Version Backdoor + API Gateway
Skopiuj oryginalny kod lambdy
Utwórz nową wersję z backdoorem oryginalnego kodu (lub po prostu z złośliwym kodem). Opublikuj i wdroż tę wersję do $LATEST
Wywołaj API gateway powiązany z lambdą, aby wykonać kod
Utwórz nową wersję z oryginalnym kodem, opublikuj i wdroż tę wersję do $LATEST.
To ukryje backdoorowany kod w poprzedniej wersji
Przejdź do API Gateway i utwórz nową metodę POST (lub wybierz dowolną inną metodę), która wykona backdoorowaną wersję lambdy:
arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
Zwróć uwagę na końcowe :1 w arn wskazujące wersję funkcji (wersja 1 będzie w tym scenariuszu backdoorowana).
Wybierz utworzoną metodę POST i w Akcjach wybierz
Deploy API
Teraz, gdy wywołasz funkcję za pomocą POST, twój Backdoor zostanie uruchomiony
Cron/Event actuator
Fakt, że możesz uruchamiać funkcje lambdy, gdy coś się dzieje lub po upływie określonego czasu, sprawia, że lambda jest świetnym i powszechnym sposobem na uzyskanie trwałości i unikanie wykrycia. Oto kilka pomysłów, jak uczynić swoją obecność w AWS bardziej ukrytą poprzez tworzenie lambd.
Za każdym razem, gdy tworzony jest nowy użytkownik, lambda generuje nowy klucz użytkownika i wysyła go do atakującego.
Za każdym razem, gdy tworzona jest nowa rola, lambda przyznaje uprawnienia do przejęcia roli skompromitowanym użytkownikom.
Za każdym razem, gdy generowane są nowe logi cloudtrail, usuń/zmień je
Last updated