Martin's Blog

Appendix I: Source Commits, Manuals, and References

This appendix is the book’s consolidated provenance index. It identifies the immutable source revisions, manual files, research artifacts, and external works used across the chapters. It does not replace the local citation beside a claim: a commit identifies a tree, while a file and line range identify the evidence inside it.

Paths beginning with data/ refer to read-only leak material in the defensive research workspace. Paths beginning with docker-lab/ refer to the isolated reconstruction or its documentation. Paths under research/hackingteam-rcs/ are book research artifacts. No repository or manual hash establishes that the material was deployed by a particular customer.

Frozen repository revisions

Repository Examined commit Commit timestamp Principal use in the book
rcs-db 6cff59d28634d718cac9fdd17cb629fd59a3cf3f 2014-05-12 10:01:21 +02:00 REST/WSS backend, MongoDB models, worker, licensing, installers, backup, tasks, collectors/connectors
rcs-common 38290d4eab2b2c295bea021429848a3666647827 2015-03-31 11:37:49 +02:00 Shared crypto, evidence decoding, heartbeat and status contracts; declares 9.6.0
rcs-collector 42cf61af9ec3e7b886e87eac20e762c3ce51c78c 2015-03-31 11:36:16 +02:00 Collector listener, decoy behavior, public-file path, database client
rcs-console a90041fcd32bf1a82276ac20c2cd5ecb7d108db0 2015-03-31 11:49:33 +02:00 Original Adobe AIR views and application lifecycle
rcs-console-library 97531201600a8a223392e955a35b2b2605c1c1d4 2015-03-31 11:50:01 +02:00 Console managers, models, REST service layer and push handling
vector-exploit 2cf574d3bf2ea44f67433e32ccc9906ded6218e0 2014-12-12 10:59:55 +01:00 Static exploit manifests, changelog and full Git history
rcs-anonymizer 0c4189b1e5d7e23ad0bf85d0f184d9d8e46decbe 2015-04-03 09:00:55 +02:00 Static next-hop proxy and forwarded-header behavior; commit subject identifies 9.6.0

The first six revisions are the primary snapshots frozen before drafting. The anonymizer revision was added to this reference index when Chapter 9’s cited supporting tree was consolidated. The local connector implementation cited in Chapters 9 and 10 is not a separate repository in this archive; it lives under rcs-db/lib/rcs-connector/ and is therefore covered by the rcs-db commit.

Git timestamps are repository metadata, not release dates. In particular, the database identifies itself as 9.2.3 while the common library and console-side trees identify 9.6.0. The source/version appendix records the direct version evidence and fidelity consequences.

Endpoint capability-audit revisions

The endpoint audit adds the following immutable repository states. Full tree hashes, classification rules, and file/line anchors are recorded in research/hackingteam-rcs/IMPLANT-CAPABILITY-AUDIT.md.

Repository Examined commit Timestamp Role
core-android 888e51b4ef778ee7f1ef63e22f622ddffb358b39 2014-12-16T17:12:06+01:00 Android core
core-android-audiocapture 77b2c1bb09406fd1cfa69e8e1e9276167a664daa 2015-05-13T10:34:02+02:00 Android audio adjunct
core-android-native 731733239fa91b3d5b502f0fda51d10c9ae9d974 2015-06-26T18:13:10+02:00 Android native adjuncts
core-blackberry 977aca189004365f0002766fd318bfc6bc2b4d17 2014-11-03T10:38:29+01:00 BlackBerry core
core-ios 19868fcfce187b5d5282ba231854064ad9054a55 2015-04-09T15:30:56+02:00 iOS core
core-linux 9252cba42283e71d7858292a400f6c94043ee8ff 2015-02-11T14:37:52+01:00 Linux core
core-macos f412a71d51563db773c2f1b6bb8c5ef3b69cf201 2015-04-09T15:38:54+02:00 macOS core
core-symbian eb5d3c477ee9b94751d83ed5c40d57a3f667f532 2011-03-09T16:02:14+01:00 Symbian core
core-win32 8eb1326959fcb5c727513b59b86386dae7463683 2015-01-21T16:50:35+01:00 Windows desktop core
core-win64 a263105b32bc3416107c2950adc0e49f95186684 2014-01-16T15:22:14+01:00 Windows companion layer
core-winmobile e5baa43ce352e8aa4de4f1604a95e691e2e85aaa 2012-08-09T11:46:24+02:00 Windows Mobile core
core-winphone 361510342e60778a003c535f5df48d27348661e1 2015-06-25T14:14:06+02:00 Windows Phone core
scout-win 2368421c414b833e25b7f261a2a583245bad6102 2015-04-02T11:36:12+02:00 Narrow Windows stage
soldier-win b0f86659d7f4a90206bd18b1053896fbd8709cd8 2015-03-19T16:10:06+01:00 Intermediate Windows stage

