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

RepositoryExamined commitCommit timestampPrincipal use in the book
rcs-db6cff59d28634d718cac9fdd17cb629fd59a3cf3f2014-05-12 10:01:21 +02:00REST/WSS backend, MongoDB models, worker, licensing, installers, backup, tasks, collectors/connectors
rcs-common38290d4eab2b2c295bea021429848a36666478272015-03-31 11:37:49 +02:00Shared crypto, evidence decoding, heartbeat and status contracts; declares 9.6.0
rcs-collector42cf61af9ec3e7b886e87eac20e762c3ce51c78c2015-03-31 11:36:16 +02:00Collector listener, decoy behavior, public-file path, database client
rcs-consolea90041fcd32bf1a82276ac20c2cd5ecb7d108db02015-03-31 11:49:33 +02:00Original Adobe AIR views and application lifecycle
rcs-console-library97531201600a8a223392e955a35b2b2605c1c1d42015-03-31 11:50:01 +02:00Console managers, models, REST service layer and push handling
vector-exploit2cf574d3bf2ea44f67433e32ccc9906ded6218e02014-12-12 10:59:55 +01:00Static exploit manifests, changelog and full Git history
rcs-anonymizer0c4189b1e5d7e23ad0bf85d0f184d9d8e46decbe2015-04-03 09:00:55 +02:00Static 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.

RepositoryExamined commitTimestampRole
core-android888e51b4ef778ee7f1ef63e22f622ddffb358b392014-12-16T17:12:06+01:00Android core
core-android-audiocapture77b2c1bb09406fd1cfa69e8e1e9276167a664daa2015-05-13T10:34:02+02:00Android audio adjunct
core-android-native731733239fa91b3d5b502f0fda51d10c9ae9d9742015-06-26T18:13:10+02:00Android native adjuncts
core-blackberry977aca189004365f0002766fd318bfc6bc2b4d172014-11-03T10:38:29+01:00BlackBerry core
core-ios19868fcfce187b5d5282ba231854064ad9054a552015-04-09T15:30:56+02:00iOS core
core-linux9252cba42283e71d7858292a400f6c94043ee8ff2015-02-11T14:37:52+01:00Linux core
core-macosf412a71d51563db773c2f1b6bb8c5ef3b69cf2012015-04-09T15:38:54+02:00macOS core
core-symbianeb5d3c477ee9b94751d83ed5c40d57a3f667f5322011-03-09T16:02:14+01:00Symbian core
core-win328eb1326959fcb5c727513b59b86386dae74636832015-01-21T16:50:35+01:00Windows desktop core
core-win64a263105b32bc3416107c2950adc0e49f951866842014-01-16T15:22:14+01:00Windows companion layer
core-winmobilee5baa43ce352e8aa4de4f1604a95e691e2e85aaa2012-08-09T11:46:24+02:00Windows Mobile core
core-winphone361510342e60778a003c535f5df48d27348661e12015-06-25T14:14:06+02:00Windows Phone core
scout-win2368421c414b833e25b7f261a2a583245bad61022015-04-02T11:36:12+02:00Narrow Windows stage
soldier-winb0f86659d7f4a90206bd18b1053896fbd8709cd82015-03-19T16:10:06+01:00Intermediate 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 stateCommitDateRelevance
Compatible 9.2.3 candidate34da36c873873a50a5ef053aa8f055207c1f1f2f2014-04-28Declares 9.2.3 and contains the heartbeat hooks and SystemStatus accessors expected by the selected database
Heartbeat refactor261e08dddf2f581e96a8798e041c182551dfd5362014-05-13Still declares 9.2.3 while removing or reshaping the legacy interface
Visible 9.3.0 bump9a770f8455d9c250b62ae1a0034c1d45cdc3fbbc2014-05-13Marks 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 citationsWorkspace path
Original repositoriesdata/HackingTeam/unpacked/hackedteam/
Original rcs-dbdata/HackingTeam/unpacked/hackedteam/rcs-db/
Original manualsdata/HackingTeam - manuals/
Patched backend copiesdocker-lab/rcs-db/ and docker-lab/rcs-common/
Web console reconstructiondocker-lab/console-web/
Lab operations and IOCsdocker-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 fileRole in the bookPDF pagesSHA-256
rcs-9-admin-final.pdfUsers, groups, audit, monitoring and licence administration615b24dfd9817ae6478536118e5bd25a8bd4402d4a3139d1a472a31e7ea012b503
rcs-9-analyst-final.pdfLogin shell, investigations, evidence, intelligence, dashboards and alerts109e0bd5de11d076286edc65b53af762d97beb199851171d1c39aa1f10c68670e07
rcs-9-sysadmin-final.pdfInstallation, architecture, frontends, shards, backup and system management1291ab4de6daf91d4159e55ef8b74f78cc3fdd7bdb5755733b4d3e351bcf12b0333
rcs-9-technician-final.pdfFactories, configuration, build UI, Network Injector and technical workflows180c5d6036f2af41437416e59eba00dcfb03788b9eea7be0133a927df850fd33df6

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:

