giovedì 24 agosto 2023

Published agosto 24, 2023 by Django Faiola with 0 comment

Come correggere l'encoding nei JSON di Facebook

Facebook ha una bellissima funzione che permette di scaricare su richiesta l'archivio dei tuoi dati personali.

Dal menu Impostazioni seleziona "Le tue informazioni su Facebook" e infine seleziona "Scarica le tue informazioni". Ora puoi richiedere un download.

Non è lo scopo di questo post elencare tutte le opzioni disponibili nella fase di creazione della copia di backup di Facebook; in sintesi è possibile filtrare la quantità di dati per periodo, categorie, qualità dei contenuti multimediali e per finire il formato. Due formati di presentazione dei dati sono disponibili: HTML e JSON. 

Il formato JSON è il nostro caso di studio e a mio avviso il formato consigliato da scegliere per un'analisi più completa (basti pensare ai timestamp che nel formato JSON sono di valore numerico UTC mentre nell'HTML sono rappresentazioni localizzate di stringhe di difficile interpretazione).

Tuttavia se le stringhe contengono caratteri Unicode (es. le lettere accentate), i parser JSON non sono in grado di ricostruire le stringhe originali.  

HTML

JSON

A prima vista sembra che Facebook rappresenti i caratteri in UTF-8 in modo non standard. Infatti, se prendiamo come riferimento il testo "può" nel formato HTML, il corrispondente testo in JSON è "può". Cosa c'è di sbagliato? Questa è la rappresentazione del testo in esame del file JSON in HxD Hex Editor:

Il carattere "ò" è rappresentato dalla sequenza "\u00c3\u00b2" una coppia di caratteri Unicode che il parser interpreta come Latin-1 (che mappa esattamente i 256 caratteri ai 256 possibili valori di byte) "ò", invece dovrebbe essere un singolo carattere "\uc3b2". Questo significa che ogni carattere non ASCII è codificato due volte usando la sequenza di escape "\u00HH". Nel nostro caso il carattere "\uc3b2" è scritto come "\u00c3" (Ã) e "\u00b2" (²).

Soluzione

E' possibile correggere questa "anomalia" in due modi:

  1. Decodifica del JSON, codifica della stringa in Latin-1 e infine decodifica in UTF-8;
  2. Leggere il file come binario, individuare e sostituire tutte le doppie sequenze "\u00HH\u00HH" con l'unica sequenza "\uHHHH" e infine decodifica  come JSON.

WhatsAppIZZA utilizza il metodo 2: usa una semplice regular expression per eseguire il match e poi la sostituzione dei valori.

(?i)\\u00([a-f0-9]{2})

Nel nostro caso "\u00c3\u00b2", dai match c3 e b2 ottiene "\uc3b2" che in UTF-8 è proprio il carattere "ò".

Read More

giovedì 10 agosto 2023

Published agosto 10, 2023 by Django Faiola with 0 comment

Identificazione App in multiutente

dfAPKdngrader come identifica le app in multiutente? e quelle in modalità clone con la tecnologia nativa?

La logica di base è molto semplice. In primo luogo chi sono gli utenti configurati sul dispositivo?

adb shell pm list users
Users:
        UserInfo{0:Owner:13} running
        UserInfo{10:New user:10}

in questo caso sono presenti 2 utenti:

  1. id=0; name=Owner; flags=0x13 
  2. id=10; name=New user; flags=0x10

per ogni utente viene eseguito il comando per ottenere la lista di tutti i package installati:

adb shell pm list package -3 --user 0
package:com.whatsapp
package:fr.vinted
package:com.google.ar.core
package:com.rebelvox.voxer
package:it.subito

adb shell pm list package -3 --user 10
package:fr.vinted
package:com.kia.eu.mykia
package:com.wallapop

come è possibile notare il comando --user 10 mette in evidenza che i package com.kia.eu.mykiacom.wallapop sono stati installati solo per utente 10, mentre fr.vinted è presente su entrambi gli account.

dfAPKdngrader quindi associa a ogni package la lista degli id utenti.

Per quanto riguarda la tecnologia di clonazione nativa (Samsung Dual Messenger, Samsung Secure Folder, Huawei/Honor App Twin, Huawei PrivateSpace, Xiaomi Dual Apps, Oppo Clone Apps, Vivo App Clone, OnePlus Parallel Apps, Asus Twin Apps, LG Dual App, realme App Cloner, etc.) la questione si complica un pò e varie tecniche sono state implementate per cercare di identificare quella in uso e non per tutti i brand. dfAPKdngrader non è in grado di capire al 100% se l'utente è realmente un utente clone e l'identificazione è del tutto sperimentale.

