Skip to content

Commit

Permalink
Merge pull request #18 from ki9mu/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
ki9mu authored May 24, 2024
2 parents 0028bfc + 8cf80f6 commit b62dc54
Show file tree
Hide file tree
Showing 64 changed files with 358 additions and 348 deletions.
171 changes: 171 additions & 0 deletions ARL-README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
## ARL(Asset Reconnaissance Lighthouse)资产侦察灯塔系统
[![Python 3.6](https://img.shields.io/badge/python-3.6-yellow.svg)](https://www.python.org/)
[![Docker Images](https://img.shields.io/docker/pulls/tophant/arl.svg)](https://hub.docker.com/r/tophant/arl)
[![Github Issues](https://img.shields.io/github/issues/TophantTechnology/ARL.svg)](https://github.com/TophantTechnology/ARL/issues)
[![Github Stars](https://img.shields.io/github/stars/TophantTechnology/ARL.svg)](https://github.com/TophantTechnology/ARL/stargazers)

资产灯塔,不仅仅是域名收集

### 简介

旨在快速侦察与目标关联的互联网资产,构建基础资产信息库。
协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面。

在开始使用之前,请务必阅读并同意[免责声明](Disclaimer.md)中的条款,否则请勿下载安装使用本系统。

### 特性
1. 域名资产发现和整理
2. IP/IP 段资产整理
3. 端口扫描和服务识别
4. WEB 站点指纹识别
5. 资产分组管理和搜索
6. 任务策略配置
7. 计划任务和周期任务
8. Github 关键字监控
9. 域名/IP 资产监控
10. 站点变化监控
11. 文件泄漏等风险检测
12. nuclei PoC 调用
13. [WebInfoHunter](https://tophanttechnology.github.io/ARL-doc/function_desc/web_info_hunter/) 调用和监控

### 系统要求

目前暂不支持Windows,初次体验可采用Docker方式运行,长期使用建议采用源码安装方式运行。系统配置建议:CPU:4线程 内存:8G 带宽:10M。
由于自动资产发现过程中会有大量的的发包,建议采用云服务器可以带来更好的体验。

### Docker 启动


```
cd /opt/
mkdir docker_arl
wget -O docker_arl/docker.zip https://github.com/TophantTechnology/ARL/releases/download/v2.6.2/docker.zip
cd docker_arl
unzip -o docker.zip
docker volume create arl_db
docker compose pull
docker compose up -d
```


Ubuntu 下可以直接执行 `apt-get install docker.io docker-compose -y` 安装相关依赖

详细说明可以参考: [Docker 环境安装 ARL](https://tophanttechnology.github.io/ARL-doc/system_install/)

### 截图

1. 登录页面
默认端口5003 (https), 默认用户名密码admin/arlpass
![登录页面](./image/login.png)

2. 任务页面
![任务页面](./image/task.png)

3. 子域名页面
![子域名页面](./image/domain.png)

4. 站点页面
![站点页面](./image/site.png)

5. 资产监控页面
![资产监控页面](./image/monitor.png)
详细说明可以参考:[资产分组和监控功能使用说明](https://github.com/TophantTechnology/ARL/wiki/%E8%B5%84%E4%BA%A7%E5%88%86%E7%BB%84%E5%92%8C%E7%9B%91%E6%8E%A7%E5%8A%9F%E8%83%BD%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)

6. 策略页面
![策略配置页面](./image/policy.png)

7. 筛选站点进行任务下发
![筛选站点进行任务下发](./image/scan.png)
详细说明可以参考: [2.3-新添加功能详细说明](https://github.com/TophantTechnology/ARL/wiki/ARL-2.3-%E6%96%B0%E6%B7%BB%E5%8A%A0%E5%8A%9F%E8%83%BD%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E)

8. 计划任务
![计划任务](./image/task_scheduler.png)
详细说明可以参考: [2.4.1-新添加功能详细说明](https://github.com/TophantTechnology/ARL/wiki/ARL-2.4.1-%E6%96%B0%E6%B7%BB%E5%8A%A0%E5%8A%9F%E8%83%BD%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E)

9. GitHub 监控任务
![GitHub 监控任务](./image/github_monitor.png)

### 任务选项说明
| 编号 | 选项 | 说明 |
| --- | -------------- | -------------------------------------------------------------------------------- |
| 1 | 任务名称 | 任务名称 |
| 2 | 任务目标 | 任务目标,支持IP,IP段和域名。可一次性下发多个目标 |
| 3 | 域名爆破类型 | 对域名爆破字典大小, 大字典:常用2万字典大小。测试:少数几个字典,常用于测试功能是否正常 |
| 4 | 端口扫描类型 | ALL:全部端口,TOP1000:常用top 1000端口,TOP100:常用top 100端口,测试:少数几个端口 |
| 5 | 域名爆破 | 是否开启域名爆破 |
| 6 | DNS字典智能生成 | 根据已有的域名生成字典进行爆破 |
| 7 | 域名查询插件 | 已支持的数据源为13个,`alienvault`, `certspotter`,`crtsh`,`fofa`,`hunter`|
| 8 | ARL 历史查询 | 对arl历史任务结果进行查询用于本次任务 |
| 9 | 端口扫描 | 是否开启端口扫描,不开启站点会默认探测80,443 |
| 10 | 服务识别 | 是否进行服务识别,有可能会被防火墙拦截导致结果为空 |
| 11 | 操作系统识别 | 是否进行操作系统识别,有可能会被防火墙拦截导致结果为空 |
| 12 | SSL 证书获取 | 对端口进行SSL 证书获取 |
| 13 | 跳过CDN | 对判定为CDN的IP, 将不会扫描端口,并认为80,443是端口是开放的 |
| 14 | 站点识别 | 对站点进行指纹识别 |
| 15 | 搜索引擎调用 | 利用搜索引擎搜索下发的目标爬取对应的URL和子域名 |
| 16 | 站点爬虫 | 利用静态爬虫对站点进行爬取对应的URL |
| 17 | 站点截图 | 对站点首页进行截图 |
| 18 | 文件泄露 | 对站点进行文件泄露检测,会被WAF拦截 |
| 19 | Host 碰撞 | 对vhost配置不当进行检测 |
| 20 | nuclei 调用 | 调用nuclei 默认PoC 对站点进行检测 ,会被WAF拦截,请谨慎使用该功能 |
| 21 | WIH 调用 | 调用 WebInfoHunter 工具在JS中收集域名,AK/SK等信息 |
| 22 | WIH 监控任务 | 对资产分组中的站点周期性 调用 WebInfoHunter 工具在JS中域名等信息进行监控 |

### 配置参数说明

Docker环境配置文件路径 `docker/config-docker.yaml`

| 配置 | 说明 |
| ----------------- | ------------------------------------ |
| CELERY.BROKER_URL | rabbitmq连接信息 |
| MONGO | mongo 连接信息 |
| QUERY_PLUGIN | 域名查询插件数据源Token 配置 |
| GEOIP | GEOIP 数据库路径信息 |
| FOFA | FOFA API 配置信息 |
| DINGDING | 钉钉消息推送配置 |
| EMAIL | 邮箱发送配置 |
| GITHUB.TOKEN | GITHUB 搜索 TOKEN |
| ARL.AUTH | 是否开启认证,不开启有安全风险 |
| ARL.API_KEY | arl后端API调用key,如果设置了请注意保密 |
| ARL.BLACK_IPS | 为了防止SSRF,屏蔽的IP地址或者IP段 |
| ARL.PORT_TOP_10 | 自定义端口,对应前端端口测试选项 |
| ARL.DOMAIN_DICT | 域名爆破字典,对应前端大字典选项 |
| ARL.FILE_LEAK_DICT | 文件泄漏字典 |
| ARL.DOMAIN_BRUTE_CONCURRENT | 域名爆破并发数配置 |
| ARL.ALT_DNS_CONCURRENT | 组合生成的域名爆破并发数 |
| PROXY.HTTP_URL | HTTP代理URL设置 |
| FEISHU | 飞书消息推送配置 |
| WXWORK | 企业微信消息推送 |


### 忘记密码重置

当忘记了登录密码,可以执行下面的命令,然后使用 `admin/admin123` 就可以登录了。
```
docker exec -ti arl_mongodb mongo -u admin -p admin
use arl
db.user.drop()
db.user.insert({ username: 'admin', password: hex_md5('arlsalt!@#'+'admin123') })
```


### 源码安装

仅仅适配了 centos 7 ,且灯塔安装目录为/opt/ARL
如果在其他目录可以创建软连接,且安装了四个服务分别为`arl-web`, `arl-worker`, `arl-worker-github`, `arl-scheduler`

```
wget https://raw.githubusercontent.com/TophantTechnology/ARL/master/misc/setup-arl.sh
chmod +x setup-arl.sh
./setup-arl.sh
```


### FAQ

请访问如下链接[FAQ](https://tophanttechnology.github.io/ARL-doc/faq/)

### 写在最后

目前ARL仅仅只是完成了对资产的部分维度的发现和收集,自动发现过程中难免出现覆盖度不全、不精准、不合理等缺陷的地方还请反馈至我们。

65 changes: 0 additions & 65 deletions ARMWorker/Dockerfile

This file was deleted.

69 changes: 22 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,26 @@
# ARL-plus-docker
基于(https://github.com/TophantTechnology/ARL/)
基于ARL-V2.6.2版本自研
ARL的安装这里就不多赘述了,可以看这里 https://github.com/ki9mu/ARL-plus-docker/blob/dev/ARL-README.md

(新版本正在写,敬请关注)
# 2.8.0版本以后无oneforall,如需要oneforall可以使用之前的版本

# 原版更新方式
进入原版的arl/docker目录,删除原版容器,直接删除即可,数据是存放在volume里,会直接更新到新版
```docker-compose down```

然后拉取本项目,启用即可
```docker-compose up -d```

修改OneForAll相关配置文件

# 新版更新方式
到本项目路径下`git pull`

然后```docker-compose up -d```
# 免责声明
如果您下载、安装、使用、修改本系统及相关代码,即表明您信任本系统。在使用本系统时造成对您自己或他人任何形式的损失和伤害,我们不承担任何责任。 如您在使用本系统的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。 请您务必审慎阅读、充分理解各条款内容,特别是免除或者限制责任的条款,并选择接受或不接受。 除非您已阅读并接受本协议所有条款,否则您无权下载、安装或使用本系统。您的下载、安装、使用等行为即视为您已阅读并同意上述协议的约束。

# 新增功能
### 新增OneForAll √
![image](https://user-images.githubusercontent.com/47977616/167526875-0d944261-7bed-4918-936e-38c195ce7f42.png)
### 新增中央数据库 √
使用中央数据库需要外联站点,私聊我加ip白名单,否则该功能无法使用

![image](https://user-images.githubusercontent.com/47977616/167527042-0598791e-6fe8-49e6-b363-a8a040d2cf1d.png)

### 智能子域名优化 √
改了下altDNS

# Q&A
Q: 什么是中央数据库

A: A设备对域名abc.com扫描,发现了子域名aaa.abc.com,会将aaa子域名上传至中央数据库。B设备在进行子域名爆破的时候,会拉取中央数据库中的子域。如果同时也在扫描abc.com,基本子域名不会遗漏。(为啥加这个功能,我发现ARL很多次扫描子域结果都不太一样,也不知道是咋回事,变多还可以理解,变少就不应该吧)

Q: 如何确定自己是否在中央数据库白名单里

A: 随便开启一个域名的扫描,看`domain_brute: 300`属性是否比较大,一般是几百,如果个位数或者十几秒就结束了,说明数据库连接失败了。

Q: 如何使用OneForAll

A: 文件目录下有个oneforall-config文件夹,修改其中配置即可

Q: 为什么扫描aaa.abc.com会出现bbb.abc.com

A: 因为OneForAll的API接口设置,输入aaa.abc.com会有响应bbb.abc.com,介意的话关闭OneForAll模块即可(目前对oneforall结果进行了过滤,已无该bug)

Q: 任务为什么有时候会卡死

A: 多种原因。可以看下当前目录下arl_web.log/arl_worker.log日志文件是否过大,删除容器及日志文件重新拉取项目。启用oneforall的时候可能导致该问题。低配置服务器运行也可能导致该问题(本人是4c4g基本正常使用)
1. 中央数据库,上传子域名数据,或拉取子域名数据
2. 修改了rabbitmq的超时时间,可能重型任务不会挂?(实测4c8g跑qq.com,跑了1个月都没挂,最终跑完了,如果还挂应该是服务器配置不行,加钱解决一切问题)
3. 没了...(有需求提issue,视情况开发)

# 中央数据库介绍
默认关闭
开启方式:
```
vim config-docker.yaml
# 最底部的center_option设置为true即可,默认为false
# 如果有不想上传的扫描,可以在扫描前设置为false,执行docker-compose restart重启容器,扫描完成后再改回true并重启容器即可。
```

# 写在最后
n久没写了,几乎重写,难顶

# 团队微信
![b4fd06ae7fb4d6a977754f3077c7274](https://github.com/ki9mu/ARL-plus-docker/assets/47977616/48ec6b67-dcaa-4f59-b845-b3d3ede31eda)
1 change: 0 additions & 1 deletion arl_web.log
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

1 change: 0 additions & 1 deletion arl_worker.log
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@

Loading

0 comments on commit b62dc54

Please sign in to comment.