使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

admin 2021年7月16日03:06:46评论187 views字数 2734阅读9分6秒阅读模式

演示视频


 前言


MD!写的时候忘记记录了...现在你们看到的是我根据我的记忆来写的文章...


    因为最近项目有点多,信息搜集耗时有点慢,所以想到之前用到一个工具 “ARL灯塔”!但是每次都要登陆WEB端点点点就很费时间,所以


开发

from re import Sfrom cryptography.hazmat.primitives.asymmetric.ec import BrainpoolP256R1import requestsimport readlineimport jsonfrom prettytable import PrettyTableimport urllib3from os import system, nameimport urllib.request

    json库就是拿来解析返回结果的,prettytable是拿来美观输出结果的,urllib3和requests就是拿来做请求的。

其他的我也忘记都是干啥的了~

apikey = "ff44256c-fa2b-483f-9956-b0a84e153ade"

    灯塔的API请求需要一个key,这个key是在 “config-docker.yaml” 文件内配置的,然后我们把我们配置的key赋值给一个变量就好了。

def task():    table = PrettyTable(['任务名称', '目标地址', '当前状态', '开始时间', '结束时间', '任务ID'])    headers = {    'accept': 'application/json',    'Token': apikey    }    ceshi = requests.get("https://IP:5003/api/task/", headers=headers, verify=False)    good = ceshi.text    res = json.loads(good.encode('latin-1').decode('unicode_escape'))    for i in res['items']:        table.add_row([i['name'],i['target'],i['status'],i['start_time'],i['end_time'],i['_id']])    else:        print(table)    table.clear_rows()

    key配置好之后我们定义一个任务列表获取功能,这里可以看到我们的任务列表,效果就是下图这样子

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

def add(name, target):    headers = {    'Content-type': 'application/json',    'Token': apikey,    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"    }    data = {        "name": name,        "task_tag": "task",        "target": target,        "policy_id": "策略ID",        "result_set_id": "策略ID"}    jsondata = json.dumps(data, separators=(',', ':'), ensure_ascii=False)    ceshi = requests.post("https://IP:5003/api/task/policy/", headers=headers, data=jsondata, verify=False)    good = ceshi.text    res = json.loads(good.encode('latin-1').decode('unicode_escape'))    if res['message'] == 'success':        print(res['message'] + '  33[1;31m下发任务成功!33[0m')    else:        print('33[1;32m下发任务失败!33[0m')

    灯塔的任务下发接口我感觉不如用策略下发功能,所以我这里用的是策略下发功能,策略下发需要获取策略ID

首先我们需要新建策略:

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

然后我们访问:https://IP:5003/api/doc

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

点击右侧绿色按钮填入自己的KEY值后点击绿色按钮即可

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

然后拉到最下面可以点开“策略信息“一栏,然后选择“策略信息查询“一栏,最后点击右侧灰色按钮

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!不需要填写任何信息,直接点击蓝色按钮

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!往下拉可以看到返回结果,"_id"参数为我们要获取的策略ID

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

    整体功能其实就是这样完成的,其他功能自行摸索吧,剩下的就是把调用函数实现功能就好了,自行看下面的代码吧..

xunhuan = 1while xunhuan == 1:    a = input("33[1;31m>> 33[0m")    if a == 'ls':        task()    if a == 'addfile':        name = input('33[1;34m[+] >> 任务名称:33[0m')        file = input('33[1;34m[+] >> 目标文件:33[0m')        with open(file, 'r', encoding='utf-8') as file1:            for readFile in file1: #逐行读取                add(name.encode("utf-8","ignore").decode("latin-1"), readFile)    if a == 'add':        print('33[1;31m[+] 任务目标英文逗号分割!例:1.2.3.4,4.3.2.133[0m')        print('33[1;32m--------------------------------------------------33[0m')        name = input('33[1;34m[+] >> 任务名称:33[0m')        target = input('33[1;34m[+] >> 任务目标:33[0m')        add(name.encode("utf-8","ignore").decode("latin-1"), target)    if a == 'c':        clear()    if a == 'e':        break

结尾


    本来想做成类似MSF那样子的等待命令输入的交互式,但是没有找到相关库,也不知道怎么写,所以就写了个死循环然后输入的内容判断来实现的那种效果。

开源地址:公众号回复 “ARL脚本” 即可获取下载链接!

替换脚本内url地址的时候要像下图这样替换掉IP,否则可能会报错!

使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

    addfile其实就是通过读取指定文件然后逐行读取循环下发任务给add函数


各位大佬如果有好的想法可以私信我微信来交流嗷:backxyh

本文始发于微信公众号(云剑侠心):使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月16日03:06:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用ARL灯塔API编写Py脚本,实现快速便捷信息搜集+资产管理!https://cn-sec.com/archives/479358.html

发表评论

匿名网友 填写信息