FilePagesSHA-256Use
invisibility-report-9-0-final.pdf1a5c9f692fecc4f9b8391f14e059f236e4cb0039accf9cef6ec0f573982ee481aVendor-supplied product/visibility material; claims require attribution
remote-control-system-9-0-changelog-final.pdf25512320ba5400919ce72802d68b8cb839802587a77a09ad33ffc58b012bd1a03RCS 9.0 change summary
remote-control-system-9-1-changelog-final.pdf2c24c98c629f4ada65db8be8794dfaa63c834ac3454db40b2122df7070603bfceRCS 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

ArtifactPurposePublication status or limitation
research/hackingteam-rcs/CLAIM-LEDGER.mdFalsifiable claims, provenance, evidence, confidence and review stateWorking control document; line references require final refresh
research/hackingteam-rcs/history/CHRONOLOGY.mdDated human-rights, disclosure and export-control recordSourced chronology and author-side review complete; independent editorial review remains open
research/hackingteam-rcs/HISTORICAL-HUMAN-RIGHTS-REVIEW.mdHistorical, attribution and harm-sensitive language controlAuthor-side pass complete; independent human-rights and survivor-sensitive review remains open
research/hackingteam-rcs/PUBLICATION-SAFETY-REVIEW.mdSecret, personal-data, operational-detail and synthetic-provenance controlFull-draft pass complete; repeat after copy and production changes
research/hackingteam-rcs/COMMISSIONING-VALIDATION.mdSanitized disposable empty-volume first-boot record, hashes, readiness, and recoveryRuntime commissioning passed; artifact-retention/lockfile policy remains open
research/hackingteam-rcs/DEPENDENCY-REBUILD-VALIDATION.mdSeparate-tag no-cache build and content-inventory comparisonRebuild passed; upstream artifacts are not yet retained as an immutable bundle
research/hackingteam-rcs/WORKER-VALIDATION.mdNamed synthetic encrypted-evidence replay through the original Worker pathNo implant or collector; optional media transforms remain untested
research/hackingteam-rcs/IMPLANT-CAPABILITY-AUDIT.mdFrozen-revision static audit from module registration through implementation and evidence/log/IPC sinksNo implant execution; source capability does not establish deployment, compatibility, success, or historical use
research/hackingteam-rcs/exploit-catalogue/inventory.rbReproducible Git-history normalization of exploit manifestsStatic metadata only; never builds or executes packages
research/hackingteam-rcs/exploit-catalogue/README.mdCatalogue method, counts and limitationsSource presence does not establish deployment or authorship
research/hackingteam-rcs/detections/Suricata, Sigma and YARA rules plus exact validation recordMechanical and bounded fixture gates pass; target-environment calibration remains in Appendix G
research/hackingteam-rcs/incident-response/IR-CHECKLIST.mdPreservation-first field checklistGeneral workflow requiring local legal/forensic adaptation
research/hackingteam-rcs/incident-response/MONGODB-QUERIES.mdRead-only metadata-first query catalogueStatic checks and 24-block synthetic MongoDB 2.6 replay pass; independent field review remains open
research/hackingteam-rcs/incident-response/MONGODB26-VALIDATION.mdIsolated MongoDB 2.6 fixture, replay, assertions, and no-write equality recordSynthetic metadata only; not an incident-data test
docker-lab/IOCs.mdSource- and lab-derived indicator record with file/line citationsContains sensitive research detail; book omits embedded secrets
docker-lab/console-web/MILESTONES.mdWeb-port behavior, fidelity rules and M0-M7 gatesApplies to the reconstruction, not the AIR executable
docker-lab/console-web/tests/Mock, live, compliance and manual-audit validationSynthetic 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