cado-security/cloudgrep

GitHub: cado-security/cloudgrep

云存储日志搜索工具,无需下载或索引即可直接在S3、Azure Storage、GCS中快速检索关键字、正则表达式和YARA规则。

Stars: 326 | Forks: 20

# cloudgrep cloudgrep 用于搜索云存储。 ![ci](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/7a9b1ba0ea202739.svg) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) 目前支持在 AWS S3、Azure Storage 或 Google Cloud Storage 中搜索日志文件(可选择使用 gzip (.gz) 或 zip (.zip) 压缩)。 ![Diagram](readme/Diagram.png "Diagram") ### 为什么使用? - 直接搜索云存储,无需将日志索引到 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] - 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 ``` 或者在此处下载最新的编译版本 [here](https://github.com/cado-security/cloudgrep/releases/tag/Latest) 您可以在本地笔记本电脑上运行,也可以在云服务商的虚拟机上运行。 这需要 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 bucket。例如,如果您在笔记本电脑上运行,则需要 [configure the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。 如果您在 EC2 上运行,[Instance Profile](https://devopscube.com/aws-iam-role-instance-profile/) 可能是最佳选择。 如果您在与 S3 bucket 相同区域的 EC2 实例上运行,并使用 [VPC endpoint for S3](https://aws.amazon.com/blogs/architecture/overview-of-data-transfer-costs-for-common-architectures/),您可以 [avoid egress charges](https://awsmadeeasy.com/blog/aws-s3-vpc-endpoint-transfer-cost-reduction/)。 您可以通过[多种方式](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)进行身份验证。 #### Azure 向 Azure 进行身份验证的最简单方法是先运行: ``` az login ``` 这将打开一个浏览器窗口并提示您登录 Azure。 #### GCP 您需要创建一个服务账号并下载凭据文件,然后通过以下方式设置: ``` export GOOGLE_APPLICATION_CREDENTIALS="/Users/creds.json" ``` ### 贡献 我们欢迎对这个项目的任何贡献!请通过 Pull Request 添加。 未来可能的工作包括: - 支持 zstd 压缩 - 使用 grok 模式、Sigma、Yara 或正则表达式文件进行日志解析和检测 - 以标准 syslog 格式导出解析后的日志 ### 帮助 如果您有任何问题或建议,请提交一个 GitHub issue。 这不是 [Cado Security](https://www.cadosecurity.com/) 官方支持的产品。
标签:AWS S3, Azure Storage, CloudTrail, Debug, DevOps 工具, GCP, Google Cloud Storage, grep, Python, S3 日志, SIEM 替代, 二进制发布, 云存储, 压缩文件搜索, 多云支持, 安全调查, 开源工具, 数字取证, 数据查询, 数据泄露, 无后门, 无需索引, 日志搜索, 自动化脚本, 请求拦截, 逆向工具