(Asset Reconnaissance Lighthouse)资产侦察灯塔系统。旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。 协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。(牛逼)
系统要求
本文使用的系统是centos x64,根据官方建议使用docker部署,不支持Windows系统。
配置建议:CPU:4线程 内存:8G 带宽:10M。
由于自动资产发现过程中会有大量的的发包,建议采用云服务器可以带来更好的体验。
安装
官方文档README.md并没有很明确的指示如何安装,故写下这篇文章。参考了写下了本文。
-
安装docker、docker compose。不多说。
-
准备安装ARL,下载源码进行部署。
-
mkdir docker_arl
-
wget -O docker_arl/docker2.3.zip https://github.com/TophantTechnology/ARL/releases/download/v2.3/docker.zip
# 酌情从获取最新下载链接。你会发现docker.zip只有5kb左右,不像一个网站系统。这是因为它里面写有docker pull命令,它指定要pull的镜像才是网站。 -
cd docker_arl
-
unzip docker2.3.zip
-
ls
-
docker-compose up -d
# 这一步囊括了下载系统所需且本地没有的镜像、根据镜像创建容器、启动容器、启动灯塔网站等操作。因为我的机子在国内。国内接触不到docker官方镜像网站,而国内镜像站的镜像不是很全,例如我要下载mongo且4.0.27版本,还没找到有该镜像的国内镜像站。所以报 超时错 了,说“Error response from daemon: Head "https://registry-1.docker.io/v2/tophant/arl/manifests/latest": Get "https://auth.docker.io/token?scope=repository%3Atophant%2Farl%3Apull&service=registry.docker.io": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)”
所以我们借助,把我需要的镜像下载到它的服务器上,我的服务器再下载它的下载包。
问题来了,我不知道ARL需要哪些镜像?:打开docker-compose.yml,我系统地学过docker,所以我能看懂配置代码的意思。
例如
image: mongo:4.0.27
表示mongo镜像且4.0.27版本,例如
tophant/arl:${ARL_VERSION:-latest}
表示tophant/arl镜像,版本为${ARL_VERSION},如果没有指定版本,则使用最新版本。而我并未发现任何指定了变量${ARL_VERSION}的地方,所以使用最新版本。以上步骤不理解的请深入学习docker命令,可以参考。
-
所需镜像下载完毕。通过
docker load -i 镜像文件.tar.gz
将镜像装载到本地docker镜像库上。 -
docker images
查看是否装上了。 -
重新执行
docker-compose up -d
,报错“external volume "arl_db" not found”。 -
docker volume create --name=arl_db
# 这步照抄的,我不理解解决原理。。。docker volume create --name=arl_db什么意思?
docker volume create --name=arl_db
是一个用于创建 Docker 卷的命令。这个卷将被命名为arl_db
。卷是一个数据存储容器,可以持久化容器中的数据,即使容器被删除,数据也会保留。这个命令会返回一个表示卷创建成功的消息,例如“Volume arl_db created”。
-
重新执行
docker-compose up -d
。没有任何报错。成功了。 -
浏览器输入
ip:5003
访问灯塔网站。默认账号密码:admin/arlpass
。 -
改密码,防止别人盗用,不多说。
-
网站不用了直接
docker compose stop
关闭,不建议docker compose down
,会删除你的很多配置和数据、任务。开启命令是docker-compose start
。 -
在跑任务期间不要关闭docker。
使用
添加资产搜集任务
图形化界面,没啥好说的:
跑任务很慢,说它要跑一小时乃至一个晚上我都不意外。
Host 碰撞检测功能
仅仅对域名任务有效,如果任务中公网IP和内网域名比较多的话,可能消耗的时间比较多(可以晚上跑)。
有时公网的Nginx等WEB服务器会通过Host来判断代理到不同的站点(例如访问有多个CDN节点的域名,我们可以修改hosts文件来指定服务我们的节点)。当改Host为内网域名时且可以访问被认为存在风险,最终在战果的“风险”栏会有记录。
资产搜集任务的战果
等待许久。所以推荐用云服务器跑任务。灯塔是资产侦察工具,结果里会罗列出站点、子域名、ip及其关联的域名等信息。
添加自定义PoC
POC是检测漏洞存在的证明代码,系统会的POC越多,系统检测出漏洞的概率越大。
为了对通用应用漏洞进行扫描,灯塔中使用了个名为NPoC的框架,框架存放的PoC目录为 xing/plugins, 框架会动态加载该目录下的文件
可以按照自己的需求在目录中添加相应的PoC代码文件, 注意不同子目录下的文件名不要出现重复情况。
docker运行环境下, 可以将写好的PoC代码文件放置到docker/poc
目录下面,将会映射到docker 中的路径 /opt/ARL-NPoC/xing/plugins/upload_poc
,然后点击灯塔后台系统中的【PoC信息】-【更新】即可查看到添加到框架中的PoC信息, 然后可以通过配置策略将想扫描的POC用于扫描。在管理页面上点击更新按钮,如果没有出现在页面上请查看日志看是否出现报错。
当然,用于扫描的POC越多,越费时间,建议睡前跑脚本:
弱口令爆破
点击【策略配置】-【新建策略】,按需求填写、勾选:
另外请务必勾选【域名和P配置】 -【服务(python)识别】:
【站点配置】这里保持默认, 81中弱口令爆破全选:
配置好策略,点击【任务下发】并填写目标:
在运行过程中会进行端口扫描,服务识别,然后根据匹配的协议进行弱口令爆破。例如你的策略里有扫描22端口,且目标的22端口开放,被你扫描到了,接着机器就会用SSH 弱口令爆破。
目前不支持配置字典,相关的默认字典在容器内路径为/opt/ARL-NPoC/xing/dicts
,也可以查看https://github.com/1c3z/ARL-NPoC/tree/master/xing/dicts看看是哪些字典。
相关的默认字典在容器内路径为
/opt/ARL-NPoC/xing/dicts
。我要怎么进入到这个目录?:我们
docker ps
查看运行中的镜像,有一个叫arl_web,不难猜它就是网站本尊。执行docker exec -it arl_web /bin/bash
即可进入容器内部。
对实时漏洞进行应急响应
假设有个新漏洞,叫log4j或者叫Exchange Server SSRF (CVE-2021-26855),我们已经导入了其POC。点击【策略配置】-【新建策略】,在【PоC配置】勾选上这个漏洞POC:
进入【资产搜索】点击站点,根据观察,发现Exchange服务的header(标头)都会出现X-FEServer字样。
在标头输入筛选条件 X-FEServer, 可以快速将Exchange筛选出来,点击风险任务下发。
对SRC 域名资产进行资产监控
再新建资产分组,类别选择域名,资产范围填入收集的主域名列表
新建策略配置并关联资产组:
通过新建的策略下发任务,类型选择资产侦查任务,为了保证自动化收集效果可以下发两遍。
待前面的任务完毕,在资产分组操作中选择添加监控任务,域名可以全选,时间的可以根据情况来选择,如48小时。
另外为了提高收集效果可以为域名查询插件选项的数据源配置相应的Token。(没找到在哪)
自动化的收集难免有缺陷,可以在资产分组里补充缺失的子域名:
还有很多其他功能等待探索
这个工具平台功能很强大、太香了,尤其是定时任务、监控任务。还有什么指纹管理、github监控,我都没研究。
配置邮箱推送
配置邮箱推送的重要性?:灯塔可以执行跑脚本的任务,之前有人24小时监控漏洞情报分享社区,被脚本检测到了log4j漏洞并及时通知主人,成功让白客在当天薅上SRC的羊毛,当时log4j漏洞可白嫖时间不会超过一天。又或者你用脚本搜集目标站点信息,但是要搜集好久,你可以先睡会,脚本结束了会推送给你。
vim /root/docker_arl/config-docker.yaml
# 修改配置文件
里边有邮件推送配置,分别对应:邮件服务器域名、端口、测试邮箱账户、授权码、收件人邮箱。
配置钉钉机器人
首先自己先创建个群聊,【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】
分别对应配置文件的SECRET(以SEC开头的密钥)、ACCESS_TOKEN(webhook的token).
测试配置是否成功。
[root@localhost docker_arl]# docker-compose exec worker bash
[root@f6eb78c82685 code]# python3.6 -m test.test_utils_push
成功的话会收到邮件以及钉钉推送消息。
共有 0 条评论