
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。
该项目目前仅仅是规划项目中的冰山一角,如果您对此项目感兴趣或者想参与后续项目的开发工作或者翻译工作中,请发送邮件至[email protected]说明你的能力和诉求。
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、状态信息等。
官网/文档站: https://blog.52zhuanke.cn/AppInfoScanner-Site/
请勿将本项目技术或代码应用在恶意软件制作、软件著作权/知识产权盗取或不当牟利等非法用途中。实施上述行为或利用本项目对非自己著作权所有的程序进行数据嗅探将涉嫌违反《中华人民共和国刑法》第二百一十七条、第二百八十六条,《中华人民共和国网络安全法》《中华人民共和国计算机软件保护条例》等法律规定。本项目提及的技术仅可用于私人学习测试等合法场景中,任何不当利用该技术所造成的刑事、民事责任均与本项目作者无关。

| 工具 | 版本 | 获取方式 |
|---|---|---|
| Java | 11+(Zulu 11 验证) | Windows 手动安装;macOS/Linux 经 brew/apt 等自动安装 |
| adb | platform-tools 当前版 | Windows 随仓库 tools/unpacker;macOS/Linux 触发脱壳时自动安装 |
| frida | 17.18.0 | pip 安装,与设备端 frida-server 版本保持一致 |
| frida-tools | 14.10.4 | pip 安装 |
| frida-dexdump | 2.0.1 | pip 安装 |
| apktool | 3.0.3 | 随仓库 tools/apktool.jar,工作区自动部署 |
| baksmali | 2.5.2-dev | 随仓库 tools/baksmali.jar |
| smali | 3.0.9-dev | apktool 内置(重建 dex 时使用) |
AppInfoScanner
|-- libs 程序的核心代码
|-- core
|-- __init__.py 全局配置与工作区/日志初始化(Bootstrapper)
|-- default_config.py 内置默认配置与 config.toml 生成/迁移
|-- parses.py 静态信息解析与提取(过滤规则/AK/PII)
|-- report.py 结果分类聚合与 json/txt/xlsx 报告输出
|-- download.py 文件自动下载
|-- net.py 网络嗅探
|-- i18n.py 多语言提示
|-- provision.py 工具链自动安装与 frida 版本一致性
|-- fix_magic.py dex/zip/AndroidManifest 魔数检测与修复
|-- task
|-- base_task.py 统一任务调度中心
|-- android_task.py Android 相关任务
|-- ios_task.py iOS 相关任务
|-- web_task.py Web/H5 相关任务
|-- net_task.py 网络嗅探任务
|-- download_task.py 自动下载任务
|-- tools 程序需要依赖的第三方工具
|-- apktool.jar / baksmali.jar 反编译工具
|-- strings.exe / strings64.exe Windows 下提取字符串
|-- unpacker Windows 脱壳工具(adb/aapt/frida-server)
|-- tests 单元测试(python3 -m unittest discover -s tests)
|-- app.py 主运行程序
|-- requirements.txt 依赖清单(显式版本)
|-- README.md / README_EN.md 使用说明(中英)
|-- update.md / update_EN.md 版本历史(中英)
git clone https://github.com/kelvinBen/AppInfoScanner.git
或者复制以下链接到浏览器下载最新正式版本
https://github.com/kelvinBen/AppInfoScanner/releases/latest
国内快速下载通道:
git clone https://gitee.com/kelvin_ben/AppInfoScanner.git
cd AppInfoScanner
python -m pip install -r requirements.txt
python app.py android -i <APK/DEX 文件或下载地址或目录>
python app.py ios -i <IPA/Mach-O 文件或下载地址或目录>
python app.py web -i <站点文件或目录或URL地址>
python app.py [TYPE] [OPTIONS] <扫描的文件或目录或URL地址>
<> 代表需要扫描的文件或者目录或者URL地址
| 或的关系,只能选择一个
[] 代表需要输入的参数
对应基本命令格式中的 [TYPE],目前仅支持 android/ios/web 三种类型,必须指定其一。
android: 用于扫描Android应用相关的文件的内容
ios: 用于扫描iOS应用相关的文件内容
web: 用于扫描WEB站点或者H5相关的文件内容
支持自动根据后缀名称进行修正,即便输入的是ios,实际上-i 输入的参数的文件名为XXX.apk,则会执行android相关的扫描。
对应基本命令格式中的 [OPTIONS],支持多个参数组合使用。
-i 或者 --inputs: 输入需要进行扫描的文件、目录或者需要自动下载的文件URL地址,路径过长时请用双引号(")包裹,此参数为必填项。
-r 或者 --rules: 输入需要扫描文件内容的临时扫描规则。
--sniffer / --no-sniffer: 开启网络嗅探功能,默认为关闭状态。红队场景下建议配合 --scope 使用。
--scope: 指定授权域名清单文件路径(每行一个域名或后缀),仅对名单内域名发起嗅探。
--unpack: 显式开启脱壳(检测到加固后推送frida-server到设备)。默认仅提示不动设备,防止破坏渗透现场。此参数只能在android类型下使用。
--prefer-dump: 指定已有脱壳产物目录直接扫描,不碰设备。此参数只能在android类型下使用。
-n 或者 --no-resource: 忽略所有的资源文件,包含网络嗅探功能中的资源文件(需要先在工作区config.toml中配置sniffer_filter相关规则),默认为不忽略资源。
-a 或者 --all: 逐条输出命中的内容(详细模式),默认仅输出汇总。
-t 或者 --threads: 设置线程并发数量,默认为10个线程并发。
-o 或者 --output: 指定扫描结果和扫描过程中产生的临时文件的输出目录,默认为用户文档目录下的AppInfoScanner目录。日志文件也跟随此目录。
-p 或者 --package: 指定Android的APK文件或者DEX文件需要扫描的JAVA包名信息。此参数只能在android类型下使用。
python app.py update --check 仅检测新版本,显示当前/最新版本号
python app.py update 执行更新(从GitHub Release下载/MD5校验/自动替换)
python app.py update --tools 检查工具链版本(apktool/baksmali)
python app.py android -i <Your apk file>
例:
python app.py android -i C:\Users\Administrator\Desktop\Demo.apk
python app.py android -i <Your DEX file>
例:
python app.py android -i C:\Users\Administrator\Desktop\Demo.dex
python app.py android -i <APK Download Url>
例:
python app.py android -i "https://127.0.0.1/Demo.apk"
需要注意此处如果URL地址过长需要使用双引号(")进行包裹
python app.py ios -i <Your ipa file>
例:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa"
python app.py ios -i <Your Mach-o file>
例:
python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo"
python app.py ios -i <IPA Download Url>
例:
python app.py ios -i "https://127.0.0.1/Demo.ipa"
需要注意此处如果URL地址过长需要使用双引号(")进行包裹,暂时不支持对App Store中的IPA文件进行扫描
python app.py web -i <Your web file>
例:
python app.py web -i "C:\Users\Administrator\Desktop\Demo.html"
python app.py web -i <Web Download Url>
例:
python app.py web -i "https://127.0.0.1/Demo.html"
以下操作均以android类型为例:
python app.py android -i <Your Dir>
例:
python app.py android -i C:\Users\Administrator\Desktop\Demo
python app.py android -i <Your apk> -r <the keyword | the rules>
例:
添加对百度域名的扫描