11-wifi-fpv-drone-101-target-to-attack

Drone 101: From Target to Threat Model to Attack

Who this is for

People who are not cyber specialists but want to learn how a security person actually looks at a physical product. We use one common archetype — the budget Wi-Fi FPV toy drone (the ~$30 camera quadcopters sold under dozens of brand names) — as a worked example and walk the full arc: understand the target → model the threats → run authorized attacks.

BLUF

You cannot attack — or defend — what you do not understand. This class teaches a repeatable habit: first describe the system honestly, then reason about where it can fail, and only then test. The budget Wi-Fi FPV drone is a great teacher because it is cheap, legal to own, and built from ordinary parts with a well-understood class of weaknesses. Everything here is vendor-neutral: it describes the pattern these devices share, not one product. It also assumes you are testing a drone you own, in a space you control.

Rules of the room

  • Do this only on your own drone, on your own phone, in an RF-quiet space you control (a room, a garage — not an apartment block sharing 2.4 GHz with neighbors).
  • Never touch a drone, camera, network, or radio link you do not own or have written permission to test.
  • Nothing here is a manual for jamming aircraft, spoofing GPS, or interfering with anyone else's device. Those are separate, often illegal acts and are out of scope.
  • See the radio and frequency guide for why "energy on a waterfall" is not authorization.


The three-act arc

flowchart LR
  A[Act 1: Understand the target] --> B[Act 2: Threat model]
  B --> C[Act 3: Authorized attack]
  C -->|findings feed back| B
  A -.->|recon: teardown, docs, radio| A

Security is a loop, not a line. Each attack you run teaches you something new about the target, which improves the model, which points at the next test.


Act 1 — Understand the target

The goal here is not to attack anything. It is to answer one question: what is this thing actually made of, and how does it talk? A security person calls this reconnaissance and attack-surface mapping. A non-cyber person can call it "reading the machine."

1.1 What this class of drone actually is

A budget Wi-Fi FPV toy drone is a ~$30 quadcopter with a Wi-Fi camera ("FPV" = first-person view). The same handful of ordinary parts shows up across brands. A public teardown of any one of them (see Sources) reveals the shared recipe:

Subsystem Typical part class Plain-English job
Flight controller Low-cost 32-bit ARM Cortex-M0 MCU The brain. Keeps it level, runs the motors.
Control radio 2.4 GHz command transceiver (proprietary "enhanced burst" protocol) Hears the handheld remote.
Gyroscope MEMS 3-axis gyro Senses tilt/spin.
Barometer MEMS pressure sensor Senses altitude via air pressure ("altitude hold").
Motors 4× coreless DC motors Spin the props.
Motor switches 4× N-channel MOSFETs Turn motor power on/off fast (PWM).
Battery Single-cell 3.7 V Li-ion (~1000–1800 mAh) Roughly 8–10 min of flight.
Camera / FPV Wi-Fi camera-on-module (~720p) Streams video over its own Wi-Fi.
Camera app Vendor "FPV" phone app Shows the video, sends some commands.
The two radios are the whole story

These drones have two independent wireless links, and telling them apart is the single most important recon insight:

  1. Control link — the physical handheld remote → drone, on a proprietary 2.4 GHz protocol. Short, simple command packets.
  2. Video/FPV link — the drone's camera creates its own Wi-Fi access point (an SSID often shaped like <something>_XXXXXX). Your phone joins it, and the vendor FPV app pulls video and sends some flight commands over it.

These are different technologies with very different weaknesses. Most of the interesting, legal-to-explore-on-your-own-device surface lives in the Wi-Fi camera, because it is a tiny web/IP device you can join like any network.

1.2 Draw the system (data-flow diagram)

Before any security work, draw how data moves. This is a DFD (data-flow diagram) — the same picture threat modelers use.

flowchart LR
  subgraph You[Things you own]
    Remote[Handheld remote]
    Phone[Your phone + FPV app]
  end
  subgraph Drone[Toy FPV drone]
    RF[2.4GHz control radio]
    FC[Flight controller MCU]
    Cam[Wi-Fi camera + AP]
    Motors[Motors and sensors]
  end
  Remote -->|2.4GHz command packets| RF
  RF --> FC
  FC --> Motors
  Phone <-->|joins open Wi-Fi AP| Cam
  Cam -->|video stream| Phone
  Phone -->|some commands| Cam
  Cam -.->|GPIO / shared bus| FC

1.3 Recon you can do at home (no attacking yet)

Technique What you do What you learn
Physical teardown / OSINT Read a teardown of a drone in this class (see Sources); open the shell if you're comfortable. The parts list above — the "bill of materials."
Wi-Fi survey On your phone, look at available networks near the powered-on drone. The camera's SSID name and pattern, whether it's open (no password), and its signal.
App inspection Install the vendor FPV app; watch how it connects. That your phone must join the drone's network to fly via app — a big clue.
Network scan of the AP Once joined, note the drone's IP and any open ports/services. The camera's IP address, video stream endpoint, and command port.
Documentation Manufacturer page, app store listing, FCC ID lookup. Stated bands, region, and whether anything is encrypted (usually: no).
The recon output is a one-page inventory

By the end of Act 1 you should be able to fill in: SSID + is it open? · drone IP · video endpoint · command channel · control-link protocol · what's encrypted (spoiler: almost nothing). That inventory is your attack surface.


Act 2 — Threat modeling

Now we reason about where it can go wrong — before touching a single tool. Threat modeling is just four questions, made famous as the Threat Modeling Manifesto:

  1. What are we working on? → the DFD from Act 1.
  2. What can go wrong? → this section.
  3. What are we going to do about it? → mitigations (for the defender).
  4. Did we do a good job? → validate with the attacks in Act 3.

2.1 Trust boundaries: where control changes hands

A trust boundary is any line where data crosses from something you trust into something you trust less (or vice-versa). Attacks cluster on these lines.

flowchart LR
  Attacker([Anyone within Wi-Fi range]):::bad
  subgraph Trusted[Owner's world]
    Phone[Your phone]
  end
  subgraph Semi[Drone camera network - OPEN]
    Cam[Camera AP + video + command port]
  end
  Attacker -.->|can also join the open AP| Cam
  Phone -->|joins| Cam
  classDef bad fill:#7a1f1f,color:#fff;

The killer observation: on this class of drone the camera's Wi-Fi is typically open and unauthenticated. The trust boundary you think exists ("only my phone talks to my drone") does not actually exist — anyone in radio range is on the same footing as the owner.

2.2 STRIDE on a toy FPV drone

STRIDE is a checklist of six threat types. Walk each one against the DFD. This is the heart of the class — do this slowly.

STRIDE threat Plain meaning On a toy FPV drone Realistic?
Spoofing Pretending to be someone/something The open camera AP does no authentication — any phone can become "the controller." A fake AP with the same SSID could lure the owner's phone. High
Tampering Changing data in transit or at rest Video and app commands are unencrypted over Wi-Fi; in principle they can be modified. Firmware is usually locked, so on-device tampering is hard. Medium
Repudiation "It wasn't me" — no logs These drones have no telemetry or logging. Nothing records who did what. High (by absence)
Information disclosure Leaking data The video stream is typically open — anyone joined to the AP can pull the camera feed. High
Denial of service Making it stop working Wi-Fi deauth frames can knock the phone off the camera AP; RF congestion degrades the control link → failsafe/land. High
Elevation of privilege Gaining rights you shouldn't have The app command port is unauthenticated, so "any client" already has "owner" rights. There's no higher privilege to steal — the flaw is that there's no privilege separation at all. High (by design absence)

2.3 Rank the risks

Not all threats matter equally. Rank by likelihood × impact, keeping in mind this is a toy (impact is low — privacy and nuisance, not life-safety, as long as you fly responsibly).

Rank Threat Why it's top
1 Open video disclosure Trivial, always-on, pure privacy loss.
2 Unauthenticated command / spoofed controller Anyone on the AP can send app commands.
3 Wi-Fi deauth DoS Easy to cause the FPV link to drop.
4 Evil-twin AP Lure the owner's phone to an attacker AP.
5 Control-link disruption Noisy 2.4 GHz environment degrades the remote.
Defender's view (question 3 & 4)

If you were the manufacturer, the fixes are obvious from the model: put a password (WPA2) on the camera AP, authenticate the command channel, and encrypt the video. The reason we attack in Act 3 is to prove these gaps are real — that's question 4, "did we do a good job."


Act 3 — The authorized attack

Now — and only now — we test. Every step targets your own drone on your own phone in a space you control. The point is to confirm the model, feel how easy each gap is, and understand it well enough to explain or defend against it.

Scope, one more time

  • Own device only. Own network only. Contained space only.
  • Do not deauth, sniff, or connect to networks that aren't yours — that's illegal in most places (e.g., US CFAA / Wiretap Act) even "just to try."
  • We deliberately do not cover jamming the 2.4 GHz control link or anything that could make an aircraft uncontrollable near people. Toy or not, that's reckless.

3.1 Attack path overview

flowchart TD
  Start[Power on your drone] --> Scan[Step 1: Find and join the open camera AP]
  Scan --> Stream[Step 2: Pull the open video stream]
  Scan --> Enum[Step 3: Enumerate the command port]
  Enum --> Cmd[Step 4: Send an app command as an unauthorized client]
  Scan --> Deauth[Step 5: Deauth-to-drop test on your own phone]
  Stream --> Report[Step 6: Write it up - map results back to STRIDE]
  Cmd --> Report
  Deauth --> Report

3.2 The attacks, mapped to the model

# Attack Confirms (STRIDE) Beginner-friendly method
1 Join the open AP Trust boundary is fake Just connect your laptop to the drone's SSID — no password needed. That connection is the finding.
2 Capture the video stream Information disclosure Point VLC / a small script at the camera's stream endpoint (found in Act 1). You'll see the feed with no login.
3 Port/service scan Attack-surface confirmation nmap the drone's IP. Note the open video and command ports.
4 Replay/send a command Spoofing + EoP With the vendor FPV app running once, observe the command packets, then re-send one from your own second client. It's accepted because nothing checks who you are.
5 Deauth-to-drop (own phone) Denial of service Send deauth frames at your own phone's MAC to knock it off the camera AP; watch the FPV feed die while the drone keeps flying on the remote. Demonstrates the FPV link's fragility.
6 Write-up Validates the whole model For each result, tick the STRIDE box it proves and note how a vendor would fix it.
Why so little "hacking" and so much reading a network

That's the lesson. These drones are insecure not because of some clever exploit, but because they have no authentication and no encryption on the camera side. Once you understand the target (Act 1) and model it (Act 2), the "attack" is mostly just using the device the way it was built, from a seat it didn't expect. That is true of an enormous amount of real-world IoT security.

3.3 From toy to real targets

Everything you practiced transfers upward. A professional does the exact same three acts on a $20,000 industrial drone, a smart lock, or a car:

flowchart LR
  Toy[Toy: open Wi-Fi cam] --> Pattern[Same method]
  Pattern --> IoT[Any IoT camera]
  Pattern --> Enterprise[Enterprise drone links]
  Pattern --> Car[Connected vehicle]
  classDef good fill:#1f4d2e,color:#fff;
  class Pattern good;

The parts get fancier and (hopefully) encrypted, but the questions never change: What is it made of? Where are the trust boundaries? What does STRIDE say? Can I prove it?


Recap: the whole class in one table

Act Question Tool Toy-drone answer
1. Understand What is it & how does it talk? Teardown, Wi-Fi survey, scan Two radios; open Wi-Fi camera; almost nothing encrypted.
2. Threat model What can go wrong? DFD, trust boundaries, STRIDE Open video, unauth commands, easy DoS.
3. Attack Can I prove it? Join AP, capture stream, scan, replay, deauth (own gear) Yes — the model holds; the "attack" is mostly just connecting.

Where to go next

Sources

The one habit to keep

Describe honestly, model before you touch, and only test what you own. Do that and you can look at any product — drone, lock, or car — like a security engineer.