Khuirul-Huda/gatotkaca-malcore
GitHub: Khuirul-Huda/gatotkaca-malcore
一款轻量级混合 Android 恶意软件分析沙盒,通过静态 DEX 反混淆与原生 .so 库模拟,在资源受限环境中快速完成静动态分析。
Stars: 0 | Forks: 0
# Gatotkaca Malcore
**Gatotkaca Malcore** 是一个轻量级的混合型 Android 静动态恶意软件分析沙盒,旨在资源受限的环境中执行(无需笨重的模拟器 VM、Zygote 进程或 UI 图形卡)。
它结合了**基于 Unidbg 的原生 `.so` 库模拟**与**可选的静态 DEX 反混淆**,能够在 30 秒内分析 100% 的 Android 恶意软件面。
## 核心功能
1. **混合分析 Pipeline:**
* **DEX/Java 层(静态):**通过反射解析并调用 `liteapkparser`(如果存在于 classpath 中),以对 XOR/AES 字符串进行反混淆,提取权限,检查结构签名,并提取 C2/Telegram bot token。
* **原生 `.so` 层(动态):**在 Unicorn 引擎中模拟 ARM/ARM64 机器码,拦截 JNI 边界交互,并处理反分析 hook。
2. **稳定的模拟与干净的 Timeout:**
* 使用单线程的 Unicorn `BlockHook` 框架,对挂起的库加载(`JNI_OnLoad` 循环或 init 函数)以及内联 Dobby hook 设置强制执行同步 timeout,从而防止 JVM 出现 SIGSEGV/double-free 崩溃。
3. **Qualcomm/Google 框架过滤:**
* 自动将黑名单并跳过重度依赖框架的库(ARCore、TensorFlow、Voice SDK、Qualcomm AI 驱动程序),以最大限度地减少 JVM runtime 开销并避免 OOM 错误。
4. **动态 Heap 内存抓取器:**
* 在执行后自动 dump 模拟器的内存 heap,以提取密钥、shell 命令和动态解密的字符串 payload。
## 架构:混合静动态流程
```
graph TD
APK[Target APK File] --> Static[Static Pass: LiteApkParser]
Static -->|Deobfuscate| Evidence[Decrypt C2s, Telegram Bot Tokens]
Static -->|Manifest| Perms[Extract Dangerous Permissions & Signatures]
APK --> Dynamic[Dynamic Pass: Gatotkaca Sandbox]
Dynamic -->|Blacklist| Skip[Filter Benign Google/Qualcomm Libs]
Dynamic -->|BlockHook| Loader[Emulate Target .so JNI_OnLoad]
Dynamic -->|Dobby Hook| Bypass[Spoof System Properties & Sockets]
Loader -->|Heap Scrape| Heap[Extract In-Memory Decrypted Strings]
Evidence --> Result[ComprehensiveAnalysisResult]
Perms --> Result
Bypass --> Result
Heap --> Result
```
## 统一的 API 结果
主引擎返回一个包含以下内容的 `ComprehensiveAnalysisResult`:
* **`status`**:模拟状态(`COMPLETED`、`TIMEOUT` 或 `ENGINE_CRASH`)。
* **`extractedStrings`**:整合了解密的 JNI 字符串和动态抓取的 heap 值。
* **`jniInteractions`**:有关类加载和 JNI 注册的原生方法的详细信息。
* **`behaviorLogs`**:整合的时间线,包含属性访问、文件系统交互、动态 JNI 注册以及静态反混淆步骤。
## 构建与使用
### 1. 编译与打包
```
./gradlew build -x test
```
### 2. 运行测试
测试任务在配置为 `2g` JVM Heap 限制下运行:
```
./gradlew test --info --no-daemon
```
### 3. 可选的 Composite Build 集成
要在混合 pipeline 中将此项目与 `liteapkparser` 一起构建,请将以下内容添加到您的 `settings.gradle.kts` 中:
```
includeBuild("../liteapkparser") {
dependencySubstitution {
substitute(module("id.my.khuirulhuda.lib:liteapkparser:1.0.0")).using(project(":"))
}
}
```
如果存在,沙盒将在 runtime 通过反射动态解析它,从而保持两个代码库完全解耦!
标签:Android安全, DAST, 云安全监控, 云资产清单, 后台面板检测, 安全, 恶意软件分析, 沙箱, 超时处理, 逆向工程, 静态分析