AWS - Lambda Persistenz

Reading time: 4 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Lambda

Für weitere Informationen siehe:

AWS - Lambda Enum

Lambda Layer Persistenz

Es ist möglich, eine Schicht einzuführen/hintertüren, um beliebigen Code auszuführen, wenn die Lambda stealthy ausgeführt wird:

AWS - Lambda Layers Persistence

Lambda Erweiterungs-Persistenz

Durch den Missbrauch von Lambda Layers ist es auch möglich, Erweiterungen zu missbrauchen und in der Lambda zu persistieren, aber auch Anfragen zu stehlen und zu modifizieren.

AWS - Abusing Lambda Extensions

Über Ressourcenrichtlinien

Es ist möglich, den Zugriff auf verschiedene Lambda-Aktionen (wie Invoke oder Update Code) für externe Konten zu gewähren:

Versionen, Aliase & Gewichte

Eine Lambda kann verschiedene Versionen haben (mit unterschiedlichem Code in jeder Version).
Dann können Sie verschiedene Aliase mit unterschiedlichen Versionen der Lambda erstellen und jedem unterschiedliche Gewichte zuweisen.
Auf diese Weise könnte ein Angreifer eine hintertürige Version 1 und eine Version 2 mit nur dem legitimen Code erstellen und nur die Version 1 in 1% der Anfragen ausführen, um stealthy zu bleiben.

Version Hintertür + API Gateway

  1. Kopieren Sie den ursprünglichen Code der Lambda
  2. Erstellen Sie eine neue Version, die den ursprünglichen Code hintertürig macht (oder nur mit bösartigem Code). Veröffentlichen und setzen Sie diese Version auf $LATEST
  3. Rufen Sie das API-Gateway auf, das mit der Lambda verbunden ist, um den Code auszuführen
  4. Erstellen Sie eine neue Version mit dem ursprünglichen Code, veröffentlichen und setzen Sie diese Version auf $LATEST.
  5. Dies wird den hintertürigen Code in einer vorherigen Version verbergen
  6. Gehen Sie zum API Gateway und erstellen Sie eine neue POST-Methode (oder wählen Sie eine andere Methode), die die hintertürige Version der Lambda ausführt: arn:aws:lambda:us-east-1:<acc_id>:function:<func_name>:1
  7. Beachten Sie das finale :1 der arn das die Version der Funktion angibt (Version 1 wird in diesem Szenario die hintertürige sein).
  8. Wählen Sie die erstellte POST-Methode aus und wählen Sie in Aktionen API bereitstellen
  9. Jetzt, wenn Sie die Funktion über POST aufrufen, wird Ihre Hintertür aufgerufen

Cron/Ereignis-Aktuator

Die Tatsache, dass Sie Lambda-Funktionen ausführen können, wenn etwas passiert oder wenn etwas Zeit vergeht, macht Lambda zu einer schönen und gängigen Möglichkeit, Persistenz zu erlangen und Erkennung zu vermeiden.
Hier sind einige Ideen, um Ihre Präsenz in AWS stealthy zu gestalten, indem Sie Lambdas erstellen.

  • Jedes Mal, wenn ein neuer Benutzer erstellt wird, generiert Lambda einen neuen Benutzerschlüssel und sendet ihn an den Angreifer.
  • Jedes Mal, wenn eine neue Rolle erstellt wird, gewährt Lambda die Berechtigung zur Annahme von Rollen an kompromittierte Benutzer.
  • Jedes Mal, wenn neue CloudTrail-Protokolle generiert werden, löschen/ändern Sie diese.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks