AWS Incident Response: vom geleakten Key zum Krypto-Mining
Ein fiktiver AWS-Vorfall, aus den Logs rekonstruiert: geleakter Key, Erkundung, Backdoor-Admin, GuardDuty gelöscht, 320 S3-Objekte, GPU-Mining in Singapur.
Fiktives Szenario. Alles in diesem Beitrag – das Unternehmen, die Personen, das Konto
111122223333, die Schlüssel, der Bucket – ist erfunden. Die IP-Adressen stammen aus den Dokumentationsbereichen nach RFC 5737. Es handelt sich um die Daten hinter der Schaltfläche Beispiel ausprobieren im Analyzer, sodass Sie jeden Schritt nachvollziehen können.
Kurzfassung. Am fiktiven 14. September 2026 wird der Access Key des Entwicklers dev-marco von einem VPS aus verwendet, auf dem Kali Linux läuft. Innerhalb von 48 Minuten prüft der Angreifer den Schlüssel, erkundet das Konto, legt einen Administrator-Benutzer backup-admin mit eigenem Schlüssel und Konsolenpasswort an, löscht GuardDuty in zwei Regionen, lädt 320 Objekte aus acme-customer-exports herunter und startet acht GPU-Instanzen in ap-southeast-1, die für einen Pool minen. Die Logs zeigen all das. Die Bewertung lautet Anzeichen einer Kompromittierung, und die Liste der Bereinigungsschritte muss zwei Schlüssel, einen Benutzer, eine Richtlinie, zwei Detektoren, acht Instanzen und eine Prüfung der Meldepflichten abdecken.
Die Belege
Das Beispiel-ZIP bildet echte Exporte nach:
| Quelle | Inhalt |
|---|---|
CloudTrail-Trail (S3-Struktur, json.gz, dazu eine Digest-Datei) | 449 Ereignisse vom 10. bis 14. September, darunter 325 S3-Datenereignisse |
| VPC Flow Logs (Auslieferung nach S3, mit Kopfzeile) | 2.335 Datensätze, eu-west-1 und ap-southeast-1 |
| S3-Server-Zugriffsprotokolle | 324 Zeilen für acme-customer-exports |
Ausgabe von GuardDuty get-findings | 2 Befunde, exportiert, bevor die Detektoren gelöscht wurden |
| IAM-Credential-Report | 4 Einträge, nach dem Vorfall erzeugt |
Vier ruhige Tage (10. bis 13. September) liefern die Baseline: ops-julia meldet sich mit MFA von der Büroadresse 198.51.100.24 an der Konsole an; dev-marco nutzt die CLI mit seinem langfristigen Schlüssel von derselben Adresse; eine ECS-Task-Rolle wird täglich übernommen.
Zeitleiste (UTC, 14. September 2026)
| Uhrzeit | Ereignis | Principal | Befund |
|---|---|---|---|
| 09:02:11 | sts:GetCallerIdentity von 203.0.113.77, User-Agent enthält kali | dev-marco (AKIA3EXAMPLEMARCO123) | Key von neuer IP verwendet (hoch), offensive Tools (hoch), GetCallerIdentity (niedrig) |
| 09:03–09:07 | 48 List-/Describe-/Get-Aufrufe über IAM, S3, EC2, Lambda, RDS, KMS, Organizations …, davon 14 mit AccessDenied | dev-marco | Häufung von API-Enumerationen (mittel), Häufung von AccessDenied-Fehlern (mittel) |
| 09:07 | GuardDuty: Discovery:IAMUser/AnomalousBehavior, PenTest:IAMUser/KaliLinux | — | GuardDuty-Befund ×2 (mittel) |
| 09:08:40 | iam:CreateUser backup-admin | dev-marco | IAM-Benutzer erstellt (niedrig) |
| 09:08:52 | AttachUserPolicy AdministratorAccess → backup-admin | dev-marco | Administratorrichtlinie angehängt (hoch) |
| 09:09:05 | CreateAccessKey für backup-admin → AKIA3EXAMPLEBKUP4567 | dev-marco | Key für einen anderen Benutzer erstellt (hoch) |
| 09:09:20 | CreateLoginProfile für backup-admin, ohne erzwungenes Zurücksetzen | dev-marco | Konsolenpasswort gesetzt (mittel) |
| 09:12:12 / 09:12:43 | guardduty:DeleteDetector in us-east-1 und eu-west-1 (Boto3) | backup-admin | GuardDuty deaktiviert ×2 (hoch) |
| 09:15:00–09:36:02 | ListObjects, dann 320 GetObject auf acme-customer-exports | backup-admin | Massen-Download aus S3 – Datenereignisse (hoch) und Zugriffsprotokolle (hoch) |
| 09:41:10 | CreateKeyPair ops-maint in ap-southeast-1 | backup-admin | Schlüsselpaar erstellt (niedrig) |
| 09:42:05 | Sicherheitsgruppe für 0.0.0.0/0 auf Port 22 geöffnet | backup-admin | Sicherheitsgruppe geöffnet (mittel) |
| 09:43:10 | Kontingenterhöhung für „Running On-Demand P instances“ | backup-admin | Kontingenterhöhung (mittel) |
| 09:44:10 / 09:46:10 | RunInstances 4× p3.8xlarge, 4× g4dn.12xlarge | backup-admin | GPU-Instanzen (hoch), neue Region (mittel) |
| 09:50:31 | ConsoleLogin backup-admin, MFAUsed: No, Firefox unter Linux | backup-admin | Konsolenanmeldung ohne MFA (mittel) |
| 09:52 → 12:01 | 8 Schnittstellen halten Verbindungen zu 192.0.2.150 auf den Ports 3333 und 14444 | — | Mining-Pool-Ports (hoch), 1.040 Datensätze |
Der Credential-Report ergänzt einen Befund zur Sicherheitslage: backup-admin hat ein Konsolenpasswort, aber kein MFA.
Wie die Untersuchung verläuft
1. Die Bewertung. Dreiundzwanzig Befunde, mehrere davon mit hohem Schweregrad und mit Signalen auf Angreiferseite (Zugriffsanomalie, Umgehung von Abwehrmaßnahmen, Exfiltration, Auswirkung): Die Bewertung lautet „Anzeichen einer Kompromittierung“. Als Hauptgründe werden der offensive User-Agent, der von einer neuen IP verwendete Schlüssel, die Administratorrichtlinie, der für einen anderen Benutzer erstellte Schlüssel und die beiden GuardDuty-Löschungen aufgeführt.
2. Der Einstiegspunkt. Pivotieren Sie im Tab „Entitäten“ auf AKIA3EXAMPLEMARCO123: vier Tage lang 198.51.100.24 mit einer macOS-CLI, dann ab 09:02 203.0.113.77 mit einer Kali-Build-Kennung. Der allererste Aufruf von der neuen Adresse ist GetCallerIdentity – der Lehrbuch-Auftakt bei einem geleakten Access Key. Wie der Schlüssel geleakt ist (laut Szenario über ein öffentliches Repository), liegt außerhalb der AWS-Logs.
3. Der zweite Schlüssel. Pivotieren Sie auf 203.0.113.77: Neben dem Schlüssel von dev-marco hat diese Adresse AKIA3EXAMPLEBKUP4567 verwendet, den um 09:09:05 für backup-admin erzeugten Schlüssel. Ab 09:12 nutzt der Angreifer den geleakten Schlüssel nie wieder. Nur den Schlüssel von dev-marco zu deaktivieren, hätte nichts geändert. Das ist das Muster der IAM-Persistenz in seiner einfachsten Form.
4. Umgehung von Abwehrmaßnahmen. Beide Detektoren werden innerhalb einer Minute gelöscht, drei Minuten nachdem die Backdoor existiert. CloudTrail selbst bleibt aktiv – kein StopLogging –, weshalb der Rest der Geschichte sichtbar ist. Die GuardDuty-Befunde überleben nur, weil sie zuvor exportiert worden waren; siehe den Beitrag zur Umgehung von Abwehrmaßnahmen.
5. Die Daten. 320 GetObject in 21 Minuten, von einem Principal auf einem Bucket, doppelt belegt: in den CloudTrail-Datenereignissen und in den Server-Zugriffsprotokollen. Die Objektschlüssel (exports/2026/customers/customers-0001.csv.gz bis -0320) bilden das Inventar für die Meldung. Beachten Sie, dass die VPC Flow Logs hier nichts zeigen: Der Download lief über das Internet von S3 zum Host des Angreifers und nie durch die VPC – genau die Grenze, die im Beitrag über Belege für S3-Datenexfiltration beschrieben ist.
6. Die Kosten. Eine Region ohne Aktivität während der Baseline, eine Kontingenterhöhung, ein Schlüsselpaar, SSH offen für die ganze Welt und acht GPU-Instanzen; ab 09:52 sprechen deren Schnittstellen jede Minute mit einer einzigen Adresse auf Pool-Ports. Der Beitrag zu Krypto-Mining behandelt diese Phase.
7. Die Konsolensitzung. Um 09:50 meldet sich der Angreifer ohne MFA als backup-admin an. Alles, was ab dann in der Konsole geschieht, würde mit sessionCredentialFromConsole erscheinen; in diesem Datensatz endet die Geschichte mit dieser Sitzung.
Die daraus erzeugte Liste der Bereinigungsschritte
Eindämmung zuerst, mit den Werten aus den Logs:
- Deaktivieren Sie
AKIA3EXAMPLEMARCO123undAKIA3EXAMPLEBKUP4567; ersetzen Sie den Schlüssel von dev-marco und entfernen Sie ihn aus dem Repository. - Sichern und löschen Sie anschließend
backup-admin(Richtlinie, Schlüssel, Login-Profil). - Lösen Sie AdministratorAccess von
backup-adminund prüfen Sie, wer diese Richtlinie sonst noch hat. - Blockieren Sie API-Aufrufe von
203.0.113.77, solange die Untersuchung läuft. - Erstellen Sie einen Snapshot einer Instanz, beenden Sie die acht Instanzen in ap-southeast-1 und prüfen Sie jede andere Region; löschen Sie das Schlüsselpaar
ops-maintund die offene Sicherheitsgruppe; ziehen Sie die KontingentanfrageL-417A185Bzurück. - Aktivieren Sie GuardDuty in us-east-1 und eu-west-1 wieder (idealerweise überall).
- Behandeln Sie
acme-customer-exportsals exfiltriert: Listen Sie die 320 Objekte auf und prüfen Sie die Meldepflichten. - Eröffnen Sie einen Fall beim AWS Support wegen der unbefugten Nutzung.
Was dieses Beispiel nicht zeigt
Echte Vorfälle sind unordentlicher: laute CI-Rollen, mehrere Angreifer-IPs, Role Chaining, Aktivität verteilt über Wochen und Logs, die genau dort fehlen, wo Sie sie brauchen. Das Beispiel ist bewusst sauber gehalten, damit die Methode sichtbar wird. Lesen Sie den Beitrag über die Grenzen einer rein logbasierten Untersuchung, bevor Sie echte Daten mit derselben Gewissheit bewerten, und folgen Sie für den Ablauf der Schritt-für-Schritt-Anleitung zur CloudTrail-Log-Analyse.