ICPAssetExpress
一款互联网有效资产发现工具,方便快速对多个企业进行信息收集(目前基于360 quake 会员api)
Install / Use
/learn @123654mjx/ICPAssetExpressREADME
ICPAssetExpress V4.0
郑重声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担。
<font style="color:rgb(31, 35, 40);">0x01 简介</font>
<font style="color:rgb(31, 35, 40);">一款互联网有效资产发现工具,方便快速对大量企业进行信息收集,快速打点</font>
<font style="color:rgb(31, 35, 40);">(目前基于360 quake会员api)</font>
【交流讨论】欢迎各位大佬关注公众号、私聊讨论技术和工具改进思路,后期也会提供一些内测版本

<font style="color:rgb(31, 35, 40);">0x02 功能</font>
- 调用 <font style="color:rgb(31, 35, 40);">360 quake api对目标企业关键词(icp_keywords)进行查询</font>
- <font style="color:rgb(31, 35, 40);">调用 gogo </font><font style="color:rgb(31, 35, 40) !important;">v2.13.8</font><font style="color:rgb(31, 35, 40);"> 以及 observer_ward 对接口查询到的 ip 及 url 进行端口探测及指纹识别</font>
- <font style="color:rgb(31, 35, 40);">调用 cdnAnalyzer及 fofa api 实现cdn过滤及ip反查(注意:已内置部分公共服务过滤规则)</font>
- <font style="color:rgb(31, 35, 40);">实时查询工信部icp备案,获取目标企业所属web、小程序、app信息(支持第三方及本地部署)</font>
- <font style="color:rgb(31, 35, 40);">在对应企业文件夹写入结果</font>
支持两种运行模式:
1. 基础模式 (-b, --basic):
- Quake API 查询获取资产 (IP, URL等)
- 将提取的IP和URL分别保存到 .txt 文件
- 对从Quake获取的URL进行指纹识别 (observer_ward)
- 结果整理输出 (Excel, .txt文件归档)
2. 高级模式 (-a, --advanced, 默认):
- Quake API 查询获取资产
- 对提取的IP进行gogo扫描 (端口、服务、简单漏洞探测)
- 对从Quake获取的URL进行初次指纹识别
- 对gogo发现的新URL进行二次指纹识别
- 结果整理输出 (Excel, .txt文件归档)
其余辅助功能及可配置项见后续具体使用部分及-h
<font style="color:rgb(31, 35, 40);">0x03 使用</font>
- 按照observer_ward项目中所示运行observer_ward或手动更新指纹(不然无法进行指纹识别)
项目地址: https://github.com/emo-crab/observer_ward
- <font style="color:rgb(38, 38, 38);">按照cdnAnalyzer项目中所示运行cdnAnalyzer或手动获取cdn数据源</font>
项目地址:https://github.com/winezer0/cdnAnalyzer

可先启动 clash等代理,运行该命令等待执行完毕即可(下载数据源)
- <font style="color:rgb(38, 38, 38);">安装所需依赖</font>
pip install -r requirements.txt
- <font style="color:rgb(31, 35, 40);">各平台 api_key 、默认端口、基础语句模板、缓存有效期等参数可自行设置调整</font>

【注意】
<font style="color:rgb(31, 35, 40);">查询工信部备案数据(小程序、app)功能支持两种途径,对应两个版本,输出效果一致</font>
<font style="color:rgb(31, 35, 40);">(1)需于镜芯接口平台获取Key,免费使用api接口</font>
<font style="color:rgb(31, 35, 40);">接口平台地址:</font>https://api2.wer.plus/user/register?cps=8nJjEdle
(2)使用 icp_query 项目实现本地icp接口查询,需单独配置
a. 打开/tools/icp文件夹

b. 根据ICP_Query项目进行配置,具体可详见该项目地址(代理池/出口有ipv6的网络)
(修改对应网卡名即可,若无法正常使用建议使用第三方调用版本)

c. 双击icp.bat启动本地icp查询服务,正常使用脚本

- 在 icpCheck.txt 文件中按行写入目标单位关键词
【注意】
- 关键词会进行模糊匹配,如查询xx集团,则会查询出xx集团a公司、xx集团b公司...
- <font style="color:rgb(31, 35, 40);">扫描 ip 端口为默认端口+目标公司查询结果端口去重</font>
- 为避免终端输出信息过多,调用工具默认<font style="color:rgb(31, 35, 40);">静默模式,如需可自行添加 --showScanInfo 参数</font>
- <font style="color:rgb(38, 38, 38);">内置资产预检机制,满足条件才获取全部数据,否则跳过该资产,可自行调整阈值</font>
- <font style="color:rgb(38, 38, 38);">quake请求筛选条件:单个语句请求资源5000条</font>
- <font style="color:rgb(38, 38, 38);">反查ip筛选条件:单个ip资产不超过300条</font>

