Arama Komutları¶
aws-ct-search komutu¶
Bu komutu, bir Sigma kuralı yazmadan AWS CloudTrail günlüklerinden ilgilendiğiniz olayları çıkarmak için kullanın.
Eşleşen olaylar aws-ct-timeline ile aynı biçimde yazdırılır veya kaydedilir; böylece aramadan doğrudan bildiğiniz zaman çizelgesi sütunlarına geçebilirsiniz.
Olayları daraltmanın üç yolu vardır ve bunlar birlikte kullanılabilir:
| Seçenek | Neyle eşleşir | Birden fazla değer |
|---|---|---|
-F, --filter FIELD:VALUE |
Tek bir alanın değeri, tam eşleşme, büyük/küçük harfe duyarlı | -F tekrarlanır; tüm filtreler eşleşmelidir (VE) |
-k, --keyword KEYWORD |
Olay JSON'unun herhangi bir yerindeki alt dize, büyük/küçük harfe duyarsız (-c ile duyarlı) |
-k tekrarlanır; herhangi bir anahtar kelime yeterlidir (VEYA) |
-r, --regex REGEX |
Olay JSON'unun herhangi bir yerindeki düzenli ifade | Tek bir desen (alternatifler için kaçış uygulanmamış dikey çizgi karakterini | kullanın) |
Her olay bu sırayla kontrol edilir ve yalnızca tüm kontrolleri geçen olaylar çıktılanır: zaman aralığı (--timeline-start, --timeline-end, --time-offset) → -F → -k → -r.
Değerin hangi alanda olduğunu biliyorsanız (örneğin eventName:ConsoleLogin) -F, yalnızca dizeyi bilip nerede geçtiğini bilmiyorsanız -k veya -r kullanın.
-F, --filter nasıl çalışır¶
- Biçim
FIELD:VALUEşeklindedir. Argüman ilk:işaretinden bölünür, bu nedenle ARN gibi iki nokta içeren değerler olduğu gibi çalışır. - İç içe alanlar nokta gösterimiyle yazılır (
userIdentity.type). Baştaki.isteğe bağlıdır, bu yüzden.userIdentity.arnda çalışır. - Değeri çevreleyen tırnaklar (
"..."veya'...') kaldırılır. - Sayılar ve boolean değerler dize olarak karşılaştırılır, bu nedenle
-F readOnly:falseve-F responseElements.user.userId:12345çalışır. - Alana sahip olmayan bir olay eşleşmez.
- Dizi içindeki öğeler adreslenemez (
items.0.namegibi bir sözdizimi yoktur). :içermeyen bir filtre tarama başlamadan reddedilir:Invalid --filter 'eventName': expected FIELD:VALUE (e.g. eventName:ConsoleLogin).
Not:
aws-ct-metricsiçinde-Ffarklı bir anlama gelir; orada--field-name'dir ve yalnızca bir alan adı alır.aws-ct-searchiçinde--filter'dır ve her zamanFIELD:VALUEalır.
Komut kullanımı¶
Usage: suzaku aws-ct-search <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Directory of multiple gz/json/jsonl/csv/parquet files
-f, --file <FILE> File path to one gz/json/jsonl/csv/parquet file
Filtering:
-F, --filter <FILTER...> Filter by specific field(s)
-c, --preserve-case Case-sensitive keyword search
-k, --keyword <KEYWORD...> Search by keyword(s)
-r, --regex <REGEX> Search by regular expression
--timeline-start <DATE> Start time of the events to load (ex: "2022-02-22T23:59:59Z)
--timeline-end <DATE> End time of the events to load (ex: "2020-02-22T00:00:00Z")
--time-offset <OFFSET> Scan recent events based on an offset (ex: 1y, 3M, 30d, 24h, 30m)
--file-date-from <DATE> Filter files by start date based on AWSLogs S3 path date structure (ex: "20240101")
--file-date-to <DATE> Filter files by end date based on AWSLogs S3 path date structure (ex: "20241231")
Output:
-C, --clobber Overwrite files when saving
-G, --geo-ip <MAXMIND-DB-DIR> Add GeoIP (ASN, city, country) info to IP addresses
-o, --output <FILE> Save the results to a file
-t, --output-type <FORMAT,...> Output format(s) (only used with -o): csv (default), json, jsonl, duckdb. Comma-separate or repeat to write several at once, e.g. -t csv,duckdb [default: csv] [possible values: csv, json, jsonl, duckdb]
--raw-output Output the original JSON logs (only available in JSON formats or stdout)
--threads <THREAD NUMBER> Number of threads to use (default: same as CPU cores)
General Options:
-h, --help Show the help menu
Display Settings:
-K, --no-color Disable color output
-q, --quiet Quiet mode: do not display the launch banner
aws-ct-search komut örnekleri¶
Alana göre filtreleme (-F):
- Konsol oturum açmalarını bulun:
./suzaku aws-ct-search -d ../suzaku-sample-data -F eventName:ConsoleLogin - Root kullanıcısının API çağrılarını bulun (iç içe alan):
./suzaku aws-ct-search -d ../suzaku-sample-data -F userIdentity.type:Root - Belirli bir IAM kullanıcısının yaptığı her şeyi bulun (değer iki nokta içerir):
./suzaku aws-ct-search -d ../suzaku-sample-data -F userIdentity.arn:arn:aws:iam::123456789012:user/alice - Reddedilen çağrıları bulun:
./suzaku aws-ct-search -d ../suzaku-sample-data -F errorCode:AccessDenied us-east-1içindeki salt okunur olmayan IAM çağrılarını bulun (birden fazla filtre VE ile birleşir):./suzaku aws-ct-search -d ../suzaku-sample-data -F eventSource:iam.amazonaws.com -F awsRegion:us-east-1 -F readOnly:false- Belirli bir S3 bucket'ına erişimi bulun (API'ye özgü alan):
./suzaku aws-ct-search -d ../suzaku-sample-data -F requestParameters.bucketName:my-bucket
Anahtar kelime (-k) ve düzenli ifade (-r) ile arama:
- Herhangi bir yerinde bir IP adresi geçen olayları bulun:
./suzaku aws-ct-search -d ../suzaku-sample-data -k 203.0.113.10 - İki kullanıcıdan birinin geçtiği olayları bulun (birden fazla anahtar kelime VEYA ile birleşir):
./suzaku aws-ct-search -d ../suzaku-sample-data -k alice -k bob - Büyük/küçük harfe duyarlı anahtar kelime araması:
./suzaku aws-ct-search -d ../suzaku-sample-data -k AKIAIOSFODNN7EXAMPLE -c - CloudTrail'i devre dışı bırakma girişimlerini bulun:
./suzaku aws-ct-search -d ../suzaku-sample-data -r "(StopLogging|DeleteTrail|UpdateTrail)"
Koşulları birleştirme ve sonuçları kaydetme:
- Anahtar kelime aramasını tek bir olay kaynağıyla sınırlayın:
./suzaku aws-ct-search -d ../suzaku-sample-data -F eventSource:s3.amazonaws.com -k delete - Son 7 gündeki başarısız konsol oturum açmaları:
./suzaku aws-ct-search -d ../suzaku-sample-data -F eventName:ConsoleLogin -k Failure --time-offset 7d - Sonuçları GeoIP bilgisiyle CSV ve DuckDB olarak kaydedin:
./suzaku aws-ct-search -d ../suzaku-sample-data -F eventName:ConsoleLogin -G ../GeoLite2-DBs -o console-logins -t csv,duckdb - Eşleşen olayların orijinal JSON'unu kaydedin:
./suzaku aws-ct-search -d ../suzaku-sample-data -F userIdentity.type:Root -o root-events.jsonl -t jsonl --raw-output
aws-ct-search çıktısı¶
Çıktı sütunları aws-ct-timeline ile aynıdır ve DuckDB çıktısı da aynı DuckDB çıktı şemasını izler.
Sonunda taranan ve eşleşen olay sayısı yazdırılır: