Skip to content

DRONE Integration in Tornado

DRONE is Binalyze’s automated compromise assessment engine, originally part of AIR DRONE. It provides a decision support system that analyzes collected evidence using a library of up-to-date analyzers maintained by the Binalyze threat hunting team.

In Tornado, DRONE is embedded as a standalone binary that runs locally on the investigator’s machine. After cloud evidence is collected from platforms such as Microsoft 365, Google Workspace, Zoom, or HubSpot, DRONE analyzes the collected artifacts and produces findings classified by severity: High, Medium, Low, or Matched.

This tight integration enables investigators to go from raw cloud evidence to actionable compromise assessment findings without leaving the Tornado application.


DRONE is shipped as a platform-specific binary embedded directly into the Tornado application at build time. At runtime, Tornado extracts the binary, invokes it as a subprocess against the collected evidence, and packages the analysis results back into the case archive.

flowchart TB
subgraph Tornado["Tornado Application"]
UI["Frontend UI"]
API["API Layer"]
DM["DRONE Manager"]
EB["Embedded DRONE Binary"]
end
subgraph Evidence["Evidence"]
CasePPC["Case.ppc (ZIP)"]
CaseDB["Case.db (SQLite)"]
DroneDB["Drone.db (SQLite)"]
end
subgraph External["External Services"]
AirPlatform["AIR Platform"]
IHub["Investigation Hub"]
end
UI -->|"Select analyzers & keywords"| API
API -->|"Start analysis task"| DM
DM -->|"Extract & execute"| EB
EB -->|"Read"| CasePPC
CasePPC --- CaseDB
EB -->|"Write"| DroneDB
DM -->|"Add Drone.db to"| CasePPC
AirPlatform -->|"Sync MITRE rules"| DM
CasePPC -->|"Upload"| IHub

The DRONE analysis workflow in Tornado follows these steps:

sequenceDiagram
participant User
participant TornadoUI as Tornado UI
participant TornadoAPI as Tornado API
participant DroneManager as DRONE Manager
participant DroneBin as DRONE Binary
User->>TornadoUI: Collect cloud evidence
TornadoUI->>TornadoAPI: Collection task
TornadoAPI-->>TornadoUI: Case.ppc created
User->>TornadoUI: Select analyzers, keywords, MITRE
TornadoUI->>TornadoAPI: POST /api/drone/task/assign
TornadoAPI->>DroneManager: Create analysis task
DroneManager->>DroneBin: Extract binary from embedded assets
DroneManager->>DroneBin: Execute with args (analyzers, keywords, Case.ppc path)
loop Progress Tracking
DroneBin-->>DroneManager: Write Drone.Progress.json
DroneManager-->>TornadoAPI: Report progress
TornadoAPI-->>TornadoUI: Update progress bar
end
DroneBin-->>DroneManager: Write Drone.db (results)
DroneManager->>DroneManager: Add Drone.db into Case.ppc
DroneManager-->>TornadoAPI: Analysis complete
TornadoAPI-->>TornadoUI: Show completion status
  1. Evidence Collection — The investigator collects cloud evidence (emails, audit logs, drive files, etc.) from a supported platform. The collected data is stored in Case.db (SQLite) and packaged into Case.ppc (a ZIP archive).

  2. Analyzer Selection — The investigator selects which analyzers to run. Tornado queries the embedded DRONE binary (drone --get-defaults) to discover available analyzers for the target platform. The investigator can also enable the MITRE ATT&CK analyzer and specify keyword search terms.

  3. Analysis Execution — Tornado extracts the embedded DRONE binary to a temporary location, then invokes it as a subprocess with command-line arguments specifying the analyzers, keywords, MITRE rules path, CPU limit, and the path to Case.ppc.

  4. Progress Tracking — During analysis, DRONE writes progress updates to Drone.Progress.json. Tornado reads this file periodically and reports progress back to the UI in real time.

  5. Results Packaging — Upon completion, DRONE writes its findings to Drone.db (SQLite). Tornado then unzips the existing Case.ppc, adds Drone.db alongside Case.db, and re-creates the archive. The standalone Drone.db file is removed.

  6. Viewing Results — The enriched Case.ppc (now containing both Case.db and Drone.db) can be uploaded to the Investigation Hub for detailed analysis and reporting.


DRONE analyzers in Tornado are organized by cloud platform. Each platform has its own set of specialized analyzers:

PlatformInternal IdentifierEvidence Types
Microsoft 365microsoft-365Exchange emails, Unified Audit Logs, OneDrive files, Teams messages
Google Workspacegws-parseletGmail, Google Drive, Admin audit logs
ZoomzoomMeeting data, recordings, user activity
HubSpothubspotCRM data, activity logs

