
Automatisiertes Cloud-Sicherheitsprüfungstool, das den Missbrauch von AK/SK-Anmeldedaten durch regelmäßige Prüfung von Cloud-Plattformprotokollen mithilfe von Anomalieerkennung, Blacklist-Regeln und Baseline-Analyse für Tencent Cloud und AWS erkennt.
cloud-audit (Cloud Security Audit Assistant) ist ein Tool zur Erkennung von missbräuchlich genutzten AK/SK-Leaks von Public-Cloud-Anbietern. Es ruft regelmäßig die Schnittstellen der Cloud-Plattform zur Überprüfung von Protokollen auf und erkennt verdächtige Eindringlinge basierend auf anormalem Verhalten/schwarzen Merkmalen/Baselines.
Derzeit werden nur Tencent Cloud und AWS unterstützt.
Schritt 1: Führen Sie den Befehl zum Installieren der Abhängigkeiten aus
cd /opt/ && git clone https://github.com/al0ne/cloud-audit
cd cloud-audit && pip3 install -r requirements.txt
Schritt 2: Erstellen und bearbeiten Sie die .env-Konfiguration
cp .env.example .env
Füllen Sie die .env-Datei entsprechend Ihrer tatsächlichen Konfiguration aus
# Tencent Cloud AK/SK-Informationen, benötigt AK/SK zum Aufrufen der API-Schnittstelle, um Protokolle zu erhalten
TencentAccessKey="xxx"
TencentSecretKey="xxx"
# Liste der zu überwachenden AK/SK auf Tencent Cloud
AccesskeyList="xxx,xxx,xxx"
# AWS AK/SK-Informationen
AWS_ACCESS_KEY_ID="xxx"
AWS_SECRET_ACCESS_KEY="xxx"
# Discord-Benachrichtigungsinformationen
discord_webhook_url=""
# WeCom-Roboterbenachrichtigung
weixin_webhook_url=""
Schritt 3: Wichtige Programmeinstellungen
# Vertrauenswürdige Netzwerke, nicht vertrauenswürdige Netzwerke lösen bei sensiblen Operationen sofort Alarm aus.
while_cidr = ["192.168.0.0/16", "172.16.0.0/12", "10.0.0.0/8"]
# AWS-Regionen, die überwacht werden sollen; Ereignisse außerhalb dieser Regionen werden nicht abgefragt
aws_region = [
"us-east-1",
"us-east-2",
"ap-northeast-1",
"ap-southeast-1"
]
Ausführung
python3 cloud-audit.py
Das Programm führt die Suchergebnisse alle 15 Minuten aus.
Da AWS-Protokolle über den AWS CloudTrail-Dienst gelesen und überprüft werden, stellen Sie bitte sicher, dass Ihr Konto über die IAM-Berechtigung AWSCloudTrail_ReadOnlyAccess verfügt, um dieses Produkt nutzen zu können. Andernfalls wird die folgende Fehlermeldung angezeigt.
botocore.exceptions.ClientError: An error occurred (AccessDeniedException) when calling the LookupEvents operation: User: arn:aws:iam::xxxxx:user/test is not authorized to perform: cloudtrail:LookupEvents because no identity-based policy allows the cloudtrail:LookupEvents action
Gehen Sie zur AWS IAM-Konsole, wählen Sie den Benutzer aus und fügen Sie unter 'Berechtigungen' die entsprechende Berechtigung hinzu.
Bei der Verwendung einiger Tools zur Cloud-Plattform-Ausnutzung umfassen die typischen Aktionen dieser Tools das Scannen aller Regionen auf RDS-Instanzen, aller Regionen auf ECS-Instanzen oder Container, das Erstellen/Löschen von Unterkonten, das Ausführen von Befehlen usw. Diese Aktionen selbst sind relativ sensible Operationen, daher werden diese Aktionen über die Protokollschnittstellen der jeweiligen Cloud-Plattformen erfasst.
Eine andere Methode basiert auf sensiblen Operationen von nicht vertrauenswürdigen Netzwerken. Normalerweise erfolgen Aufrufe aus dem IDC-internen Netz oder über die IDC-Ausgangs-IP. Wenn AK/SK-Aufrufe von nicht vertrauenswürdigen Unternehmensnetzwerken auftreten und es sich um risikoreiche Operationen handelt, wird sofort Alarm ausgelöst.
Häufige sensible Schlüsseloperationen sind zum Beispiel:
Der größte Unterschied zwischen Tencent Cloud und AWS in Bezug auf API-Aufrufe besteht darin, dass Tencent Cloud über die API-Schnittstelle die detaillierten Aktionen einer bestimmten AK-ID abfragen kann, während AWS nur auf der Plattform suchen kann, aber nicht über AK/SK die aktuellsten Ausführungsinformationen einer bestimmten AK-ID abrufen kann.
Um die Nutzung von Tencent Cloud AK/SK zu erkennen, muss daher die Liste der zu überwachenden AK-IDs der laufenden Geschäftsprozesse eingegeben werden, um regelmäßig die von einer bestimmten AK-ID ausgeführten Aktionen zu überprüfen.
AWS kann Protokolle nur basierend auf Regionen und Aktionen abrufen. Über AK/SK wird die CloudTrail-Schnittstelle aufgerufen, um zu überprüfen, ob es Protokolle für eine bestimmte Aktion in einer bestimmten Region gibt.
Daher basiert AWS mehr auf Baseline-Bewertungen.
def DescribeInstances(CloudTrailEvent: dict):
"""
检测使用AK/SK列ec2信息
:param CloudTrailEvent:
:return: None
"""
accessKeyId = CloudTrailEvent.get('userIdentity').get('accessKeyId')
arn = CloudTrailEvent.get('userIdentity').get('arn')
eventTime = utc_to_china_tz(CloudTrailEvent.get('eventTime'))
eventName = CloudTrailEvent.get('eventName')
awsRegion = CloudTrailEvent.get('awsRegion')
sourceIPAddress = CloudTrailEvent.get('sourceIPAddress')
userAgent = CloudTrailEvent.get('userAgent')
sip_verify = False
for cidr in while_cidr:
if ipaddress.ip_address(sourceIPAddress) in ipaddress.ip_network(cidr):
sip_verify = True
if not sip_verify and 'aws-internal' not in userAgent:
message = f"{text_title}\n时间:{eventTime}\n账号ID:{arn}\nRegion:{awsRegion}\nAccessKey ID:{accessKeyId}\n"
f"执行动作:{eventName}\nIP地址:{sourceIPAddress}\nUser-Agent:{userAgent}\n\n"
f"检测到有外部IP请求列实例信息,请注意是否为攻击者利用!"
send_message(message)
Discord-Benachrichtigungs-Screenshot



Derzeit wird nur basierend auf Verhalten erkannt, tatsächlich könnte auch basierend auf Baseline erkannt werden.