Huawei/Honor App Twin

Sempre con la mia cavia Huawei Android 7 (Nougat), ho attivato la clonazione "App Gemella (App Twin)" di WhatsApp. Per poter identificare l'utente associato all'app gemella, in primo luogo dfAPKdngrader identifica il costruttore.

adb shell getprop ro.product.manufacturer
HUAWEI

Lista degli utenti

adb shell pm list users
Users:
        UserInfo{0:Proprietario:13} running
        UserInfo{10:Gemella:4000010} running

Da test effettuati (non è sicuro al 100%), sembra che l'utente clone è sempre identificato con l'id 10. Il nome dell'utente è una stringa localizzata "Gemella" per l'italiano "App Twin" per l'inglese.

Come si può vedere il programma mostra il badge (giallo) per indicare che è un app in multiutente e il badge (lavanda) per l'app clonata.

Samsung

Identificazione del costruttore

adb shell getprop ro.product.manufacturer
SAMSUNG

Samsung permette di clonare un'app con due tecnologie: "Dual Messenger" e "Secure Folder".

Lista degli utenti "Dual Messenger"

adb shell pm list users
Users:
        UserInfo{0:Pippo:13} running
        UserInfo{95:DUAL_APP:20000030} running

Il nome dell'utente è una stringa fissa "DUAL_APP", mentre per l'id è 95, variabile? Per i due dispositivi testati ho riscontrato sempre 95. Per ora l'identificazione Dual Messenger è basata solo sul nome fisso "DUAL_APP".

Lista degli utenti "Secure Folder" 

adb shell pm list users
Users:
        UserInfo{0:Pippo:13} running
        UserInfo{150:Secure Folder:10021030} running

Entrambi, nome dell'utente "Secure Folder" e id 150 sono fissi.

LG Dual App

Lista degli utenti
adb shell pm list users
Users:
        UserInfo{0:Pippo:13} running
        UserInfo{97:dual:1030} running

Da ricerche basate sul web, il nome dell'utente è fisso "dual" mentre l'id è variabile in un range 90..99. Valori più frequenti dell'id sono 97 e 98.

Tutto il resto...

Chi vuole dare un contributo per comprendere meglio l'identificazione delle app clonate native è libero di postare i suoi dati. Grazie in anticipo.

Riferimenti

Read More

sabato 5 agosto 2023

Published agosto 05, 2023 by Django Faiola with 0 comment

Aggiungere un'app a dfAPKdngrader

Vuoi aggiungere una tua app a dfAPKdngrader?

Molto semplice, pochi passi e l'app è disponibile nel programma. Vediamo come inserire per esempio WhatsApp:

  1. Rinomina il file della tua app "nuova app.apk" in "com.whatapp.apk" (packageName.apk);
  2. Sposta il file "com.whatapp.apk" nella cartella "APKs";
  3. Scarica l'icona in formato PNG e rinomina in "com.whatsapp.png" (packageName.png);
  4. Sposta il file "com.whatsapp.png" nella cartella "APKs";
  5. Apri il file "APKs.json" con un editor di testo (es: Notepad++);
  6. Aggiungi un nuovo oggetto alla fine dell'array packages e compila tutte le coppie proprietà/valori come segue (es: WhatsApp Messenger):
    },
    {
    "packageName": "com.whatsapp",
    "marketName": "WhatsApp Messenger",
    "category": "Communication",
    "versionCode": 450146,
    "versionName": "2.11.431",
    "minSdk": 7,
    "abiList": "armeabi, armeabi-v7a, x86, mips",
    "isCustom": true
    "state": "custom"
    }
  7. Salva il file ed esci;
  8. Esegui dfAPKdngrader.

APK Info

Andrea Lazzarotto ha sviluppato uno script in python "APK Info" che analizza un file .apk, ne verifica l'autorizzazione per il backup e infine genera il codice da inserire nel file di configurazione "APKs.json". Stupendo un po' di lavoro manuale in meno!

Note:

La coppia proprietà/valore "isCustom": true "state": "custom" è obbligatoria per indicare che l'applicazione è di tipo personale.

I possibili valori di "abiList" sono: noarch, armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64.

