ToB企服应用市场:ToB评测及商务社交产业平台
标题:
ARL分析与进阶使用
[打印本页]
作者:
用户国营
时间:
2024-5-3 05:31
标题:
ARL分析与进阶使用
在使用ARL(Asset Reconnaissance Lighthouse资产侦察灯塔系统,项目地址地址为
https://github.com/TophantTechnology/ARL
)的时候,有两个问题比较困扰我:
1. ARL使用Fofa导入数据的时候怎么降重?
2. 如何自己手动编写Poc?
在网上查阅了一些相关资料后,我发现并没有有师傅写的很清晰,于是诞生了写这篇文章的想法。
这篇文章不涉及ARL的基础搭建过程和基础使用过程,如果您之前没有使用过ARL,详情可以参考官网教程:
https://tophanttechnology.github.io/ARL-doc/system_install/
1.Fofa降重
先说结论,是由于Fofa_api的限制而不是ARL本身的问题
[img=720,384.8714069591528]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202402201414662.png[/img]
来源于我之前的使用体验,使用同样的Fofa语句,比如能搜到大量地的资产,但是ARL只会跑几千条,然后我们反复运行发现得到的资产结果是一致的,这样就大大地影响了配合Fofa使用好处,只能自己更换不同的Fofa语句来实现降重,非常麻烦。
首先我们先黑盒看看调用fofa的流程:
[img=720,404.3410852713178]https://m-1254331109.cos.ap-guangzhou.myqcloud.com/202402201414663.png[/img]
POST /api/task_fofa/test HTTP/2
{"query":"org="China Education and Research Network Center""}
复制代码
HTTP/2 200 OK
{"message": "success", "code": 200, "data": {"size": 13492282, "query": "org="China Education and Research Network Center""}}
复制代码
可以看见这里返回的结果是13492282条
然后我们直接去项目里面去找:
路径为:ARL-2.6.1\app\routes\taskFofa.py
[code]from flask_restx import Namespace, fieldsfrom app.utils import get_logger, auth, build_ret, conn_dbfrom app.modules import ErrorMsg, CeleryActionfrom app.services.fofaClient import fofa_query, fofa_query_resultfrom app import celerytaskfrom bson import ObjectIdfrom . import ARLResourcens = Namespace('task_fofa', description="Fofa 任务下发")logger = get_logger()test_fofa_fields = ns.model('taskFofaTest', { 'query': fields.String(required=True, description="Fofa 查询语句")})@ns.route('/test')class TaskFofaTest(ARLResource): @auth @ns.expect(test_fofa_fields) def post(self): """ 测试Fofa查询连接 """ args = self.parse_args(test_fofa_fields) query = args.pop('query') data = fofa_query(query, page_size=1) if isinstance(data, str): return build_ret(ErrorMsg.FofaConnectError, {'error': data}) if data.get("error"): return build_ret(ErrorMsg.FofaKeyError, {'error': data.get("errmsg")}) item = { "size": data["size"], "query": data["query"] } return build_ret(ErrorMsg.Success, item)add_fofa_fields = ns.model('addTaskFofa', { 'query': fields.String(required=True, description="Fofa 查询语句"), 'name': fields.String(required=True, description="任务名"), 'policy_id': fields.String(description="策略 ID")})@ns.route('/submit')class AddFofaTask(ARLResource): @auth @ns.expect(add_fofa_fields) def post(self): """ 提交Fofa查询任务 """ args = self.parse_args(add_fofa_fields) query = args.pop('query') name = args.pop('name') policy_id = args.get('policy_id') task_options = { "port_scan_type": "test", "port_scan": True, "service_detection": False, "service_brute": False, "os_detection": False, "site_identify": False, "file_leak": False, "ssl_cert": False } data = fofa_query(query, page_size=1) if isinstance(data, str): return build_ret(ErrorMsg.FofaConnectError, {'error': data}) if data.get("error"): return build_ret(ErrorMsg.FofaKeyError, {'error': data.get("errmsg")}) if data["size"] ></strong></p>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4