aliasrobotics/aztarna
GitHub: aliasrobotics/aztarna
Aztarna 是一款专为机器人系统设计的安全足迹探测工具,支持对 ROS/SROS/ROS2 节点及工业路由器进行扫描与信息枚举。
Stars: 93 | Forks: 30
# aztarna
本代码库包含 Alias Robotics 的 aztarna,这是一款用于机器人的 footprinting 工具。
**Alias Robotics 支持原生机器人制造商评估其安全性并提升其软件质量。我们绝不鼓励或提倡对正在运行的机器人系统进行未经授权的篡改。这可能会导致严重的人身伤害和财产损失。**
[](https://badge.fury.io/py/aztarna) [](https://aztarna.readthedocs.io/en/latest/?badge=latest) [](https://arxiv.org/pdf/1812.09490.pdf)
**HTML 阅读版:** [Aztarna,一款用于机器人的 footprinting 工具](https://cybersecurityrobotics.com/research/aztarna-robot-footprinting/)
### 对于 ROS
* 系统中存在的 ROS 节点列表(发布者和订阅者)
* 对于每个节点,已发布和订阅的话题(包括话题类型)
* 对于每个节点,各个节点提供的 ROS 服务
* Parameter Server 中存在的所有 ROS 参数列表
* 系统中正在运行的活跃通信列表。单次通信包括相关的发布者/订阅者节点以及话题
### 对于 SROS
* 确定该系统是否为 SROS master。
* 检测是否正在使用 demo 配置。
* 系统中发现的节点列表。(扩展模式)
* 每个节点的允许/拒绝策略列表。
* 可发布的话题。
* 可订阅的话题。
* 可执行的服务。
* 可读取的参数。
### 对于 ROS2 **(由 [ROSIN 项目](http://rosin-project.eu/)资助)**
* 每个通信域中存在的 ROS2 节点列表。
* 每个通信域上发现的话题列表。
* 每个通信域上发现的服务列表。
* 对于每个节点,已发布和订阅话题的关系。
* 对于每个节点,该节点提供的服务。
### 对于工业路由器
* 检测 eWON、Moxa、Sierra Wireless 和 Westermo 工业路由器。
* 检查所发现路由器的默认凭据。
### 对于 ROS Industrial 软件包 **(由 [ROSIN 项目](http://rosin-project.eu/)资助)**
* 检测 ROS Industrial 主机。
* 制造商:
* ABB
* Fanuc
* Kuka
## 安装
### 用于生产环境
直接从 PyPi 安装
```
pip3 install aztarna
```
或从代码库安装:
```
pip3 install .
```
### 用于开发环境
```
pip3 install -e .
```
或
```
python3 setup.py develop
```
安装需要 **Python 3.6** 和 [setuptools](https://pypi.org/project/setuptools/) 包。
推荐使用 Python 3.7。
### ROS2 模块
要使用 ROS2 footprinting 模块,需要安装 ROS2。在启动前请先 source `setup.bash` 脚本。
### 使用 Docker 安装
```
docker build -t aztarna_docker .
```
### 代码用法:
```
usage: aztarna [-h] -t TYPE [-a ADDRESS] [-p PORTS] [-i INPUT_FILE]
[-o OUT_FILE] [-e] [-r RATE] [-d DOMAIN] [--daemon] [--hidden]
[--shodan] [--api-key API_KEY] [--passive PASSIVE]
Aztarna
optional arguments:
-h, --help show this help message and exit
-t TYPE, --type TYPE Scan
ROS, SROS, ROS2 hosts or Industrial routers
-a ADDRESS, --address ADDRESS
Single address or network range to scan.
-p PORTS, --ports PORTS
Ports to scan (format: 13311 or 11111-11155 or
1,2,3,4)
-i INPUT_FILE, --input_file INPUT_FILE
Input file of addresses to use for scanning
-o OUT_FILE, --out_file OUT_FILE
Output file for the results
-e, --extended Extended scan of the hosts
-r RATE, --rate RATE Maximum simultaneous network connections
-d DOMAIN, --domain DOMAIN
ROS 2 DOMAIN ID (ROS_DOMAIN_ID environmental
variable). Only applies to ROS 2.
--daemon Use rclpy daemon (coming from ros2cli).
--hidden Show hidden ROS 2 nodes. By default filtering
_ros2cli*
--shodan Use shodan for the scan types that support it.
--api-key API_KEY Shodan API Key
--passive PASSIVE Passive search for ROS2
```
### 运行代码(示例输入文件):
```
aztarna -t ROS -p 11311 -i ros_scan_s20.csv
```
### 使用 Docker 运行代码(示例输入文件):
```
docker run -v :/root -it aztarna_docker -t ROS -p 11311 -i
```
### 运行代码(示例单个 IP 地址):
```
aztarna -t ROS -p 11311 -a 115.129.241.241
```
### 运行代码(示例子网):
```
aztarna -t ROS -p 11311 -a 115.129.241.0/24
```
### 运行代码(示例单个 IP 地址,端口范围):
```
aztarna -t ROS -p 11311-11500 -a 115.129.241.241
```
### 运行代码(示例单个 IP 地址,端口列表):
```
aztarna -t ROS -p 11311,11312,11313 -a 115.129.241.241
```
### 运行 ROS 2 代码(示例探索所有范围,0-231)
```
aztarna -t ROS2
```
### 在 `ROS_DOMAIN_ID=15` 下运行 ROS 2 代码
```
aztarna -t ROS2 -d 15
```
### 使用 rclpy ros2cli 守护进程并在 `ROS_DOMAIN_ID=0` 下运行 ROS 2 代码,同时显示隐藏节点
```
aztarna -t ros2 -d 0 --daemon --hidden
```
### 使用被动模式搜索主机来运行 ROS 2 代码。如果将 'any' 作为参数,它将搜索您系统上的所有接口:
```
aztarna -t ros2 --passive any
```
### 运行代码(示例直接从 zmap 管道输入):
```
zmap -p 11311 0.0.0.0/0 -q | aztarna -t SROS -p 11311
```
### 运行代码(示例在 shodan 中搜索工业路由器)
```
aztarna -t IROUTERS --shodan --api-key
```
### 运行代码(示例在 shodan 中搜索工业路由器,并通过管道输出到文件)
```
aztarna -t IROUTERS --shodan --api-key -o routers.csv
```
## 引用我们的工作
如果您在研究中使用了我们的工作,请按以下格式引用我们:
```
@ARTICLE{2018arXiv181209490V,
author = {{Vilches}, V{\'\i}ctor Mayoral and {Mendia}, Gorka Olalde and
{Baskaran}, Xabier Perez and {Cordero}, Alejandro Hern{\'a}ndez
and {Juan}, Lander Usategui San and {Gil-Uriarte}, Endika and
{de Urabain}, Odei Olalde Saez and {Kirschgens}, Laura Alzola},
title = "{Aztarna, a footprinting tool for robots}",
journal = {arXiv e-prints},
keywords = {Computer Science - Cryptography and Security, Computer Science - Robotics},
year = 2018,
month = Dec,
eid = {arXiv:1812.09490},
pages = {arXiv:1812.09490},
archivePrefix = {arXiv},
eprint = {1812.09490},
primaryClass = {cs.CR},
adsurl = {https://ui.adsabs.harvard.edu/\#abs/2018arXiv181209490V},
adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}
```
本代码库包含 Alias Robotics 的 aztarna,这是一款用于机器人的 footprinting 工具。
**Alias Robotics 支持原生机器人制造商评估其安全性并提升其软件质量。我们绝不鼓励或提倡对正在运行的机器人系统进行未经授权的篡改。这可能会导致严重的人身伤害和财产损失。**
[](https://badge.fury.io/py/aztarna) [](https://aztarna.readthedocs.io/en/latest/?badge=latest) [](https://arxiv.org/pdf/1812.09490.pdf)
**HTML 阅读版:** [Aztarna,一款用于机器人的 footprinting 工具](https://cybersecurityrobotics.com/research/aztarna-robot-footprinting/)
### 对于 ROS
* 系统中存在的 ROS 节点列表(发布者和订阅者)
* 对于每个节点,已发布和订阅的话题(包括话题类型)
* 对于每个节点,各个节点提供的 ROS 服务
* Parameter Server 中存在的所有 ROS 参数列表
* 系统中正在运行的活跃通信列表。单次通信包括相关的发布者/订阅者节点以及话题
### 对于 SROS
* 确定该系统是否为 SROS master。
* 检测是否正在使用 demo 配置。
* 系统中发现的节点列表。(扩展模式)
* 每个节点的允许/拒绝策略列表。
* 可发布的话题。
* 可订阅的话题。
* 可执行的服务。
* 可读取的参数。
### 对于 ROS2 **(由 [ROSIN 项目](http://rosin-project.eu/)资助)**
* 每个通信域中存在的 ROS2 节点列表。
* 每个通信域上发现的话题列表。
* 每个通信域上发现的服务列表。
* 对于每个节点,已发布和订阅话题的关系。
* 对于每个节点,该节点提供的服务。
### 对于工业路由器
* 检测 eWON、Moxa、Sierra Wireless 和 Westermo 工业路由器。
* 检查所发现路由器的默认凭据。
### 对于 ROS Industrial 软件包 **(由 [ROSIN 项目](http://rosin-project.eu/)资助)**
* 检测 ROS Industrial 主机。
* 制造商:
* ABB
* Fanuc
* Kuka
## 安装
### 用于生产环境
直接从 PyPi 安装
```
pip3 install aztarna
```
或从代码库安装:
```
pip3 install .
```
### 用于开发环境
```
pip3 install -e .
```
或
```
python3 setup.py develop
```
安装需要 **Python 3.6** 和 [setuptools](https://pypi.org/project/setuptools/) 包。
推荐使用 Python 3.7。
### ROS2 模块
要使用 ROS2 footprinting 模块,需要安装 ROS2。在启动前请先 source `setup.bash` 脚本。
### 使用 Docker 安装
```
docker build -t aztarna_docker .
```
### 代码用法:
```
usage: aztarna [-h] -t TYPE [-a ADDRESS] [-p PORTS] [-i INPUT_FILE]
[-o OUT_FILE] [-e] [-r RATE] [-d DOMAIN] [--daemon] [--hidden]
[--shodan] [--api-key API_KEY] [--passive PASSIVE]
Aztarna
optional arguments:
-h, --help show this help message and exit
-t TYPE, --type TYPE