声明
所提供的工具资料仅供学习之用。这些资料旨在帮助用户增进知识、提升技能,并促进个人成长与学习。用户在使用这些资料时,应严格遵守相关法律法规,不得将其用于任何非法、欺诈、侵权或其他不当用途。本人和团队不对用户因使用这些资料而产生的任何后果负责,包括但不限于因操作不当、误解资料内容或违反法律法规而导致的损失或损害。用户应自行承担使用这些资料的风险,并在使用前进行充分的了解和评估。
AppInfoScanner
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员迅速且高效地收集到移动端或者静态WEB站点中关键的资产信息并提供了详尽的基本信息输出功能,如:Title、Domain、CDN、指纹信息、状态信息等。
项目地址
https://github.com/kelvinBen/AppInfoScanner.git
适用场景
日常渗透测试
对APP的关键资产信息收集,包括URL地址、IP地址及关键字的采集等。
大型攻防演练
在复杂的攻防环境中,对APP进行深入的关键资产信息收集,涵盖URL地址、IP地址及关键字的全面采集。
WEB网站源代码分析
对WEB网站的源代码进行细致的信息提取,无论是开源代码还是通过网页另存为方式获得的源代码,均可提取URL地址、IP地址及关键字等信息。
H5页面信息挖掘
对H5页面的信息采集,全面提取URL地址、IP地址及关键字等关键信息。
定向APP信息收集
对特定APP进行详尽的信息收集工作,确保获取到所有相关的关键资产信息。
功能介绍
批量扫描能力:支持目录级别的批量操作,高效便捷。
广泛文件支持:涵盖DEX、APK、IPA、MACH-O、HTML、JS、Smali、ELF等多种文件格式的信息收集。
自动下载与信息提取:对APK、IPA、H5等文件实现自动下载,并一键完成信息收集。
请求配置灵活性:允许自定义请求头、报文及请求方法,满足多样化需求。
规则自定义:用户可随心设置扫描规则,提升扫描的针对性和效率。
资源文件忽略:支持自定义忽略特定资源文件,减少不必要的扫描负担。
高级配置选项
Android壳规则自定义:根据需求配置Android壳的检测规则。
中间件规则自定义:灵活设定中间件检测标准。
加固壳检测:支持Android加固壳及iPA官方壳的精准识别。
信息采集全面性:采集IP地址、URL地址及中间件(包括json和xml组件)的详细信息。
包名内容采集:针对Android应用,支持按包名采集相关内容。
网络嗅探功能:提供基础信息输出,助力网络流量分析。
跨平台兼容性:适用于Windows、MacOS及Linux系列系统,确保广泛适用性。
智能过滤:内置简单AI识别功能,快速筛选并过滤第三方URL地址。
部分截图
环境说明
Apk文件解析需要使用JAVA环境,JAVA版本1.8及以下
Python3的运行环境
目录说明
AppInfoScanner
|-- libs 程序的核心代码
|-- core
|-- __init__.py 全局配置信息
|-- parses.py 用于解析文件中的静态信息
|-- download.py 用于自动下载APP或者H5页面
|-- net.py 用于进行网络嗅探,并获取基本信息
|-- task
|-- __init__.py 目录初始化文件
|-- base_task.py 统一任务调度中心
|-- android_task.py 用于处理Android相关的任务
|-- download_task.py 用于处理自动下载APP或者H5的任务
|-- ios_task.py 用于处理iOS相关的任务
|-- net_task.py 用于处理网络嗅探相关任务
|-- web_task.py 用于处理Web相关的任务,比如网页右键源代码、H5相关的静态信息
|-- tools 程序需要依赖的工具
|-- apktool.jar 用于反编译apk文件,不同平台可能需要进行自我切换
|-- baksmali.jar 用于反编译dex文件,不同平台可能需要进行自我切换
|-- strings.exe 用于windows 32下获取iPA的字符串信息
|-- strings64.exe 用于windows 64的系统获取iPA的字符串信息
|-- __init__.py 目录初始化文件
|-- app.py 主运行程序
|-- config.py 整个程序的配置文件
|-- README.md 程序使用说明
|-- requirements.txt 程序中需要安装的依赖库
|-- update.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
运行指南
基础版
扫描Android应用
支持APK文件、DEX文件、APK下载地址及保存扫描文件的目录作为输入。
命令格式:python app.py android -i <输入项>
<输入项> 可为:APK文件路径、DEX文件路径、APK下载URL或保存文件的目录路径。
扫描iOS应用
支持IPA文件、Mach-o文件、IPA下载地址及保存扫描文件的目录作为输入。
命令格式:python app.py ios -i <输入项>
<输入项> 可为:IPA文件路径、Mach-o文件路径、IPA下载URL或保存文件的目录路径。
扫描Web站点
支持Web文件、目录及需要缓存的站点URL作为输入。
命令格式:python app.py web -i <输入项>
<输入项> 可为:Web文件路径、保存Web文件的目录路径或需要缓存的站点URL。
进阶版
基本命令格式
python app.py [TYPE] [OPTIONS] <待扫描的URL或目录>
符号信息说明
<>:标识待扫描的文件、目录或URL地址。
|:表示“或”的关系,每次只能选择一个选项。
[]:代表可选参数,需根据需求输入。
TYPE参数详细说明
该参数对应于基础命令架构中的[TYPE],目前仅支持以下三种类型,且必须明确指定一种:
android:针对Android应用相关文件进行扫描。
ios:针对iOS应用相关文件进行扫描。
web:针对Web站点或H5相关文件进行扫描。
OPTIONS参数详解
该参数对应于基础命令架构中的[OPTIONS],支持多个参数组合使用:
-i 或 --inputs:指定待扫描的文件、目录或需自动下载的文件URL地址。若路径较长,请使用引号包裹。此参数为必填项。
-r 或 --rules:输入自定义的临时扫描规则,用于扫描文件内容。
-s 或 --sniffer:启用网络嗅探功能,默认已开启。
-n 或 --no-resource:忽略所有资源文件,包括网络嗅探中的资源文件(需在config.py中预先配置sniffer_filter规则)。默认不忽略资源文件。
-a 或 --all:输出所有符合扫描规则的结果集,默认已开启。
-t 或 --threads:设置并发线程数,默认为10个线程。
-o 或 --output:指定扫描结果及临时文件的输出目录,默认为脚本所在目录。
-p 或 --package:指定Android APK或DEX文件需扫描的Java包名信息。此参数仅限android类型使用。
高级版
本项目所提供的程序仅作为扫描工作的基础框架,内置了部分基本规则。但请注意,并非所有输入内容都能直接完成扫描任务。因此,用户可以根据自己的实际需求,对扫描规则进行个性化配置,以达到更佳的扫描效果。
配置文件位置
配置文件位于项目的根目录下,文件名为config.py,与README.md文件处于同一级目录。
配置项详解
filter_components:此配置项用于指定需要扫描的组件类型,如Json、XML等。
filter_strs:用于定义需要扫描的文件内容模式。例如,若要扫描URL中的端口号,可配置为正则表达式"r'.*://([d{1,3}.]{3}d{1,3}).*'"。
filter_no:用于指定在扫描过程中需要忽略的内容。
shell_list:此配置项专门用于定义Android应用相关的壳特征。
web_file_suffix:用于指定需要扫描的Web文件的后缀名。
sniffer_filter:此配置项用于定义在网络嗅探过程中需要忽略的文件后缀名。
headers:用于配置在自动下载文件时所需的HTTP请求头信息。
data:用于配置在自动下载文件时所需的HTTP请求报文体。
method:用于指定在自动下载文件时所需的HTTP请求方法。
常见问题
1. 信息检索垃圾数据过多?
方法1: 根据实际情况调整config.py中的规则信息
方法2: 忽略资源文件
2. 出现错误:Error: This application has shell, the retrieval results may not be accurate, Please remove the shell and try again!
说明需要扫描的应用存在壳,需要进行脱壳/砸壳以后才能进行扫描,目前可以结合以下工具进行脱壳/砸壳处理
Android:
xposed模块: dexdump
frida模块: FRIDA-DEXDump
无Root脱壳:blackdex
iOS:
firda模块:
windows系统使用: frida-ipa-dump
MacOS系统使用:frida-ios-dump
3. 出现错误: File download failed! Please download the file manually and try again.
文件下载失败。
1) 请检查输入的URL地址是否正确
2)请检查网络是否存在问题或者在配置文件config.py中配置请求头信息(headers)、请求报文体(data)、请求方法(method)保存后重新再执行。
4. 出现错误:Decompilation failed, please submit error information at https://github.com/kelvinBen/AppInfoScanner/issues"
文件反编译失败。
请将错误截图以及对应的APK文件提交至 https://github.com/kelvinBen/AppInfoScanner/issues,作者看到后会及时进行处理。
自定义规则添加
自定义规则提交路径:
[点击添加自定义规则](https://github.com/kelvinBen/AppInfoScanner/issues/7)
提交格式:
1. APP自定义组件添加
如: fastjson的规则如下:
APP组件: fastjson com.alibaba.fastjson
2. 需要进行搜索的字符串
如:查询阿里的AK规则如下:
字符串:
阿里云AK .*accessKeyId.*".*"
3. 需要搜素的web文件后缀名
如:jsp文件的规则如下:
网站: java语言 jsp
4. Android壳规则
如: 某数字公司的壳规则如下:
壳:某数字公司 com.stub.StubApp
原文始发于微信公众号(泷羽Sec-Ceo):对移动端信息收集的渗透测试工具
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论