These sources were read only. None was built, run, repaired, or improved, and their different timestamps do not establish a coherent shipped release.

Historical common-library compatibility reference

The current-tree table is supplemented by one historical revision and its immediate transition:

Repository state Commit Date Relevance
Compatible 9.2.3 candidate 34da36c873873a50a5ef053aa8f055207c1f1f2f 2014-04-28 Declares 9.2.3 and contains the heartbeat hooks and SystemStatus accessors expected by the selected database
Heartbeat refactor 261e08dddf2f581e96a8798e041c182551dfd536 2014-05-13 Still declares 9.2.3 while removing or reshaping the legacy interface
Visible 9.3.0 bump 9a770f8455d9c250b62ae1a0034c1d45cdc3fbbc 2014-05-13 Marks the subsequent version transition

This history proves that the expected interface existed in a contemporary 9.2.3 common-library state. It does not identify the database’s exact build input: rcs-db/Gemfile.lock records a path dependency and version, not a common-library commit. The lab shims therefore restore historically attested interfaces but remain adaptations onto the selected 9.6 implementation.

Canonical source roots

Short name used in citations Workspace path
Original repositories data/HackingTeam/unpacked/hackedteam/
Original rcs-db data/HackingTeam/unpacked/hackedteam/rcs-db/
Original manuals data/HackingTeam - manuals/
Patched backend copies docker-lab/rcs-db/ and docker-lab/rcs-common/
Web console reconstruction docker-lab/console-web/
Lab operations and IOCs docker-lab/README.md and docker-lab/IOCs.md
Book research ../blog/research/hackingteam-rcs/ from the defensive workspace

When a chapter cites a bare path such as lib/rcs-db/rest/auth.rb, its Sources and evidence section supplies the repository and commit. A citation to a lab copy must say LAB or name docker-lab; otherwise the cited implementation is the read-only original.

Operator manual corpus

The four core RCS 9 manuals are image-only PDFs. Page numbers in the book use the PDF page (pdf-p.N) unless the citation explicitly says “printed page.” The page footer and PDF page can differ because of covers and front matter.

Manual file Role in the book PDF pages SHA-256
rcs-9-admin-final.pdf Users, groups, audit, monitoring and licence administration 61 5b24dfd9817ae6478536118e5bd25a8bd4402d4a3139d1a472a31e7ea012b503
rcs-9-analyst-final.pdf Login shell, investigations, evidence, intelligence, dashboards and alerts 109 e0bd5de11d076286edc65b53af762d97beb199851171d1c39aa1f10c68670e07
rcs-9-sysadmin-final.pdf Installation, architecture, frontends, shards, backup and system management 129 1ab4de6daf91d4159e55ef8b74f78cc3fdd7bdb5755733b4d3e351bcf12b0333
rcs-9-technician-final.pdf Factories, configuration, build UI, Network Injector and technical workflows 180 c5d6036f2af41437416e59eba00dcfb03788b9eea7be0133a927df850fd33df6

These total 479 PDF pages. The OCR cache contains 479 per-page text files plus four combined text files. Identical copies of the four PDFs also exist under data/HackingTeam/; matching SHA-256 values confirm that either location contains the same bytes. The book treats data/HackingTeam - manuals/ as the canonical citation root.

The supporting manual directory also contains:

File Pages SHA-256 Use
invisibility-report-9-0-final.pdf 1 a5c9f692fecc4f9b8391f14e059f236e4cb0039accf9cef6ec0f573982ee481a Vendor-supplied product/visibility material; claims require attribution
remote-control-system-9-0-changelog-final.pdf 2 5512320ba5400919ce72802d68b8cb839802587a77a09ad33ffc58b012bd1a03 RCS 9.0 change summary
remote-control-system-9-1-changelog-final.pdf 2 c24c98c629f4ada65db8be8794dfaa63c834ac3454db40b2122df7070603bfce RCS 9.1 change summary

The locally preserved Intercept article PDF is contextual reporting, not an RCS product manual. It is not counted in the 479-page operator corpus.

