cloudgrep
cloudgrep 用于搜索云存储。
目前支持在AWS S3、Azure Storage或Google Cloud Storage中搜索日志文件,可选择使用gzip (.gz)或zip (.zip)压缩。
为什么使用?
- 直接搜索云存储,而不是将日志索引到SIEM或日志分析工具中,可能更快、更便宜。
- 无需等待日志被摄取、索引并可供搜索。
- 它并行搜索文件以提高速度。
- 这在调试应用程序或调查安全事件时可能有用。
示例
简单示例:
./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] - 存储桶位于区域:us-east-2 : 从同一区域搜索以避免出口费用。
[2023-11-30 13:37:12,417] - 正在test-s3-access-logs中搜索11个文件,查询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 - -"}
参数
用法: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搜索是用于云存储(如S3和Azure Storage)的grep工具。版本:1.0.5
选项: -h, --help 显示此帮助信息并退出 -b BUCKET, --bucket BUCKET 要搜索的AWS S3存储桶。例如: my-bucket -an ACCOUNT_NAME, --account-name ACCOUNT_NAME 要搜索的Azure账户名 -cn CONTAINER_NAME, --container-name CONTAINER_NAME 要搜索的Azure容器名 -gb GOOGLE_BUCKET, --google-bucket GOOGLE_BUCKET 要搜索的Google Cloud存储桶 -q QUERY, --query QUERY 要搜索的文本。将被解析为正则表达式。例如: example.com -v FILE, --file FILE 包含要搜索的单词或正则表达式列表的文件。每行一个。 -y YARA, --yara YARA 包含Yara规则以扫描文件的文件。 -p PREFIX, --prefix PREFIX 可选地过滤对象名称的开头。例如: logs/ -f FILENAME, --filename FILENAME 可选地过滤匹配关键词的对象。例如: .log.gz -s START_DATE, --start_date START_DATE 可选地过滤在指定日期或时间之后修改的对象。例如: 2022-01-01 -e END_DATE, --end_date END_DATE 可选地过滤在指定日期或时间之前修改的对象。例如: 2022-01-01 -fs FILE_SIZE, --file_size FILE_SIZE 可选地过滤小于指定文件大小(以字节为单位)的对象。默认为100 MB。 -pr PROFILE, --profile PROFILE 设置要使用的AWS配置文件。例如: default, dev, prod。 -d, --debug 启用调试日志记录。 -hf, --hide_filenames 不显示匹配的文件名。 -lt LOG_TYPE, --log_type LOG_TYPE 根据预定义的日志类型返回单个匹配的日志条目,否则可以使用自定义log_format和log_properties。例如: cloudtrail。 -lf LOG_FORMAT, --log_format LOG_FORMAT 定义在应用搜索逻辑之前要解析的原始文件的自定义日志格式。在未定义--log_type时使用。例如: json。 -lp LOG_PROPERTIES, --log_properties LOG_PROPERTIES 定义要遍历以动态提取最终日志记录列表的自定义属性列表。在未定义--log_type时使用。例如: [Records]。 -jo JSON_OUTPUT, --json_output JSON_OUTPUT 以JSON格式输出。
部署
安装方法:
pip3 install -r requirements.txt
或从这里下载最新编译版本
你可以在本地笔记本电脑上运行,也可以在云提供商的虚拟机上运行。
这需要python3.10或更高版本
Docker
构建命令:
docker build -t cloudgrep .
运行命令:
docker run --rm -ti cloudgrep
要传递环境变量,例如AWS的:
docker run --rm --env-file <(env|grep AWS) -ti cloudgrep
在云中运行和身份验证
AWS
你的系统需要访问S3存储桶的权限。例如,如果你在笔记本电脑上运行,你需要配置AWS CLI。 如果你在EC2上运行,实例配置文件可能是最佳选择。
如果你在与S3存储桶相同区域的EC2实例上运行,并使用S3的VPC端点,你可以避免出站流量费用。 你可以通过多种方式进行身份验证。
Azure
与Azure进行身份验证的最简单方法是首先运行:
az login
这将打开一个浏览器窗口,提示你登录Azure。
GCP
你需要创建一个服务账户并下载凭据文件,然后设置:
export GOOGLE_APPLICATION_CREDENTIALS="/Users/creds.json"
贡献
我们欢迎对这个项目的任何贡献!请通过Pull Request添加。
可能的未来工作包括:
- 支持zstd压缩
- 使用grok模式、Sigma、Yara或正则表达式文件进行日志解析和检测
- 以标准syslog格式导出解析后的日志
帮助
如果你有任何问题或建议,请开启一个GitHub issue。 这不是Cado Security的官方支持产品。