Se non desideri scaricare e associare l'immagine alla tua app puoi saltare i punti 3 e 4, verrà assegnata l'icona di default.


Read More
Published agosto 05, 2023 by Django Faiola with 0 comment

dfAPKdngrader (Forensic extraction tool for Android Backup APK Downgrade method)

 Introduzione

Progetto nato il 27 ottobre 2021 con l'idea di creare un nuovo strumento di semplice utilizzo e robusto allo stesso tempo come supporto valido per la comunità forense open-source/freeware in grado di eseguire il metodo del downgrade delle app su dispositivi Android.

Di recente ho ripreso il progetto iniziale con l'intento di potenziarlo, non dico al pari di quelli commerciali, ma non meno valido di questi. Dopo aver speso tanto, tanto tempo, sono riuscito a portarlo a un buon livello.

dfAPKdngrader è compatibile con Android OS 5.0 o superiore, supporta sia le app a singolo APK che i Bundle/Split, avvisa se l'app è installata in multiutente, esegue il ripristino automatico o manuale delle app in caso di downgrade fallito e per concludere solo le app che sono eleggibili per il downgrade, ovvero che hanno superato tutti i test di verifica, sono mostrate nella scheda APPLICAZIONI INSTALLATE DOWNGRADABILI.

Compatibile con Android 14 dalla versione 0.3.3.

Ultima versione

Windows | Linux

Il software è proprietario (Freeware - closed source) e per l'uso commerciale considera una piccola donazione valida come autorizzazione implicita al suo utilizzo.

Elenco delle app supportate

