Paper · 2018
Abstract. Industry 4.0 is changing the commonly held assumption that robots are deployed in closed, isolated networks. Analysed from a security point of view the picture is disheartening: the robotics industry has not seriously followed good security practices, and most manufacturers forward the problem to the end-users of these machines. As learned at the dawn of PCs and smartphones, action needs to be taken in time to avoid disastrous consequences. To provide the robotics and security communities with the right tools, we present aztarna, a footprinting tool for robotics: it identifies vestiges of different robots while keeping an extensible structure aimed at future fingerprinting extensions. We open-source the tool and disclose preliminary results that demonstrate the current insecurity landscape in industry, and argue that the robotic ecosystem needs a security community, conscious of good practices and empowered by the right tools.
Full text transcribed from the original publication source.
Robotics is claimed to be the next technological revolution, and an onset of a new era, dominated by intelligent entities that contribute to human development. Nowadays, robots are no longer only deployed in research oriented organizations, but increasingly handle big amounts of personal and industrial data, perform a variety of automated tasks in industrial scenarios or help humans handle the most hazardous activities. Lately, robot cybersecurity is under question, because recent research shown out the insecurity status of the state of the art in the robotics era
The example provided by the authors is just a plain particular snapshot of the dooming stage of insecurity of robotics, down to more restrictive scenarios, such as industry, professional environments or simulations and gamification platforms
Footprinting, also known as reconnaissance is the blueprinting of the security profile of a digital system and its organization, undertaken in a methodological manner. To get this information, typically, a security analyst might use various tools and technologies such as whois, nslookup, traceroute, enumerators or pinging. When applied to robotics, we define robot footprinting as the technique used for gathering information about robots and the entities they belong to. This information becomes very useful when performing security analysis over specific systems.
While footprinting is often understood as a mechanism to obtain network information about a digital system in a generalized manner and using common tools, fingerprinting implies fine tuning the networking requests to elicit a specific signature response from the target device. The procedure allows to obtain additional information such as the Operating System, its version, specific libraries deployed, etc. The boundary between both aspects, footprinting and fingerprinting, is often unclear for new digital systems since one requires the other and depends on the tools available. When looking at robotics, we notice that neither footprinting nor fingerpriting tools have been made available. The direct implication of this fact is that the security researcher, in all cases, needs to develop its own tools.
In an attempt to provide the robotics and security communities with the right tools to perform assessments, we discuss aztarna, a security tool that enables robot footprinting. We discuss how such tool can facilitate the process of identifying blueprints of different robots, while maintaining a extensible structure aimed for future fingerprinting extensions. Section 2 will introduce some of the prior work and results available. Section 3 will present the aztarna tool, discuss its structure, supported robotic technologies and demonstrate its capabilities through several examples. Section 4 will describe the results obtained while experimenting with aztarna. Finally, section 5 will provide some remarks and share a few pointers towards extensions of aztarna meant for robot fingerprinting.
Reconaissance practice is very common in an increasing number of fields of interest, such as websites, with tactics that contribute to a pre-attack phase. Several reconaissance tactiques have arised in the past decades, some of them soundly noticeable, such as massive port scans, whereas others stay unnoticed, below the radar. Internet-wide scans in search for connected machines is a well known practice in the field of cybersecurity, with several first order platforms and tools that help to simplify the process. This is the case of Shodan.io
Numerous studies have focused upon Industrial Control Systems
As introduced above, to the best of our knowledge, the concept of footprinting is diffuse and domain specific in the cybersecurity context. Some researchers claim that the footprinting process is completely passive, by using information publicly available through third party sources. Others empower both active or passive means of collecting useful information for any target as a reconnaissance step of an attack
When applying this to the context of robotics, given that the target scope is not a complete organization, but a specific set of devices in that organization1 , the meaning of footprinting and fingerprinting changes accordingly. In this context, footprinting could mean obtaining all the possible information from a single robot or group of robots, whereas fingerprinting could be denoted as obtaining information that can unequivocally identify a single robot device, e.g. a serial number, its OS version or particular details about its robotics framework layout and configuration.
The present piece of research aims to improve, systematize and extend the results of previous studies
In Basque language, aztarna means blueprint or mark, in its various forms and meanings. Those include footprint (aztarna in Basque) and fingerprint (hatz-aztarna). Even in such an ancient language, this same word may be used to name marks upon a given surface and also describe vestiges appertaining to a concrete organism or entity. Thus, the pre-romanic language was accurate at the time when defining a word that adheres very well to the definition of robot footprinting; which basically stands for the information gathering on the reconnaissance phase. Thereafter, particular identification deepens into each particular robot through a process that requires crafting specific requests. Such process, known as fingerprinting deepens into unique identifiers or features of a particular robot, e.g. OS, libraries, versions or particular communication middlewares signatures.
Motivated by the lack of dedicated tooling for security research in the field of robotics, we have developed aztarna, a tool aimed to help in the detection and scan of robots and robot technologies (including software components) on a network. The tool, developed in Python 3, helps to search for connected robots and gathers some information from those found.
Figure 1 illustrates the philosophy behind the aztarna tool. There are three well identified phases that may repeat for each target. For the purpose of this article, our work will focus on the first two phases -scanning and footprinting-, leaving fingerprinting for future work. The architecture of aztarna has been designed to favour its extension towards more and more robotic technologies. The structure of the files within the tool is illustrated in listing 1 where lines 14, 16 and 18 show three folders that contain robot technology-specific code for its footprinting, namely robot adapters. Further extensions can follow a similar pattern and implement the corresponding functions enabling additional robot technology.
1aztarna/ 2 Dockerfile 3 README.md 4 aztarna 5 init__.py 6 __main__.py 7 cmd.py 8 commons.py 9 helpers.py 10 ros 11 init__.py 12 commons.py 13 helpers.py 14 ros 15 ... 16 sros 17 ... 18 industrialrouters 19 helpers.py 20 scanner.py 21 ... 22 docs 23 Makefile 24 ... 25...
aztarna has different work modes that allow to use the tool in different scenarios, and together with other tools. The robot footprinting tool provides flexibility when deciding on the hosts to scan, which can be loaded from an input file, determined by a network IP range, or even loaded from stdin as part of a pipe. This allows to use aztarna in conjunction with tools aimed for massive scans such as
For large scan performance improvement, aztarna provides a basic and a extended mode of scan. With the same purpose, extensive usage of asynchronous development has been used, with the help of Python AsyncIO. This allows the application to handle a big number of concurrent connections without the usage of threads, and improves the performance substantially in comparison to them.
The results provided by aztarna can be exported to standard CSV files, containing all the data gathered from the nodes. This allows to employ results for future analysis. The output file contains a common structure including all the findings, that when exported to third party tools provide ways to filter the results by resource type, names, addresses, and therefore, by found robots. The usage of aztarna is straightforward, as all the different behaviours are defined by command line parameters, which are described when calling the tool with no parameters.
In the following section we will briefly cover aztarna’s robot adapters, the abstraction used to support additional robot technologies. We will discuss the structure of a robot adapter and introduce a few examples.
Similar to what happened in the computer industry, there is a plurality of robot manufacturers, each using its own hardware and software. As a tool to footprint robots and robot-related technology, aztarna provides a common skeleton that can easily be extended to support new software or hardware robot components. New components are extended via robot adapters, abstractions that enlarge the base class RobotAdapter. Robot adapters provide the methods to footprint the corresponding robot technology and are typically organized in folders.
The sections below describe some of the supported robots and robot components within aztarna.
In the case of ROS, the connection is made directly to the master via XMLRPC, from which all information sent by nodes is inferred. This information consists on nodes, topics, services, parameters and all the interactions between them, including subscriptions and publications.
Figure 2 provides insight on the Phases 1 and 2 of aztarna for ROS2 .
The usage of the aztarna’s ROS robot adapter is demonstrated in Listing 2. The tool is invoked with the -t ROS flag, indicating that the robot adapter should use ROS one. Furthermore, flags -p and -a mean the range of ports and addresses to be scanned.
1root@3c22d4bbf4e1:/# aztarna -t ROS -p 11311-11320 -a 127.0.0.1 2root@432b0c5f61cc:~/aztarna# aztarna -t ROS -p 11311-11320 -a 127.0.0.1 3[-] Error connecting to host Address: 127.0.0.1: Cannot connect to host 127.0.0.1:11315 ssl:None [Connection refused] 4 Not a ROS host 5[-] Error connecting to host Address: 127.0.0.1: Cannot connect to host 127.0.0.1:11312 ssl:None [Connection refused] 6 Not a ROS host 7... 8[+] ROS Host found at 127.0.0.1:11317 9[+] ROS Host found at 127.0.0.1:11311
Listing 2 mainly represents Figure’s 2 Phase 1: Scan and analyze. Making use of the ROS Master API, aztarna sends getsystemstate() requests to the corresponding ports and addresses. Based on the responses received, the tool analyses the information and determines which host-port combination contains a ROS Master.
aztarna can also be launched with additional flags that allow the tool to perform footprinting actions. In particular and as depicted in Figure 2 Phase 2: Footprint, when using the aztarna’s flag -e, more information about a particular ROS host can be obtained through the exploitation of the ROS Master API. Listing 3 shows en example.
1root@aa6b6d7f9bd3:/# aztarna -t ROS -p 11311 -a 127.0.0.1 -e 2[+] ROS Host found at 127.0.0.1:11311 3 4Node: /rosout XMLRPCUri: http://aa6b6d7f9bd3:39719 5 6 Published topics: 7 * /rosout_agg(Type: rosgraph_msgs/Log) 8 9 Subscribed topics: 10 * /rosout(Type: rosgraph_msgs/Log) 11 12 Services: 13 * /rosout/set_logger_level 14 * /rosout/get_loggers 15 16 CommunicationROS 0: 17 - Publishers: 18 - Topic: /rosout(Type: rosgraph_msgs/Log) 19 - Subscribers: 20 /rosout XMLRPCUri: http://aa6b6d7f9bd3:39719 21 22 CommunicationROS 1: 23 - Publishers: 24 /rosout XMLRPCUri: http://aa6b6d7f9bd3:39719 25 - Topic: /rosout_agg(Type: rosgraph_msgs/Log) 26 - Subscribers:
When combined with the ROS robot adapter, aztarna provides security researchers the tools to inspect and footprint ROS deployments across different networks. Moreover, the tool can be conjoint with other Linux commands to perform complete analysis over particular systems. Listing 4 provides an example of how aztarna can be used to find unmodified ROS instances in particular machines using its loopback virtual network interface.
1root@bc6af321d62e:/# nmap -p 1-65535 127.0.0.1 | grep open | awk '{print $1}' | sed "s*/tcp**" | \
2 sed "s/^/aztarna -t ROS -p /" | sed "s/$/ -a 127.0.0.1/" | bash
3[+] ROS Host found at 127.0.0.1:11311
4[+] ROS Host found at 127.0.0.1:11317
5[-] Error connecting to host 127.0.0.1:38069 -> Unknown error
6 Not a ROS host
7[-] Error connecting to host 127.0.0.1:38793 -> Unknown error
8 Not a ROS host
9[-] Error connecting to host 127.0.0.1:45665 -> <type 'exceptions.Exception'>:method "getSystemState" is not supported
10 Not a ROS host
11[-] Error connecting to host 127.0.0.1:46499 -> <type 'exceptions.Exception'>:method "getSystemState" is not supported
12 Not a ROS host
13...
In the case of SROS, as the connection to the master is not possible due to the requirement of a client certificate, the policies that are publicly available in the certificate presented by the server are used
1 X509v3 Certificate Policies: critical 2 Policy: 1.2.3.4.5.6.7.8.9.1.1 3 CPS: /rosout 4 Policy: 1.2.3.4.5.6.7.8.9.2.1 5 CPS: /rosout 6 CPS: /rosout_agg 7 Policy: 1.2.3.4.5.6.7.8.9.3.2 8 CPS: ** 9 Policy: 1.2.3.4.5.6.7.8.9.4.1 10 CPS: /rosoutpy/get_loggers 11 CPS: /rosoutpy/set_logger_level 12 Policy: 1.2.3.4.5.6.7.8.9.5.1 13 CPS: /enable_statistics 14 CPS: /tcp_keepalive 15 CPS: /use_sim_time 16 Policy: 1.2.3.4.5.6.7.8.9.6.2 17 CPS: ** 18
Policies on SROS are defined to specify which topics a node can subscribe or publish to, which services it can call, as well as which parameters can it read or write.
Each of this policies consist of a unique OID for each of the nodes and types of policies, as well as multiple values for each of the policies. An example of the policies for the rosout.py node is shown in Listing 5.
As the standard libraries available for managing TLS connections in Python do not support obtaining the server certificate in those cases where the connection is not completed, manual handling of the connection is required. For that purpose, Scapy
In the case of the SROS adapter, it is no possible to infer the information only from the master, as the policies are unique for each node certificate. To obtain all the information about the system, a port scan on the host is required to determine the active nodes.
For each of these nodes, a TLS connection is performed by which the policies are obtained. The policies for each of the nodes show the resources that the given node has allowed or denied the access to. These resources include publication or subscription to topics, calls to services and read or modification of parameters. Due to the extended timespan required to scan SROS hosts, the -e flag has special noteworthiness. Launching a plain scan will result only in scanning the master node, whereas launching the scan with the -e flag will cause to perform the port scan and connection to each of the found ports.
Apart from the information provided by the certificate policies, valuable information is also acquired from the certificate subject fields. It is a common practice for organizations to set valid information regarding to the organization itself, as well as for the person or the organization in charge of issuing the certificates. This data is considered very valuable in reconnaissance scenarios. In the field of interest, this subject could identify the owner corporation of the found robot, as well as the person responsible for the secure configuration of the robots, which could ease the effort required to determine a possible target for social-engineering attack in the case of a malicious actor.
Listing 6 shows an excerpt of the output showing the subject and issuer information for the certificate chain of the Google website.
1bash-3.2$ openssl s_client -connect www.google.com:443 2CONNECTED(00000008) 3depth=2 OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign 4verify return:1 5depth=1 C = US, O = Google Trust Services, CN = Google Internet Authority G3 6verify return:1 7depth=0 C = US, ST = California, L = Mountain View, O = Google LLC, CN = www.google.com 8verify return:1
In the case of SROS, apart of fetching the subject information, a check is performed in order to determine if the demo setup is being used.
The certificates issued by the demo setup provided by SROS always contain the same values as the issuer, which causes them to be easily recognizable, specially given that the setup includes a typo on the State field, calling it Sate, as shown in Listing 7
1bash-3.2$ openssl s_client -connect 127.0.0.1:11311 2CONNECTED(00000006) 3depth=2 ST = Sate, O = Organization, C = ZZ, OU = Organizational Unit, CN = root, L = Locality 4verify error:num=19:self signed certificate in certificate chain 5verify return:0
While not a issue by itself, the usage of the demo setup could give an insight on the security posture of a robot user. It could also be a good metric to define if the system is for testing purposes or in a real production environment.
In order to perform a scan with aztarna in search for SROS based systems, the -t SROS argument is used. This type of scan searches for a master running SROS, establishes a connection for collecting the server certificate and finally recovers the data from this certificate. In this case, given that the master doesn’t have any policy information, only the information regarding to the certificate subject is gathered and the check for the demo setup is performed. In Listing 8, the output of an example scan is shown.
1bash-3.2$ ./aztarna -t SROS -a 192.168.64.131 2Connecting to 192.168.64.131:11311 3[+] SROS host found!!! 4192.168.64.131:11311 5 Node name: master 6 Port: 11311 7 Demo CA Used: True
For the purpose of gathering information regarding to all the nodes in the system, an extended scan must be performed. The extended scan comprises a full scan of the target host, in which all the ports are checked for existing nodes.
For performing the scan, in the first place, the presence of a SROS master is checked in the selected ports, or in the default 11311 port, if not specified. If a SROS master is found, the tool performs a full port scan on the target host seeking the presence of nodes. For each found port, the tool attempts to establish a TLS connection and gather server certificates. In the same manner, for each of the successfully collected certificates, the node policies and subject information are collected. Due to the time required and the noise generated during the performance of a full port scan, this scan is only recommended for a low number of target hosts. A simplified example with the output of one extended scan is shown in Listing 9.
1bash-3.2$ ./aztarna -t SROS -a 192.168.64.131 -e
2Connecting to 192.168.64.131:11311
3[+] SROS host found!!!
4Scanning host 192.168.64.131:39189
5Scanning host 192.168.64.131:35383
6...
7Scanning host 192.168.64.131:38429
8Scanning host 192.168.64.131:11310
9...
10(IPv4Address('192.168.64.131'), 41369, None)
11(IPv4Address('192.168.64.131'), 11310, [X.509 Cert. Subject:/C=ZZ/ST=Sate/L=Locality/
12O=Organization/OU=Organizational Unit/CN=keyserver,
13Issuer:/C=ZZ/ST=Sate/L=Locality/O=Organization/OU=Organizational Unit/CN=master])
14...
15192.168.64.131:11311
16 Node name: master
17 Port: 11311
18 Demo CA Used: True
19
20 Node name: talker
21 Port:
22 Demo CA Used: True
23 Policies:
24 Type: Subscriptable topics
25 Permission: False
26 Values:
27 b'**'
28
29 Type: Publishable topics
30 Permission: False
31 Values:
32 b'/chatter'
33 b'/rosout'
34
35 Type: Unknown
36 Permission: False
37 Values:
38 b'**'
39
40 Type: Executable services
41 Permission: False
42 Values:
43 b'/talker/get_loggers'
44 b'/talker/set_logger_level'
45
46 Type: Readable parameters
47 Permission: False
48 Values:
49 b'/use_sim_time'
50
51...
Direct Internet exposure may seem unrealistic in industrial environments where an external attacker can tamper critical configuration data and modify the behaviour of robots. Yet, there exist cases where industrial routers are reachable from outside their operating network. Some of them use default credentials or even worse, unrestricted access.
There is a new trend in industrial robots where a connection is opened to the open internet so as to get, to name a few, over-the-air updates, maintenance or monitoring. These routers allow users to connect to the robot as if you were on a local network. The number of robots connected to the internet is increasing, fact that exposes robots to cyber attacks. In principle, industrial robots were designed to be isolated, but The Internet of the things (IoT) and the Industrial Internet of the Things (IIoT) have evolved to give internet access to robots, making this system a potential target for cyber attackers.
Following the programming approach explained in section 3.1 a Robot Adapter has been implemented for industrial routers. The selected router brands are Westermo, Moxa, Sierra Wireless and eWON. As commonly the web consoles for this routers reside on widely used ports, such as standard 80 and 443 ports, the idea of scanning the whole internet in search of these turns unbearable. Taking this argument into account, two different strategies are taken, one based on local network host sweeping and the other based on the whole internet scanning (Taking advantage of the Shodan API
Local Network footprinting This approach is meant for scenarios where the aztarna tool is run in local networks. In this scenario, the range of available hosts is reduced, meaning that scans on the cited ports are feasible. The usage of aztarna’s industrial robot adapter is demonstrated in Listing 10. The tool is run indicating it should search for web services on ports 80 and 5001 respectively.
1$ aztarna -t IROUTERS -a 192.168.1.0/24 -p 80,5001 2[+] eWON router in http://192.168.1.10:80 is not secure 3[+] Westermo router in http://192.168.1.11:5001 is secure
When possible industrial routers are found, the results are split into two groups: Secure and Not Secure. Secure means that the router is not accessible with default credentials and Not Secure means that the router is accessible due to default credential usage or even an unrestricted open access. The technique used for detecting router types consists of grabbing and analyzing the HTTP headers present in the router’s response message:
HTTP/1.1 401 Unauthorized Server: GoAhead-Webs Date: Mon Nov 26 01:07:08 2018 WWW-Authenticate: Basic realm="Westermo ADSL-350" Pragma: no-cache Cache-Control: no-cache Content-Type: text/html
HTTP/1.1 302 Redirect Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true Server: eWON Date: Sun Nov 25 21:05:53 2018 GMT Connection: close Pragma: no-cache Cache-Control: no-cache,max-age=0,must-revalidate Content-Type: text/html
HTTP/1.1 200 OK Date: Wed, 19 Feb 2003 09:00:00 GMT Server: MoxaHttp/1.0 Pragma: no-cache Cache-Control: no-cache Content-type: text/html Content-length: 34273
HTTP/1.1 200 OK Date: Mon, 03 Mar 2008 08:00:00 GMT Server: MoxaHttp/2.2 Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Connection: close Transfer-Encoding: chunked
HTTP/1.1 200 OK Date: Mon, 03 Mar 2008 08:00:00 GMT Server: MoxaHttp/2.2 Pragma: no-cache Cache-Control: no-cache Content-Type: text/html Connection: close Transfer-Encoding: chunked
Shodan based footprinting Contrary to ROS machines, which don’t run in well known ports, the connection to industrial routers is usually done in widely used HTTP(80) and HTTPS(443) ports. In this scenario, a manual internet scan for the given ports is impractical, due to the high number of results and false positives obtained. To overcome this issue, the Shodan API has been employed. Shodan is a internet wide scanning platform, in which different crawlers continuously index and store found devices on the internet
To run a full evaluation for each of the industrial router models, aztarna performs a set of actions to obtain the data. First and as mentioned in the paragraph above, the tool employs Shodan to perform the first filtering of targets and retrieve their addresses and ports. Once the target acquisition is done, for each of the industrial routers, a default credentials check is performed. This check employs a set of default credentials harvested from manufacturer documentation and other sources. For each of the credentials, a log-in attempt is made, and successful attempts registered. Finally, additional metadata for the scanned address is obtained with the mediation of the Whois database. For each of the addresses, the country and ASN description are stored.
Password checking for each of the router models is considered one of the vital steps in the assessment. The metric of how much routers have default credentials or no authentication at all gives a clear insight on the security posture of the industry against menaces arising from this internet connected devices. For evaluating if a router is using default credentials, different login attempts are made to each of the router with passwords that have been documented by the manufacturer or by other sources
Each router model follows a different schema for authentication, being basic HTTP authentication the most used by manufacturers. This type of authentication is the easiest to check among the tested ones, as the HTTP response code reveals if the login attempt has been successful or not, a 200(OK) code meaning a successful login attempt, and a 401(Unauthorized) code showing a failed login attempt, as shown on the example workflow figure 3.1.3. Manufacturers not using basic authentication implement various types of HTML forms for user login, some of them including certain types of challenges and client side hashing of passwords.
Password: cd7fb6d7e51b920b59ef1a6d310ac18e Submit: Submit token_text: FakeChallenge: 28F87D79B5CF8608662E50F2ED7555CC4606E62DA647D103ED80007EB7D2320A
Username: admin Password: MD5Password: 1cf153be978cb3 FakeChallenge: 956901051 Submit.x: 45 Submit.y: 24
<request xmlns="urn:acemanager"> <connect> <login>user</login> <password><![CDATA[password]]></password> </connect> </request>
Extensibility for other models As happens for the various models of robots, extensibility has also been kept in mind when developing the IndustrialRouterAdapter. This scanner eases the inclusion of new industrial router models, by providing a base IndustrialRouterScanner class that can be extended for the various needs of each model. The scanners being used are then defined in the router_scanner_types class variable present in the IndustrialRouterAdapter class.
For the addition of the new model, the IndustrialRouterScanner class is extended, and the possible_headers, default_credentials and router_cls variables defined.
The possible_headers field defines the HTTP headers that identify the router as being of the defined model, while the default_credentials and the router_cls variables define the list of credentials to be tested, and the router class to be created as a result of a positive router find.
This base class provides a default method for testing credentials in HTTP basic authentication scenarios. In order to support other authentication schemes, the check_default_password is required to be extended. The newly created class is then included in the mentioned router_scanner_types list in order to be used by the adapter.
For this study, different scans have been launched in search for robots and connected industrial routers. While in the case of ROS and SROS devices, direct, internet wide scans have been performed, in the case of the industrial routers, Shodan.io
During the research, two different global scans of the full internet address space have been performed. This scans have first searched for open ROS Master (11311) ports, and then aztarna has been used to check that these found hosts actually correspond to machines running ROS or SROS. Finally, the results provided by aztarna have followed a manual analysis to determine the nature of the found system and its location, among any other information that could be useful for the ongoing research.
For the initial scan for open ports, in an effort to improve the scan speed, the help of the ZMap tool has been required. ZMap is a tool optimized for massive scans, that has the ability send up to 14.2 million packets per second
In the case of this study, the lack of dedicated hardware has leveraged to slower scan rates, which have caused the scan to span to a week. To run the scan, 5 different virtual machines, running Ubuntu 18.04, each of them with 4 cores and 8Gb of RAM, deployed in well known cloud providers, have been used. The packet rate has been empirically chosen at 800pps, as higher rates showed packet drops that affected the scan effectiveness negatively.
To evenly distribute the work between the different nodes, the sharding capabilities that zmap provides have been used. These capabilities allow to divide the address space to search for each of the nodes, then converging the results.
After this first selection and target recollection process, aztarna has been used to determine the validity of the nodes found. For this, two scans have been launched with aztarna, one for ROS, in extended mode, and another one for SROS, in standard mode, as the complete host scan is time expensive to complete and could be interpreted as a phase preliminary to an attack by the target due to the port scan that is performed. In this case, a single machine has been used to perform both scans, as this scans are required to scan a lower number of possible targets. File output has been chosen to further analyze the data.
With the obtained data, manual analysis and filtering has been done, in order to determine the nature of the found robots, using the found topics and communications as indications to determine the model, purpose, and to determine if the instance is working as a simulated environment or not.
| Scan 1 | Scan 2 | |||||||
| Country | Empty | Real | Simulation | Total | Empty | Real | Simulation | Total |
| AU | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
| CA | 4 | 1 | 0 | 5 | 0 | 1 | 1 | 2 |
| CN | 2 | 0 | 0 | 2 | 3 | 2 | 2 | 7 |
| CZ | 0 | 0 | 0 | 0 | 2 | 0 | 0 | 2 |
| DE | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 2 |
| ES | 1 | 0 | 0 | 1 | 4 | 0 | 0 | 4 |
| EU | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
| GR | 0 | 0 | 0 | 0 | 1 | 4 | 0 | 5 |
| HK | 2 | 2 | 0 | 4 | 2 | 0 | 0 | 2 |
| IT | 1 | 0 | 0 | 1 | 4 | 1 | 0 | 5 |
| JP | 2 | 0 | 0 | 2 | 1 | 0 | 0 | 1 |
| KR | 5 | 0 | 3 | 8 | 6 | 4 | 6 | 16 |
| NL | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 |
| SE | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| SG | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |
| TW | 2 | 0 | 0 | 2 | 2 | 0 | 2 | 4 |
| US | 21 | 7 | 0 | 28 | 25 | 22 | 5 | 52 |
| Grand Total | 42 | 11 | 3 | 56 | 53 | 36 | 17 | 106 |
For industrial routers, a single internet wide scan has been launched, using Shodan in order to determine the test targets by the defined values to query. This scan has revealed a vast amount of connected devices, many of them using default, well known credentials, or having no authentication mechanisms at all. For this scan, routers from Ewon, Moxa, Westermo and Sierra Wireless manufactures have been taken into account. This manufacturers represent the majority of industrial routers present in the industry. As it can be seen on table 2, from the returned 61265 results from Shodan, 26801 have been determined as answering to connections, and from this routers, a total of 8958 routers have been determined to be configured with default credentials or no authentication, which represents a 33% of the analyzed routers.
The difference between the results returned by Shodan and by the then alive routers is presumably caused by the usage of dynamic IP addressing in the connections utilized by the routers. As mentioned before, Shodan utilizes a variety of crawlers that periodically scan the internet searching for connected devices. The time difference between the scan by Shodan and the scan by aztarna may affect the detection of the devices. On an empirical basis, some of the devices that were being individually analyzed stopped answering in a time-span of 8 hours, showing a change in the assigned IP address.
The resulting router quantity, as well as the proportion of the routers configured with default credentials, vs the ones with changed credentials is detailed on table 4.2, as well as in the included proportion 7 and quantity 6 heat maps by country. These results show that United States is the country showing the highest number of connected devices (14755), followed by Canada (1869) and Russia(1120). Most countries follow a similar balance between correctly configured and misconfigured devices, being Colombia, with 26 connected devices and with 100% of the devices using default credentials, the most insecure country. Thailand follows the ranking with 54 devices, showing 93% of them using default credentials. From the countries with a higher number of connected devices, France stands out in the proportion of misconfigured devices, having a total of 416 devices, with 261 of them(63%) configured with default credentials.
| Type | Detected | Alive | Default password |
| Ewon | 4465 | 983 | 359 |
| Moxa | 13291 | 6549 | 971 |
| Westermo | 4602 | 1393 | 279 |
| Sierra Wireless | 38907 | 17876 | 7400 |
| Grand Total | 61265 | 26801 | 9009 |
| Country | Routers | Default Credentials | Changed credentials | Proportion |
| US | 14755 | 5383 | 9372 | 36% |
| CA | 1869 | 767 | 1102 | 41% |
| RU | 1120 | 201 | 919 | 18% |
| PL | 706 | 59 | 647 | 8% |
| TW | 702 | 197 | 505 | 28% |
| ES | 664 | 356 | 308 | 54% |
| IL | 660 | 393 | 267 | 60% |
| GB | 639 | 158 | 481 | 25% |
| IT | 556 | 169 | 387 | 30% |
| SE | 453 | 149 | 304 | 33% |
| FR | 416 | 261 | 155 | 63% |
| AU | 395 | 87 | 308 | 22% |
| DK | 333 | 57 | 276 | 17% |
| DE | 238 | 42 | 196 | 18% |
| NL | 219 | 31 | 188 | 14% |
| TR | 209 | 60 | 149 | 29% |
| RO | 204 | 39 | 165 | 19% |
| CN | 190 | 8 | 182 | 4% |
| AT | 174 | 31 | 143 | 18% |
| CL | 171 | 32 | 139 | 19% |
| SK | 165 | 20 | 145 | 12% |
| CH | 162 | 26 | 136 | 16% |
| NO | 131 | 17 | 114 | 13% |
| FI | 118 | 36 | 82 | 31% |
| PT | 96 | 27 | 69 | 28% |
| KR | 88 | 57 | 31 | 65% |
| CZ | 84 | 10 | 74 | 12% |
| HK | 83 | 10 | 73 | 12% |
| BR | 73 | 25 | 48 | 34% |
| EE | 64 | 11 | 53 | 17% |
| IS | 64 | 12 | 52 | 19% |
| LT | 60 | 9 | 51 | 15% |
| JP | 58 | 2 | 56 | 3% |
| KZ | 55 | 6 | 49 | 11% |
| TH | 54 | 45 | 9 | 83% |
| HU | 52 | 10 | 42 | 19% |
| BG | 51 | 5 | 46 | 10% |
| MY | 46 | 34 | 12 | 74% |
| BY | 41 | 16 | 25 | 39% |
| BE | 34 | 5 | 29 | 15% |
| AM | 33 | 8 | 25 | 24% |
| MA | 32 | 13 | 19 | 41% |
| IN | 31 | 5 | 26 | 16% |
| UA | 30 | 0 | 30 | 0% |
| LV | 30 | 0 | 30 | 0% |
| SG | 29 | 2 | 27 | 7% |
| Others | 393 | 120 | 273 | 30% |
| Grand Total | 26801 | 9009 | 17792 | 34% |
ROS was born as a research framework for robotics development. Now, it’s being gradually replaced by its second version, ROS 2. This new version has taken a massive architectural shift, that will require a separate reconnaissance rationale. ROS 2 technology is based on the DDS (Data Distribution Service) standard, which allows ROS 2 based systems to communicate in a low latency, extremely reliable and distributed environment
Apart from ROS, some robot manufacturers tend to develop their own exclusive programming APIs. Although ROS is becoming the de facto standard in robot programming, there is a set of proprietary tools being extensively used by leading robotic companies. One example is ABB’s RobAPI
Extensions of aztarna towards fingerprinting are also expected. Examples of such extensions include determining the specific firmware version in robots, discovering third-party libraries used and their versions (e.g. robot middleware version, communication infrastructure, etc.). In industrial environments, robots commonly use industrial communication protocols. These can be both standardized (e.g. EtherCAT, PROFINET) or proprietary (e.g. ABB’s MMS, Beckhoffs’s ADS/AMS). The ability to dissect and understand these protocols is itself useful for footprinting purposes.
With regards to unprotected industrial routers in this work, there are other models that could be detected in a similar fashion as the ones presented in subsection 3.1.3, just by looking at their HTTP response headers, but are not included within the present version of aztarna. Other techniques to locate vulnerable industrial routers include the FTP port scanning and banner grabbing, which is demonstrated in
Industrial routers pose an entry point for robots that are located on the network behind the industrial router, which is usually directly connected to the device. This is more evident in the cases of routers exposing default passwords. Most of these routers have reported vulnerabilities and flaws that are subject to update by users. Furthermore, given that most industrial routers provide means to establishing VPN connections, both in server and client mode, tunnels to a protected network behind the routers are a very likely attack vector The automation of this processes could allow researchers to audit the devices that are behind of the router, as well as the router security itself, providing a better insight on the nature of the target. This process will be part of the industrial routers fingerprinting phase, as we pretend to go deep exploring new vulnerabilities.
With the retrieved information, we aim to reinforce the awareness of the robot users community we advocate in favour of secure and tested industrial networks to avoid the dangers of targeted attacks towards robots. Finally, we encourage the manufacturers to address a security by design policy.
Overall, we conclude that aztarna responds to the need of auditing robot security. As ROS is becoming the de facto standard in robot programming, more and more robots are being exposed everyday. The footprinting techniques on ROS are specially dangerous, because once detected and footprinted, ROS powered systems are inherently vulnerable. Existing robot security mitigations, such as SROS, are not used extensively. The present study reports mainly research robots aligned with prior art, but we have reported the footprinting of professional robots as well. We have discovered an array of internet-connected unprotected industrial routers, that could potentially host robots. There is an unresolved gap in robotics cybersecurity which would greatly benefit from releasing the first auditing tools.
This research has been partially funded by the Basque Government, throughout the Business Development Agency of the Basque Country (SPRI) through the Ekintzaile 2018 program and EU H2020 Robot Union Program through the Grant Agreement nº 779967. Special thanks to BIC Araba and the Basque Cybersecurity Centre (BCSC) for the support provided.
@article{mayoralvilches2018aztarnaa,
title = {Aztarna, a footprinting tool for robots},
author = {Víctor Mayoral-Vilches and Gorka Olalde Mendia and Xabier Perez Baskaran and Alejandro Hernández Cordero and Lander Usategui San Juan and Endika Gil-Uriarte and Odei Olalde Saez de Urabain and Laura Alzola Kirschgens},
journal = {arXiv preprint arXiv:1812.09490},
year = {2018},
eprint = {1812.09490},
archivePrefix= {arXiv},
url = {https://arxiv.org/pdf/1812.09490.pdf},
}