cloudgrep ค้นหาที่เก็บข้อมูลบนคลาวด์
ปัจจุบันรองรับการค้นหาไฟล์บันทึก สามารถเลือกบีบอัดด้วย gzip (.gz) หรือ zip (.zip) ใน AWS S3, Azure Storage หรือ Google Cloud Storage
ตัวอย่างง่ายๆ:
./cloudgrep --bucket test-s3-access-logs --query 9RXXKPREHHTFQD77
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77
ตัวอย่าง Azure แบบง่าย:
python3 cloudgrep.py -an some_account -cn some_container -q my_search
ตัวอย่าง Google ง่ายๆ:
python3 cloudgrep.py -gb my-gcp-bucket -q my_search
ตัวอย่างบันทึก CloudTrail แบบง่าย แสดงผลผลลัพธ์เป็น JSON:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 -lt cloudtrail -jo
ตัวอย่างบันทึกที่กำหนดเองอย่างง่าย:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 -lf json -lp Records
ตัวอย่างที่ซับซ้อนยิ่งขึ้น:
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
บันทึกผลลัพธ์เป็นไฟล์:
python3 cloudgrep.py -b test-s3-access-logs -q 9RXXKPREHHTFQD77 --hide_filenames > matching_events.log
ตัวอย่างผลลัพธ์:
[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.
ติดตั้งด้วย: pip3 install -r requirements.txt
หรือดาวน์โหลดรีลีสที่คอมไพล์ล่าสุดได้ที่นี่
คุณสามารถเรียกใช้สิ่งนี้จากแล็ปท็อปในพื้นที่ของคุณหรือจากเครื่องเสมือนในผู้ให้บริการคลาวด์ของคุณ
สิ่งนี้ต้องใช้ python3.10 หรือใหม่กว่า
สร้างด้วย: docker build -t cloudgrep .
รันด้วย: docker run --rm -ti cloudgrep
หากต้องการส่งผ่านตัวแปรสภาพแวดล้อม เช่น สำหรับ AWS: docker run --rm --env-file <(env|grep AWS) -ti cloudgrep
ระบบของคุณจะต้องมีสิทธิ์เข้าถึงบัคเก็ต S3 ตัวอย่างเช่น หากคุณใช้งานบนแล็ปท็อป คุณจะต้องกำหนดค่า AWS CLI หากคุณใช้งานบน EC2 โปรไฟล์อินสแตนซ์น่าจะเป็นตัวเลือกที่ดีที่สุด
หากคุณทำงานบนอินสแตนซ์ EC2 ในภูมิภาคเดียวกันกับบัคเก็ต S3 ที่มีตำแหน่งข้อมูล VPC สำหรับ S3 คุณสามารถหลีกเลี่ยงค่าบริการขาออกได้ คุณสามารถยืนยันตัวตนได้หลายวิธี
วิธีที่ง่ายที่สุดในการตรวจสอบสิทธิ์กับ Azure คือการเรียกใช้ครั้งแรก:
az login
นี่จะเป็นการเปิดหน้าต่างเบราว์เซอร์และแจ้งให้คุณเข้าสู่ระบบ Azure
คุณจะต้องสร้างบัญชีบริการและดาวน์โหลดไฟล์ข้อมูลรับรอง จากนั้นตั้งค่าด้วย:
export GOOGLE_APPLICATION_CREDENTIALS="/Users/creds.json"
เรายินดีรับการมีส่วนร่วมในโครงการนี้! กรุณาเพิ่มผ่านทางคำขอดึง
งานในอนาคตที่เป็นไปได้อาจรวมถึง:
โปรดเปิดปัญหา GitHub หากคุณมีคำถามหรือข้อเสนอแนะ นี่ไม่ใช่ผลิตภัณฑ์ Cado Security ที่ได้รับการสนับสนุนอย่างเป็นทางการ