Attualmente supporta 400+ applicazioni di terze parti.

  1. 3BMeteo
  2. 99acres
  3. ABOUT YOU
  4. adidas Running
  5. AfreecaTV
  6. Airalo
  7. Airbnb
  8. AlfredCamera
  9. Algosa
  10. Alibaba.com
  11. AliExpress
  12. Alipay
  13. ALL.com (Accorhotels.com)
  14. Allegro
  15. AM - Ashley Madison
  16. Amazon Alexa
  17. Amazon Music
  18. Amazon Prime Video
  19. Amazon Seller
  20. Amazon Shopping
  21. Amberfog for VK
  22. American Airlines
  23. Aqua Mail
  24. Aruba PEC
  25. ASICS Runkeeper
  26. ASKfm
  27. ASOS
  28. Audiomack
  29. Auto.ru
  30. AutoNavi Gaode
  31. AutoScout24
  32. Azar
  33. Badoo
  34. Baidu Browser
  35. Baidu Map
  36. Baidu Netdisk
  37. BAND
  38. BBC News
  39. Bigo Live
  40. Bikemap
  41. BiP
  42. BlaBlaCar
  43. BlackBerry Messenger
  44. Bloom (YouLove)
  45. Bolt
  46. Bonjour RATP (RATP)
  47. bonprix
  48. BookMyShow
  49. Booksy
  50. Box
  51. Boxer
  52. BoyAhoy
  53. Bring!
  54. Brosix
  55. Bumble
  56. Burger King Italia
  57. Burner
  58. CallApp (CallApp Contacts)
  59. CamSam
  60. CamScanner
  61. Careem
  62. Cartão Continente
  63. Cashify
  64. Chalo (zophop)
  65. Chat & Date
  66. ChatON
  67. CheckMyTrip
  68. Coffee Meets Bagel
  69. Cookpad
  70. CSL
  71. Curb
  72. CyberGhost VPN
  73. DAILYHOTEL (데일리호텔)
  74. Daraz
  75. Daum
  76. Deliveroo
  77. Deliveroo Rider
  78. Depop
  79. Dhgate
  80. Disco
  81. Dolap
  82. Dolphin Browser
  83. DoorDash
  84. droom
  85. Dropbox
  86. Dubsmash
  87. DuckDuckGo Privacy Browser
  88. Duolingo
  89. EatSure (Faasos)
  90. ebay
  91. ebay Annunci
  92. eBay Kleinanzeigen
  93. efootwear.eu
  94. eHarmony
  95. Endomondo
  96. enjoei
  97. eToro
  98. Euronics
  99. Evernote
  100. Expedia
  101. Eyecon
  102. FaceApp
  103. Facebook
  104. Facebook Messenger
  105. Familo (Familonet)
  106. Favor
  107. Feeld
  108. Finally
  109. Fineco
  110. FireChat
  111. Firefox Browser
  112. FITAPP
  113. Fitbit
  114. Fiverr
  115. Flipboard
  116. Flyp
  117. FM WhatsApp
  118. foodora (OnlinePizza)
  119. foodpanda
  120. Foody
  121. FREENOW (mytaxi)
  122. FREENOW for drivers (mytaxi)
  123. FreeTone
  124. Fresh To Home
  125. GB WhatsApp
  126. Geocaching®
  127. Getcontact
  128. GialloZafferano
  129. Glovo
  130. Gmail
  131. GMX Mail (Mail)
  132. GO SMS Pro
  133. Goibibo
  134. Gojek
  135. Google Chrome
  136. Google Drive
  137. Google Maps
  138. Google Meet
  139. Google Talk
  140. Grab Driver
  141. Grab Taxi
  142. Grindr
  143. GroupMe
  144. Groupon
  145. GrubHub
  146. Hacoo (Hacoo SaraMart, Doop, SaraMart)
  147. happn
  148. HelloFresh
  149. Hike News & Content
  150. Hinge
  151. Hostelworld
  152. Houseparty
  153. Huawei Backup
  154. Hungama
  155. Hushed
  156. ICQ New
  157. idealista
  158. iFood comida e mercado em casa
  159. ilMeteo
  160. Imgur
  161. immowelt
  162. imo
  163. Indeed
  164. inDriver
  165. Instagram
  166. Intesa Sanpaolo Mobile
  167. Italo Treno
  168. ixigo
  169. Jack'd
  170. Jaumo
  171. JD Sports
  172. JingDong
  173. JioCinema
  174. Joongna
  175. Jumia
  176. Just Eat (ITA)
  177. Justdial
  178. K-9 Mail
  179. KakaoMetro
  180. KakaoNavi
  181. KakaoStory
  182. KakaoTalk
  183. Kaktus
  184. Kaufland
  185. KAYAK
  186. Keepsafe Photo Vault
  187. kik
  188. Klarna
  189. Klook
  190. Laiwang (来往)
  191. Lalamove
  192. Lazada
  193. letgo
  194. Libero Mail
  195. Lidl
  196. Lightning
  197. Like
  198. Lime (LimeBike)
  199. LINE
  200. LinkedIn
  201. Listonic
  202. Lovely
  203. LOVOO
  204. Mail Master
  205. Mail.ru
  206. MakeMyTrip Hotels, Flight, Bus
  207. Mamba
  208. Match (match.com)
  209. Maxthon browser
  210. McDonald's
  211. MediaWorld
  212. Meetic
  213. Meetup
  214. Mercado Libre
  215. MeWe
  216. Mileage Tracker & Log - MileIQ
  217. Mingle2
  218. MOMO
  219. momondo
  220. Mooney App
  221. Moovit
  222. My Airtel
  223. MyFitnessPal
  224. Myntra
  225. MYPEUGEOT APP
  226. NateOn UC
  227. NAVER Blog
  228. NAVER Cafe
  229. NAVER Mail
  230. NAVER Map
  231. NAVER MYBOX
  232. NAVER Search
  233. Neenbo
  234. Nextcloud
  235. Nike Run Club
  236. noon
  237. OK
  238. OkCupid
  239. Ola
  240. Omio (GoEuro)
  241. Once
  242. ONE NAVI
  243. ooVoo
  244. OpenSooq (السوق المفتوح)
  245. Opera
  246. Opera Mini (Android)
  247. Opera Mini (Native)
  248. Ourtime Date, Meet 50+ Singles
  249. ownCloud
  250. OZON (OZON.ru)
  251. Parler
  252. PayPal
  253. pCloud
  254. PedidosYa
  255. Pegasus
  256. Periscope
  257. Phone Tracker By Number
  258. Pinterest
  259. PlantNet Plant Identification (Pl@ntNet)
  260. Plenty of Fish
  261. Pocket
  262. Polarsteps
  263. Postepay
  264. Prezzi Benzina
  265. priceline
  266. Puffin Browser
  267. Pulse for Booking.com partners
  268. PUMATRAC
  269. PURE
  270. QQ
  271. QQ
  272. QQ International
  273. QQmail
  274. Radarbot
  275. Rail Russia (ЖД Билеты)
  276. Rapido
  277. ROMEO
  278. Ruhavik
  279. Ryanair
  280. Samsung Health
  281. SATUSEHAT Mobile
  282. Save Location GPS
  283. Scalapay
  284. Secondamano
  285. SHAREit
  286. SHEIN
  287. Shop Samsung
  288. Shopify
  289. Showroomprive
  290. Signal Private Messenger
  291. SinglesAroundMe
  292. SKOUT
  293. SkyDrive/OneDrive
  294. Skype
  295. Skype for Business
  296. Skyscanner
  297. Slack
  298. Snapchat
  299. Snapdeal
  300. SNCF Connect (Voyages-sncf.com)
  301. Social Deal
  302. Sogou Map
  303. Speedtest by Ookla
  304. Spicy
  305. Star Taxi
  306. Steam
  307. Subito.it
  308. Surge
  309. Sygic GPS Navigation
  310. talabat
  311. TamTam
  312. Tango
  313. TaoBao
  314. Tappsi Easy (Tappsi)
  315. TAXI 18300
  316. TAXI Deutschland
  317. taxi.eu
  318. TaxiMe Driver
  319. Tchibo
  320. Telegram
  321. Telegram X
  322. Telepass
  323. Tellonym
  324. Text Free
  325. Text Me
  326. TextNow
  327. textPlus
  328. Textra SMS
  329. The Weather Channel
  330. TheFork
  331. Threema
  332. TicketSwap
  333. TigerConnect (TigerText)
  334. TikTok
  335. TikTok (Asia)
  336. Tinder
  337. Tiscali Mail
  338. TMall (天猫)
  339. Todoist
  340. Tokopedia
  341. TomTom AmiGO (Speed Cameras)
  342. Too Good To Go
  343. Tradera
  344. Traveloka
  345. Trendyol
  346. Trenitalia
  347. Trip.com
  348. Tripadvisor
  349. TripCase
  350. Trivago
  351. Truecaller
  352. Tumblr
  353. Tumile
  354. Turo
  355. Twitch
  356. Twitter
  357. UC Browser
  358. Unicorn HTTPS
  359. Unlimited Texting
  360. Vault - Hide Pics
  361. Vaulty
  362. Venmo
  363. Viber Messenger
  364. Vimeo
  365. Vine Camera
  366. Vinted
  367. Vivino
  368. VK
  369. Voxer Walkie Talkie Messenger
  370. Waiter
  371. Wallapop
  372. Wallet
  373. WangXin (旺信)
  374. Wapa
  375. Waze
  376. WearPro
  377. Weather & Radar
  378. Weather Underground
  379. weather24 (wetter.com)
  380. WEB.DE Mail (Mail)
  381. WeChat
  382. Weibo
  383. Weibo (International)
  384. WhatsApp Messenger
  385. Where is my Train
  386. Whisper
  387. Whoosh
  388. Wickr Me
  389. Wikiloc
  390. wine-searcher
  391. Wire
  392. Wish
  393. WowApp
  394. Wunderlist
  395. Xabber
  396. Xe (Currency)
  397. XTB (xStation)
  398. Yahoo Mail
  399. Yahoo Messenger
  400. Yandex Disk
  401. Yandex Go (Yandex Taxi)
  402. Yandex Mail
  403. Yandex Maps
  404. Yandex Navigator
  405. Yandex Weather
  406. Yanolja (야놀자)
  407. Yassir
  408. Yelp
  409. Yixin (易信)
  410. Yr
  411. Yuka
  412. YY
  413. Zalando
  414. Zalo
  415. Zangi Messenger
  416. Zello
  417. Zepp Life (Mi Fit)
  418. Zepto:10-Min Grocery Delivery*
  419. Zipcar
  420. Zoiper
  421. Zomato
  422. ZOOM Cloud Meetings
  423. zooplus
  424. zulily
