Abans de tocar res
Es perden les proves.
Per buscar ajuda i canviar contrasenyes, un de confiança.
Amb data i captures. Si és seriós, que ho sàpiga algú de confiança.
Què et passa? Comença per aquí
Vaig a la vaga o a una maniQuè fer amb el mòbil abans, durant i després.
M'ha arribat un avís d'Apple, Google o WhatsAppCom saber si és real i què fer.
M'he quedat sense línia, m'arriben codis o les trucades em van estranyesPrimer, el que és urgent. Després, cinc minuts.
Algú sap el que escric per WhatsApp o per correuMira en quins aparells tens el compte obert.
Crec que m'espien o que m'han posat alguna cosa al mòbil o a l'ordinadorQuinze minuts. Passos per a iPhone, Android i ordinador.
Pot ser una intervenció judicial?Què es pot saber i què diu la llei.
Vinc a muntar el laboratoriZero Breach Toolkit, MVT i PiRogue.
On passa cada punxada
Què és exactament cada cosa?Són cinc casos diferents, i un no es veu des del mòbil.
| Què és | Ho 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
Abans
- Fes còpia de seguretat.
- Posa un codi llarg i treu Face ID o empremta.
- Acordeu un punt de trobada per si no hi ha xarxa.
- Valora portar un mòbil amb poques dades, o cap.
- Repassa els dispositius vinculats i activa la verificació en dos passos.
- Si organitzes alguna cosa, mira les antenes falses.
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
- 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.
- 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ç.
- Si és real: indica que ho han intentat, no que t'hagin infectat. No esborris, no restauris i no actualitzis.
- Demana ajuda: línies d'ajuda.
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.
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 | Et 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. |
1.2 Què vol dir
No hi ha desviament. Només vol dir això: no diu res d'apps espia ni d'intervencions.
- 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#.
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.
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
| Companyia | Telèfon | Horari |
|---|---|---|
| Movistar | 1004 | Cada dia, de 9 a 22 |
| Vodafone | 22123 | 24 hores |
| Orange | 1470 | De dilluns a dissabte, de 9 a 22 |
| Yoigo | 622 622 622 622 des d'una altra companyia | 24 hores |
| O2 | 1551 | Cada dia, de 9 a 22 |
| Digi | 1200 | Cada 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
- Hi ha algun desviament actiu a la meva línia? A quin número?
- S'ha fet fa poc un duplicat de SIM o un canvi a eSIM? Quan i on?
- Hi ha altres línies al meu nom, o s'ha demanat alguna portabilitat o canvi de titular?
- 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
- 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).
Encara tens dubtes? Revisa el mòbil ↓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
É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.
2.2 Què vol dir el que notes
Bateria, codis que no has demanat, enllaços estranys, sorolls...
| El que notes | El que sol ser |
|---|---|
| Bateria que dura poc, mòbil calent, gasta dades | Bateria 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 trucades | Mala cobertura. Una intervenció moderna no sona. |
| Codis de verificació que no has demanat | Algú 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òbil | Mira primer les sessions obertes. Si no hi ha res, ves al pas 3. |
| Alerta oficial d'Apple, Google o WhatsApp sobre atacs d'spyware | Aquesta 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.
"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
- 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@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.email.apple.com - 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.
- 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.
- 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.
- Apps: baixa fins a la Biblioteca d'apps, escriu al cercador i repassa la llista. Busca el que no recordis haver instal·lat.
- Actualitza: Configuració > General > Actualització de programari. Si no hi ha cap sospita forta, és de les millors coses que pots fer.
- 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.
Android, 7 passos
Els menús canvien segons la marca. Si no trobes alguna cosa, fes servir el cercador de dalt de tot a Configuració.
- 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.
- 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.
- 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.
- Permisos especials: a Configuració > Aplicacions > Accés especial d'aplicacions, mira "Accés a les notificacions" i "Instal·la aplicacions desconegudes".
- 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.
- Depuració per USB: si a Opcions per a desenvolupadors està activada i no has estat tu, és un senyal.
- 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).
Ordinador, 5 passos
- 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.
- 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.
- Gestió remota al Mac: Configuració del Sistema > General > Gestió de dispositius. Si el Mac és personal, no hi hauria d'aparèixer res.
- 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.
- Actualitza el sistema i el navegador, tret que tinguis una sospita forta.
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 aparell2.4 Què fer amb el que has vist
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.
Fes captures amb data i tanca aquesta sessió. Si no ho tens clar, ves a demanar ajuda.
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 el mòbil.
- Instal·la les actualitzacions pendents, del sistema i de les apps.
- Repassa els dispositius vinculats de WhatsApp, Signal, Telegram i Google.
- Fes servir un codi de desbloqueig llarg, no un patró ni quatre xifres.
- Esborra les apps que ja no fas servir.
Blinda els teus comptesContrasenyes, claus i robatori del mòbil.
- Evita l'SMS com a segon factor si tens una altra opció: és el més feble (s'obre en una altra pestanya). Millor una passkey o una app de codis.
- Claus físiques si corres risc: registra'n dues, perquè si perds l'única et quedes fora.
- iPhone robat: activa la Protecció en cas de robatori del dispositiu (s'obre en una altra pestanya) a Configuració > Face ID i codi.
- Abans de la vaga o d'una mani, mira aquesta part.
Demana ajuda
Pots venir directament aquí, sense fer el que hi ha abans.
3.1 Línies d'ajuda
| Qui | Per 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 |
|
3.2 Guies per seguir, en castellà
- Kit de primers auxilis digitals (s'obre en una altra pestanya): et guia segons el que et passi.
- Guies d'autodefensa digital de TeknoKasa (s'obre en una altra pestanya), de Madrid: bloqueig del mòbil, detenció i més.
- Avalua els teus riscos (s'obre en una altra pestanya), de l'EFF: sis preguntes per fer el teu pla.
- Spyware mercenari (s'obre en una altra pestanya), de SocialTIC.
- Data Detox Kit (s'obre en una altra pestanya), de Tactical Tech.
- Autocura per a qui passa per això (s'obre en una altra pestanya), del mateix kit.
3.3 Punts de trobada
Estem preparant punts per revisar mòbils en persona. Els publicarem aquí.
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.
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.
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.
MVT + AndroidQF (s'obre en una altra pestanya)
PiRogue Tool Suite (s'obre en una altra pestanya)
Rayhunter (s'obre en una altra pestanya)Logos dels seus respectius projectes, només per identificar-los. Aquest hacklab no hi té cap relació.
Què és cada eina
| Eina | Què fa | Per a qui |
|---|---|---|
| Zero Breach Toolkit | Busca 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.
╔══════════════════╗ ╔════════╗ ╔═══════════════════╗ ╔══════════╗ ╔═════════════╗ ╔══════════════╗ ║ CAS ║ ║ IOC ║ ║ ADQUIRIR ║ ║ HASH ║ ║ ANALITZAR ║ ║ ESCALAR ║ ╟──────────────────╢ ╟────────╢ mòbil ╟───────────────────╢ ╟──────────╢ ╟─────────────╢ si hi ha dubte ╟──────────────╢ ║ consentiment ║─────▶║ al dia ║──────────▶║ còpia o AndroidQF ║─────▶║ custòdia ║─────▶║ 1 cobertura ║───────────────────▶║ Access Now ║ ║ hipòtesi i dates ║ ╚════════╝ ╚═══════════════════╝ ╚══════════╝ ║ 2 alertes ║ ║ Security Lab ║ ╚══════════════════╝ ╚═════════════╝ ╚══════════════╝
╔══════════════════╗
║ CAS ║
╟──────────────────╢
║ consentiment ║
║ hipòtesi i dates ║
╚══════════════════╝
│
▼
╔════════╗
║ IOC ║
╟────────╢
║ al dia ║
╚════════╝
│ mòbil
▼
╔═══════════════════╗
║ ADQUIRIR ║
╟───────────────────╢
║ còpia o AndroidQF ║
╚═══════════════════╝
│
▼
╔══════════╗
║ HASH ║
╟──────────╢
║ custòdia ║
╚══════════╝
│
▼
╔═════════════╗
║ ANALITZAR ║
╟─────────────╢
║ 1 cobertura ║
║ 2 alertes ║
╚═════════════╝
│ si hi ha dubte
▼
╔══════════════╗
║ ESCALAR ║
╟──────────────╢
║ Access Now ║
║ Security Lab ║
╚══════════════╝
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
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.
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.
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.
PiRogue Tool SuiteRaspberry Pi que analitza el trànsit.
É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/, 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.
╔═════════════════════════╗ ╔═════════════════╗ ║ INVESTIGACIONS ║ STIX2 ║ mvt-indicators ║ ╔═══════════════════╗ ╔═════╗ ╟─────────────────────────╢──────────▶╟─────────────────╢─────▶║ mvt download-iocs ║─────▶║ MVT ║ ║ Amnistia, Echap, altres ║ ║ indicators.yaml ║ ╚═══════════════════╝ ╚═════╝ ╚═════════════════════════╝ ╚═════════════════╝
╔═════════════════════════╗
║ INVESTIGACIONS ║
╟─────────────────────────╢
║ Amnistia, Echap, altres ║
╚═════════════════════════╝
│ STIX2
▼
╔═════════════════╗
║ mvt-indicators ║
╟─────────────────╢
║ indicators.yaml ║
╚═════════════════╝
│
▼
╔═══════════════════╗
║ mvt download-iocs ║
╚═══════════════════╝
│
▼
╔═════╗
║ MVT ║
╚═════╝╔═════════════════╗ cada dia ╔════════════════╗ ╔══════════╗ ║ ET OPEN + ECHAP ║─────────────▶║ suricata.rules ║─────▶║ SURICATA ║ ╚═════════════════╝ ╚════════════════╝ ╚══════════╝
╔═════════════════╗
║ ET OPEN + ECHAP ║
╚═════════════════╝
│ cada dia
▼
╔════════════════╗
║ suricata.rules ║
╚════════════════╝
│
▼
╔══════════╗
║ SURICATA ║
╚══════════╝
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-indicators (s'obre en una altra pestanya): la llista que descarrega MVT. Pegasus, Predator, RCS Lab, stalkerware i altres.
- AmnestyTech/investigations (s'obre en una altra pestanya): els de les investigacions d'Amnistia Internacional.
- Echap (s'obre en una altra pestanya): stalkerware. També alimenta les regles de PiRogue.
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.
╔═════════════════╗
╔═══════════════╗ ╔════════════════╗ ╔══════════════╗ ║ SORTIDA ║
╔════════╗ ║ CÒPIA XIFRADA ║ ║ DESXIFRAR ║ ║ CHECK-BACKUP ║ ╟─────────────────╢
║ IPHONE ║ USB ╟───────────────╢ ╟────────────────╢ ╟──────────────╢ ║ alerts.json ║
╚════════╝────────▶║ backup2 ║─────▶║ decrypt-backup ║─────▶║ + indicadors ║─────▶║ timeline.csv ║
║ <UDID>/ ║ ╚════════════════╝ ╚══════════════╝ ║ *_detected.json ║
╚═══════════════╝ ║ command.log ║
╚═════════════════╝ ╔════════╗
║ IPHONE ║
╚════════╝
│ USB
▼
╔═══════════════╗
║ CÒPIA XIFRADA ║
╟───────────────╢
║ backup2 ║
║ <UDID>/ ║
╚═══════════════╝
│
▼
╔════════════════╗
║ DESXIFRAR ║
╟────────────────╢
║ decrypt-backup ║
╚════════════════╝
│
▼
╔══════════════╗
║ CHECK-BACKUP ║
╟──────────────╢
║ + indicadors ║
╚══════════════╝
│
▼
╔═════════════════╗
║ SORTIDA ║
╟─────────────────╢
║ alerts.json ║
║ timeline.csv ║
║ *_detected.json ║
║ command.log ║
╚═════════════════╝
╔═══════════════╗ ╔══════════════╗ ╔══════════════════╗ ╔═════════════════╗ ╔═════════════╗
║ ANDROID ║ ║ ANDROIDQF ║ ║ <UUID>.zip[.age] ║ ║ CHECK-ANDROIDQF ║ ║ SORTIDA ║
╟───────────────╢ adb ╟──────────────╢ ╟──────────────────╢ extreure ╟─────────────────╢ ╟─────────────╢
║ depuració USB ║────────▶║ recol·lector ║─────▶║ hashes.csv ║─────────────▶║ carpeta extreta ║─────▶║ alerts.json ║
╚═══════════════╝ ║ al mòbil ║ ║ acquisition.json ║ ║ + indicadors ║ ║ command.log ║
╚══════════════╝ ╚══════════════════╝ ╚═════════════════╝ ╚═════════════╝ ╔═══════════════╗
║ ANDROID ║
╟───────────────╢
║ depuració USB ║
╚═══════════════╝
│ adb
▼
╔══════════════╗
║ ANDROIDQF ║
╟──────────────╢
║ recol·lector ║
║ al mòbil ║
╚══════════════╝
│
▼
╔══════════════════╗
║ <UUID>.zip[.age] ║
╟──────────────────╢
║ hashes.csv ║
║ acquisition.json ║
╚══════════════════╝
│ extreure
▼
╔═════════════════╗
║ CHECK-ANDROIDQF ║
╟─────────────────╢
║ carpeta extreta ║
║ + indicadors ║
╚═════════════════╝
│
▼
╔═════════════╗
║ SORTIDA ║
╟─────────────╢
║ alerts.json ║
║ command.log ║
╚═════════════╝
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'antictimeline_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>.jsoni<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, aDataUsage.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: llegeixps.txt, però AndroidQF 1.8.3 escriuprocesses.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 portenpackage_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.plistaRootDomain: 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.
╔═════════╗ ╔══════════════╗ ╔══════════╗ ╔═════════╗ ║ TRÀNSIT ║ ║ NFSTREAM ║ ║ INFLUXDB ║ ║ GRAFANA ║ ╟─────────╢─────▶╟──────────────╢─────▶╟──────────╢─────▶╟─────────╢ ║ wlan0 ║ ║ fluxos, nDPI ║ ║ 5 dies ║ ║ tauler ║ ╚═════════╝ ╚══════════════╝ ╚══════════╝ ╚═════════╝
╔═════════╗
║ TRÀNSIT ║
╟─────────╢
║ wlan0 ║
╚═════════╝
│
▼
╔══════════════╗
║ NFSTREAM ║
╟──────────────╢
║ fluxos, nDPI ║
╚══════════════╝
│
▼
╔══════════╗
║ INFLUXDB ║
╟──────────╢
║ 5 dies ║
╚══════════╝
│
▼
╔═════════╗
║ GRAFANA ║
╟─────────╢
║ tauler ║
╚═════════╝╔═════════╗ ╔════════════════╗ ╔══════════╗ ╔═════════╗ ║ TRÀNSIT ║ ║ SURICATA ║ ║ INFLUXDB ║ ║ GRAFANA ║ ╟─────────╢─────▶╟────────────────╢─────▶╟──────────╢─────▶╟─────────╢ ║ wlan0 ║ ║ ET Open, Echap ║ ║ 5 dies ║ ║ tauler ║ ╚═════════╝ ╚════════════════╝ ╚══════════╝ ╚═════════╝
╔═════════╗
║ TRÀNSIT ║
╟─────────╢
║ wlan0 ║
╚═════════╝
│
▼
╔════════════════╗
║ SURICATA ║
╟────────────────╢
║ ET Open, Echap ║
╚════════════════╝
│
▼
╔══════════╗
║ INFLUXDB ║
╟──────────╢
║ 5 dies ║
╚══════════╝
│
▼
╔═════════╗
║ GRAFANA ║
╟─────────╢
║ tauler ║
╚═════════╝╔═════════╗ ╔════════╗ ║ TRÀNSIT ║ ╔═════════╗ ║ .pcap ║ ╟─────────╢─────▶║ TCPDUMP ║─────▶╟────────╢ ║ wlan0 ║ ╚═════════╝ ║ a part ║ ╚═════════╝ ╚════════╝
╔═════════╗
║ TRÀNSIT ║
╟─────────╢
║ wlan0 ║
╚═════════╝
│
▼
╔═════════╗
║ TCPDUMP ║
╚═════════╝
│
▼
╔════════╗
║ .pcap ║
╟────────╢
║ a part ║
╚════════╝
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_bytesalt. - 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.
╔══════════════════╗ ╔═════════════════════════╗ ╔═══════════════╗ ║ ANDROID ROOTEJAT ║ ║ PIROGUE ║ ║ .pcap + CLAUS ║ ╟──────────────────╢ USB i wifi ╟─────────────────────────╢ ╟───────────────╢ ║ Frida ║───────────────▶║ pirogue-intercept-gated ║─────▶║ traffic.pcap ║ ║ només laboratori ║ ╚═════════════════════════╝ ║ sslkeylog.txt ║ ╚══════════════════╝ ╚═══════════════╝
╔══════════════════╗
║ ANDROID ROOTEJAT ║
╟──────────────────╢
║ Frida ║
║ només laboratori ║
╚══════════════════╝
│ USB i wifi
▼
╔═════════════════════════╗
║ PIROGUE ║
╟─────────────────────────╢
║ pirogue-intercept-gated ║
╚═════════════════════════╝
│
▼
╔═══════════════╗
║ .pcap + CLAUS ║
╟───────────────╢
║ traffic.pcap ║
║ sslkeylog.txt ║
╚═══════════════╝╔══════════════════╗ tshark ╔══════════════╗ ╔══════════════════╗ ║ decrypted.pcapng ║───────────▶║ traffic.json ║─────▶║ pirogue-view-tls ║ ╚══════════════════╝ ╚══════════════╝ ╚══════════════════╝
╔══════════════════╗
║ decrypted.pcapng ║
╚══════════════════╝
│ tshark
▼
╔══════════════╗
║ traffic.json ║
╚══════════════╝
│
▼
╔══════════════════╗
║ pirogue-view-tls ║
╚══════════════════╝
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.
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.
- Access Now Digital Security Helpline (s'obre en una altra pestanya): societat civil, activistes, mitjans, defensores. Gratuïta, 24/7, 10 idiomes, també castellà. Diuen que responen en dues hores. Comproven que el cas entri en el seu mandat.
help@accessnow.org, amb PGP (s'obre en una altra pestanya). - Amnesty Security Lab (s'obre en una altra pestanya): periodistes, activistes i organitzacions en risc d'atacs dirigits.
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ó.
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.
- Apaga el 2G: la Protecció Avançada d'Android (s'obre en una altra pestanya) ho evita en mòbils compatibles, i a l'iPhone el Mode d'aïllament (s'obre en una altra pestanya) desactiva el 2G i el 3G. Et pots quedar sense xarxa on només hi hagi aquestes.
- Rayhunter (s'obre en una altra pestanya) (EFF) busca senyals d'antenes falses amb un router mòbil barat. A Europa recomanen (s'obre en una altra pestanya) el TP-Link M7350, però no compris la versió de maquinari 10.0 (s'obre en una altra pestanya): és la que es ven nova i no funciona. Busca'l de segona mà i confirma la versió abans de pagar. Ha de portar una SIM d'una operadora local, encara que no tingui cap pla actiu, i una targeta SD en FAT.
./installer tplink # tauler a http://192.168.0.1:8080 rayhunter-check -p captura.qmdl # reanalitzar a l'ordinador
Desactiva l'estalvi d'energia al tauler de TP-Link o deixarà de gravar. Les heurístiques (s'obre en una altra pestanya) miren peticions d'IMSI sense autenticació, baixades a 2G, xifratge nul i SIB incomplets. Una alerta no prova que hi hagi una antena falsa. La captura pot contenir la teva IMSI i les antenes properes, cosa que pot revelar on eres. L'EFF aconsella consultar una advocada fora dels EUA.
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.
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
Revisat el novembre del 2026. Els menús i els telèfons canvien: si alguna cosa no coincideix, refia't de la font oficial.
- Amnistia Internacional: metodologia forense de Pegasus (s'obre en una altra pestanya) i Predator Files (s'obre en una altra pestanya)
- BOE-B-2026-33966: contracte de la Guàrdia Civil (s'obre en una altra pestanya)
- Digital First Aid Kit (s'obre en una altra pestanya), EFF: Surveillance Self-Defense (s'obre en una altra pestanya), Coalition Against Stalkerware (s'obre en una altra pestanya) i Tactical Tech: Holistic Security (s'obre en una altra pestanya)
- Apple: notificacions d'amenaces (s'obre en una altra pestanya), mode d'aïllament (s'obre en una altra pestanya) i Comprovació de seguretat (s'obre en una altra pestanya)
- Google: Play Protect (s'obre en una altra pestanya) i Protecció avançada (s'obre en una altra pestanya)
- Vodafone: desviament de trucades (s'obre en una altra pestanya) i O2: contacte (s'obre en una altra pestanya)
- Selectra: codis de desviament 2026 (s'obre en una altra pestanya)
- Zero Breach Toolkit (s'obre en una altra pestanya), MVT (s'obre en una altra pestanya), AndroidQF (s'obre en una altra pestanya) i PiRogue Tool Suite (s'obre en una altra pestanya)