"Dir que no t'importa la privacitat perquè no tens res a amagar és com dir que no t'importa la llibertat d'expressió perquè no tens res a dir."

Edward Snowden
Emblema d'UNHACK, Hacklab la Raíz

Abans de tocar res

1. No esborris ni restauris

Es perden les proves.

2. Fes servir un altre aparell

Per buscar ajuda i canviar contrasenyes, un de confiança.

3. Apunta el que passa i avisa algú

Amb data i captures. Si és seriós, que ho sàpiga algú de confiança.

Què et passa? Comença per aquí

On passa cada punxada

Esquema: al teu mòbil hi pot haver una app espia o spyware comercial, i es pot mirar. Als teus comptes, una sessió oberta o un compte robat, i també es pot mirar. A la teva companyia, un desviament o un duplicat de SIM, que es veuen trucant, o una intervenció judicial, que no es veu. També afecta qui et truca: la teva gent.
Què és exactament cada cosa?Són cinc casos diferents, i un no es veu des del mòbil.
Una intervenció: parles com sempre i la xarxa en treu una còpia per a qui escolta. El teu mòbil no nota res.
Què ésHo pots veure tu?
Desviament de trucades o duplicat de SIM. Les teves trucades o SMS van a un altre lloc.Sí. Pas 1.
Compte obert en un altre lloc. WhatsApp Web, Telegram o Google en un aparell que no és teu. És de les coses més habituals.Sí. Pas 2.
App espia (stalkerware). Algú va tenir el teu mòbil a la mà i hi va instal·lar alguna cosa.Sovint sí. Pas 2.
Spyware comercial (Pegasus, Predator, Graphite). Va contra periodistes, activistes i gent concreta. Pot entrar sense que toquis res.A ull, no. Cal un laboratori, i tot i així pot no aparèixer. Pas 3.
Intervenció judicial. La fa la companyia per ordre d'un jutjat.No. No deixa rastre al mòbil i és secreta mentre dura. Quan acaba, tens dret a saber-ho.

Vaga i manifestacions

Al carrer, si tems que te'l prenguin, el mòbil apagat, no en mode avió.

Abans

Durant

  • Si tems que te'l prenguin, apaga'l: amb el mode avió no n'hi ha prou.
  • Fes les fotos des de la pantalla de bloqueig, sense desbloquejar.

Després

  • Difumina les cares abans de publicar.
  • Si t'han pres el mòbil, encara que sigui una estona, revisa'l: pas 2.