Read More

venerdì 4 agosto 2023

Published agosto 04, 2023 by Django Faiola with 0 comment

APK Downgrade Manuale - Parte 2

 

Introduzione

Nel post APK Downgrade Manuale - Parte 1 è stata mostrata la procedura su come eseguire il downgrade delle applicazioni di terze parti nel caso di singolo package installato sul dispositivo. Come procedere nel caso in cui il package è diviso in più file?

Procedura manuale del downgrade (Bundle/Split)

Dal mio vecchio smartphone (la mia cavia) con Android Nougat proviamo a scalare l'applicazione Deliveroo: consegna di cibo che so per certo è un pacchetto diviso. Vecchia versione utilizzata 2.54.0 precedentemente scaricata e salvata sul computer con il nome del file "com.deliveroo.orderapp.old.apk".

Eseguire il prompt dei comandi.

Lista dei package installati di terze parti

adb shell pm list package -3
package:pedometer.steptracker.calorieburner.stepcounter
package:com.shazam.android
package:com.whatsapp
package:fr.vinted
package:uk.co.novaware.telepass.android
package:com.deliveroo.orderapp
package:com.instagram.android
package:com.twitter.android
package:io.yuka.android
package:com.zhiliaoapp.musically
package:com.topjohnwu.magisk
package:com.glovo
package:com.wallapop
package:com.snapchat.android

