applied security research
Wesley Neelen - 24 sep 2020

Risk of exposed home automation services

At home, I am automating many things for fun. Currently I am using Home Assistant, an incredibly powerful piece of software for automating your home. Regularly I am combining the home automation experiences with security. Home automation is often related to physical things such as changing lights, moving curtains, opening door locks or turning the car heating on. So if you find security issues in home automation stuff, it often directly has its effects on something in the physical world. Which is interesting, isn’t it? 😀


In my home I am using a MQTT service. MQTT (Message Queuing Telemetry Transport) is a protocol which is widely used in the Internet-of-Things. In a nutshell: it is a lightweight protocol that consists of channels. The MQTT clients can subscribe and/or publish to these channels, to read or share messages. So one client would send a message to the channel, while another client waits for such a message to perform whatever behavior.

In my home MQTT is used for the Zigbee2mqtt application. Zigbee2mqtt sends all Zigbee communication onto the MQTT service. Home Assistant is reading and writing on the MQTT service. This allows me to control all the Zigbee devices through Home Assistant, such as my lights (bye bye Philips Hue, Ikea and other proprietary Zigbee hubs❤️).


Like mentioned, MQTT is definitely useful in home automation setups. And therefor it is often used for a variety of use cases. However, it also introduces new risks. Especially when someone is exposing their MQTT services to the internet without knowing it.

In this blog I want to mention a couple of real-life scenario’s that I was able to identify, by just searching for MQTT services that are currently being exposed to the internet, probably without the users even knowing it…

For an attacker it is easy to find MQTT services that are exposed to the internet: the website scans the internet for services, such as MQTT, and makes it very easy to search through them.

Scenario #1: someone is watching you…

MQTT is often used to distribute location information, such as GPS coordinates. Imagine the following setup: a phone sends its location information to an MQTT service. Home automation software, such as Home Assistant, reads all the information from the channel. This allows the home automation service to know where devices (and their owners) are. This is great for presence detection, actually a very important component when doing home automation (e.g. turn the alarm on when somebody leaves home).

A popular application to do so is Owntracks. By doing some simple searches I was able to identify almost 400 MQTT services that have something to do with Owntracks…

So lets take one MQTT service as an example. Its fairly easy to make a connection. A simple Python script allows you to connect to an MQTT service without credentials. After connecting to this specific service, I was a little bit surprised how quickly I could track someone down. After connecting to the server, I was able to determine the following:

  • Full names of 3 individuals
  • The real-time location of those persons
  • Whether the persons were in the ‘Home’ zone
  • Profile pictures of the users
  • Two car brands, that were also connected through MQTT
  • Vacuum cleaner status
  • And some other weird stuff 🙂

Here is an example of an actual message, containing location information of an individual:

By simply Googling the names and comparing the profile pictures found in the MQTT server and on social media, it was possible to find the correct people. I contacted them to let them know their MQTT server was wide open…

Scenario #2: pwning a computer through MQTT

One of the recent Home Assistant updates mentioned an interesting internet-of-things application called iotlink. This tool allows a home automation user to connect its computer to Home Assistant. And guess what: through MQTT, the application allows someone to control its computer using Home Assistant. For example, rebooting the system, obtaining a screenshot, etc.

In other words: the connected computer is listening to the MQTT channel waiting for commands. The question is: does the tool also allow us to perform command execution? By looking into the documentation, I found out that this is actually a feature. Any application can be run using iotlink, even in a hidden mode (== hidden backdoors 😍).

In have setup a test environment with an MQTT service, Home Assistant and a host connected through iotlink. By publishing a specific payload onto the correct MQTT channel, it is possible to turn the MQTT access into code execution on the connected host:





{ “command”: “calc.exe”, “args”: “”, “path”: “”, “user”: “”, “visible”: true, “fallback”: true }


The result:

So, when having access to an MQTT service that is being used for iotlink, it could even lead to someone compromising your computer. By doing some simple searches, I found (luckily) just 13 MQTT services that have iotlink devices connected.

Scenario #3: pwning your camera’s

During my searches I found a couple of Home Assistant related MQTT services that had some other interesting behavior. The MQTT channels were displaying camera information. More specifically, they were displaying all the attribute information of a Home Assistant camera component. The problem: the attribute also contains an ‘access_token’. This access_token can be used against the Home Assistant web interface to view the camera.

Example data

hass/out b'{“event_type”: “state_changed”, “event_data”: {“entity_id”: “camera.reolink_e1_pro_profile000_mainstream”, “old_state”: {“entity_id”: “camera.reolink_e1_pro_profile000_mainstream”, “state”: “idle”, “attributes”: {“access_token”: “777777777777777777777777777777777777777777777777777“, “friendly_name”: “Reolink_E1_Pro – Profile000_MainStream”, “entity_picture”: “/api/camera_proxy/camera.reolink_e1_pro_profile000_mainstream?token=777777777777777777777777777777777777777777777777777“, “supported_features”: 2}