Basat en la guia de l'EFF (s'obre en una altra pestanya), pensada per als EUA, i en les de TeknoKasa (s'obre en una altra pestanya). No és assessorament legal: per saber què fer si et demanen el mòbil a Espanya, parla amb la teva advocada o amb un col·lectiu antirepressiu.

Guies de TeknoKasa (Madrid): bloqueig del mòbil i detenció (s'obre en una altra pestanya) Guia de l'EFF per anar a una protesta (en castellà) (s'obre en una altra pestanya)

Avís d'Apple, Google o WhatsApp

Un avís al mòbil no vol dir que t'hagin infectat.
  1. No toquis enllaços ni donis codis. En aquests avisos, Apple mai no et demana que toquis enllaços, que instal·lis res ni que donis contrasenyes o codis. Si t'ho demanen, és fals.
  2. Comprova-ho sense fer servir el missatge. A Apple, entra a mà a account.apple.com (s'obre en una altra pestanya): si és de veritat, surt un avís a dalt de tot. A Google o WhatsApp, obre tu l'app o el web, no l'enllaç.
  3. Si és real: indica que ho han intentat, no que t'hagin infectat. No esborris, no restauris i no actualitzis.
  4. Demana ajuda: línies d'ajuda.
1
Pas 1 de 4 · 5 minuts

Trucades i companyia

Marcaràs uns codis i faràs una trucada.

Urgent. Sense cobertura de cop i amb codis o avisos que no has demanat? Pot ser un duplicat de SIM.

  • Truca ara a la teva companyia des d'un altre telèfon. Si el número curt no funciona des d'una altra línia, mira el llarg al seu web.
  • Canvia les contrasenyes del correu i del banc des d'un aparell de confiança.
Duplicat de SIM: la teva línia passa a una altra SIM. A tu se't talla, i les teves trucades, SMS i codis li arriben a aquesta persona.

1.1 Mira si hi ha desviaments

Obre l'app de Telèfon, marca el codi com si fos un número i prem trucar. Fes una foto o una captura del resultat abans de canviar res.

Marca asterisc coixinet 21 coixinet: si posa desactivat no hi ha desviament; si surt un número, fes una foto i treu-lo
Què pot sortir en marcar *#21#.
MarcaEt diu si es desvien les trucades…
*#21#totes, sempre. Aquest és el que més importa.
*#61#quan no contestes.
*#62#quan estàs sense cobertura o amb el mòbil apagat.
*#67#quan estàs comunicant.
Et truquen, el mòbil no sona i la trucada acaba en un altre número.
Un desviament envia les teves trucades a un altre número.

1.2 Què vol dir

NormalPosa "desactivat" o "no desviat"

No hi ha desviament. Només vol dir això: no diu res d'apps espia ni d'intervencions.

NormalA *#61#, *#62# o *#67# surt un número
  • Sol ser la bústia de veu: és normal.
  • Pregunta a la teva companyia si aquest número és seu.
  • Si no ho és, treu-lo amb ##61#, ##62# o ##67#.
DubteDona error o no contesta res

No vol dir res dolent: amb trucades per 4G (VoLTE) alguns codis no funcionen. Mira-ho a l'app de la teva companyia o pregunta per telèfon.

UrgentA *#21# surt un número que no coneixes

Les teves trucades van a aquest número. A tu ni et sona el mòbil.

  • Fes una foto de la pantalla.
  • Marca ##21# per treure'l.
  • Torna a marcar *#21#: ha de posar "desactivat".
  • Truca a la teva companyia i pregunta quan es va activar.
  • Canvia les contrasenyes importants des d'un altre aparell.

1.3 Treu els desviaments que no vulguis

  • ##21#, ##61#, ##62#, ##67# treuen cadascun el seu.
  • ##002# els treu tots de cop. Compte, també el de la bústia de veu: si la fas servir, potser l'hauràs de tornar a activar.

També ho pots mirar a la configuració:

  • iPhone: Configuració > Apps > Telèfon > Desviament de trucades.
  • Android: app de Telèfon, la seva configuració i Desviament de trucades.

La mentida del *#06#. Corre que si marques *#06# i no surt res, estàs punxada. Aquest codi només ensenya l'IMEI, el número de sèrie del mòbil. No detecta res.

1.4 Truca a la teva companyia

Preguntes a la teva companyia per desviaments, duplicats i línies, i t'ho poden dir
El que la teva companyia sí que et pot dir.
CompanyiaTelèfonHorari
Movistar1004Cada dia, de 9 a 22
Vodafone2212324 hores
Orange1470De dilluns a dissabte, de 9 a 22
Yoigo622
622 622 622 des d'una altra companyia
24 hores
O21551Cada dia, de 9 a 22
Digi1200Cada dia, de 7 a 24

Una altra companyia o un número que no respon: mira-ho a la factura o al seu web. Si no et refies de la teva línia, truca des d'un altre telèfon.

Pregunta això, tal qual

  1. Hi ha algun desviament actiu a la meva línia? A quin número?
  2. S'ha fet fa poc un duplicat de SIM o un canvi a eSIM? Quan i on?
  3. Hi ha altres línies al meu nom, o s'ha demanat alguna portabilitat o canvi de titular?
  4. Quines mesures teniu contra els duplicats de SIM? Les vull activar.

Aprofita i canvia el PIN de la bústia de veu si encara és el de fàbrica.

I si és una intervenció judicial

Un jutjat ordena la intervenció, la companyia lliura una còpia secreta i des del teu mòbil no es veu res
Com funciona una intervenció judicial.
  • Ni els codis de desviament ni trucar a la companyia la destapen.
  • Mentre dura, és secreta.
  • En acabar, tens dret a saber-ho pel jutjat, amb excepcions.
Què diu la llei, punt per punt
  • Amb els codis de desviament tampoc no es veu. Aquests codis mostren els desviaments normals de la teva línia. Una intervenció no desvia la trucada: la xarxa en treu una còpia, i la norma tècnica (3GPP TS 33.106) (s'obre en una altra pestanya) exigeix que no alteri els teus serveis ni doni cap senyal.
  • Si truques, no t'ho diran. La companyia té l'obligació legal de guardar secret, i pot cometre desobediència si no ho fa (LECrim, art. 588 ter e (s'obre en una altra pestanya)). Un "no veiem res estrany" no la descarta.
  • Mentre dura, és secreta: es tramita en una peça separada i secreta (art. 588 bis d (s'obre en una altra pestanya)).
  • Quan acaba, sí que tens dret a saber-ho. Les parts reben còpia de les gravacions i transcripcions. I el jutjat ho ha de notificar a les persones que apareixen a les comunicacions interceptades, tret que sigui impossible, exigeixi un esforç desproporcionat o perjudiqui futures investigacions (art. 588 ter i (s'obre en una altra pestanya)).
  • Si creus que hi ha una causa oberta contra tu, qui pot preguntar és la teva advocada, al jutjat.
  • Dades en mans de la policia: les pots demanar, però te les poden denegar per no perjudicar una investigació. En aquest cas pots exercir el dret a través de l'AEPD (LO 7/2021, arts. 24 i 25 (s'obre en una altra pestanya)).
I si és un registre remot del mòbil (art. 588 septies)2,5 milions · Fortier Europe · fabricant sense publicar

L'octubre del 2026 el BOE va publicar (s'obre en una altra pestanya) que la Guàrdia Civil havia comprat per 2.066.115,70 € (uns 2,5 milions amb IVA) un sistema de "registros remotos" de mòbils. Pot "alojar software" a Android i iOS per a l'"acceso transparente" a continguts i comunicacions.

Es va adjudicar a Fortier Europe, de Boadilla del Monte, per procediment negociat sense publicitat i amb una sola oferta, al·legant l'exclusivitat del fabricant.

El que no se sap: qui el fabrica, com s'instal·la i si és Pegasus. L'anunci no ho diu, i atribuir-lo avui a un producte concret seria especular.

La llei (LECrim, art. 588 septies (s'obre en una altra pestanya)) exigeix autorització judicial i ho limita a certs delictes, durant un mes prorrogable fins a tres. Abans, Citizen Lab va documentar (s'obre en una altra pestanya) almenys 65 persones de l'entorn independentista català atacades amb Pegasus i Candiru.

Les dades de la teva línia, per escrit

El que sí que pots demanar a la companyia són les teves dades amb el dret d'accés (s'obre en una altra pestanya) del RGPD (art. 15). Tenen un mes per contestar i l'AEPD té un formulari (s'obre en una altra pestanya).

2
Pas 2 de 4 · 15 minuts

Revisa el mòbil, l'ordinador i els comptes

Miraràs què hi ha obert i què hi ha instal·lat.

Si tens una sospita forta (alerta d'spyware, o ets periodista o activista i ha passat alguna cosa concreta):

  • No restauris ni esborris res: es perden les proves.
  • No actualitzis i, si pots, pregunta abans de reiniciar.
  • Mirar els menús sí que pots.
  • Ves al pas 3.

2.1 Comença pels teus comptes

El teu compte connectat al mòbil i al portàtil; una sessió en un aparell desconegut es tanca
Una sessió oberta en un aparell que no és teu.

És el més ràpid i el que més vegades troba el problema. Fes una captura i després tanca el que no reconeguis:

  • WhatsApp: Configuració > Dispositius vinculats. Activa també Configuració > Compte > Verificació en dos passos.
  • Signal: Configuració > Dispositius enllaçats.
  • Telegram: Configuració > Dispositius.
  • Google: myaccount.google.com/device-activity (s'obre en una altra pestanya).
  • Correu: busca a la configuració reenviaments o filtres que no hagis posat tu.

No escanegis un QR per "verificar" res si no has començat tu la vinculació.

No hi ha res estrany i continuen sabent el que escrius? Demana ajuda.

Després canvia les contrasenyes des d'un aparell de confiança, no des del que et fa sospitar.

Una lupa sobre un mòbil assenyala una app taronja
Es tracta de buscar el que no hi vas posar tu.

2.2 Què vol dir el que notes

Bateria, codis que no has demanat, enllaços estranys, sorolls...
Una bateria que dura poc sol ser només una bateria vella.
El que notesEl que sol ser
Bateria que dura poc, mòbil calent, gasta dadesBateria vella o una app normal. Pot ser una app espia, però per si sol no prova res. Mira quina gasta a la configuració de bateria.
Sorolls o eco a les trucadesMala cobertura. Una intervenció moderna no sona.
Codis de verificació que no has demanatAlgú intenta entrar en aquell compte. Canvia la contrasenya i activa la verificació en dos passos.
Missatge estrany amb un enllaç, encara que sigui del teu banc o d'"una amiga"És un engany (phishing). No l'obris. Si ja l'has obert, desa'l i continua llegint.
Algú sap coses que només has dit pel mòbilMira primer les sessions obertes. Si no hi ha res, ves al pas 3.
Alerta oficial d'Apple, Google o WhatsApp sobre atacs d'spywareAquesta sí que és seriosa: indica que ho han intentat, no que t'hagin infectat. Només una anàlisi ho confirma. Pas 3.

L'spyware car no dona senyals. Que el mòbil vagi bé no el descarta, i que vagi malament tampoc no el confirma.

Mites i falses alarmesInclòs el "truc" d'apagar el mòbil cinc minuts.
El xifratge continua funcionant, però si t'enganyen amb un QR, un altre aparell rep els teus missatges nous.

"Apagar el mòbil cinc minuts al dia el protegeix." Ho va explicar Pedro Sánchez (s'obre en una altra pestanya) a l'octubre. Té part de veritat: molt spyware comercial no sobreviu a un reinici, així que reiniciar sovint ajuda. Però no corregeix l'error (s'obre en una altra pestanya) pel qual va entrar i poden tornar a entrar.

"Bateria, calor o clics = punxada." Per si sols no proven res.

"Una app diu que estic neta, per tant ho estic." Només vol dir que no ha trobat el que ja es coneix. Dona falsa seguretat.

"Avís d'Apple = infectada." Indica un intent (s'obre en una altra pestanya). La confirmació la dona una anàlisi forense.

"El primer és formatar." Destrueix les proves. Primer demana ajuda.

"Amb Signal ningú no em llegeix." El xifratge funciona, però si t'enganyen per vincular un altre aparell amb un QR (s'obre en una altra pestanya), aquell aparell rep els teus missatges nous. No escanegis cap QR per "verificar" res si no has començat tu la vinculació.

"En mode avió soc invisible." Només apagar-lo (s'obre en una altra pestanya) dona garantia.

"No tinc res a amagar." La vigilància també afecta les persones amb qui parles: fonts, companyes, família.

2.3 Tria el teu aparell i toca per obrir els passos

iPhone, 7 passos
Una app espia o un spyware envia els teus missatges, fotos i ubicació a una altra persona, sense que ho vegis.
  1. Mira si Apple t'ha avisat. Les alertes d'amenaces surten a la pantalla de bloqueig i a Configuració, en un correu de threat-notifications@email.apple.com i en un avís a dalt de tot a account.apple.com (s'obre en una altra pestanya). En aquestes alertes, Apple mai no et demana que obris enllaços, que instal·lis res ni que donis contrasenyes o codis. Si t'ho demanen, és falsa. Si és de veritat, ves al pas 3.
  2. Comprovació de seguretat: Configuració > Privacitat i seguretat > Comprovació de seguretat > Gestiona la compartició i l'accés. Ensenya qui veu la teva ubicació i les teves coses, i quins aparells hi ha al teu compte. "Restabliment d'emergència" talla tots els accessos de cop.
  3. Perfils: Configuració > General > VPN i gestió de dispositius. Si no hi apareix res, no en tens cap d'instal·lat, que és el normal en un mòbil personal. Si hi ha un perfil que no reconeixes, fes-ne una foto i pregunta abans d'esborrar-lo. Si el mòbil és de l'empresa o del centre d'estudis, pot ser seu.
  4. Face ID: Configuració > Face ID i codi. Si hi ha un "aspecte alternatiu" que no és teu, una altra persona el pot desbloquejar. Canvia també el codi si algú el coneix.
  5. Apps: baixa fins a la Biblioteca d'apps, escriu al cercador i repassa la llista. Busca el que no recordis haver instal·lat.
  6. Actualitza: Configuració > General > Actualització de programari. Si no hi ha cap sospita forta, és de les millors coses que pots fer.
  7. Si corres un risc alt: Configuració > Privacitat i seguretat > Mode d'aïllament. Limita força coses del mòbil, però és la defensa més forta que té davant l'spyware comercial.
↑ Torna a triar aparell
Android, 7 passos
Una app espia o un spyware envia els teus missatges, fotos i ubicació a una altra persona, sense que ho vegis.

Els menús canvien segons la marca. Si no trobes alguna cosa, fes servir el cercador de dalt de tot a Configuració.

  1. Play Protect: a Play Store, icona del teu perfil > Play Protect > Configuració. Comprova que continua activat i llança una anàlisi. Si està apagat i no l'has apagat tu, mal senyal.
  2. Accessibilitat: Configuració > Accessibilitat, a l'apartat d'apps instal·lades o baixades. Aquest permís deixa llegir la pantalla i és el preferit de les apps espia. Si n'hi ha una que no coneixes, compte.
  3. Administradors: a Configuració > Seguretat, busca "administració de dispositius". En un mòbil personal només hi hauria d'haver el de Google o el de la marca.
  4. Permisos especials: a Configuració > Aplicacions > Accés especial d'aplicacions, mira "Accés a les notificacions" i "Instal·la aplicacions desconegudes".
  5. Apps: a Configuració > Aplicacions, mostra-les totes, també les del sistema. Desconfia de noms buits o genèrics, com "Sync", "Service" o "System", sense icona i amb permisos de micròfon, ubicació o SMS. Si dubtes, busca-la des d'un altre aparell.
  6. Depuració per USB: si a Opcions per a desenvolupadors està activada i no has estat tu, és un senyal.
  7. Si corres un risc alt: a Configuració > Seguretat i privadesa > Altres opcions de configuració > Protecció avançada, si el teu mòbil ho té (Android 16 o superior).
↑ Torna a triar aparell
Ordinador, 5 passos
  1. Control remot: busca entre els teus programes TeamViewer, AnyDesk o similars que no hagis instal·lat tu. Són normals, però amb ells es pot manejar l'ordinador des de fora. Windows: Configuració > Aplicacions > Aplicacions instal·lades. Mac: carpeta Aplicacions.
  2. El que s'engega sol: Windows: Administrador de tasques > Aplicacions d'inici. Mac: Configuració del Sistema > General, als elements d'inici. Busca el que no reconeguis.
  3. Gestió remota al Mac: Configuració del Sistema > General > Gestió de dispositius. Si el Mac és personal, no hi hauria d'aparèixer res.
  4. Anàlisi: al Windows, Seguretat del Windows > Protecció contra virus i amenaces i llança una anàlisi completa. Mira a les extensions del navegador si n'hi ha alguna que no hi has posat tu.
  5. Actualitza el sistema i el navegador, tret que tinguis una sospita forta.
El teu ordinador genera un informe i tu decideixes a qui donar-lo

Si vols anar un pas més enllà, Zero Breach Toolkit busca traces d'spyware conegut a l'ordinador i no puja res a internet. Només mira aquell ordinador: no et diu si el mòbil està infectat.

↑ Torna a triar aparell

2.4 Què fer amb el que has vist

NormalTot normal

No garanteix que estiguis neta. Si no tens motius per pensar que van contra tu, actualitza, fes servir contrasenyes diferents i verificació en dos passos.

DubteUna sessió o una app estranya

Fes captures amb data i tanca aquesta sessió. Si no ho tens clar, ves a demanar ajuda.

UrgentAlerta oficial, perfil desconegut o motius seriosos per pensar que van contra tu

Para aquí. No esborris ni restauris res i demana ajuda.

2.5 Posa-ho més difícil per a la propera vegada

Rutina de 10 minutsFes-la de tant en tant.
Reinicia, actualitza i revisa els dispositius vinculats
La rutina, en tres passos.
  1. Reinicia el mòbil.
  2. Instal·la les actualitzacions pendents, del sistema i de les apps.
  3. Repassa els dispositius vinculats de WhatsApp, Signal, Telegram i Google.
  4. Fes servir un codi de desbloqueig llarg, no un patró ni quatre xifres.
  5. Esborra les apps que ja no fas servir.
Blinda els teus comptesContrasenyes, claus i robatori del mòbil.
Una passkey o una clau física protegeixen millor que un SMS.
Guia pas a pas (en castellà): el meu mòbil fa coses rares (s'obre en una altra pestanya)
3
Pas 3 de 4

Demana ajuda

Pots venir directament aquí, sense fer el que hi ha abans.

No ho has de resoldre sense ningú.

3.1 Línies d'ajuda

QuiPer a què
Access Now, Digital Security Helpline (s'obre en una altra pestanya)Activistes, periodistes, defensores de drets humans i col·lectius. Gratis, 24 hores, també en castellà. Fan una comprovació prèvia de qui ets.
Amnistia Internacional, Security Lab (s'obre en una altra pestanya)Periodistes, activistes i organitzacions en risc per atacs dirigits.
INCIBE (s'obre en una altra pestanya): 017
  • Per a qualsevol persona: estafes i comptes robats.
  • Gratuït i confidencial, de 8 a 23.
  • També per WhatsApp (900 116 117) i Telegram (@INCIBE017).
  • És un organisme públic: tingues-ho en compte si el teu cas és polític.

3.2 Guies per seguir, en castellà

3.3 Punts de trobada

Estem preparant punts per revisar mòbils en persona. Els publicarem aquí.

Dues persones en una taula amb un mòbil al mig
Es mira amb tu al davant. El teu mòbil no se separa de tu.
Si vas a un punt de trobada
  • Porta el mòbil carregat, el seu cable, el codi de desbloqueig al cap i una llista del que t'ha passat, amb dates.
  • Tens dret a veure tot el que es fa i a dir que no.
  • Ningú no necessita les teves contrasenyes. Les poses tu.
  • Pregunta quines dades es copien, on es guarden i quan s'esborren.
  • Desconfia de qui t'ofereixi per internet "netejar-te el mòbil": és una estafa clàssica.
Com apuntar el que passaUna plantilla per no perdre les proves.
Apunta data i hora, guarda captures i anota-ho
Què cal apuntar de cada incident.

Et serveix a tu i a qui t'ajudi. Copia això en un paper o en un aparell de confiança, amb una línia per cada cosa estranya:

Data i hora:
Aparell o compte:
Què ha passat:
Número, correu o enllaç implicat:
Captura desada (on):
A qui ho he explicat:
  • Fes les captures abans de bloquejar o denunciar un compte: després pot desaparèixer.
  • No obris enllaços sospitosos per veure què són. Copia el text sense prémer-lo.
  • Guarda una còpia xifrada. Si et desborda, demana a algú de confiança que se'n faci càrrec.
  • Per denunciar a Espanya, aquesta guia (s'obre en una altra pestanya) explica com presentar les proves.
4
Pas 4 de 4 · opcional

Zona techie: el laboratori

Per a hacklabs i per a qui vulgui aprendre.

Aquesta part és per muntar el laboratori. Per revisar el teu mòbil no cal. Les ordres no arreglen res per si soles: un "net" no vol dir net i una coincidència no vol dir infecció.

Consentiment.

  • Només amb el teu mòbil o amb el d'algú que t'ho demana i és davant.
  • Analitzar el d'una altra persona sense permís pot ser delicte.
  • La llicència d'MVT ho prohibeix expressament.

Logos dels seus respectius projectes, només per identificar-los. Aquest hacklab no hi té cap relació.

Què és cada eina

EinaQuè faPer a qui
Zero Breach ToolkitBusca traces publicades d'spyware en ordinadors, en còpies d'iPhone i en el que s'ha recollit d'Android. Té interfície gràfica i dona el resultat en llenguatge normal.Primer filtre, amb poc nivell tècnic.
MVT (Amnistia)Anàlisi forense: extreu registres i els compara amb llistes d'indicadors.Terminal. El mateix projecte diu que no és per a autodiagnòstic.
PiRogue (PTS)Una Raspberry Pi fa de router i analitza el trànsit del mòbil. No mira dins del telèfon: mira amb qui parla.Per saber de xarxes.

Es complementen: les dues primeres miren el que queda guardat a l'aparell i PiRogue el que fa a la xarxa mentre l'observes.

Com muntar el punt de revisióEl primer, abans de tocar cap mòbil.
  • Un portàtil de confiança amb el disc xifrat, dedicat si pot ser. Si l'ordinador està compromès, ho està tot.
  • Les còpies contenen la vida sencera de la persona: missatges, fotos, historial. Es queden en local i xifrades, i s'esborren quan ella ho decideixi.
  • Res al núvol ni a serveis d'anàlisi en línia sense que ho autoritzi.
  • Actualitza els indicadors el mateix dia. Amb llistes velles, el resultat no val.
  • Davant d'un positiu creïble, deixa de tocar i passa el cas a Security Lab o a Access Now.
Triatge d'un casQuè fer i en quin ordre.

Ordre proposat per aquest hacklab a partir de les fonts. Cap no en fixa un d'únic.

  • Abans de tocar res. Consentiment explícit, a qui tem i des de quan. Dates: avís d'Apple, missatge estrany, detenció, mòbil retingut. Sense hipòtesi ni dates, la línia temporal no diu res.
  • Risc alt o avís oficial. Passa directament a Access Now o a Security Lab. No cal analitzar abans per demanar ajuda.
  • No el toquis més del necessari. Criteri nostre: ni restablir, ni actualitzar, ni desinstal·lar abans d'adquirir. L'historial de Safari dura pocs mesos, i restablir els ajustos pot esborrar traces.
  • Indicadors al dia, a la teva màquina i abans de connectar el mòbil.
  • Primer adquireix, després analitza. El que s'ha adquirit es pot reanalitzar quan surtin indicadors nous. El mòbil ja no estarà igual.
  • Calcula hashes tot just acabar.
  • Analitza i mira primer la cobertura: què no s'ha pogut llegir. Després, les alertes.
  • Xarxa al final. PiRogue exigeix dies d'ús només amb wifi. Serveix si sospites activitat present, i una captura neta no diu res del passat.

iPhone

pymobiledevice3 usbmux list
pymobiledevice3 lockdown info
mkdir -p ./caso/copia
pymobiledevice3 backup2 backup --full ./caso/copia/

Xifrada sempre: sense xifrar falten l'historial i l'estat de Safari, i les trucades. Si sospites accés físic, amb una còpia no n'hi ha prou perquè no conté aquests registres: cal sysdiagnose o extracció, millor en mans expertes. mvt-ios check-sysdiagnose sense plugins només treu dades de l'aparell, i ho avisa.

Android

sha256sum -c --ignore-missing checksums.txt
chmod +x androidqf_linux_amd64_1.8.3
./androidqf_linux_amd64_1.8.3 -output ./caso

Respostes raonables. Backup: Only SMS. Apps: Only non-system packages. Treure les signades amb certificat de confiança: No. Hash al mòbil: No, perquè és lent i pot aturar el recol·lector. Intrusion Logs: Yes només si estaven activats.

Intrusion Logs: DNS i connexions per app, arrencades de processos, ordres ADB. Android 16 o superior, de moment en Pixel segons Security Lab (maig de 2026), amb Protecció Avançada. No són retroactius: cal activar-los abans. Contenen historial de navegació.

Fonts: MVT iOS (s'obre en una altra pestanya), MVT Android (s'obre en una altra pestanya), AndroidQF (s'obre en una altra pestanya), Security Lab (s'obre en una altra pestanya), Zero Breach (s'obre en una altra pestanya).

Cadena de custòdia i hashesQui va tocar què, quan i amb què.

Serveix per a dues coses: que una altra analista pugui confiar en la teva còpia i, si el cas acaba en un jutjat, demostrar que no s'ha alterat. Sobre la seva validesa legal, pregunta a una advocada abans de començar.

Registre

cas: 2026-001           persona: (pseudònim; la clau, a part)
consentiment: data, abast, qui el recull
aparell: model, SO, pedaç, desbloquejat per ella?
quan       qui     rol        acció                 hash
2026-11-06 ana     analista   rep i fa còpia        -
2026-11-06 ana     analista   sha256 de la còpia    ab12...
2026-11-07 ana     analista   entrega a línia ajuda ab12...

Un identificador per aparell, una línia per cada persona que el manipuli, precinte si es queda amb tu. Hora en UTC. Anota també les versions de les eines.

iPhone

cd ./caso/copia/<UDID>
find . -type f -print0 | sort -z | xargs -0 sha256sum > ../copia.sha256
sha256sum -c --quiet ../copia.sha256

decrypt-backup i check-backup accepten --hashes: desa el SHA-256 de cada fitxer a info.json i imprimeix el hash d'aquest info.json. Anota'l.

Android

AndroidQF deixa dins del ZIP un hashes.csv (entrada i SHA-256 del contingut, sense capçalera) i acquisition.json amb l'estat de cada mòdul.

sha256sum <UUID>.zip >> caso.sha256
unzip -q <UUID>.zip -d adq/ && cd adq/
python3 -c "
import csv,hashlib
for n,h in csv.reader(open('hashes.csv')):
    if hashlib.sha256(open(n,'rb').read()).hexdigest()!=h: print('MAL',n)"
jq -r '.module_results[]|select(.status!="completed")|[.name,.status,.error]|@tsv' acquisition.json

Si la comprovació no imprimeix res, tot coincideix. hashes.csv va dins del mateix fitxer i no protegeix contra qui refaci el ZIP: per això el hash extern, desat en un altre lloc. Un mòdul partial o failed vol dir adquisició incompleta, i això va a l'informe.

Xifrar des de l'origen

age-keygen -o privada.txt     # en una altra màquina; no viatja amb tu
# la clau pública (age1...) va a key.txt, al costat del binari
./androidqf_linux_amd64_1.8.3 -output ./caso
age --decrypt -i privada.txt -o <UUID>.zip <UUID>.zip.age

Amb key.txt, AndroidQF escriu <UUID>.zip.age i no deixa ZIP en clar. Qui porta el portàtil no pot desxifrar encara que l'obliguin. Sense xifratge, una fallada pot deixar temporals en clar.

Compartir i esborrar

  • Pregunta a la línia d'ajuda com ho vol rebre.
  • Marca amb TLP fins on es comparteix i amb PAP què se'n pot fer. PAP:RED: res detectable des de fora.
  • Signatura separada per demostrar l'origen: gpg --detach-sign caso.sha256.
  • En esborrar, PTS indica shred -u. En SSD no te'n refiïs: el que protegeix és el disc xifrat.

Fonts: PTS g6 (s'obre en una altra pestanya), PTS g4 (s'obre en una altra pestanya), Colander: custòdia (s'obre en una altra pestanya), AndroidQF: fitxers (s'obre en una altra pestanya).

Zero Breach ToolkitPrimer filtre. Té interfície gràfica.

Projecte molt jove i anònim. El repositori es va crear l'octubre de 2026, el seu README diu que el projecte és anònim i no hem trobat cap auditoria independent. Les versions de la 2.0.0 a la 2.0.2 podien donar verd sense haver acabat de comprovar un mòbil: repeteix amb l'última estable. Hi ha repositoris amb noms semblants. Descarrega només d'interplains/Zero-Breach-Toolkit (s'obre en una altra pestanya).

Instal·lació. Baixa el programa del teu sistema (Windows, Mac o Linux) i obre'l. Com que encara no està signat, el sistema i alguns antivirus t'avisaran. Comprova'n abans l'origen:

gh attestation verify <fitxer> --repo interplains/Zero-Breach-Toolkit
gpg --verify SHA256SUMS.txt.asc SHA256SUMS.txt
sha256sum -c SHA256SUMS.txt

Actualitza les llistes d'indicadors abans de llançar la comprovació. L'anàlisi no puja res a internet.

Ordinador. Tanca els navegadors i les apps de missatgeria, tria la comprovació "Standard" (15 o 20 minuts) i prem "Start check".

iPhone. S'analitza una còpia a l'ordinador, mai al mateix mòbil. Connecta'l, prem Confia i fes una còpia marcant "Encripta la còpia de seguretat local" (Finder al Mac, Apple Devices al Windows). Al programa tria "A phone" i arrossega la carpeta de la còpia, que és aquí:

Mac:     ~/Library/Application Support/MobileSync/Backup
Windows: %USERPROFILE%\Apple\MobileSync\Backup

Android. Activa les Opcions per a desenvolupadors (prem set vegades Número de compilació) i la Depuració per USB. Connecta'l amb un cable de dades i autoritza l'ordinador. Al programa, "A phone" i l'opció de recollir des d'Android per USB. Mantén el mòbil desbloquejat. Quan acabis, apaga la Depuració per USB.

La recollida guiada d'Android és experimental. Respon: Backup, Only SMS; Apps, Only non-system; Remove trusted, No; la resta, No. Accepta "Back up my data" al mòbil.

Com llegir-ho

NormalVerd: "No known indicators found"

No apareix res de les llistes públiques als llocs que ha pogut llegir. Revisa la llista del que no ha pogut comprovar. L'spyware sense traces publicades no surt.

Dubte"Something matched"

Vol dir "mira-ho més de prop", no "estàs infectada". No esborris res ni visitis l'adreça que indica. Guarda l'informe i passa'l a la línia d'ajuda. Un domini compartit pot donar coincidències innocents.

MVT (Mobile Verification Toolkit)Anàlisi forense per terminal.
S'analitza una còpia xifrada, no el mòbil.

Necessita Python 3.11 o superior i Linux o Mac. Al Windows, per WSL. La seva llicència és pròpia i restringeix l'ús sense consentiment, així que no és programari lliure en sentit estricte.

sudo apt install python3 python3-venv python3-pip sqlite3 libusb-1.0-0 pipx
pipx ensurepath
pipx install mvt
mvt download-iocs

Després de pipx ensurepath, obre un altre terminal. MVT demana Python 3.11, així que Ubuntu 22.04 no serveix de sèrie.

MVT surt a la xarxa per defecte: segueix els enllaços escurçats, cosa que pot tocar la infraestructura de l'enllaç rebut. Apaga-ho així:

export MVT_NETWORK_ACCESS_ALLOWED=false

iPhone

Amb una còpia xifrada es veuen més registres, com l'historial de Safari. La pots fer des de Finder o Apple Devices, o per terminal:

sudo apt install usbmuxd
pipx install pymobiledevice3
pymobiledevice3 lockdown pair
pymobiledevice3 backup2 encryption on 'CONTRASENYA'
pymobiledevice3 backup2 backup --full ./copia/

Si ja tenia contrasenya de còpia, fes servir aquesta. Restablir els ajustos, només com a últim recurs: pot esborrar traces.

Aquesta contrasenya es queda a l'historial de la shell: esborra-la després. Mantén el mòbil desbloquejat. La còpia apareix en una subcarpeta amb l'UDID del mòbil. Per desxifrar-la i analitzar-la:

read -rs MVT_IOS_BACKUP_PASSWORD; export MVT_IOS_BACKUP_PASSWORD
mvt-ios decrypt-backup -d ./descifrada ./copia/<UDID>
unset MVT_IOS_BACKUP_PASSWORD
mvt-ios check-backup --output ./salida ./descifrada

Android

MVT ja no analitza directament per ADB. La recollida es fa amb AndroidQF (s'obre en una altra pestanya): activa la Depuració per USB, autoritza l'ordinador, executa el binari i respon al que pregunta. Després:

unzip <UUID>.zip -d adq/
mvt-android check-androidqf --output ./salida ./adq

Extreu sempre el ZIP d'AndroidQF i fes servir --output. En una prova amb dades sintètiques, passar el ZIP directament va donar 0 alertes i cap avís clar. No s'ha confirmat amb un mòbil real.

L'opció --virustotal està apagada per defecte. Envia hashes de les APK que no són de sistema, i requereix MVT_VT_API_KEY. Deixa-la apagada tret que la persona ho accepti.

Com s'interpreta

  • Les coincidències surten ressaltades a la terminal i es guarden a la carpeta de sortida. Llegeix aquests resultats i col·loca'ls a la línia temporal.
  • Amb cada coincidència, pregunta't: quin indicador és, de quina campanya i de quan? La data encaixa amb la història de la persona? Quin procés o domini apareix?
  • Una coincidència no és un diagnòstic. Abans de dir res a ningú, que la revisi algú amb experiència. Donar per bo un fals positiu fa molt de mal.
  • Sense coincidències tampoc no hi ha certesa. La mateixa documentació avisa que els indicadors públics no són suficients per dir que un mòbil està net.

Documentació d'MVT (s'obre en una altra pestanya)

PiRogue Tool SuiteRaspberry Pi que analitza el trànsit.
El mòbil es connecta a la Raspberry Pi i al portàtil veus amb qui parla.

És una Raspberry Pi que crea una wifi. Hi connectes el mòbil i la Pi analitza en directe tot el trànsit amb Suricata, fent servir regles de ProofPoint ET Open i els indicadors d'stalkerware d'Echap.

Material: per tenir alertes, Raspberry Pi 4 de 4 o 8 GB: la 3B, la 3B+ i la Pi 4 d'1 o 2 GB no executen Suricata. Admet 2 o 3 mòbils. La Pi 5 fa servir una imatge experimental a part. També pot ser un PC o virtualitzada. Font d'alimentació, microSD de 32 GB (64 GB per a captures llargues) i cable de xarxa.

Instal·lació

Baixa la imatge de PiRogue OS des de la guia oficial (s'obre en una altra pestanya), comprova el hash i grava-la amb Balena Etcher. Connecta la Pi per cable i entra-hi:

sha256sum PiRogue-OS-*.img.xz
# contrasenya inicial: raspberry, canvia-la en entrar
ssh pi@pirogue.local
sudo apt update
sudo apt dist-upgrade -y
sudo apt install pirogue-base -y
sudo reboot

Durant la instal·lació respon No a desar les regles de tallafocs IPv4 i IPv6, i Sí a la captura sense root. Després treu la clau de la wifi i la del tauler (a la versió 2.x són aleatòries; la 1.x és diferent, ho explica la guia):

pirogue-admin-client wifi get-configuration
pirogue-admin-client dashboard get-configuration

El tauler és a https://pirogue.local/dashboard, amb un certificat autosignat. La telemetria ve activada de sèrie: envia cada dia ID, ASN, país i sistema operatiu. Apaga-la abans de connectar-hi cap mòbil:

sudo pirogue-telemetry config disable

Per a MVT, segueix docs.mvt.re (s'obre en una altra pestanya): la guia g7 de PTS fa servir ordres ja eliminades.

Captura

Engega la captura abans d'activar el wifi del mòbil, o perdràs les primeres connexions. Al mòbil, mode avió, només wifi i sense VPN. Els fluxos apareixen al tauler als 4 minuts, més o menys. Deixa-ho uns 3 dies amb ús normal. El tauler guarda 5 dies de dades.

Per capturar a un fitxer i obrir-lo després a Wireshark:

sudo tcpdump -i wlan0 -w $(date +%Y%m%d%H%M)_captura.pcap
scp pi@pirogue.local:~/*_captura.pcap .

Què vol dir

  • Alertes de seguretat: mires l'hora, la gravetat, el tipus d'amenaça, el nom de la regla i les IP d'origen i destinació. Moltes són soroll, com publicitat o rastrejadors. Llegeix la regla abans de treure conclusions.
  • Llista de fluxos i mapa: busca dominis estranys, enviaments grans de dades a hores mortes o connexions regulars amb el mòbil en repòs. Comprova de qui és cada destinació. La majoria seran Apple, Google i les apps de sempre.
  • Límits: gairebé tot va xifrat, així que veus a qui es connecta i quant, no el contingut. Suricata només detecta el que ja es coneix. Sense alertes no hi ha garantia de res.
  • Privacitat: la captura retrata la vida de la persona. Es tracta com qualsevol altra còpia: en local, xifrada i esborrada en acabar.

El mateix projecte recomana que, en situacions de risc, l'anàlisi la segueixin professionals. Guies de PTS (s'obre en una altra pestanya)

Indicadors: d'on surten i com es fan servirSTIX2, actualització i límits.

Un indicador és una dada concreta publicada després d'una investigació: domini, nom de procés, hash, ID d'app. Que no aparegui només vol dir que no apareix.

mvt download-iocs                  # a Linux: ~/.local/share/mvt/indicators; es carreguen sols
mvt-ios check-backup --iocs caso.stix2 --output ./salida ./descifrada
export MVT_STIX2="/ruta/uno.stix2:/ruta/dos.stix2"
mvt-ios check-iocs --iocs nuevo.stix2 ./salida      # sobre resultats ja extrets

A Android, per aplicar indicadors nous, repeteix check-androidqf sobre l'adquisició desada.

Sense xarxa. MVT resol enllaços escurçats amb una petició HEAD i comprova versió i indicadors:

export MVT_NETWORK_ACCESS_ALLOWED=false
mvt-ios --disable-update-check --disable-indicator-update-check check-backup ...

STIX2 propi

MVT implementa un subconjunt: un valor per patró, sense expressions booleanes. Tipus: domain-name:value, url:value, process:name, email-addr:value, file:name, file:path, file:hashes.md5/.sha1/.sha256, app:id, configuration-profile:id, android-property:name. Cada mòdul només fa servir els que l'afecten.

{"type":"bundle","id":"bundle--11111111-1111-4111-8111-111111111111","objects":[
 {"type":"malware","spec_version":"2.1","id":"malware--22222222-2222-4222-8222-222222222222",
  "created":"2026-11-06T00:00:00.000Z","modified":"2026-11-06T00:00:00.000Z",
  "name":"caso-prueba","is_family":false},
 {"type":"indicator","spec_version":"2.1","id":"indicator--33333333-3333-4333-8333-333333333333",
  "created":"2026-11-06T00:00:00.000Z","modified":"2026-11-06T00:00:00.000Z",
  "pattern":"[app:id='com.ejemplo.sospechosa']","pattern_type":"stix",
  "valid_from":"2026-11-06T00:00:00.000Z","indicator_types":["malicious-activity"]},
 {"type":"relationship","spec_version":"2.1","id":"relationship--44444444-4444-4444-8444-444444444444",
  "created":"2026-11-06T00:00:00.000Z","modified":"2026-11-06T00:00:00.000Z",
  "relationship_type":"indicates",
  "source_ref":"indicator--33333333-3333-4333-8333-333333333333",
  "target_ref":"malware--22222222-2222-4222-8222-222222222222"}
]}

La col·lecció pren el nom de l'objecte malware i surt a l'alerta. Colander també pot exportar un feed STIX2.

Fonts: MVT: IOCs (s'obre en una altra pestanya), PTS g7 (només la part de Colander) (s'obre en una altra pestanya).

Com llegir la sortida de MVTFitxers reals i què vol dir cada mòdul.

Primer: ha llegit alguna cosa?

grep -E 'not found|ERROR|WARNING' salida/command.log
jq -r '.[]|select(.missing==true)|.relative_path' salida/manifest.json | head

Un mòdul que no troba el seu fitxer acaba dient no detections, igual que un de net. A l'iPhone, "missing": true marca el que la còpia no va adquirir. Amb AndroidQF, extreu el ZIP i passa la carpeta: a la nostra prova amb un ZIP sintètic, passar-lo directament va donar 0 alertes.

Els fitxers

  • alerts.json: totes les alertes. Comença per aquí. Només existeix si n'hi ha hagut alguna.
  • alerts_timeline.csv: les alertes per data. Substitueix l'antic timeline_detected.csv.
  • timeline.csv: tot, per data. Aquí s'entén una alerta: què va passar abans i després. iOS en UTC; Android, hora local.
  • <módulo>.json i <módulo>_detected.json: el que s'ha extret i el que coincideix.
  • urls.json: enllaços d'SMS, iMessage i WhatsApp, amb la seva destinació si s'ha resolt.
  • info.json: versió de MVT, data, indicadors usats i, amb --hashes, hashes.
  • command.log: registre complet. Va amb l'informe.

Nivells

CRITICAL és, en general, coincidència amb un indicador: mira matched_indicator. HIGH: per exemple, VirusTotal. MEDIUM sol ser heurística: una app instal·lada per ADB, una redirecció ràpida, un ajust. INFO i LOW són context. MVT ho diu a la seva sortida: només la revisió experta confirma, i que faltin alertes no és un certificat de salut.

jq -r '.[]|[.level,.module,.event_time,.message]|@tsv' salida/alerts.json | sort
jq '.[]|select(.level=="CRITICAL")|.matched_indicator' salida/alerts.json

iPhone: mòduls que importen

  • datausage: processos amb activitat de xarxa, a DataUsage.sqlite. No registra trànsit wifi. És a la còpia. netusage, només en sistema de fitxers.
  • os_analytics_ad_daily: ús de dades per procés, una altra font per datar execucions.
  • safari_history, safari_browser_state: només amb còpia xifrada. Avisa de redireccions HTTP a un altre domini en menys d'un segon.
  • webkit_session_resource_log, webkit_resource_load_statistics: dominis carregats, inclosos els intermedis.
  • sms, sms_attachments, whatsapp: enllaços i adjunts.
  • id_status_cache: comptes d'iMessage i FaceTime consultats. Buit o absent des d'iOS 14.7.
  • configuration_profiles, profile_events, applications, tcc: perfils, apps de fora de l'App Store, permisos.
  • global_preferences: si el Mode d'aïllament està actiu. backup_info: model i versió.
  • manifest: índex de la còpia, amb rutes i dates.
  • Només amb sistema de fitxers: shutdown_log, cache_files, analytics, safari_favicon, webkit_indexeddb, webkit_local_storage.

Android: mòduls que importen

  • aqf_packages: compara nom, hash i certificat. Avisa d'apps instal·lades per navegador o ADB, paquets de root i seguretat desactivada.
  • aqf_settings: Play Protect apagat, accessibilitat, informes desactivats. Quan Android ho registra, diu qui va canviar cada ajust.
  • aqf_get_prop: pedaç de seguretat. root_binaries, mounts: rastres de root.
  • aqf_processes: llegeix ps.txt, però AndroidQF 1.8.3 escriu processes.json. Fins que s'aclareixi, revisa aquest fitxer a mà.
  • dns_event, connect_event, security_event: Intrusion Logs, si n'hi ha. DNS i connexions porten package_name.

Fonts: MVT: registres iOS (s'obre en una altra pestanya), Intrusion Logs (s'obre en una altra pestanya), codi de MVT (s'obre en una altra pestanya).

Traces de Pegasus segons Amnistia InternacionalEl que hi ha documentat fins al 2021. Per entendre, no per diagnosticar.

Llegeix-ho com a història documentada. L'informe és del 2021 i les traces canvien. Buscar aquests noms a mà no és un mètode: per això hi ha els indicadors. El que és útil és la lògica: diverses traces independents que encaixen en el temps amb la història de la persona.

Processos

iOS desa els processos amb activitat de xarxa a DataUsage.sqlite (és a la còpia) i netusage.sqlite (no hi és). Només apareixen els que han fet servir la xarxa. Amnistia va trobar un procés bh just després de visites a dominis d'instal·lació de Pegasus, i va comprovar que no hi havia binaris legítims amb aquest nom a les versions recents d'iOS d'aleshores.

La majoria imita serveis reals: fmld per fmfd, aggregatenotd per aggregated, launchafd per launchd, nehelprd per nehelper, roleaccountd per xpcroleaccountd. Per això importa la grafia exacta.

jq -r '.[]|select(.bundle_id==null or .bundle_id=="")|[.first_isodate,.isodate,.proc_name]|@tsv' salida/datausage.json | sort -u

Segons MVT, els processos sense bundle_id vàlid poden merèixer atenció. És un llistat per encreuar, no un resultat.

Registres esborrats a mitges

Pegasus va esborrar noms de ZPROCESS sense esborrar les files de ZLIVEUSAGE: queden files d'ús que apunten a un procés que no existeix. Amnistia ho va veure sempre juntament amb altres indicadors, i mai als iPhone nets que va analitzar. Serveix per datar. No és prova per si sol.

jq -r '.[]|select(.proc_name==null or .proc_name=="")|[.live_isodate,.live_proc_id,.wwan_in,.wwan_out]|@tsv' salida/datausage.json

# directament sobre la còpia desxifrada; fitxer 0d/0d609c54856a9bb2d56729df1d68f2958a88426b
SELECT l.Z_PK, l.ZHASPROCESS, datetime(l.ZTIMESTAMP+978307200,'unixepoch')
FROM ZLIVEUSAGE l LEFT JOIN ZPROCESS p ON l.ZHASPROCESS=p.Z_PK WHERE p.Z_PK IS NULL;

Redireccions de Safari

En la injecció de xarxa, la persona demanava un web normal i el navegador acabava en un altre: una visita a Yahoo va saltar a bun54l2b67.get1tn0w.free247downloads[.]com:30495/szev4hz. Cridava l'atenció pel subdomini de quart nivell, el port alt i la ruta aleatòria.

  • L'historial de Safari dura pocs mesos i pot haver-se purgat. Amnistia va trobar els mateixos dominis a Favicon.db, que MVT només llegeix en sistema de fitxers.
  • Safari no sembla desar la cadena completa: els dominis intermedis apareixen als Session Resource logs (webkit_session_resource_log).
  • També passa fora del navegador: un cas es va produir en previsualitzar un enllaç dins de l'app de Twitter.

Altres pistes de l'informe

  • Library/Preferences/com.apple.CrashReporter.plist a RootDomain: apareix al costat d'infeccions, segons Amnistia probablement per tallar els informes d'errors a Apple. Pista, no indicador.
  • Consultes a comptes d'iMessage desconeguts, a idstatuscache, poc abans dels processos. Buit o absent des d'iOS 14.7.
  • Segons Amnistia, Pegasus semblava haver deixat de ser persistent: el binari no es recupera del disc.
jq -r '.[]|select(.relative_path|test("CrashReporter"))|[.domain,.relative_path,.modified]|@tsv' salida/manifest.json

Android: Amnistia diu que hi ha força menys traces accessibles que a iOS, així que l'absència de rastre pesa encara menys.

Font: Amnistia: Forensic Methodology Report (s'obre en una altra pestanya).

Captures i regles SuricataDel tauler al pcap.

NFStream agrega paquets en fluxos i classifica amb nDPI. Suricata alerta amb regles. Tots dos escriuen a InfluxDB i Grafana ho mostra. El tauler esborra als 5 dies: exporta abans.

Captura

tmux                                                    # perquè no mori amb l'SSH
sudo tcpdump -i wlan0 -w $(date +%Y%m%d%H%M)_captura.pcap
# ara, wifi del mòbil. Uns 3 dies d'ús normal. Ctrl+C per aturar.
sha256sum *_captura.pcap

Exportar alertes i fluxos

influx -database 'suricata' -execute 'SELECT * FROM "suricata"."suricata_5d"."alert"' -format 'csv' > alertas.csv
influx -database 'flows' -execute 'SELECT * FROM "flows"."flows_5d"."flow"' -format 'csv' > flujos.csv

Fluxos: requested_server_name, dst_ip, application_name, src2dst_bytes, dst2src_bytes, community_id. Alertes: alert_signature, alert_signature_id, alert_severity, community_id. Totes dues taules tenen community_id: fes-lo servir per encreuar una alerta amb el seu flux.

Mirar el pcap sense anar paquet a paquet

tshark -r c.pcap -Y 'dns.flags.response==0' -T fields -e frame.time_epoch -e dns.qry.name
tshark -r c.pcap -Y 'tls.handshake.type==1' -T fields -e frame.time_epoch -e ip.dst -e tls.handshake.extensions_server_name
tshark -r c.pcap -q -z conv,ip
  • Treu dominis únics i lleva el que reconeixes: Apple, Google, les apps de la persona. Mira el que queda.
  • Busca regularitat amb el mòbil quiet i enviaments desproporcionats: src2dst_bytes alt.
  • El país del servidor no decideix res per si sol. PTS ho planteja en relació amb la persona i el seu model d'amenaça.
  • Amb DNS xifrat veuràs menys noms. Una IP al núvol tampoc no diu de qui és.

Regles

Són a /var/lib/suricata/rules/suricata.rules i s'actualitzen cada dia: ET Open i les de PTS (s'obre en una altra pestanya) a partir d'Echap. Suricata funciona en mode IDS: avisa, no bloqueja. Davant d'una alerta, busca'n la regla i llegeix-la:

grep -F 'sid:1000001;' /var/lib/suricata/rules/suricata.rules

alert dns $HOME_NET any -> any any (msg:"PTS STALKERWARE TheTruthSpy (copy9[.]com)";
  metadata: type stalkerware; dns.query; content:"copy9.com"; depth:9; nocase; endswith;
  fast_pattern; reference:url,github.com/AssoEchap/stalkerware-indicators;
  classtype:targeted-activity; sid:1000001; rev:1;)

És una coincidència de nom en una consulta DNS, i només això. reference diu d'on surt i classtype com es classifica.

Per afegir regles, no editis el fitxer, que se sobreescriu. Publica-les en un URL:

sudo suricata-update add-source MIAS https://ejemplo.org/mias.rules
sudo suricata-update
sudo suricatasc -c reload-rules

Per reanalitzar un pcap amb regles actuals:

mkdir -p suri/
sudo suricata -r c.pcap -S /var/lib/suricata/rules/suricata.rules -l suri/

Fonts: arquitectura (s'obre en una altra pestanya), anàlisi de trànsit (s'obre en una altra pestanya), exportar (s'obre en una altra pestanya), regles pròpies (s'obre en una altra pestanya), g2 (s'obre en una altra pestanya).

Desxifrar el TLS d'una app sospitosaEn un mòbil de laboratori. Mai en el de la persona.

Això no es fa amb el mòbil de la persona. Exigeix un Android rootejat dedicat a l'anàlisi, i serveix per estudiar una app concreta. El que en surt inclou claus, text en clar i identificadors de l'aparell: tracta-ho com a prova.

PiRogue instal·la Frida al mòbil de proves i treu les claus TLS de la memòria mentre captura el trànsit. No totes les biblioteques TLS estan suportades, així que pot quedar trànsit sense desxifrar. Connecta el mòbil a la PiRogue per USB i pel seu wifi, instal·la l'app i no l'obris.

adb devices
pirogue-intercept-gated -o $(date +%Y%m%d%H%M)_salida
# "Waiting for data": obre l'app, fes-la servir. Ctrl+C per aturar.
cd <salida>
editcap --inject-secrets tls,sslkeylog.txt traffic.pcap decrypted.pcapng
tshark -2 -T ek --enable-protocol communityid -Ndmn -r decrypted.pcapng > traffic.json
pirogue-view-tls -i traffic.json -t socket_trace.json

Si l'has llançat amb sudo, abans: sudo chown -R pi:pi <salida>. També pots obrir el pcap a Wireshark i indicar sslkeylog.txt a Settings, Protocols, TLS.

  • traffic.pcap: la captura. sslkeylog.txt: claus en format NSS.
  • socket_trace.json: pila de crides de cada operació de socket.
  • aes_info.json: operacions AES i RSA, amb text en clar i xifrat.
  • device.json, ad_ids.txt, experiment.json, screen.mp4: aparell, ID de publicitat, temps, vídeo.

Font: PTS g8 (s'obre en una altra pestanya).

Falsos positius i quan escalarAbans de dir res a ningú.

El que sol ser soroll

  • La teva pròpia adquisició: deixa rastre de depuració USB i shell d'ADB. Situa la teva activitat a la línia temporal abans de llegir-la.
  • Apps de fora de Play Store: una botiga alternativa és INFO; per navegador o ADB, MEDIUM. MVT no sap si això és normal per a ella.
  • Perfils i MDM: normals en un mòbil de feina o de centre educatiu, o un filtre DNS que hi va posar ella.
  • Ajustos: l'accessibilitat activada o els informes desactivats poden ser decisió seva. Mira qui i quan.
  • Pedaç antic: parla de risc, no d'infecció.
  • Redirecció ràpida (MEDIUM): d'HTTP a un altre domini en menys d'un segon. Criteri nostre: la publicitat i els escurçadors també ho fan.
  • Una pàgina desada que esmenta l'adreça sol ser una notícia sobre l'spyware. Un domini compartit també pot donar coincidències innocents.
  • Processos sense bundle_id: per si sols no proven res.
  • Regles Suricata: moltes són soroll, com publicitat o rastrejadors. Llegeix la regla.
  • Rayhunter: falses alarmes en aterrar un avió, xifratge nul per mala configuració de la xarxa i heurístiques que varien entre els EUA i Europa.

Abans de dir-li res

Criteri nostre. Per a cada coincidència:

  • Quin indicador exacte, de quina col·lecció, i quin valor del mòbil ha coincidit? Llegeix la font de l'indicador.
  • La data encaixa amb la seva història i amb la campanya?
  • Què hi ha abans i després a timeline.csv? Hi ha una segona traça independent?
  • Que ho revisi una altra persona. Comunica "hi ha alguna cosa que requereix revisió", no "estàs infectada", i no facis servir aquest mòbil per parlar del cas.

Quan escalar

  • Qualsevol coincidència CRITICAL que sobrevisqui a tot això.
  • Avís oficial d'Apple o d'una altra plataforma, encara que no surti res.
  • Periodistes, activistes o defensores en risc, encara que surti net: amb els indicadors públics no n'hi ha prou, i un suport fiable requereix indicadors no públics.
  • Sospita d'accés físic: mòbil retingut o eines d'extracció.
  • Una traça que no entens. Això també val.

Atura't. No reinstal·lis, no restableixis, no esborris res i no visitis les adreces. Desa l'adquisició, els hashes i command.log, i pregunta com els volen rebre. No ho pugis enlloc.

Fonts: MVT (s'obre en una altra pestanya), PTS g2 (s'obre en una altra pestanya), Rayhunter (s'obre en una altra pestanya), Zero Breach (s'obre en una altra pestanya).

Antenes falses: 2G i RayhunterPer a organitzadores d'un esdeveniment o una acció.
Una antena falsa, per exemple en una furgoneta, es fa passar per la de la teva companyia i identifica els mòbils propers.

Un IMSI catcher és una antena falsa que identifica els mòbils que té a prop. A diferència de l'spyware, no toca el telèfon, i qui l'opera ha de ser a la zona.

Com entra l'spyware comercial

Són les tres vies que documenten les investigacions d'Amnistia Internacional. Saber per on entra ajuda a saber què cal buscar.

Per un enllaç: cal que el toquis.
Sense tocar res ("zero clics").
Des de la xarxa: et desvien a un web trampa, muntat dins de la xarxa.

Esquemes d'elaboració pròpia a partir de Forensic Methodology Report: How to catch NSO Group's Pegasus (s'obre en una altra pestanya) (2021) i Predator Files: Technical deep-dive (s'obre en una altra pestanya) (2023), d'Amnistia Internacional. Aquest hacklab no té cap relació amb Amnistia Internacional.

Recupera la resta de la teva vida digital

A resetea.net.

Sobre aquesta guia

La manté Hacklab la Raíz. El que afirma surt de les fonts enllaçades a sota. No substitueix una anàlisi forense ni una advocada. Si veus un error o un menú que ha canviat, escriu a hacklab-laraiz@riseup.net.

Fonts