Lista path del package com.deliveroo.orderapp

adb shell pm path com.deliveroo.orderapp
package:/data/app/com.deliveroo.orderapp-2/base.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.arm64_v8a.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.it.apk
package:/data/app/com.deliveroo.orderapp-2/split_config.xxhdpi.apk
Come si può vedere l'applicazione deliveroo è divisa in 4 file.

Copia dell'apk originale sulla workstation

adb pull -a /data/app/com.deliveroo.orderapp-2/base.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.arm64_v8a.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.it.apk
adb pull -a /data/app/com.deliveroo.orderapp-2/split_config.xxhdpi.apk

Se viene riscontrato un errore del tipo

adb: error: remote object '/data/app/com.deliveroo.orderapp/base.apk' does not exist

allora bisogna creare una copia dei file prima del pull nella cartella tmp.

adb shell cp /data/app/com.deliveroo.orderapp-2/*.apk /data/local/tmp/
adb pull /data/local/tmp/base.apk
adb pull /data/local/tmp/split_config.arm64_v8a.apk
adb pull /data/local/tmp/split_config.it.apk
adb pull /data/local/tmp/split_config.xxhdpi.apk

Disinstallazione dell'app originale dal dispositivo preservando i dati dell'utente

adb shell pm uninstall -k com.deliveroo.orderapp

Riavvio del dispositivo

adb reboot

Downgrade

adb push com.deliveroo.orderapp.old.apk /data/local/tmp/
adb shell pm install /data/local/tmp/com.deliveroo.orderapp.old.apk
adb shell rm /data/local/tmp/com.deliveroo.orderapp.old.apk

Backup

adb backup -f deliveroo.ab -apk -obb -keyvalue com.deliveroo.orderapp

Inserire la password per esempio "1234". Il backup può essere eseguito anche (consigliato) utilizzando direttamente l'utility di backup bu.

Ripristino dell'applicazione originale

Nel caso in cui la copia degli originali sulla workstation è stata eseguita direttamente senza l'ausilio della cartella tmp, ovvero solo tramite una serie di pull,  bisogna creare una copia di questi sul dispositivo.

adb push base.apk /data/local/tmp/
adb push split_config.arm64_v8a.apk /data/local/tmp/
adb push split_config.it.apk /data/local/tmp/
adb push split_config.xxhdpi.apk /data/local/tmp/

Utilizzando i file originali precedentemente copiati nella cartella tmp, per ripristinare l'app originale bisogna creare un nuovo package di installazione come segue:

adb shell pm install-create -r
Success: created install session [800467548]

adb shell pm install-write 800467548 base.apk /data/local/tmp/base.apk
Success: streamed 29701113 bytes

adb shell pm install-write 800467548 split_config.arm64_v8a.apk /data/local/tmp/split_config.arm64_v8a.apk
Success: streamed 21107947 bytes

adb shell pm install-write 800467548 split_config.it.apk /data/local/tmp/split_config.it.apk
Success: streamed 147865 bytes

adb shell pm install-write 800467548 split_config.xxhdpi.apk /data/local/tmp/split_config.xxhdpi.apk
Success: streamed 418214 bytes

adb shell pm install-commit 800467548
Success

Android Backup (.ab)

Il file di backup .ab (Android Backup) è proprietario con magic numbers "ANDROID BACKUP", dati compressi con algoritmo deflate e cifrati con AES CBC se impostata la password di backup. Esistono vari tool per convertire il file .ab in .tar, uno di questi è Android Backup Extractor oppure con il tool integrato in dfAPKdngrader.

Read More
Published agosto 04, 2023 by Django Faiola with 0 comment

APK Downgrade Manuale - Parte 1

Introduzione

Oggi è sempre più difficile estrarre prove da smartphone con Android 7 o superiore e non sempre è così facile ottenere i privilegi di root per eseguire un'estrazione filesystem o meglio eseguire un'estrazione fisica decriptata del dispositivo. 

Fare un'estrazione logica con gli strumenti di backup forniti dal costruttore, Samsung Kies/Smart Switch, Huawei HiSuite, Xiaomi Mi Backup, etc. o semplicemente sfruttare il backup nativo Android via ADB può portare a un risultato che non è quello tanto "sperato", l'amato/odiato WhatsApp per esempio è escluso dal backup nativo.

Non resta che tentare di scalare le app di interesse ed eseguire il backup nativo, metodo noto come APK downgrade.

Procedura manuale del downgrade (singolo package)

Prima di procedere al downgrade manuale bisogna verificare se il dispositivo è sbloccato o quantomeno essere in possesso del PIN e/o password di sblocco, attivare le opzioni sviluppatore, nello specifico abilitare Debug USB, modificare tutte le opzioni che permettono di rendere possibile l'estrazione dei dati senza intoppi (modalità aereo, resta attivo etc.)...già fatto? vero! hai provato già gli altri metodi di estrazione.

Proviamo a scalare l'applicazione Vinted: vendi e compra vestiti utilizzando la vecchia versione 6.19.2.0 precedentemente scaricata e salvata sul computer con il nome del file "com.vinted.old.apk".

Eseguire il prompt dei comandi.

Lista dei package installati di terze parti

adb shell pm list packages -3
package:com.whatsapp
package:fr.vinted

Lista path del package fr.vinted

adb shell pm path fr.vinted
package:/data/app/fr.vinted-vui9dpo9lDF-F3aDKrvrSA==/base.apk

Copia dell'apk originale sulla workstation

adb pull -a /data/app/fr.vinted-vui9dpo9lDF-F3aDKrvrSA==/base.apk
/data/app/fr.vinted-vui9dpo9lDF-F3aDKrvrSA==/base.apk: 1 file pulled, 0 skipped. 110.4 MB/s (33533699 bytes in 0.290s)

Disinstallazione dell'app originale dal dispositivo preservando i dati dell'utente

adb shell pm uninstall -k fr.vinted
Success

Riavvio del dispositivo

adb reboot

Questo permette di bypassare il seguente messaggio di errore "Failure [INSTALL_FAILED_VERSION_DOWNGRADE]" generato quando si tenta di installare la vecchia versione senza riavviare.

Downgrade

adb push fr.vinted.old.apk /data/local/tmp/
fr.vinted.old.apk: 1 file pushed, 0 skipped. 518.3 MB/s (14644009 bytes in 0.027s)

adb shell pm install /data/local/tmp/fr.vinted.old.apk
Success

adb shell rm /data/local/tmp/fr.vinted.old.apk

Backup

adb backup -f vinted.ab -apk -obb -keyvalue fr.vinted
WARNING: adb backup is deprecated and may be removed in a future release
Now unlock your device and confirm the backup operation...

Inserire la password per esempio "1234". Il backup può essere eseguito anche (consigliato) utilizzando direttamente l'utility di backup bu.

Ripristino dell'applicazione originale

adb push base.apk /data/local/tmp/
base.apk: 1 file pushed, 0 skipped. 240.2 MB/s (33533699 bytes in 0.133s)

adb shell pm install -r /data/local/tmp/base.apk
Success
adb shell rm /data/local/tmp/base.apk

Android Backup (.ab)

Il file di backup .ab (Android Backup) è proprietario con magic numbers "ANDROID BACKUP", dati compressi con algoritmo deflate e cifrati con AES CBC se impostata la password di backup. Esistono vari tool per convertire il file .ab in .tar, uno di questi è Android Backup Extractor oppure con il tool integrato in dfAPKdngrader.

Read More

martedì 1 agosto 2023

Published agosto 01, 2023 by Django Faiola

Android Backup APK Downgrade

Introduzione

Il backup nativo di Android è stato per anni uno dei metodi più comuni di raccolta dei dati delle app utilizzato dagli esperti forensi. Ad oggi e più precisamente dalla versione 5.0 (Lollipop) tale metodo produce una raccolta molto limitata dei possibili dati acquisibili in quanto la maggior parte degli sviluppatori di applicazioni di terze parti, tenuto conto della sicurezza dei dati personali, hanno disabilitato l'autorizzazione di backup; vedi per esempio WhatsApp, Facebook, etc.

Cos'è l'APK downgrade?

Gli investigatori ed esaminatori per poter bypassare questo ostacolo hanno messo a punto un metodo detto APK downgrade che consiste, detto in parole semplici, nello scalare l'app con una vecchia versione che ha la proprietà di backup abilitataallowBackup='true' nel file AndroidManifest.xml.

Il metodo può essere schematizzato nei seguenti passi:

  1. copia dell'app originale sulla workstation;
  2. disinstallazione dell'app originale dal dispositivo preservando i dati dell'utente;
  3. installazione temporanea della vecchia versione compatibile che consente il backup;
  4. backup;
  5. ripristino dell'app originale sul dispositivo.

Il passaggio chiave di questo metodo forense è quello di preservare i dati utente durante la disinstallazione dell'app originale. Nel caso di whatsapp per esempio, la riga comando è: 

adb shell pm uninstall -k com.whatsapp

dove -k è il parametro che permette di preservare i dati e com.whatsapp è il package che si vuole disinstallare. 

Purtroppo il downgrade delle applicazioni installate di terze parti non è sempre possibile e soprattutto non è infallibile. Esistono molte variabili in gioco, le forti personalizzazioni dell'Android stock, incompatibilità delle ABIs (Application Binary Interface), cambio del "package name" nel tempo, app con permesso di backup disabilitato sin dalla prima versione, etc. sono solo alcuni dei problemi che non permettono l'utilizzo di questo metodo.

Come ha ben illustrato Heather Mahalik (Senior Director of Digital Intelligence and Forensics at Cellebrite) nel suo blog When to Use the Android APK Downgrade Feature in Cellebrite UFED il downgrade deve essere utilizzato come una sorta di "ultima spiaggia" dopo aver esaurito tutti gli altri metodi di estrazione con scarsi risultati.

L'APK downgrade permette di ottenere dati rilevanti da svariate applicazioni senza avere i privilegi di root, ma come ho detto sopra ha i suoi limiti: 

  • Bisogna essere in possesso di un dispositivo sbloccato o quantomeno con PIN e/o password di sblocco noti (richiesti durante la fase di riavvio);
  • Possibile perdita delle autenticazioni su alcune app (è richiesto di nuovo il login anche dopo aver ripristinato l'originale);
  • Perdita delle posizioni delle app nella schermata home (rimosse durante la disinstallazione);
  • Alcuni dati potrebbero andare persi (non dell'utente).

Conclusioni

Il downgrade delle app è un metodo fantastico, la sua utilità non si discute e le migliori case software del settore forense lo hanno inserito nei loro prodotti con svariati nomi: Belkasoft X (APK downgrade), Cellebrite UFED (Android Backup APK Downgrade), Magnet Acquire/Axiom (ADB con l'opzione "Try do downgrade it to..."), Oxygen Forensic Detective (APK downgrade), MOBILedit Forensic (App downgrade), GMDSOFT MD Next (Android App Downgrade) e XRY (App downgrade).

Nella comunità forense, open-source e freeware, vi sono alcuni software/script che "vantano" di eseguire il downgrade delle app ma il mio "piccolo" strumento forense user-friendly dfAPKdngrader (freeware) fa davvero il suo dovere. 

Read More
Published agosto 01, 2023 by Django Faiola

Welcome

Appunti di Informatica Forense

Django è il mio vero e unico nome: tratto dal film Django (1966) di Sergio Corbucci, uno dei migliori Spaghetti Western che vede il leggendario Franco Nero protagonista dell'omonimo film. Chiudo questa breve parentesi con un piccolo omaggio al mio celebre omonimo cinematografico.

Benvenuti, questo blog nasce in primo luogo come punto comune di raccolta per la distribuzione di programmi (Freeware) da me creati per la comunità forense, approfondimenti e supporto agli stessi; in secondo luogo per la condivisione degli appunti sulle ricerche relative all'analisi di artefatti, reverse engineering e tutto ciò che è connesso alla Digital Forensics con particolare attenzione alla Mobile Forensics.

Non sono un blogger. Ho impostato una semplice struttura di base, il giusto per poter condividere i miei appunti e scrivere qualche articolo, quindi perdonatemi se non è così bello 😄 

I commenti sono sempre benvenuti e apprezzati, la condivisione della conoscenza di più! 

Django Faiola

Read More