Manual verification artifacts

The web-console manual audit connects 38 concrete manual claims to the running reimplementation:

The result—38/38 claims matched—supports surface conformance of the web port. It does not turn the new JavaScript application into an original HackingTeam artifact or prove every untested AIR behavior.

Internal research artifacts

Artifact Purpose Publication status or limitation
research/hackingteam-rcs/CLAIM-LEDGER.md Falsifiable claims, provenance, evidence, confidence and review state Working control document; line references require final refresh
research/hackingteam-rcs/history/CHRONOLOGY.md Dated human-rights, disclosure and export-control record Sourced chronology and author-side review complete; independent editorial review remains open
research/hackingteam-rcs/HISTORICAL-HUMAN-RIGHTS-REVIEW.md Historical, attribution and harm-sensitive language control Author-side pass complete; independent human-rights and survivor-sensitive review remains open
research/hackingteam-rcs/PUBLICATION-SAFETY-REVIEW.md Secret, personal-data, operational-detail and synthetic-provenance control Full-draft pass complete; repeat after copy and production changes
research/hackingteam-rcs/COMMISSIONING-VALIDATION.md Sanitized disposable empty-volume first-boot record, hashes, readiness, and recovery Runtime commissioning passed; artifact-retention/lockfile policy remains open
research/hackingteam-rcs/DEPENDENCY-REBUILD-VALIDATION.md Separate-tag no-cache build and content-inventory comparison Rebuild passed; upstream artifacts are not yet retained as an immutable bundle
research/hackingteam-rcs/WORKER-VALIDATION.md Named synthetic encrypted-evidence replay through the original Worker path No implant or collector; optional media transforms remain untested
research/hackingteam-rcs/IMPLANT-CAPABILITY-AUDIT.md Frozen-revision static audit from module registration through implementation and evidence/log/IPC sinks No implant execution; source capability does not establish deployment, compatibility, success, or historical use
research/hackingteam-rcs/exploit-catalogue/inventory.rb Reproducible Git-history normalization of exploit manifests Static metadata only; never builds or executes packages
research/hackingteam-rcs/exploit-catalogue/README.md Catalogue method, counts and limitations Source presence does not establish deployment or authorship
research/hackingteam-rcs/detections/ Suricata, Sigma and YARA rules plus exact validation record Mechanical and bounded fixture gates pass; target-environment calibration remains in Appendix G
research/hackingteam-rcs/incident-response/IR-CHECKLIST.md Preservation-first field checklist General workflow requiring local legal/forensic adaptation
research/hackingteam-rcs/incident-response/MONGODB-QUERIES.md Read-only metadata-first query catalogue Static checks and 24-block synthetic MongoDB 2.6 replay pass; independent field review remains open
research/hackingteam-rcs/incident-response/MONGODB26-VALIDATION.md Isolated MongoDB 2.6 fixture, replay, assertions, and no-write equality record Synthetic metadata only; not an incident-data test
docker-lab/IOCs.md Source- and lab-derived indicator record with file/line citations Contains sensitive research detail; book omits embedded secrets
docker-lab/console-web/MILESTONES.md Web-port behavior, fidelity rules and M0-M7 gates Applies to the reconstruction, not the AIR executable
docker-lab/console-web/tests/ Mock, live, compliance and manual-audit validation Synthetic data and isolated backend only

Chapter 10 also cites the immutable assessment snapshot identifier codex-security-snapshot/v1:sha256:63da7d1a5c75bc3be86076e68891284c4bbc6b8125b4369b327bed289911139e. The claim ledger carries the 27 validated findings and their limitations. The identifier describes the reviewed source snapshot, not a hash of a historical customer installation.

Human rights, history, and policy

The following sources support Chapter 1 and the framing used elsewhere. The book preserves each source’s level of certainty: product identification, targeting, suspected operator geography, commercial relationship, and successful compromise are not interchangeable conclusions.

Vulnerability and exploit-history references

These works validate public vulnerability identifiers and post-disclosure use. They do not establish who authored every repository package or whether any specific HackingTeam customer deployed it.

Citation and review rules

The mechanical link and source-range check is recorded in research/hackingteam-rcs/CITATION-AUDIT.md. The final publication pass must repeat it after edits and complete semantic technical, manual, historical, human-rights, archival, and publication-safety review.

↑ HackingTeam's RCS: Bringing a Commercial Spyware Platform Back to Life