cloudgrep은 클라우드 스토리지를 검색합니다.
현재 AWS S3, Azure Storage 또는 Google Cloud Storage에서 선택적으로 gzip(.gz) 또는 zip(.zip)으로 압축된 로그 파일 검색을 지원합니다.
간단한 예:
./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
결과를 JSON으로 출력하는 간단한 CloudTrail 로그 예:
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에서 실행 중인 경우 인스턴스 프로필이 최선의 선택일 가능성이 높습니다.
S3용 VPC 엔드포인트가 있는 S3 버킷과 동일한 리전의 EC2 인스턴스에서 실행하는 경우 송신 비용을 피할 수 있습니다. 다양한 방법으로 인증할 수 있습니다.
Azure에 인증하는 가장 간단한 방법은 먼저 다음을 실행하는 것입니다.
az login
그러면 브라우저 창이 열리고 Azure에 로그인하라는 메시지가 표시됩니다.
서비스 계정을 만들고 자격 증명 파일을 다운로드한 후 다음을 설정해야 합니다.
export GOOGLE_APPLICATION_CREDENTIALS="/Users/creds.json"
우리는 이 프로젝트에 대한 어떤 기여라도 환영합니다! Pull Request를 통해 추가해주세요.
가능한 향후 작업은 다음과 같습니다.
질문이나 제안 사항이 있으면 GitHub 문제를 열어주세요. 이것은 공식적으로 지원되는 Cado Security 제품이 아닙니다.