cloudgrep durchsucht den Cloud-Speicher.
Es unterstützt derzeit die Suche nach Protokolldateien, optional komprimiert mit gzip (.gz) oder zip (.zip), in AWS S3, Azure Storage oder Google Cloud Storage.
Einfaches Beispiel:
./cloudgrep --bucket test-s3-access-logs --query 9RXXKPREHHTFQD77
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77
Einfaches Azure-Beispiel:
python3 cloudgrep.py -an some_account -cn some_container -q my_search
Einfaches Google-Beispiel:
python3 cloudgrep.py -gb my-gcp-bucket -q my_search
Einfaches CloudTrail-Protokollbeispiel mit Ausgabe der Ergebnisse als JSON:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 -lt cloudtrail -jo
Einfaches Beispiel für ein benutzerdefiniertes Protokoll:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 -lf json -lp Records
Komplizierteres Beispiel:
python3 cloudgrep.py -b test-s3-access-logs --prefix "logs/" --filename ".log" -q 9RXXKPREHHTFQD77 -s "2023-01-09 20:30:00" -e "2023-01-09 20:45:00" --file_size 10000 --debug
Speichern der Ausgabe in einer Datei:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 --hide_filenames > matching_events.log
Beispielausgabe:
[2023-11-30 13:37:12,416] - Bucket is in region: us-east-2 : Search from the same region to avoid egress charges.
[2023-11-30 13:37:12,417] - Searching 11 files in test-s3-access-logs for 9RXXKPREHHTFQD77...
{"key_name": "access2023-01-09-20-34-20-EAC533CB93B4ACBE", "line": "abbd82b5ad5dc5d024cd1841d19c0cf2fd7472c47a1501ececde37fe91adc510 bucket-72561-s3bucketalt-1my9piwesfim7 [09/Jan/2023:19:20:00 +0000] 1.125.222.333 arn:aws:sts::000011110470:assumed-role/bucket-72561-myResponseRole-1WP2IOKDV7B4Y/1673265251.340187 9RXXKPREHHTFQD77 REST.GET.BUCKET - "GET /?list-type=2&prefix=-collector%2Fproject-&start-after=&encoding-type=url HTTP/1.1" 200 - 946 - 33 32 "-" "Boto3/1.21.24 Python/3.9.2 Linux/5.10.0-10-cloud-amd64 Botocore/1.24.46" - aNPuHKw== SigV4 ECDHE-RSA-AES128-GCM-SHA256 AuthHeader bucket-72561-s3bucketalt-1my9piwesfim7.s3.us-east-2.amazonaws.com TLSv1.2 - -"}
usage: cloudgrep.py [-h] [-b BUCKET] [-an ACCOUNT_NAME] [-cn CONTAINER_NAME] [-gb GOOGLE_BUCKET] [-q QUERY]
[-v FILE] [-y YARA] [-p PREFIX] [-f FILENAME] [-s START_DATE] [-e END_DATE]
[-fs FILE_SIZE] [-pr PROFILE] [-d] [-hf] [-lt LOG_TYPE] [-lf LOG_FORMAT]
[-lp LOG_PROPERTIES] [-jo JSON_OUTPUT]
CloudGrep searches is grep for cloud storage like S3 and Azure Storage. Version: 1.0.5
options:
-h, --help show this help message and exit
-b BUCKET, --bucket BUCKET
AWS S3 Bucket to search. E.g. my-bucket
-an ACCOUNT_NAME, --account-name ACCOUNT_NAME
Azure Account Name to Search
-cn CONTAINER_NAME, --container-name CONTAINER_NAME
Azure Container Name to Search
-gb GOOGLE_BUCKET, --google-bucket GOOGLE_BUCKET
Google Cloud Bucket to Search
-q QUERY, --query QUERY
Text to search for. Will be parsed as a Regex. E.g. example.com
-v FILE, --file FILE File containing a list of words or regular expressions to search for. One per line.
-y YARA, --yara YARA File containing Yara rules to scan files.
-p PREFIX, --prefix PREFIX
Optionally filter on the start of the Object name. E.g. logs/
-f FILENAME, --filename FILENAME
Optionally filter on Objects that match a keyword. E.g. .log.gz
-s START_DATE, --start_date START_DATE
Optionally filter on Objects modified after a Date or Time. E.g. 2022-01-01
-e END_DATE, --end_date END_DATE
Optionally filter on Objects modified before a Date or Time. E.g. 2022-01-01
-fs FILE_SIZE, --file_size FILE_SIZE
Optionally filter on Objects smaller than a file size, in bytes. Defaults to 100 Mb.
-pr PROFILE, --profile PROFILE
Set an AWS profile to use. E.g. default, dev, prod.
-d, --debug Enable Debug logging.
-hf, --hide_filenames
Dont show matching filenames.
-lt LOG_TYPE, --log_type LOG_TYPE
Return individual matching log entries based on pre-defined log types, otherwise
custom log_format and log_properties can be used. E.g. cloudtrail.
-lf LOG_FORMAT, --log_format LOG_FORMAT
Define custom log format of raw file to parse before applying search logic. Used if
--log_type is not defined. E.g. json.
-lp LOG_PROPERTIES, --log_properties LOG_PROPERTIES
Define custom list of properties to traverse to dynamically extract final list of log
records. Used if --log_type is not defined. E.g. [Records].
-jo JSON_OUTPUT, --json_output JSON_OUTPUT
Output as JSON.
Installieren Sie mit: pip3 install -r requirements.txt
Oder laden Sie die neueste kompilierte Version hier herunter
Sie können dies von Ihrem lokalen Laptop oder von einer virtuellen Maschine Ihres Cloud-Anbieters aus ausführen.
Dies erfordert Python3.10 oder höher
Erstellen Sie mit: docker build -t cloudgrep .
Ausführen mit: docker run --rm -ti cloudgrep
Um Umgebungsvariablen zu übergeben, z. B. für AWS: docker run --rm --env-file <(env|grep AWS) -ti cloudgrep
Ihr System benötigt Zugriff auf den S3-Bucket. Wenn Sie beispielsweise auf Ihrem Laptop arbeiten, müssen Sie die AWS CLI konfigurieren. Wenn Sie eine EC2 verwenden, ist ein Instanzprofil wahrscheinlich die beste Wahl.
Wenn Sie eine EC2-Instanz in derselben Region wie der S3-Bucket mit einem VPC-Endpunkt für S3 ausführen, können Sie Gebühren für ausgehenden Datenverkehr vermeiden. Sie können sich auf verschiedene Arten authentifizieren.
Die einfachste Möglichkeit zur Authentifizierung bei Azure besteht darin, zunächst Folgendes auszuführen:
az login
Dadurch wird ein Browserfenster geöffnet und Sie werden aufgefordert, sich bei Azure anzumelden.
Sie müssen ein Dienstkonto erstellen, die Anmeldeinformationsdatei herunterladen und dann Folgendes festlegen:
export GOOGLE_APPLICATION_CREDENTIALS="/Users/creds.json"
Wir freuen uns über jeden Beitrag zu diesem Projekt! Bitte über einen Pull Request hinzufügen.
Mögliche zukünftige Arbeiten könnten Folgendes umfassen:
Bitte öffnen Sie ein GitHub-Problem, wenn Sie Fragen oder Vorschläge haben. Dies ist kein offiziell unterstütztes Cado Security-Produkt.