theTyai/gambit

GitHub: theTyai/gambit

GAMBIT是一款基于AI的恶意软件行为智能追踪平台,用于分析Android APK并生成风险评估。

Stars: 0 | Forks: 0

# GEN-AI 恶意软件分析系统 — 完整深度解析 ## 系统哲学 核心思想是将一个二进制 APK 文件——对于银行的欺诈团队来说是透明的——转换成一个人类可读的情报报告,告诉分析师恶意软件做了什么,谁可能编写了它,它如何针对银行客户,以及如何应对。每一层都存在是为了丰富数据,减少不确定性,并使最终输出更具可解释性。 ## 第 1 层 — 摄入与预处理 **目的**:创建一个可靠、可审计的摄入管道,统一处理所有 APK 入口点。 **工作原理**: 基于 Watchdog 的文件监听器监控摄入目录 `/data/raw/`。一旦 APK 到达——无论是通过 WhatsApp 转发、电子邮件附件还是手动上传——监听器就会在 Apache Kafka 消息总线 上触发一个 `NEW_APK_UPLOAD` 事件。选择 Kafka 的原因在于它能够优雅地处理突发流量;欺诈活动可能在几分钟内交付 50 个 APK 变体。 **预处理步骤(所有同步操作,在第 2 层之前)**: * 计算 SHA-256、MD5、SHA1 哈希并存储 * 通过 API 进行 VirusTotal 预检查——如果哈希已知的,则快速路径到报告 * ssdeep 和 TLSH 模糊哈希(新改进)——与加密哈希不同,模糊哈希在文件几乎相同的情况下仍然相似。两个具有 85%+ TLSH 相似度的 APK 几乎肯定来自同一威胁行为者,即使它们被重新打包 * 与案例数据库进行去重 * 元数据提取:包名、声明的权限、证书指纹、编译时间戳 * 构造一个 Case 对象(JSON)并发布到下游 **输出模式(Case 对象)**: ``` { "case_id": "uuid-v4", "sha256": "abc123...", "tlsh": "T1...", "ssdeep": "3072:...", "source_channel": "whatsapp", "sender_info": "...", "ingested_at": "ISO8601", "virustotal_hit": false, "package_name": "com.example.app", "cert_fingerprint": "..." } ``` **工具**:Apache Kafka、Python watchdog 库、python-tlsh、ssdeep、VirusTotal API v3、python-apk ## 第 2 层 — 结构性分类(二进制 DNA) **目的**:在开始昂贵分析之前进行快速家族分类。早期拒绝明显的良性文件;优先处理真正新颖的样本。 **工作原理**: 将 APK 二进制文件读取为原始字节,并将其转换为 512×512 灰度像素数组——每个字节成为一个像素值 0–255。这将代码结构转换为视觉纹理:打包/加密部分看起来像噪声区域,重复的代码循环看起来像水平带,不同的恶意软件家族产生可识别的不同的视觉模式。 在 Drebin 和 CICAndMal2017 数据集上训练的精调 ResNet-50 CNN(PyTorch)摄取此图像,并输出一个已知恶意软件家族(FluBot、Anatsa、SpyNote、Joker、BankBot 等)的概率分布。 **Smali SimHash 用于变体检测(新改进)**: 在解包 DEX 文件后,计算 Smali 字节码的 SimHash 指纹(Android 代码的中间表示)。此指纹存储在 Neo4j 图数据库中。每个新样本都与所有现有指纹进行比较。如果两个 APK 得分 85%+ 相似,则它们被视为同一活动的变体——即使它们的 SHA256 哈希完全不同,VirusTotal 也从未见过任何一个。这是输出中活动链接背后的技术机制。 **输出——分类报告**: ``` { "family_predictions": [ {"family": "Anatsa", "probability": 0.87}, {"family": "FluBot", "probability": 0.09} ], "similarity_score": 0.94, "binary_entropy": 7.2, "variant_cluster_id": "cluster-42", "linked_cases": ["case-id-7", "case-id-12"] } ``` **工具**:PyTorch、ResNet-50 / EfficientNet、自定义 APK-to-image 转换器、simhash、Neo4j(用于变体图)、Python numpy ## 第 3 层 — 反向工程(由 GenAI 驱动) **目的**:分解 APK 的代码,了解其功能,并生成其逻辑的机器可读和人类可读表示。 **工作原理**: `apktool` 将 APK 解包到 Smali 字节码(Android 的汇编语言等效物)。`jadx` 将 DEX 字节码反编译为可读的 Java。`Androguard` 生成抽象语法树(AST)和控制流图(CFG)——一个有向图,其中节点是代码块,边是执行路径。 对于银行木马,CFG 揭示了关键模式:例如,哪个代码路径从 SMS 接收事件到网络上传调用。 **GenAI RE 引擎(新改进——本层中最重要的)**: 而不是将 CFG 作为原始图留下,一个 3 阶段 LLM 提示链处理它: * **阶段 A(代码摘要器)**:对于每个识别出的函数,将 Smali 字节码传递给 Llama 3,提示为:“用普通英语解释这个 Android 方法做了什么。关注它访问的数据和它做出的外部调用。” 输出:每个函数的自然语言描述。 * **阶段 B(意图分类器)**:将函数摘要集合传递: “根据这些方法描述,分类此应用程序的主要意图:凭证盗窃 / OTP 拦截 / 金融覆盖欺诈 / 监视 / 勒索软件 / 广告软件。识别攻击向量。” 输出:具有置信度分数的结构化意图分类。 * **阶段 C(叙述)**:综合完整上下文(CFG 路径、API 序列、意图分类): “编写一个简洁的调查叙述,解释此 APK 作为恶意软件工具的操作方式。使用银行欺诈分析师可以向管理层展示的语言。” 输出:最终报告中第一个自然语言组件。 **银行权限分类法(新改进)**: 在静态分析标志之上建立基于规则的评分层,标记出表明银行欺诈的具体权限组合: | 权限组合 | 威胁信号 | | :--- | :--- | | READ_SMS + INTERNET | OTP 盗窃 → 账户接管 | | ACCESSIBILITY_SERVICE + SYSTEM_ALERT_WINDOW | UI 覆盖攻击 → 凭证捕获 | | BIND_DEVICE_ADMIN + RECEIVE_BOOT_COMPLETED | 持久性 + 管理权限 → 勒索软件 | | READ_CONTACTS + SEND_SMS | 联系人收集 + SMS 传播 | **输出——RE 报告 + 特征向量**: CFG 路径、API 调用序列、权限标志和 LLM 生成的摘要被数值编码到特征向量中——一个固定长度的数组,适合作为 Layer 6 中 ML 模型的输入。 **工具**:apktool、jadx、Androguard、dexlib2、MobSF 静态 API、Llama 3(通过 Ollama 自托管)、自定义权限分类规则 ## 第 4 层 — 深度分析(静态 4A + 动态 4B 并行) 这两个子层并行运行,它们的输出合并到一个统一的特征向量中。 ### 4A — 静态分析 **提取内容**: * 完整清单分析:声明的权限、导出的组件、意图过滤器 * API 调用图:哪些 Android API 被调用,调用顺序以及从哪些代码路径调用 * 字符串提取:硬编码的 URL、IP 地址、C2 域名模式、Base64 编码的有效负载 * N-gram 分析:与恶意软件家族相关的 API 调用序列中的统计模式 * AST 和 CFG 特征:深度、分支因子、循环复杂度(高复杂度 = 可能被混淆) **UI 覆盖检测(新改进)**: 一个专用模块检查 APK 是否声明 `SYSTEM_ALERT_WINDOW` 权限并且包含监视前台应用程序包名的代码。如果前台应用程序与任何已知的银行应用程序(SBI、HDFC、尼泊尔投资银行等——可配置列表)匹配,则系统将 `BANKING_OVERLAY_ATTACK` 标记为严重性为关键。这是南亚银行木马的第一大凭证盗窃向量。 ### 4B — 动态分析 **MobSF 替换自定义 QEMU(新改进——对演示稳定性至关重要)**: 而不是构建脆弱的自定义 QEMU + Frida 捆绑,MobSF 内置的 Android 模拟器提供了一个只需一个 API 调用的沙盒,它已经过生产战斗测试。一个 REST API 调用提交 APK;MobSF 运行它 60–120 秒,并返回一个包含以下内容的 JSON 报告: * 带有时间戳的完整 API 调用日志 * 网络流量(HTTP 请求、DNS 查询、TLS 指纹) * 文件系统操作(创建、读取、删除的文件) * SMS/通话日志访问事件 * 显示任何覆盖窗口的截图捕获 **eBPF 系统调用监控(差异化)**: 对于检测和规避 MobSF 的高级样本,在内核级别附加 eBPF(扩展伯克利包过滤器)探针。这位于 Android 用户空间之下,对 APK 来说是不可见的——恶意软件无法检测或规避它。在这里捕获的系统调用跟踪对于根套件持久机制特别有价值。 **输出**:API 调用序列日志 + 网络跟踪 + 文件系统差异 + 行为摘要 JSON ## 第 5 层 — 认知智能引擎(GenAI + RAG) **目的**:这是将系统从“恶意软件扫描器”提升到“银行智能平台”的层。它将技术发现与已知威胁行为者活动联系起来,生成合规官员可以提交的叙述,并将每个行为映射到 MITRE ATT&CK 框架。 **RAG(检索增强生成)——新改进,消除幻觉**: 一个向量数据库(Chroma 或 Weaviate)预先填充: * VirusTotal 社区针对已知恶意软件家族的撰写 * 已发布的 Anatsa、FluBot、SpyNote 活动分析 * MITRE ATT&CK 技术描述 * 南亚银行木马报告(特别是针对尼泊尔/印度/孟加拉国的威胁格局特别相关) 当 LLM 处理一个新样本时,特征向量被语义嵌入,并用于从向量数据库中检索 5–10 个最相似已知的威胁报告。这些报告被注入到 LLM 的上下文中作为基础材料。这意味着模型会说“此 APK 与 2024 年 3 月记录的 Anatsa 活动相似,具有相同的 C2 通信模式”,而不是发明一个通用的描述。 **多阶段链的详细说明**: 阶段 A 和 B(来自 Layer 3)输入到阶段 C,现在它还可以访问动态跟踪。最终的提示是: **活动链接器(图神经网络)**: 提取的 IOCs(C2 IP、域名、证书哈希)与随着时间的推移填充到 Neo4j 图中的节点进行比较。如果任何 IOCs 与图中的节点匹配,则样本与现有的活动集群链接。图神经网络(PyG / DGL)计算节点嵌入以找到结构上相似的活动,即使它们没有共享任何精确的 IOCs——这可以捕获旋转基础设施的威胁行为者。 **输出——决策有效载荷**: ``` { "attribution_narrative": "This APK operates as a banking overlay trojan...", "exec_summary": "Critical-severity Android malware targeting OTP authentication...", "mitre_ttps": ["T1411", "T1430", "T1636.002"], "iocs": {"domains": [...], "ips": [...], "hashes": [...]}, "campaign_id": "ANATSA-VARIANT-7", "confidence": 0.91 } ``` **工具**:Chroma / Weaviate(向量数据库)、Llama 3 通过 Ollama、LangChain(链编排)、Neo4j、PyTorch Geometric(GNN)、sentence-transformers(嵌入) ## 第 6 层 — 预测风险评分引擎 **目的**:将所有上游信号转换为单个可辩护、可解释的风险评分,以便银行的自动化系统可以采取行动。 **集成模型**: 三个模型并行运行,它们的输出被加权: * **XGBoost**:在表格特征(权限、API 计数、字符串熵)上训练 * **随机森林**:在 N-gram 和 CFG 特征上训练 * **GNN**:在活动图上训练,根据网络距离已知恶意行为者进行评分 元学习器将它们结合起来,并根据历史记录在最近样本上表现更好的模型调整权重。 **SHAP 可解释性——新改进(对银行来说是不可协商的)**: 每个风险评分都伴随着一个 SHAP 水龙头图分解: 这是银行合规团队需要证明冻结账户或升级到监管机构的原因。没有解释的数字将被拒绝。 **人工反馈层(新改进)**: | 评分范围 | 行动 | | :--- | :--- | | 85–100 | 自动 SOAR 触发器——无需人工 | | 70–84 | 在 2 小时内排队供分析师审查 | | 50–69 | 低优先级队列——分析师在 24 小时内审查 | | 0–49 | 记录,无行动,可供未来关联 | **分析师反馈循环(新改进——自我改进的系统)**: 当分析师覆盖裁决(将关键标记为误报)时,该更正是捕获为标记的训练样本。在积累 50+ 修正后,模型通过主动学习管道自动重新训练。这意味着系统随着时间的推移在银行的 APK 语料库上不断改进,比通用基线模型更准确。 **工具**:XGBoost、scikit-learn(随机森林)、PyTorch Geometric(GNN)、SHAP 库、MLflow(模型跟踪)、Kubeflow(重新训练管道) ## 第 7 层——编排、报告和 SOAR 响应 **目的**:将情报转化为行动,并生成银行可以用于法律、合规和运营响应的工件。 **生成的报告类型**: * **技术分析师报告**:完整发现——CFG 分析、所有 IOCs、SHAP 分解、MITRE ATT&CK 映射、动态跟踪日志。供 SOC 团队使用。 * **执行摘要(1 页)**:对威胁、对银行的威胁以及建议行动的平实描述。供 CISO/CTO 使用。 * **法律/合规简报**:从摄入到裁决的加密时间戳链式保管。每个分析步骤都进行了记录并哈希签名。 * **威胁情报导出**:以 STIX/TAXII 格式导出的 IOCs,可通过 MISP 与其他金融机构共享。 **SOAR 自动化**: 所有操作都预先编码为 TheHive/Cortex 或自定义 REST 框架中的剧本: * `POST /api/account/flag`——标记接收 APK 的客户账户以进行增强监控 * `POST /api/block/domain`——将 C2 域推送到银行的 DNS 黑名单 * `POST /api/alert/soc`——在 SOC 队列中创建带有完整上下文的票证 * `POST /api/intel/share`——与国家 CERT 共享 IOCs **编排堆栈**:Argo Workflows(在 Kubernetes 上)用于完整的管道 DAG——每一层都是一个容器化的 pod,工作流程管理器处理重试、并行(4A 和 4B 同时运行)和故障恢复。所有层间数据都作为符合共享模式的 JSON 传递,因此每个层都可以独立开发和测试。 **仪表板**:Splunk 或 ELK 堆栈——所有案例的实时视图、风险评分分布、家族分类趋势随时间变化以及分析师审查队列。 ## 平台架构摘要 | 组件 | 技术 | | :--- | :--- | | 消息总线 | Apache Kafka | | 工作流程编排 | Argo Workflows / Celery + Redis | | 容器化 | Docker + Kubernetes | | 后端 API | Python FastAPI | | LLM(本地) | Llama 3 通过 Ollama | | 向量数据库 | Chroma / Weaviate | | 图数据库 | Neo4j | | ML 训练 | PyTorch、XGBoost、scikit-learn | | 可解释性 | SHAP、LIME | | 沙盒 | MobSF + Android 模拟器 | | SOAR | TheHive + Cortex | | 仪表板 | Splunk / ELK | | 威胁共享 | MISP + STIX/TAXII | | 存储 | PostgreSQL(元数据)+ S3/MinIO(文件)|
标签:Android 安全, Apex, APK 分析, Cloudflare, DAST, JSON, JS文件枚举, Kafka, masscan, MD5, MITRE ATT&CK, SHA1, SHA-256, SonarQube插件, ssdeep, TLSH, Zenmap, 事件驱动, 云资产清单, 人工智能, 凭据扫描, 可解释性, 威胁响应, 威胁情报, 威胁情报平台, 威胁追踪, 安全事件响应, 开发者工具, 恶意软件分析, 数据去重, 数据哈希, 数据完整性, 数据审计, 数据流, 数据源, 数据管道, 数据结构, 数据预处理, 机器学习, 模糊哈希, 欺诈检测, 沙箱测试, 消息队列, 生成式AI, 用户模式Hook绕过, 病毒总汇, 目录枚举, 移动安全, 索引, 编译时间, 证书指纹, 请求拦截, 软件包管理, 软件工程, 逆向工具, 逆向工程, 透明度, 银行安全