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]
  1. POST /api/task_fofa/test HTTP/2
  2. {"query":"org="China Education and Research Network Center""}
复制代码
  1. HTTP/2 200 OK
  2. {"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 ARLResource​​ns = 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