- 为避免垃圾数据和积分浪费,脚本中查询语句如下,可自行在配置处修改
PS:如果需要模糊匹配使更精确,可添加条件如 icp:"京icp"
(icp_keywords:"{target}" or cert:"{target}") and country:"China" AND not province:"Hongkong"
- <font style="color:rgb(31, 35, 40);">运行命令,可见详情</font>
python ICPAssetExpress.py -h

# 建议开启 --skip-fofa-fingerprint(跳过对fofa反查ip获取url的指纹识别)
(ip反查存在共享服务未过滤完全情况,可能产生大量垃圾数据,导致指纹识别大幅降低效率)
【命令示例】
# 基础模式(仅扫描quake url),查询备案web、小程序及app,fofa反查ip(跳过fofa url识别)
python ICPAssetExpress.py -b -checkother "web,app,mapp" --skip-fofa-fingerprint -o 输出目录
# 高级模式(扫描quake url,调用gogo扫描ip),查询备案小程序,跳过fofa反查ip
python ICPAssetExpress.py -a -checkother "mapp" --no-fofa -o 输出目录
# 仅批量导出资产模式(仅根据quake备案导出资产,无需其他参数)
python ICPAssetExpress.py --onlyquake -o 输出目录
# 仅批量查询icp模式(仅根据传入目标icp批量查询备案资产,无需其他参数)
python ICPAssetExpress.py --onlyicp -o 输出目录
# merge脚本(遍历输出结果合并quake、指纹识别、gogo结果、ip反查结果)
python merge.py -t 存放结果目录 -o 输出目录
# process_results脚本(中断临时处理脚本,在异常结束情况下处理已有结果至正常状态)
python process_results.py -t 存放结果目录 -o 输出目录
【注意】
若未配置相关接口,不使用相关模块即可,具体如下:
● 未配置fofa key,可使用 --no-fofa 跳过fofa调用阶段
● 未配置第三方工信部备案数据查询接口 key,不添加 -checkother 即可跳过该功能
- 以公司为单位输出结果,包含全部探测结果,具体内容自行查看
【注意】
- 需等脚本全部运行完毕才能正常获取结果
- 过程中处理的 txt 文件存放在related materials文件夹中,对工具处理方式不满意可二次自行处理
- 运行结束后会生成自查结果以及日志文件 log.txt,出现报错及查询失败可自行排查,
- 通过自查结果可快速判断当前缓存所有资产
<font style="color:rgb(31, 35, 40);">0x04 效果截图</font>
- 输出、merge合并后目录效果
- icp备案查询输出结果(web、小程序、app)

- 自查报告输出结果
<img src="https://cdn.nlark.com/yuque/0/2025/png/39031852/1751216925325-a1f92fc4-b086-4730-a219-25823d07fa4c.png" style="zoom:67%;" />
- 目标单位favicon查询语句结果

- merge脚本合并多个单位结果(部分效果)


<font style="color:rgb(31, 35, 40);">0x05 致谢</font>
本脚本是为提高工作效率用 AI 完成的缝合工具,感谢各位师傅的开源项目和提议!!
<font style="color:rgb(31, 35, 40);">gh0stkey</font>
<font style="color:rgb(31, 35, 40);">樱花庄的本间白猫</font>
https://github.com/chainreactors/gogo
https://github.com/emo-crab/observer_ward
https://github.com/winezer0/cdnAnalyzer
https://github.com/HG-ha/ICP_Query
https://github.com/shadow1ng/fscan
https://github.com/yz1639/fscanOutputBeautify
<font style="color:rgb(31, 35, 40);">0x06 更新记录</font>
2025.5.19
添加结果合并脚本(merge.py)
- 应用场景:同一集团下大量相关企业,结果按公司输出至文件较为繁琐,且可能大部分公司发现资产很少
- 用途:合并指定目录下所有quake资产、指纹识别、端口扫描结果,同时标注数据来源表格

2025.6.29
- 添加 fofa(ip反查)及其他备案资产(app、小程序)查询功能
- 添加全部查询结果的缓存机制
- 添加自查机制,运行完毕输出本次运行状态及缓存所有资产便于自行梳理
- 添加结果合并脚本(merge.py)的fofa结果合并功能
2025.8.25
- 添加无主动探测仅quake资产导出功能
- 完善结果合并脚本(merge.py)的gogo结果合并功能
- 添加中断临时处理脚本(process_results.py),若工具卡死,手动退出后可处理已有结果
- 重构端口扫描功能,端口扫描从fscan改用gogo(补充端口指纹、协议识别)
- 完善、优化输出文件效果
2025.10.10
- 实现icp查询接口的本地化
- 添加仅icp批量查询功能(web、app、小程序)
- 新增资产获取预检机制,避免单个大资产浪费过量积分
- 配合cdn过滤工具及资产获取预检机制,大幅提升ip反查能力
- 优化quake语句模板,增强隐藏资产发现能力
- 新增favicon查询语句,一键发现目标单位隐藏资产及供应链资产
- 添加host碰撞功能模块(实验性功能)
- 优化接口报错处理逻辑,提升脚本稳定性
