<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Firmware on Zero-Entry</title>
    <link>https://zero-entry.co.za/tags/firmware/</link>
    <description>Recent content in Firmware on Zero-Entry</description>
    <generator>Hugo -- 0.147.7</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 24 Apr 2026 14:26:40 +0400</lastBuildDate>
    <atom:link href="https://zero-entry.co.za/tags/firmware/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Inside a Cheap IPC Camera: Firmware, Cloud, and Trust</title>
      <link>https://zero-entry.co.za/posts/ipc_camera/</link>
      <pubDate>Thu, 01 Jan 2026 20:30:00 +0200</pubDate>
      <guid>https://zero-entry.co.za/posts/ipc_camera/</guid>
      <description>Pulling apart a cheap IPC camera: dumping and analysing the firmware, intercepting cloud traffic, and finding out exactly how much it phones home.</description>
      <content:encoded><![CDATA[<h2 id="1-why-this-camera">1. Why This Camera?</h2>
<p>I came across this cheap IPC camera on a local marketplace here in South Africa. The price was perfect to mess around with the device and potentially break it. The device cost around R300, or roughly $10.</p>
<p>My goal with this device was to go from zero to one hundred in terms of how I document findings, while also looking at every nook and cranny I could reasonably reach.</p>
<p>From my initial research into these no-name, internet-connected devices, they tend to compromise on both security and privacy.</p>
<p>From the outset, I want to make a few things clear. Within this post you will <strong>not</strong> find a tutorial on “how to hack”, nor will anything be blown out of proportion. This post is meant to be a reverse engineering and analysis exercise.</p>
<h2 id="2-initial-recon-out-of-the-box-behaviour">2. Initial Recon, Out of the Box Behaviour</h2>
<p>To understand normal operating behaviour, the device needs to be used exactly as intended. This includes:</p>
<ul>
<li>Reading the manual it came with</li>
<li>Plugging it in and getting a feel for boot times</li>
<li>Watching for any boot messages</li>
<li>Using the mobile app and understanding its dependency</li>
<li>Noting early red flags such as cloud-only usage or lack of a local UI</li>
</ul>
<p>With that methodology in mind, we start at the top.</p>
<p>The manual was fairly well written, with no obvious grammar or spelling issues. The app required for viewing and control is called <strong>Tris Home</strong>. It appears to be a generic IPC viewer backed by cloud infrastructure.</p>
<p>When powered on, the camera announces “device booting” via the onboard speaker. The app then pops up saying a nearby camera has been discovered. After adoption, another message plays: “device added to Wi-Fi”.</p>
<p>Initially there were no major red flags, but a few things stood out:</p>
<ul>
<li>Account creation immediately triggers cloud storage upsells</li>
<li>The app appears to be the only supported interface</li>
<li>The app feels generic, capable of onboarding many brands</li>
</ul>
<h2 id="3-network-analysis-watching-it-talk">3. Network Analysis, Watching It Talk</h2>
<p>This is where things get interesting.</p>
<p>We set up a small lab using a spare Raspberry Pi and a simple script to create a MITM access point. The camera connects to the internet as normal, but all traffic passes through us.</p>
<h3 id="setting-up-a-controlled-network">Setting up a controlled network</h3>
<p>The script configures <code>hostapd</code> and <code>dnsmasq</code>.</p>
<p><code>hostapd</code> puts the Wi-Fi adapter into AP mode, creating a hotspot with an SSID and password of our choosing. <code>dnsmasq</code> handles DHCP and IP assignment.</p>
<p>This gives us a clean interface to monitor with tools like Wireshark, in this case <code>wlan0</code>.</p>
<p>For anyone being extra cautious, the Pi can be placed inside a dedicated VLAN, isolated from the rest of the network.</p>
<h4 id="tools-used-in-the-controlled-network">Tools used in the controlled network</h4>
<ul>
<li>
<p><strong>tcpdump</strong><br>
CLI packet capture for raw traffic inspection.</p>
</li>
<li>
<p><strong>mitmproxy</strong><br>
Active interception and inspection of higher-level traffic.</p>
</li>
<li>
<p><strong>Custom tooling</strong><br>
Simple scripts to spoof or sinkhole unchecked HTTP services.</p>
</li>
</ul>
<h3 id="observations">Observations</h3>
<p>Before analysing anything meaningful, we verify the basics:</p>
<ul>
<li>The access point is working</li>
<li>Devices receive IP addresses</li>
<li>The camera has outbound connectivity</li>
<li>Camera functionality remains intact</li>
</ul>
<p>Once confirmed, the workflow is simple:</p>
<ol>
<li>Start the access point</li>
<li>Start tcpdump</li>
<li>Start mitmproxy</li>
<li>Power on the camera</li>
</ol>
<p>mitmproxy immediately surfaced interesting behaviour:</p>
<p><img loading="lazy" src="/images/MITM.png"><br>
<img loading="lazy" src="/images/MITM2.png"><br>
<img loading="lazy" src="/images/MITM3.png"><br>
<img loading="lazy" src="/images/First_POST.png"></p>
<p>On boot, the camera contacts multiple external hosts and establishes persistent connections very early in the startup process.</p>
<p><img loading="lazy" src="/images/Pasted%20image%2020251228201800.png"></p>
<h2 id="interesting-protocols-observed-on-the-ipc-camera">Interesting Protocols Observed on the IPC Camera</h2>
<p>During analysis, a few security related protocols stood out. None of these were theoretical. All were observed through traffic capture, MITM.</p>
<h3 id="1-proprietary-tcp-control-channel-port-34567">1. Proprietary TCP Control Channel (Port 34567)</h3>
<p>This port appeared consistently.</p>
<ul>
<li>Proprietary binary protocol on TCP port 34567</li>
<li>Used for registration, keep-alives, and remote control</li>
<li>Common in low-cost Chinese IPC devices</li>
<li>Historically associated with weak or static authentication</li>
</ul>
<p>This effectively functions as the main control plane.</p>
<h3 id="2-plain-http-no-tls">2. Plain HTTP (No TLS)</h3>
<p>Although the device generated HTTP traffic, it did not expose a traditional local web interface.</p>
<p>Observed behaviour included:</p>
<ul>
<li>Backend-style HTTP requests</li>
<li>Configuration and firmware-related endpoints</li>
<li>Cloud communication over plaintext HTTP</li>
</ul>
<p>Important clarifications:</p>
<ul>
<li>No browser-accessible admin interface</li>
<li>No local login or management panel</li>
<li>Endpoints were machine-to-machine, not user-facing</li>
</ul>
<p>Key observations:</p>
<ul>
<li>No HTTPS by default</li>
<li>No certificate validation or pinning</li>
<li>Highly verbose during boot</li>
</ul>
<p>This made the device susceptible to MITM.</p>
<h3 id="3-cloud-update-and-configuration-endpoints">3. Cloud Update and Configuration Endpoints</h3>
<p>The device attempted to reach multiple cloud endpoints:</p>
<ul>
<li>Hardcoded IP addresses and domains</li>
<li>Cloud-hosted infrastructure, including large public providers</li>
<li>Domains such as <code>*.secu100.net</code></li>
</ul>
<p>Some endpoints were referenced directly by IP, indicating a weak update trust model.</p>
<h3 id="4-persistent-cloud-tunnel-behaviour">4. Persistent Cloud Tunnel Behaviour</h3>
<p>Rather than a single protocol, this was a consistent pattern:</p>
<ul>
<li>Device boots</li>
<li>Immediately phones home</li>
<li>Registers with cloud services</li>
<li>Maintains long-lived TCP sessions</li>
</ul>
<p>This enables NAT traversal but creates strong cloud dependency and reduced local-only usability.</p>
<p>Collectively, the device relies on:</p>
<ul>
<li>Proprietary TCP control traffic</li>
<li>Unencrypted HTTP for updates and configuration</li>
<li>Persistent outbound connections</li>
<li>Cloud-first architecture with weak trust boundaries</li>
</ul>
<h2 id="4-physical-teardown-opening-the-camera">4. Physical Teardown, Opening the Camera</h2>
<p>I usually open devices to see what makes them tick. This camera is reasonably well built for mass production, but it does not resist a standard Phillips screwdriver.</p>
<p><img loading="lazy" src="/images/Pasted%20image%2020251228205151.png"></p>
<p>This is not a full iFixit teardown, just a high-level inspection.</p>
<p><img loading="lazy" src="/images/IMG_6347.jpeg"></p>
<p>Notable components include:</p>
<ul>
<li>Main board</li>
<li>LED and IR module</li>
<li>Motors</li>
<li>Enclosure components</li>
<li>Antennas</li>
</ul>
<p>A closer look at the PCB shows a Goke GK7210 SoC, a common vision processing chip used in low-cost cameras.</p>
<p><img loading="lazy" src="/images/Pasted%20image%2020251228204927.png"></p>
<p>The flash ROM chip acts as the device’s primary storage.
<img loading="lazy" src="/images/Pasted%20image%2020260104211252.png">
The Wi-Fi module is external to the SoC. Interestingly, only one antenna cable was actually connected. The second was present but unused, likely for marketing reasons.</p>
<p><img loading="lazy" src="/images/Pasted%20image%2020251228205530.png"></p>
<h2 id="5-debug-interfaces-uart">5. Debug Interfaces, UART</h2>
<p>Test pads were present on the board, outlined below.</p>
<p><img loading="lazy" src="/images/Pasted%20image%2020251228213153.png"></p>
<p>These UART pads are commonly used during development and manufacturing and almost always remain on final products.</p>
<p>UART output was enabled and provided full boot logs, but all inbound input was ignored.</p>
<p>This strongly suggests a vendor-modified U-Boot configuration where interactive access is intentionally disabled, rather than a wiring or baud-rate issue.</p>
<h2 id="6-firmware-extraction-and-analysis">6. Firmware Extraction and Analysis</h2>
<p>With UART offering limited access, firmware extraction was required.</p>
<p>The flash chip was removed and dumped using a flash programmer. Multiple dumps were taken and hashed to ensure consistency, with a golden copy preserved.</p>
<p><img loading="lazy" src="/images/Dump_FW.png"></p>
<p>Using binwalk, partitions and offsets were identified.</p>
<p><img loading="lazy" src="/images/binwalk.png"></p>
<p>One notable finding was the presence of a root password hash in <code>/etc/passwd</code>, which cracked quickly using a common wordlist.</p>
<h2 id="7-cloud-dependency-and-update-mechanism">7. Cloud Dependency and Update Mechanism</h2>
<p>The firmware and observed network behaviour make it clear that this device is heavily cloud-dependent.</p>
<p>On boot, the camera attempts to contact multiple vendor-controlled endpoints for registration, configuration, and update checks. Several of these endpoints are hardcoded into the primary application binary, rather than being dynamically resolved or user-configurable.</p>
<p>Firmware updates appear to follow a module-based OTA model. The device requests a list of available modules, then selectively downloads update payloads from cloud infrastructure. While this approach allows incremental updates, it also centralises trust entirely in external services.</p>
<p>There is no user-visible indication of signature verification, update provenance, or rollback capability. From an owner’s perspective, updates are opaque and automatic.</p>
<p>This raises several long-term concerns:</p>
<ul>
<li>If update servers go offline, functionality may degrade</li>
<li>If domains expire or infrastructure is shut down, updates fail silently</li>
<li>If the vendor disappears, cloud-dependent features may stop working entirely</li>
</ul>
<p>Local-only usage appears limited. While RTSP streaming is present, configuration, management, and updates are clearly designed around continuous cloud connectivity.</p>
<p>This is less about immediate exploitation and more about <strong>lifecycle and supply-chain risk</strong>.</p>
<h2 id="8-security-observations-not-sensational">8. Security Observations (Not Sensational)</h2>
<h3 id="objectively-weak-areas">Objectively Weak Areas</h3>
<ul>
<li>Unauthenticated network services exposed during normal operation</li>
<li>Plaintext HTTP traffic for configuration and update-related requests</li>
<li>Firmware built without obvious hardening, with debug strings present</li>
</ul>
<h3 id="bad-design-vs-exploitable-issues">Bad Design vs Exploitable Issues</h3>
<p>Poor design choices include implicit trust in the local network, cloud-first assumptions, and opaque update mechanisms.</p>
<p>Potentially exploitable surfaces exist, but no active exploitation was attempted or demonstrated.</p>
<h3 id="attack-surface-summary">Attack Surface Summary</h3>
<ul>
<li>Network: multiple open TCP ports, proprietary protocols, persistent outbound connections</li>
<li>Physical: exposed UART pads with output enabled</li>
<li>Firmware: monolithic image with cloud endpoint references</li>
</ul>
<h3 id="what-was-not-tested">What Was Not Tested</h3>
<p>No exploit development, fuzzing, credential attacks, firmware modification, or cloud impersonation was performed.</p>
<p>All observations were made through passive analysis, controlled network interception, and non-invasive hardware inspection.</p>
<h2 id="9-practical-takeaways">9. Practical Takeaways</h2>
<p>For home users, network isolation, firewalling, and local-only usage where possible significantly reduce exposure.</p>
<p>For researchers, cheap IoT devices remain excellent learning platforms, exposing real-world constraints and design trade-offs.</p>
<p>For vendors, basic improvements around authentication, TLS usage, and transparency would meaningfully raise the security baseline.</p>
<h2 id="10-closing-why-this-matters">10. Closing, Why This Matters</h2>
<p>Cheap IP cameras are not edge cases. They are everywhere, deployed on private networks and rarely revisited after installation.</p>
<p>Most users will never inspect firmware, observe network behaviour, or question update mechanisms. That gap between deployment and understanding is where hardware security still matters.</p>
<p>This research did not uncover a dramatic exploit, and that is the point. Security issues are often rooted in assumptions, not elite attackers.</p>
<p>Hardware hacking remains one of the few disciplines that cuts across firmware, silicon, network, and reality.</p>
<h3 id="whats-next">What’s Next</h3>
<p>This analysis focused on observability rather than exploitation.</p>
<p>Follow-up work will look at:</p>
<ul>
<li>RTSP behaviour and access control</li>
<li>Custom protocol reverse engineering</li>
<li>Firmware update mechanics in more detail</li>
<li>Cloud dependency and failure modes</li>
</ul>
<p>That will form the basis of Part 2.</p>
<p>Not to sensationalise, but to understand.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
