Key takeaways
- An IoT pentest tests four distinct surfaces: firmware, radio protocols, hardware debug interfaces and the cloud or mobile backend.
- Firmware can be acquired by direct download, traffic capture or hardware extraction; the method depends on what the device exposes.
- Radio testing requires equipment suited to the device's protocol: BLE, Zigbee, Z-Wave and proprietary sub-gigahertz bands each need a different approach.
- Hardware debug ports, particularly UART and JTAG, frequently expose a root shell or a bootloader not meant to be reachable in production.
- The cloud and mobile backend are in scope for every IoT engagement; a vulnerable API endpoint can affect every device on the platform, not only the unit under test.
The four attack surfaces every IoT pentest covers
An IoT pentest is not a single test run against a single target. It is a structured set of tests across four surfaces that appear in almost every connected device: the firmware that runs on the processor, the radio protocols the device uses to communicate, the physical hardware interfaces that service engineers and, sometimes, attackers can reach, and the cloud or mobile infrastructure the device reports back to.
The surfaces interact. A cloud vulnerability can be reached from the device through its API. A UART console can produce the keys that unlock the firmware. A firmware flaw can open the cloud account. A tester who stops at one surface misses the paths that cross between them. The engagement scope and the test order are agreed at the start so that findings on one surface can inform the work on the next.
The right starting point depends on what the vendor can supply. If current firmware is available for download, analysis starts there. If the device is sealed and the firmware is not published, hardware extraction or traffic capture comes first. Either way, the penetration testing scope document names which surfaces are in, which are out, and what constitutes a finding on each.
In
Reconnaissance
Device model, firmware versions, published specifications
Firmware acquisition
Download, traffic capture or hardware extraction
Radio survey
Identify frequencies and protocols in use
Through
Firmware analysis
Static and dynamic: hardcoded secrets, weak crypto, outdated libraries
Radio testing
Replay, injection, pairing flaws, encryption gaps
Hardware interfaces
UART, JTAG, SPI: debug ports and storage extraction
Out
Cloud and API testing
Authorisation, token scope, device management endpoints
Findings and evidence
CVSS scoring, reproducible steps, remediation guidance
Firmware: acquiring and analysing the binary
Firmware analysis begins with acquisition. For devices that publish update packages, the binary is downloaded directly. For sealed devices, acquisition goes through the hardware: a SPI or NAND flash chip is read with a clip-on programmer, or the bootloader is interrupted over UART to dump the flash contents. In some cases the firmware arrives as network traffic, served from an unsecured update channel or a vendor cloud endpoint that requires no authentication to download.
Once acquired, the binary is unpacked. Most embedded firmware images are packaged with Squashfs, JFFS2 or a vendor-specific container; binwalk extracts the filesystem. The extracted tree is searched for hardcoded credentials, API keys, private keys, weak cipher configurations and references to internal services. A string search for patterns such as password, secret, BEGIN PRIVATE KEY and RFC 1918 addresses produces the first set of leads. The OWASP IoT Project defines firmware analysis as the primary attack surface and specifies the test cases a tester should work through.
Dynamic analysis runs the firmware in an emulation environment or on a spare unit to observe the process at runtime. qemu-user emulates common architectures; tools such as firmwalker automate the extraction and search steps. A firmware finding at this layer often reaches the cloud directly: a private key embedded in the binary can authenticate to the vendor's device management platform as any registered device.
| Finding | Where it appears | Potential impact |
|---|---|---|
| Hardcoded credentials | Configuration files, init scripts | Authentication bypass on the device or the cloud admin console |
| Embedded private TLS key | Certificate store, update binary | Impersonation of the device or the vendor's update server |
| Plaintext storage of sensitive data | Database files, log directories | Exposure of user records or session tokens without network access |
| Debug build shipped to production | Binaries, kernel configuration | Symbol table and debug console accessible at runtime |
| Outdated libraries with known CVEs | Shared libraries, package manifest | Remote code execution or privilege escalation without firmware modification |
Radio and wireless: what the device is transmitting
Most consumer and industrial IoT devices communicate over a short-range radio protocol: Bluetooth Low Energy (BLE), Zigbee, Z-Wave, Thread or a proprietary sub-gigahertz band around 433 MHz or 868 MHz. A tester needs equipment suited to the device's operating frequency. For BLE, a standard Bluetooth adapter running btlejuice or gattacker is enough. For Zigbee or proprietary protocols, a software-defined radio receiver such as a HackRF or RTL-SDR dongle captures raw packets for analysis.
The test checks whether the pairing process can be observed and replayed, whether the protocol carries a non-expiring session token, whether commands can be injected without completing the pairing handshake, and whether the link key was transmitted in the clear during provisioning. BLE in particular has a history of pairing modes that transmit the link key unencrypted: a device that completed pairing in a shared space may have exposed its key to any passive listener.
Radio findings connect to the cloud side. A device that accepts replayed commands can be driven by anyone who can relay the packet. A protocol that uses a device-unique identifier as command authorisation creates a path from the radio layer to the device management account, because the same identifier often appears in the cloud API without additional verification.
Hardware interfaces: JTAG, UART and the debug ports left open in production
Most embedded systems include hardware debug interfaces used during development and testing. UART (Universal Asynchronous Receiver-Transmitter) is the most common: a three-pin or four-pin header on the PCB that provides a serial console, often with root shell access and no authentication required. JTAG (Joint Test Action Group) is a boundary-scan interface that allows a debugger to halt the processor, read registers and step through instructions; it is the standard route to extracting firmware from a chip that cannot be read any other way.
Locating these ports on an unfamiliar PCB is a standard step. A multimeter and an oscilloscope identify the UART pins by their idle voltage and activity pattern. A logic analyser or a baud-rate brute-force tool determines the correct speed. Once connected, the device typically responds with a boot log and a login prompt; on development firmware, or firmware shipped without disabling the debug build, the prompt may accept blank credentials or a well-known vendor default. JTAG requires a probe, typically an FT2232H-based adapter, and a debugging environment such as OpenOCD to set up the connection.
Physical access requirements affect the scope. A device in a locked enclosure is harder to reach than a consumer appliance left in a communal space. The test is not purely an exercise in physical access, though: the question is whether the debug interface is present and functional in production firmware, because a device returned for warranty service, recovered from decommissioning or handled in a shared location exposes the same ports. MITRE ATT&CK documents physical access as an initial access technique under both the ICS and enterprise frameworks, and IoT engagements map their hardware findings to those technique IDs.
The cloud and mobile backend: where a single finding reaches every device
Almost every IoT device reports to a cloud platform and is controlled through a mobile companion app. These backends are tested as part of the IoT engagement because a vulnerability there can affect every device on the platform. A broken object-level authorisation flaw in the device management API can allow one registered user to read the telemetry of any other device. A missing check on the device-side endpoint can allow a device to update its own firmware record without the vendor's signature.
The cloud and API pentest work follows the same methodology as a standalone API engagement: endpoint inventory, authorisation testing by account role, token scope validation, rate limit checks and injection tests. The mobile companion app is in scope wherever it is a primary control path; if the app is the main interface to the device, a mobile app pentest runs in parallel. The combined scope is declared at the start, because testing the device without testing the cloud it trusts is testing half the attack surface.
A frequent finding is that the device uses a shared secret to authenticate to the cloud rather than a per-device certificate. A shared secret means that a compromised device exposes the credential for every device on the same platform. The firmware holding that secret can be extracted through the hardware interface covered in the previous section, completing an end-to-end chain that runs from a UART pin through the binary to the cloud account.
Cloud and API backend
Device management, telemetry, account authorisation
Mobile companion app
Control path, local network discovery, credential storage
Radio and network
BLE, Zigbee, Wi-Fi, proprietary sub-GHz protocols
Firmware and hardware
Binary analysis, debug ports, storage extraction
What to prepare before testing starts
An IoT engagement needs physical hardware. At least two production units of the device under test: one for static work and one to run live tests against, so that a hardware modification does not leave the engagement without a working target. If the device operates as part of a larger system, the test environment should include any pairing device, gateway or hub that sits between the device and the cloud. Firmware binaries for all versions currently deployed should be provided, because a vulnerability patched in the latest release may still be present on devices that have not received the update.
Cloud access is needed in a non-production environment that mirrors the production configuration. A sandbox where test devices can register, receive commands and report telemetry without reaching real users is the standard arrangement. If the cloud environment cannot be replicated, the scope document records what was not tested and what residual risk that creates. NIST SP 800-115 sets out the technical planning baseline for security test engagements; the scoping structure for an IoT engagement follows that same framework, extended to cover the four surfaces described above.
The scoping call covers which radio protocols are in scope, whether physical access to the PCB is authorised, what firmware versions are current, and which cloud regions are in scope. An infrastructure pentest of any on-premise components, such as a local gateway or management server, may run alongside the device work if those components are in scope. An OT/ICS pentest is a separate engagement when the device connects to industrial control systems rather than a consumer or enterprise cloud platform.
IoT security testing in the UAE market
The UAE has seen rapid IoT deployment across smart city infrastructure, healthcare facilities, financial services and building management. Abu Dhabi's smart city programmes and Dubai's infrastructure initiatives have connected large numbers of devices to managed platforms, many running embedded firmware that predates current security standards. These devices sit alongside regulated systems: ADHICS in Abu Dhabi healthcare, CBUAE for financial institutions and DESC for Dubai government entities and their suppliers.
None of the four UAE regulatory regimes that address cybersecurity testing name IoT pentest as a specific requirement in the way they name penetration testing or red teaming. However, the general obligation to secure systems that process personal data or handle regulated transactions applies to connected devices on those networks. A CBUAE-regulated institution operating IoT payment terminals or access control devices is expected to demonstrate that those devices are tested as part of its overall security programme.
Procurement in Abu Dhabi and Dubai for regulated deployments now routinely requires evidence of security testing before deployment approval. A vendor supplying devices to a Dubai government entity covered by DESC, or to an Abu Dhabi healthcare provider covered by ADHICS, may be required to present a test report as part of the technical evaluation. The IoT pentest report is the document that satisfies that requirement, provided it covers the cloud backend and the device firmware as well as the physical unit.
Frequently asked questions
What is an IoT pentest?
An IoT pentest is a structured security test of a connected device and its associated infrastructure. It covers the firmware running on the device, the radio protocols the device uses to communicate, physical hardware interfaces such as UART and JTAG, and the cloud and mobile backend the device reports to. The goal is to find vulnerabilities that an attacker could use to compromise the device, its data or the platform it belongs to.
How does an IoT pentest differ from a standard penetration test?
A standard penetration test targets networked software: web applications, APIs, servers and network infrastructure. An IoT pentest adds hardware-layer testing, which requires physical access to the device, specialised equipment for reading debug ports and radio receivers for wireless protocol analysis. The firmware binary is also a primary target, requiring reverse engineering that is not part of a typical network or application engagement.
What equipment is needed for an IoT pentest?
The tester needs physical units of the device under test, typically two or more, so that invasive work does not leave the engagement without a working target. The test environment also requires a software-defined radio receiver appropriate to the device's wireless protocols, logic analysers for identifying hardware debug pins, JTAG probes, and the flash programmers needed to read storage chips directly. For BLE, a standard Bluetooth adapter is sufficient.
Can an IoT pentest be run without physical access to the device?
Firmware analysis can be performed without physical hardware if the vendor supplies the binary, and the cloud and mobile backend can be tested remotely. However, radio testing and hardware interface testing require the physical device. An engagement scoped to firmware and cloud only is a partial test; the report should record which attack surfaces were not covered and what risk that leaves in place.
How long does an IoT pentest take?
Duration depends on the number of surfaces in scope. A device with BLE, a companion app and a cloud backend typically takes eight to twelve days for a thorough engagement. Adding JTAG analysis, proprietary radio protocols or a second hardware variant extends that. Scoping should account for firmware acquisition and unpacking, as that step can take one to two days on an unfamiliar binary before active testing begins.
What are the most common findings in an IoT pentest?
The most frequent findings fall into three groups: hardcoded credentials or private keys embedded in the firmware, debug interfaces such as UART left enabled in production firmware, and authorisation flaws in the cloud or mobile API that allow one user or device to access another's data. Weak or absent encryption on radio protocols is also common, particularly in devices using older BLE pairing modes or proprietary sub-gigahertz protocols.
How is firmware acquired when it is not available for download?
If the vendor does not publish firmware, the binary is extracted directly from the device's storage chip using a hardware programmer. Common approaches include attaching a clip-on programmer to a SPI flash chip, reading an eMMC or NAND chip after desoldering, or using the JTAG interface to dump flash contents through the processor. In some cases the update mechanism transmits the firmware over the network without encryption, making traffic capture the simpler option.
Do IoT pentests require destructive testing?
Not routinely. Most hardware analysis is non-destructive: probing for UART and JTAG headers, attaching a clip programmer to a flash chip and capturing radio traffic all leave the device intact. Destructive steps such as desoldering components are agreed explicitly in the rules of engagement and require a spare unit. The scope document records which destructive steps are authorised and which device units may be modified.
What does the IoT pentest report contain?
The report documents every finding with the attack surface it was found on, a severity rating under CVSS, a description of how the vulnerability was identified, the evidence gathered, a proof-of-concept reproduction path and a recommended remediation. Cross-surface findings, where a flaw at the firmware layer creates a path into the cloud account, are described as chains rather than isolated issues. A remediation table summarises all findings by priority.
How does IoT pentest scope relate to an OT or ICS pentest?
An IoT pentest covers connected devices that report to a consumer or enterprise cloud platform and communicate over standard short-range radio protocols. An OT/ICS pentest covers industrial control systems, programmable logic controllers and the operational technology networks they run on, where the primary concern is maintaining process uptime during testing. When a connected device bridges both environments, the scope document defines which side each finding belongs to and which engagement methodology applies.






