evilsocket/xray
GitHub: evilsocket/xray
XRay是一款面向公共网络的OSINT自动化收集工具,通过整合子域名枚举、Shodan情报与多协议Banner抓取,帮助安全人员快速完成目标资产的发现与网络映射。
Stars: 2308 | Forks: 299
**XRay 已使用 Rust 重新实现并扩展了更多功能,此仓库为遗留代码 (LEGACY code)。请使用 https://github.com/evilsocket/legba**
# XRAY
XRay 是一款用于网络 OSINT 收集的工具,其目标是自动化完成部分信息收集与网络映射的初始任务。
## 工作原理
XRay 是一款非常简单的工具,其工作方式如下:
1. 它将使用字典和 DNS 请求暴力破解子域名。
2. 对于发现的每个子域名/IP,它将使用 Shodan 收集开放端口及其他情报。
3. 如果提供了 ViewDNS API 密钥,将收集每个子域名的历史数据。
4. 对于每个唯一的 IP 地址,以及每个开放端口,它将启动特定的 Banner 抓取器和信息收集器。
5. 最终,数据将通过 Web 界面呈现给用户。
**抓取器和收集器**
* **HTTP** `Server`、`X-Powered-By` 和 `Location` 标头。
* **HTTP** 和 **HTTPS** `robots.txt` 中的禁止条目。
* **HTTPS** 证书链(包含从 CN 和 Alt Names 中递归抓取子域名)。
* **HTML** `title` 标签。
* **DNS** `version.bind.` 和 `hostname.bind.` 记录。
* **MySQL**、**SMTP**、**FTP**、**SSH**、**POP** 和 **IRC** Banner。
## 注意事项
**Shodan API 密钥**
[shodan.io](https://www.shodan.io/) API 密钥参数(`-shodan-key KEY`)是可选的,但如果未指定,将不会执行服务指纹识别,并且显示的信息会大幅减少(基本上只会进行 DNS 子域名枚举)。
**ViewDNS API 密钥**
如果传入了 [ViewDNS](http://viewdns.info/) API 密钥参数(`-viewdns-key KEY`),还将检索域名历史数据。
**匿名性与法律问题**
该软件将依赖您的主 DNS 解析器来枚举子域名,此外,可能会直接从您的主机建立到您正在扫描的网络中计算机的多个连接,以便从开放端口抓取 Banner。从技术上讲,您只是在连接具有开放端口的公共地址(并且**不涉及端口扫描**,因为此类信息是使用 Shodan API 间接抓取的),但是您懂的,可能有人会不喜欢这种行为。
如果我是你,我会想办法通过代理来执行整个过程…… #随便说说
## 构建 Docker 镜像
要构建包含最新版本 XRay 的 Docker 镜像:
```
git clone https://github.com/evilsocket/xray.git
cd xray
docker build -t xraydocker .
```
构建完成后,可以使用以下命令在 Docker 容器中启动 XRay:
```
docker run --rm -it -p 8080:8080 xraydocker xray -address 0.0.0.0 -shodan-key shodan_key_here -domain example.com
```
## 手动编译
请确保您使用的是 **Go >= 1.7**,安装工作正常,并且已经设置了 `$GOPATH` 变量,同时已将 `$GOPATH/bin` 添加到您的 `$PATH` 中。
然后执行:
```
go get github.com/evilsocket/xray
cd $GOPATH/src/github.com/evilsocket/xray/
make
```
您可以在 `build` 文件夹中找到可执行文件。
## 用法
```
Usage: xray -shodan-key YOUR_SHODAN_API_KEY -domain TARGET_DOMAIN
Options:
-address string
IP address to bind the web ui server to. (default "127.0.0.1")
-consumers int
Number of concurrent consumers to use for subdomain enumeration. (default 16)
-domain string
Base domain to start enumeration from.
-port int
TCP port to bind the web ui server to. (default 8080)
-preserve-domain
Do not remove subdomain from the provided domain name.
-session string
Session file name. (default "-xray-session.json")
-shodan-key string
Shodan API key.
-viewdns-key string
ViewDNS API key.
-wordlist string
Wordlist file to use for enumeration. (default "wordlists/default.lst")
```
示例:
```
# xray -shodan-key yadayadayadapicaboo... -viewdns-key foobarsomethingsomething... -domain fbi.gov
____ ___
\ \/ /
\ RAY v 1.0.0b
/ by Simone 'evilsocket' Margaritelli
/___/\ \
\_/
@ Saving session to fbi.gov-xray-session.json
@ Web UI running on http://127.0.0.1:8080/
```
## 许可证
XRay 由 [Simone Margaritelli](https://www.evilsocket.net/) 用 ♥ 编写,并在 GPL 3 许可证下发布。
`wordlists` 文件夹中的文件是在过去几周内从各种开源工具中收集的,我已经记不清所有的来源了。如果您在这里找到了您项目的字典,并希望被提及,请随时提出 Issue 或发送 Pull Request。
标签:Banner抓取, C2日志可视化, DNS解析, ESC4, GitHub, HTTPS证书解析, HTTP探测, OSINT, Rust, ViewDNS, Windows内核, 域名枚举, 子域名爆破, 实时处理, 密码管理, 开源项目, 指纹识别, 插件系统, 数据展示, 数据统计, 日志审计, 白帽子, 端口扫描, 红队, 网络安全, 网络流量审计, 网络资产测绘, 请求拦截, 资产梳理, 隐私保护