When the investigator opens the analyzer selection step, Tornado automatically queries the DRONE binary for analyzers that support the current platform and presents only the relevant options.


DRONE includes two core analyzer components:

Platform-specific analyzers that query artifact tables in the collected evidence database and run data through a series of check functions. These analyzers score or flag suspicious indicators and report findings with severity classifications.

Available analyzers are dynamically loaded from the embedded DRONE binary at runtime. The binary reports its full analyzer catalog, and Tornado filters by the target platform. The Dynamo analyzer (dya) is excluded from the general list because it is handled separately as part of the MITRE ATT&CK integration.

Dynamo is a rule-based analysis engine for DFIR investigations. In the context of Tornado’s cloud forensics, Dynamo executes SQL-based rules against collected forensic databases — primarily the unified_audit_logs table from Microsoft 365 Unified Audit Log data.

Each Dynamo rule:

  • Targets a specific evidence section (e.g., unified_audit_logs)
  • Executes complex SQL queries with JSON extraction against audit data
  • Produces scored findings mapped to MITRE ATT&CK tactics and techniques
  • Classifies results with severity-based detection reasons
RuleDescriptionMITRE Mapping
Suspicious Mail Forwarding Rules DetectorDetects mail forwarding rules that may indicate mailbox compromise, including external forwarding and rules created via suspicious toolsTA0009 / T1114.003
Privilege Escalation Activity DetectorDetects privilege escalation activities such as self-promotion to high-privilege roles and suspicious role assignmentsTA0004 / T1078.004
Unusual Authentication DetectorIdentifies unusual authentication patterns including automation tools, legacy auth protocols, and anomalous IP activity-
Suspicious Admin Actions DetectorFlags suspicious Exchange admin actions that may indicate unauthorized configuration changes-
Suspicious HTTP Clients in O365 User AgentDetects requests from uncommon or suspicious HTTP clients in Office 365 user agent strings-

When connected to an AIR instance, Tornado can sync MITRE ATT&CK rules from the AIR platform. These rules are stored locally at Tornado.Tools/utils/mitre.zip and passed to the DRONE binary at analysis time. This ensures investigators always have access to the latest threat detection rules maintained by the Binalyze threat hunting team.


DRONE classifies all findings into one of four severity levels:

SeverityDescription
HighConfirmed malicious behavior or artifacts indicating critical compromise
MediumIndicators of suspicious or potentially unwanted behavior
LowAnomalies or uncommon patterns that may warrant further investigation
MatchedItems flagged through keyword hits or custom rule matches

The minimum score threshold for reporting is configurable (default: 50, range: 10—90). Findings below this threshold are not included in the results.


The primary output of a DRONE analysis is Drone.db, a SQLite database containing all findings from the selected analyzers. This database is automatically added to the Case.ppc archive alongside the original Case.db.

Case.ppc (ZIP)
├── Case.db # Collected evidence (emails, audit logs, drive items, etc.)
└── Drone.db # DRONE analysis findings

During analysis, DRONE writes real-time progress updates to Drone.Progress.json as JSON lines. Each entry includes:

  • MatchCount — The number of findings discovered so far
  • Progress — The completion percentage (0—100)

Tornado reads this file periodically and updates the UI with the current progress.


The DRONE binary is embedded for all platforms that Tornado supports:

PlatformArchitectureEmbedded Binary
Windowsamd64bin/drone_windows_amd64.zip
macOSamd64bin/drone_darwin_amd64.zip
macOSarm64 (Apple Silicon)bin/drone_darwin_arm64.zip
Linuxamd64bin/drone_linux_amd64.zip
Linuxarm64bin/drone_linux_arm64.zip

The correct binary is selected at compile time using Go build tags. At runtime, Tornado extracts the binary to a temporary location (Tornado.Tools/ directory), executes it, and removes it after the analysis completes.


ParameterDefaultDescription
CPU Limit60%Maximum CPU usage allowed for the DRONE process
Minimum Score50Minimum score threshold for reporting findings (range: 10—90)
DRONE VersionTracked in dependency.jsonCurrently v4.1.2

Tornado exposes the following REST API endpoints for DRONE integration:

MethodEndpointDescription
GET/api/drone/analyzers/:parseletNameList available analyzers for a given platform
POST/api/drone/task/assignStart a DRONE analysis task
POST/api/drone/task/statusQuery the status of a running analysis task
POST/api/drone/task/cancelCancel a running analysis task
{
"Tasks": [{
"Type": "drone",
"Data": {
"collection_task_id": "<task-id>",
"analyzers": ["o365-sue", "o365-sdeea"],
"mitre_analyzer_selected": true,
"keywords": ["phishing", "forwarding"]
}
}]
}
{
"analysis_task_id": "<assignment-id>",
"analysis_status": "completed"
}