2012-07-25 11 views
12

Ho provato ad analizzare il malware Android su un emulatore con Android 2.1. Voglio analizzare i permessi dei file e le impronte digitali dopo l'esecuzione dell'app sospetta. Lo so, posso usare la shell adb per ottenere queste informazioni, ma penso che non posso fidarmi di quelle informazioni dopo l'esecuzione di ad es. un rootkit. Penso che l'unico modo per impedire ai rootkit di nascondersi sia montando direttamente le immagini o? Ho i seguenti file:Montare immagini dell'emulatore Android

ramdisk.img snapshots.img userdata-qemu.img cache.img system.img userdata.img zImage 

Come può l'essere montati/estratti su Ubuntu (lettura è sufficiente accesso)?

Con unyaffs è possibile estrarre il file system.img e userdata.img. simg2img restituisce "cattiva magia" per tutti i file.

Grazie Alex

Edit: userdata-qemu.img funziona unyaffs2

risposta

15

Hai già risposto alla tua domanda, ma io ti espande un po '. L'SDK Android è dotato di immagini del sistema, ad esempio:

$ cd android-sdk-linux/system-images/android-15/armeabi-v7a/ 
$ ls *.img 
ramdisk.img system.img userdata.img 

$ cd ~/.android/avd/<img name>.avd/ 
$ ls *.img 
cache.img sdcard.img userdata.img userdata-qemu.img 

Però, non tutte le immagini sono dello stesso tipo:

$ file *.img 
cache.img:   VMS Alpha executable 
sdcard.img:  x86 boot sector, code offset 0x5a, OEM-ID "MSWIN4.1", sectors/cluster 4, Media descriptor 0xf8, sectors 2048000 (volumes > 32 MB) , FAT (32 bit), sectors/FAT 3993, reserved3 0x800000, serial number 0x17de3f04, label: "  SDCARD" 
userdata.img:  VMS Alpha executable 
userdata-qemu.img: VMS Alpha executable 

Da sdcard.img non contiene partizioni extra, può essere montato direttamente senza un parametro di offset (come -o loop,offset=32256):

$ fdisk -l sdcard.img 
You must set cylinders. 
You can do this from the extra functions menu. 

Disk sdcard.img: 0 MB, 0 bytes 
255 heads, 63 sectors/track, 0 cylinders 
Units = cylinders of 16065 * 512 = 8225280 bytes 
Disk identifier: 0x00000000 

    Device Boot  Start   End  Blocks Id System 

$ sudo mount -o loop sdcard.img /mnt/ 

Gli altri file di immagine che sono descritti come 012.315.330.998.sono infatti file yaffs2. Per quanto ne so non possono essere montati direttamente ma possono essere estratti usando le due utilità unyaffs o unyaffs2.

$ mkdir extract 
$ cd extract 
$ unyaffs ../userdata.img 

o

$ unyaffs2 --yaffs-ecclayout ../userdata.img . 

Nota, c'è un altro programma di utilità chiamato simg2img che può essere trovato nell'albero dei sorgenti di Android sotto ./android_src/system/extras/ext4_utils/ che viene utilizzato su file img ext4 compressi. Tuttavia, se applicato in modo errato alle immagini yaffs2 si lamenta con Bad magic.

7

Se qualcuno finisce qui in cerca di maggiori informazioni sull'uso di simg2img:

Questo è il file di cui avevo bisogno per montare:

$ file factoryfs.img 
factoryfs.img: data 
$ unyaffs factoryfs.img 
Can't determine flash layout, perhaps not a yaffs2 image 

Ed è così che sono stato in grado di montarlo:

  1. installare i prerequisiti (Ubuntu/Debian):

    sudo apt-get install build-essential git zlib1g-dev 
    
  2. scaricare e compilare fonte:

    git clone https://android.googlesource.com/platform/system/core 
    cd core/libsparse 
    gcc -o simg2img -Iinclude simg2img.c sparse_crc32.c backed_block.c output_file.c sparse.c sparse_err.c sparse_read.c -lz 
    
  3. decomprimere il file immagine sparse in un file di immagine raw:

    ./simg2img /path/to/factoryfs.img /path/to/factoryfs.raw.img 
    
  4. Montare il file immagine raw. In Ubuntu il modo più semplice per farlo è fare clic con il pulsante destro del mouse sul file nell'app File → Apri conImmagine disco Mounter. O utilizzando la riga di comando:

    sudo mkdir /mnt/factoryfs 
    sudo mount /path/to/factoryfs.raw.img /mnt/factoryfs 
    


questo non funzionerà con boot.img, che è un caso speciale: How to extract boot.img?

1

ho voluto disfare un'immagine ext4 NON-SPARSE file su Windows. simg2img è per l'uso con sparse ext4. Ext4 non è sparsa per definizione, è solo un'opzione per esso, eppure ogni descrizione di questo processo inizia con quell'ipotesi per qualsiasi motivo. Comunque, DiskTool ha fatto questo per me con zero sforzi, dopo che ho perso un sacco di tempo cercando di capirlo. Esso non installa alcun spazzatura estranea neanche, e funziona bene su Windows 10:

http://sourceforge.net/projects/androidicsjbext/

Problemi correlati