aliasrobotics/aztarna

GitHub: aliasrobotics/aztarna

Aztarna 是一款专为机器人系统设计的安全足迹探测工具,支持对 ROS/SROS/ROS2 节点及工业路由器进行扫描与信息枚举。

Stars: 93 | Forks: 30

# aztarna 本代码库包含 Alias Robotics 的 aztarna,这是一款用于机器人的 footprinting 工具。 **Alias Robotics 支持原生机器人制造商评估其安全性并提升其软件质量。我们绝不鼓励或提倡对正在运行的机器人系统进行未经授权的篡改。这可能会导致严重的人身伤害和财产损失。** [![PyPI 版本](https://badge.fury.io/py/aztarna.svg)](https://badge.fury.io/py/aztarna) [![文档状态](https://readthedocs.org/projects/aztarna/badge/?version=latest)](https://aztarna.readthedocs.io/en/latest/?badge=latest) [![文章](https://img.shields.io/badge/article-arxiv%3A1812.09490-red.svg)](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} } ```