A simple search shows that currently there are about 539 Home Assistant MQTT services online.

If someone is able to obtain the access token through MQTT, and the Home Assistant web interface is also available to the attacker, he is able to view the camera of the home. Especially if the camera is inside the home, this is probably something you want to prevent.


Home automation is fun! But please be careful exposing your services (directly) to the internet. In this blog I mentioned just a couple of examples for MQTT, but there are loads of services and other scenario’s that could result in similar issues.

Sometimes the ease of access can leak quite some personal information, or even lead to direct access to your workstation. Once you want to make things directly accessible via internet make sure it has authentication.


Zolder.App LIVE Presentations

Erik Remmelzwaal - 11 jan 2021
During #CES2021 we will host a daily LIVE event in Microsoft Teams – OPEN FOR ALL, so also available for non-CES-visitors and non-Teams-users. Monday – Tuesday – Wednesday from 17:00 – 17:30 CET / 11:00 – 11:30 AM EST. The events will be hosted by Erik Remmelzwaal in English. The sessions will be opened for […] Lees verder

#CES2021 - We Are Ready!

Erik Remmelzwaal - 06 jan 2021
We are very excited to be part of the #CES2021NL mission! Meet us at CES (Januari 11-14) in our online booth 10609 and see how we solve global challenges with NLTech. Erik Remmelzwaal, Co-Founder & CEO Yes I indeed think we are ready for CES. At this virtual event we will showcase Zolder.App. I am […] Lees verder

Azure App Consent Policies

Rik van Duijn - 11 nov 2020
OAuth consent phishing has been on the rise for a while now. Unsurprisingly, Microsoft has gradually introduced measures to protect from this type of attack. Latest: Risk-Based Step-Up Consent. Lees verder

Honeytokens using Azure Keyvaults

Rik van Duijn - 15 okt 2020
In 2017 Wesley and I gave a presentation at SHA2017 about honey/pot/tokens. We actually planned on building a fully fledged platform. But never came further then the POC phase of that project. This week we got a product demo from the guys at Thinkst, i’ve always loved this way of thinking: let the attacker come […] Lees verder

Risk of exposed home automation services

Wesley Neelen - 24 sep 2020
At home, I am automating many things for fun. Currently I am using Home Assistant, an incredibly powerful piece of software for automating your home. Regularly I am combining the home automation experiences with security. Home automation is often related to physical things such as changing lights, moving curtains, opening door locks or turning the […] Lees verder

Hacking the traffic light of the future

Wesley Neelen - 06 aug 2020
Nowadays we are connecting everything we can think of to the internet. Usually to make our lives easier or more comfortable. Some of the new upcoming innovations are related to making our traffic smart with the goal to improve safety, comfort and the traffic flow. We dived into this technology to analyze the inner workings and identify potential security risks. Lees verder

Detect lateral movement with Azure Sentinel

Wesley Neelen - 01 jul 2020
Lately we have been setting up a the production network for our Zolder.App service. The network consists of multiple segments separated by a firewall. As an addition we wanted to add monitoring features into the network. If an attacker is in our network, we would like to get a notification. Lees verder

Detecting BEC fraud using Azure Sentinel

Rik van Duijn - 17 jun 2020
Business Email Compromise (BEC) Fraud inflicts the most damage of all types of cybercrime, according to the FBI. How to detect such attacks using Azure Sentinel? Rik shares some actual possibilities. Lees verder

Phishing aftercare

Rik van Duijn - 26 mei 2020
This blog is part of our Office 365 attack & defense series. We also maintain a Github page where we share our Office 365 tools and queries. We often get sent phishing emails by family and friends. Not to phish us but because we ask family and friends to forward them to us. Sometimes they […] Lees verder

Inside a phishing panel

Wesley Neelen - 20 mei 2020
Dutch and Belgium citizens are receiving phishing attacks every day. But how does that exactly work? Lees verder

Office 365 - Exchange rules

Rik van Duijn - 13 mei 2020
This blog is part of our Office 365 attack & defense series. We also maintain a Github page where we share our Office 365 tools and queries. Exchange rules can be useful in managing the emails we receive on a daily basis. For example, it allows users to automatically respond or move specific emails to […] Lees verder

Office 365 - malicious applications

Wesley Neelen - 05 mei 2020
Wesley dives into the App Registrations feature of Microsoft Azure Active Directory. Finds ways to abuse it through delegate & application permissions and shares ideas howto protect from such abuse. Lees verder

Windows terminal profile fun

Rik van Duijn - 24 apr 2020
Rik plays around with the preview version of Windows Terminal to find manipulation options. Lees verder

Building a Zolder logo

Wesley Neelen - 22 apr 2020
Wesley writes about his most recent IoT project: building a Zolder logo with WS2812B ledstrips behind it, to give it some cool effects. Lees verder