AegiScan 开源项目教程
项目介绍
AegiScan 是一个针对 iOS 应用程序二进制文件的静态数据流分析框架,旨在辅助漏洞扫描。AegiScan 利用自顶向下的类型传播来解析 Objective-C MsgSend 调用,从而重建调用图。然后,它为每个函数生成代码属性图(CPG),以建立上下文敏感的数据流。通过调用图,AegiScan 整合不同函数的 CPG,进行全面的跨过程分析。此外,AegiScan 恢复优化过程中丢失的信息(如应用程序瘦身),并将其纳入分析中。
项目快速启动
环境准备
- IDA Pro 7.4+(推荐 8.3+)
- Docker
快速启动步骤
-
克隆项目
git clone https://github.com/alibaba/AegiScan.git cd AegiScan
-
启动 Neo4j 数据库
cd db docker-compose up -d
-
运行分析任务
cd src ida64 -A -S"[Path to ida_runner.py] [parameters]" -L"[Path to your log file]" "[Path to your idb]"
例如:
ida64 -A -S"ida_runner.py service /Path/to/cases" -L"/Path/to/cases/out/service.log" "/Path/to/cases/services/osanalyticshelper.i64"
应用案例和最佳实践
案例分析
AegiScan 提供了两个示例二进制文件用于分析:
-
macOS 系统服务
AegiScan/cases/os/System/Library/CoreServices/osanalyticshelper
-
私有框架
AegiScan/cases/os/System/Library/PrivateFrameworks/OSAnalytics.framework/Versions/A/OSAnalytics
最佳实践
-
生成 IDB 文件
ida64 -A -B /path/to/service
-
放置 IDB 文件
case/services 目录
-
执行数据流分析
cd AegiScan/src ida64 -A -S"/Path/to/ida_runner.py service /Path/to/cases" -L"/Path/to/cases/out/service.log" '/Path/to/cases/services/osanalyticshelper.i64'
典型生态项目
AegiScan 作为一个静态数据流分析框架,可以与其他工具和项目集成,以增强其功能和应用范围。以下是一些可能的生态项目:
-
IDA Pro 插件
- genmc:显示 Hex-Rays Microcode
- IDACode:通过 VSCode 调试 idapython
- IPyIDA:在 IDA Pro 中使用 ipython
-
图数据库
- Neo4j:用于存储和查询分析结果
-
漏洞扫描工具
- 自定义扫描器:基于 AegiScan 提供的 API 开发
通过这些生态项目的集成,AegiScan 可以更全面地应用于各种安全分析和漏洞扫描任务中。