AWS - Lambda Persistence

Support HackTricks

Lambda

Więcej informacji znajdziesz tutaj:

AWS - Lambda Enum

Lambda Layer Persistence

Możliwe jest wprowadzenie/backdoor warstwy w celu wykonania dowolnego kodu podczas wykonywania lambdy w sposób ukryty:

AWS - Lambda Layers Persistence

Lambda 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 Extensions

Via 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

  1. Skopiuj oryginalny kod lambdy

  2. Utwórz nową wersję z backdoorem oryginalnego kodu (lub po prostu z złośliwym kodem). Opublikuj i wdroż tę wersję do $LATEST

  3. Wywołaj API gateway powiązany z lambdą, aby wykonać kod

  4. Utwórz nową wersję z oryginalnym kodem, opublikuj i wdroż tę wersję do $LATEST.

  5. To ukryje backdoorowany kod w poprzedniej wersji

  6. 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

  7. Zwróć uwagę na końcowe :1 w arn wskazujące wersję funkcji (wersja 1 będzie w tym scenariuszu backdoorowana).

  8. Wybierz utworzoną metodę POST i w Akcjach wybierz Deploy API

  9. 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

Support HackTricks

Last updated