,简答描述就是对app反编译的工具。
一款适用于以HW行动/红队/渗透测试团队为场景的移动端(Android、iOS、WEB、H5、静态网站)信息收集扫描工具,可以帮助渗透测试工程师、攻击队成员、红队成员快速收集到移动端或者静态WEB站点中关键的资产信息并提供基本的信息输出,如:Title、Domain、CDN、指纹信息、状态信息等。
环境说明
-
-
Python3
目录说明
下载和安装依赖
cd AppInfoScanner python -m pip install -r requirements.txt
使用
基础版
-
扫描Android应用的APK文件、DEX文件、需要下载的APK文件下载地址、保存需要扫描的文件的目录
python app.py android -i <Your APK File or DEX File or APK Download Url or Save File Dir>
-
扫描iOS应用的IPA文件、Mach-o文件、需要下载的IPA文件下载地址、保存需要扫描的文件目录
python app.py ios -i <Your IPA file or Mach-o File or IPA Download Url or Save File Dir>
-
扫描Web站点的文件、目录、需要缓存的站点URl
python app.py web -i <Your Web file or Save Web Dir or Web Cache Url>
反编译完会将app的项目代码放置在out文件夹下:
进阶
命令格式
python app.py [TYPE] [OPTIONS] <The URL or directory to scan>
TYPE参数详细说明
此参数类型对应基本命令格式中的[TYPE],目前仅支持[android/ios/web]三种类型形式,三种类型形式必须指定一个。
android: 用于扫描Android应用相关的文件的内容
ios: 用于扫描iOS应用相关的文件内容
web: 用于扫描WEB站点或者H5相关的文件内容
支持自动根据后缀名称进行修正,即便输入的是ios,实际上-i 输入的参数的文件名为XXX.apk,则会执行android相关的扫描
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类型下使用。
具体使用方法
Android相关基本操作
-
对本地APK文件进行扫描
python app.py android -i <Your apk file> 例: python app.py android -i C:\Users\Administrator\Desktop\Demo.apk
-
对本地Dex文件进行扫描
python app.py android -i <Your DEX file> 例: python app.py android -i C:\Users\Administrator\Desktop\Demo.dex
-
对URL地址中包含的APK文件进行扫描
python app.py android -i <APK Download Url> 例: python app.py android -i "https://127.0.0.1/Demo.apk"
需要注意此处如果URL地址过长需要使用双引号(")进行包裹
iOS相关基本操作
-
对本地IPA文件进行扫描
python app.py ios -i <Your ipa file> 例: python app.py ios -i "C:\Users\Administrator\Desktop\Demo.ipa"
-
对本地Macho文件进行扫描
python app.py ios -i <Your Mach-o file> 例: python app.py ios -i "C:\Users\Administrator\Desktop\Demo\Payload\Demo.app\Demo"
-
对URL地址中包含的IPA文件进行扫描
python app.py ios -i <IPA Download Url> 例: python app.py ios -i "https://127.0.0.1/Demo.ipa"
需要注意此处如果URL地址过长需要使用双引号(")进行包裹,暂时不支持对Apple Store中的IPA文件进行扫描
Web相关基本操作
-
对本地WEB站点进行扫描
python app.py web -i <Your web file> 例: python app.py web -i "C:\Users\Administrator\Desktop\Demo.html"
-
对URL地址中包含的WEB站点文件进行扫描
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> 例: 添加对百度域名的扫描 python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -r ".*baidu.com.*"
-
关闭网络嗅探功能
python app.py android -i <Your apk> -s 例: python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -s
-
忽略所有的资源文件
python app.py android -i <Your apk> -n 例: python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -n
-
关闭输出所有符合扫描规则内容的功能
python app.py android -i <Your apk> -a 例: python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -a
-
设置并发数量
python app.py android -i <Your apk> -t 20 例: 设置20个并发线程 python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -t 20
-
指定结果集和缓存文件输出目录
python app.py android -i <Your apk> -o <output path> 例: 比如输出到桌面的Temp目录 python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -o C:\Users\Administrator\Desktop\Temp
-
对指定包名下的文件内容进行扫描,该功能仅支持android类型
python app.py android -i <Your apk> -p <Java package name> 例: 比如需要过滤com.baidu包名下的内容 python app.py android -i C:\Users\Administrator\Desktop\Demo.apk -p "com.baidu"
高级版使用说明
该项目中的程序仅作为一个基本的架子,会内置一些基本的规则,并不是每一个输入的内容都可以完成相关的扫描工作。所以可以根据自己的需要进行相关规则的配置,优秀的配置内容可以达到质的的效果。
-
配置文件路径为 根目录下的config.py文件,即README.md的同级目录
配置项说明
filter_components: 此配置项用于配置相关组件内容,包括Json组件或者XML组件等 filter_strs: 用于配置需要进行扫描的文件内容,比如需要扫描端口号,则配置为:"r'.*://([\d{1,3}\.]{3}\d{1,3}).*'" filter_no: 用于忽略扫描文件中不想要的内容 shell_list: 用于配置Android相关的壳特征 web_file_suffix: 此处配置需要进行扫描的WEB文件后缀名称 sniffer_filter: 此处用于配置需要进行忽略网络嗅探的文件后缀名称 headers: 用于配置自动下载过程中需要的请求头信息 data: 用于配置自动下载过程中需要的请求报文体 method: 用于配置自动下载过程中需要的请求方法
常见问题
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
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.ink0.cn/index.php/2023/11/18/appinfoscanner/
共有 0 条评论