AAKASHKUMARAN7/cloudguard-ai

GitHub: AAKASHKUMARAN7/cloudguard-ai

一款基于 NIST SP 800-53 SI 控制族的 AI 驱动 AWS 云安全监控平台,集成了 CVE 漏洞扫描、YARA 恶意软件检测、CloudTrail 机器学习异常分析和威胁情报匹配,并通过仪表板和 PDF 报告可视化安全态势。

Stars: 0 | Forks: 0

# CloudGuard AI [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/AAKASHKUMARAN7/cloudguard-ai/actions/workflows/ci.yml) [![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue)](https://www.python.org/) [![NIST SP 800-53](https://img.shields.io/badge/NIST%20SP%20800--53-SI%20controls-0b5394)](https://csrc.nist.gov/pubs/sp/800/53/r5/upd1/final) 我开发这款云安全监控工具是为了练习实现 NIST SP 800-53 SI 控制。它监控 AWS 基础设施中的异常、恶意软件、CVE 和文件完整性问题——然后将其全部可视化在仪表板上。 这是我为了准备安全认证考试,花了几周时间编写的。其中机器学习部分(使用 Isolation Forest 进行 CloudTrail 异常检测)是探索过程中最有趣的一环。 ## 截图 内置的 Web 控制台——包含一个页面,四个选项卡(概述 / 威胁 / 合规 / 发现),展示了来自最新扫描的实时发现: ![CloudGuard AI web 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/d6/d63ebf1ed5c3c8e4de94cf15804b97ea54ff18549f8878421cb60dbed2a786e0.png) 基于 Elasticsearch 中相同数据的 Grafana 视图——严重程度和控制细分、SI-4 事件时间线,以及原始发现表格: ![Grafana NIST SI 仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/45/45212c8c8a56fb9ccbd3fdd903cf383ce59522cca59594d661050227572c1358.png) ## 功能说明 六个安全模块作为一个扫描器运行: - **SI-2** — 根据 NVD CVE 数据库检查您的软件栈。标记 Log4j、OpenSSH、Apache、OpenSSL 中的严重/高危漏洞 - **SI-3** — 使用 YARA 规则扫描恶意软件模式(勒索软件、PowerShell 投放程序、凭证收集器) - **SI-4** — 在 CloudTrail 日志上应用 Isolation Forest 机器学习模型,捕捉诸如凌晨 3 点 root 登录或来自 Tor 出口节点的 API 调用等异常行为 - **SI-5** — 威胁情报源——检查是否有任何 CloudTrail 源 IP 与黑名单匹配,并发送 Slack 警报 - **SI-6** — 健康检查:验证所有依赖项、Python 版本和 env 配置 - **SI-7** — 对受监控文件进行 SHA-256 基线校验,检测修改/添加/删除操作 ## 架构 ``` main.py (orchestrator) | +----------------+------------------+ | | | | | SI-2 SI-3 SI-4 SI-5 SI-6/7 CVE YARA ML Threat Health/ Checker Scan Anomaly Intel Integrity | CloudTrail (local JSON or real S3) | +----------+----------+ | | PDF Report ELK Pipeline (ReportLab) Logstash → ES | Grafana + HTML Dashboard ``` **AWS(第二阶段):** ``` CloudTrail → S3 → Lambda (anomaly alerts to Slack) ↓ python main.py --aws (pulls logs, runs ML) ``` ## 安装说明 ### 本地(无需 AWS) ``` git clone https://github.com/AAKASHKUMARAN7/cloudguard-ai.git cd cloudguard-ai pip install -r requirements.txt python main.py ``` ### HTML 仪表板 ``` python -m src.dashboard.app # 打开 http://localhost:8080 ``` 仪表板每 30 秒自动刷新一次。它有 4 个选项卡:概述、威胁、合规、发现。您可以将发现筛选并导出为 CSV。 Chart.js 保留在 `src/dashboard/static/` 中,因此无需连接互联网即可使用。 仪表板显示实时的安全发现,且前端没有设置身份验证,因此默认情况下它仅绑定到 loopback。如果您希望在您信任的网络中通过其他设备访问它: ``` DASHBOARD_HOST=0.0.0.0 DASHBOARD_PORT=8080 python -m src.dashboard.app ``` 统计卡片、发现和威胁面板描述的是**最近一次扫描**—— 每个事件都标记有 `run_id`,因此这些数字反映的是当前的安全态势,而不是以往所有扫描的累计总数。时间线图表仍然涵盖了文件记录的完整历史记录。 ### ELK Stack + Grafana 您需要 Docker Desktop。首次拉取镜像需要一些时间(约 1.5GB)。 ``` .\start_dashboard.ps1 ``` 这将启动 Elasticsearch + Logstash + Kibana + Grafana,等待它们准备就绪,然后运行扫描器以填充数据。 ``` Grafana: http://localhost:3000 (admin / cloudguard) Kibana: http://localhost:5601 ``` ### AWS(第二阶段) ``` # 部署 infrastructure .\deploy_phase2.ps1 # 针对真实的 CloudTrail 日志运行 python main.py --aws ``` 部署:S3 存储桶(已加密、已启用版本控制)、CloudTrail 跟踪、Lambda 函数(由新的日志文件触发)、具有最小权限策略的 IAM 角色。 ## 项目结构 ``` cloudguard-ai/ ├── main.py # runs all 6 modules, generates report ├── requirements.txt ├── docker-compose.yml ├── start_dashboard.ps1 # one-click ELK + scan ├── deploy_phase2.ps1 # AWS infra deploy │ ├── src/ │ ├── si2_flaw_remediation/ # NVD CVE API │ ├── si3_malware_protection/ # YARA rules + scanner │ ├── si4_system_monitoring/ # Isolation Forest, CloudTrail, GuardDuty │ ├── si5_threat_intelligence/ # blocklist matching + Slack │ ├── si6_security_verification/ # health checks │ ├── si7_integrity_monitoring/ # SHA-256 baseline │ ├── dashboard/ # HTML dashboard (Chart.js vendored in static/) │ └── reporting/ # PDF report │ ├── terraform/ # S3, CloudTrail, Lambda, IAM ├── lambda_functions/ # rule-based detector (stdlib only) ├── docker/ # Logstash pipeline, Grafana provisioning ├── sample_data/ # test CloudTrail logs + sample malware files └── tests/ # pytest (80 tests) ``` ## 配置 创建一个 `.env` 文件(从 `.env.example` 复制): ``` AWS_REGION=ap-south-1 S3_BUCKET_NAME=your-bucket-name # 可选 - 更高的 NVD API rate limits NVD_API_KEY=your-key # 可选 - Slack 警报 SLACK_WEBHOOK_URL=https://hooks.slack.com/services/... # 可选 - 如果你手动启用了 GuardDuty GUARDDUTY_DETECTOR_ID=your-detector-id ``` ## CLI 参数 ``` python main.py # local mode (uses sample_data/) python main.py --aws # pull real CloudTrail logs from S3 python main.py --reset # delete integrity baseline ``` ## 测试 ``` pip install pytest python -m pytest tests/ -v ``` 测试范围涵盖:SHA-256 哈希、基线创建/篡改检测、CVE 严重性映射、API 回退逻辑、ML 特征提取、异常评分。 ## 运行输出示例 ``` ============================================================ CloudGuard AI - Intelligent Cloud Security Platform ============================================================ NIST SP 800-53: SI-2 | SI-3 | SI-4 | SI-5 | SI-6 | SI-7 Mode: Phase 1 - Local Mode [SI-6] All security components verified and operational. [SI-7] VIOLATION: security_policy.json — SHA-256 mismatch detected [SI-2] CVE-2021-44228 Apache Log4j 2.14.1 [CRITICAL] CVSS 10.0 Log4Shell remote code execution via JNDI lookup [SI-3] ransomware_sample.txt matched rule 'Ransomware_Indicators' [CRITICAL] [SI-4] 5 anomalous events out of 35 CloudTrail records DeleteTrail | 185.220.101.45 | 03:17 AM [HIGH] GetSecretValue | 185.220.101.45 | 03:55 AM [HIGH] [SI-5] 3 threat intel matches — 185.220.101.45, 45.33.32.156, 198.199.119.175 Compliance Score: 17% (1/6 controls passing) Report saved: reports/cloudguard_report_20260507_143022.pdf ``` ## 审计我自己的工具 一个未经审计的安全工具本身就是一个隐患。我专门回头审查了这份代码,寻找审查者可能会发现的问题,并修复了它们: **仪表板中的存储型 XSS。** 发现中包含了受攻击者影响的文本—— 扫描到的文件名、CloudTrail 事件名称和源 IP,以及从 NVD 提取的 CVE 描述。所有这些内容都未经过转义,就被直接拼接到 8 个渲染位置的 `innerHTML` 中,因此,精心构造的日志行会在仪表板中执行 JavaScript。这是针对面向分析师视图的日志注入:正是你最不希望它出现的地方,因为打开页面的人正在调查安全事件。已通过对每个插值进行转义来修复此问题,并通过针对 `` 运行页面自身的渲染函数进行验证,断言 payload 在所有三个接收器中输出时均处于无效状态。 **不适用于所扫描版本的 CVE。** NVD 查询使用了 `keywordSearch`,这会匹配 CVE 文本中任意位置出现的产品名称。Log4j 2.14.1 返回了一个 2008 年的 CVSS-2.1 问题,而 OpenSSH 8.9 返回了一个 1999 年的问题——同时完全漏掉了 Log4Shell。现已切换为通过 `virtualMatchString` 进行 CPE 匹配,它会根据受影响的版本范围进行解析。现在 Log4j 能正确报告 CVE-2021-44228 了。 **在时间上撒谎的合规报告。** 报告盖上的是 `datetime.now()` 的时间戳,但标记的却是 UTC,导致审计产出物偏差了 5 小时 30 分钟。 **看起来卡死的仪表板。** 单线程的 `HTTPServer` 意味着 30 秒的自动刷新和 200KB 的资源获取请求会在彼此后面排队——在打开浏览器的情况下,每个请求大约需要 3.9 秒。`ThreadingHTTPServer` 将耗时降到了 0.06 秒。 **需要互联网的仪表板。** Chart.js 以前是从 CDN 加载的,因此在锁定的网络环境下所有图表都会失效。现已实现在本地内置;该页面现在完全自包含。 ## 备注 - 示例 CloudTrail 数据包含 30 个正常事件和 5 个植入的异常(非工作时间、Tor 出口节点 IP、root 账户使用、破坏性 API 调用) - YARA 回退机制:如果 yara-python 安装失败(在没有 Visual C++ 的 Windows 上很常见),扫描器将回退到字符串模式匹配 - CVE 检查器通过 CPE (`virtualMatchString`) 查询 NVD,而不是使用关键词——关键词搜索会匹配文本中任意位置的产品名称,并返回 20 世纪 90 年代无关的 CVE。结果按 CVSS 排序,每个产品最多限制 5 条。限制速率为 1 次请求/600 毫秒;如果 API 宕机,它会使用硬编码的回退数据(如 Log4Shell 等) - Chart.js 实现在 `src/dashboard/static/` 本地,而不是从 CDN 加载,因此仪表板可以在没有互联网连接的情况下渲染 - ELK 仪表板使用索引模式 `cloudguard-events-*`,并以 `@timestamp` 作为时间字段 ## 技术栈 Python 3.11 · scikit-learn · yara-python · boto3 · reportlab · requests · colorama · Elasticsearch 8.12 · Logstash · Kibana · Grafana · Terraform · AWS (CloudTrail、S3、Lambda、GuardDuty)
标签:AMSI绕过, DNS 反向解析, GPT, PE 加载器, x64dbg, 内容过滤, 威胁检测, 异常检测, 恶意软件扫描, 漏洞管理, 请求拦截, 越狱测试, 逆向工具