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绕过, 病毒总汇, 目录枚举, 移动安全, 索引, 编译时间, 证书指纹, 请求拦截, 软件包管理, 软件工程, 逆向工具, 逆向工程, 透明度, 银行安全