Androiden für den Verkauf vorbereiten

Android-Geräte sind generell immer ziemlich unsicher. Updateproblematik etc.
Was Sicherheit angeht, ist man mit Apple-Geräten leider besser beraten, dank Hardware-Verschlüsselung und Updates. Brute-Force kann dort nur auf dem Gerät selbst ausgeführt werden.
iOS-Verschlüsselung durchleuchtet | heise Security

Geschäftlich gilt natürlich, einmal mit dem Vorschlaghammer drauf oder ab in den Shredder.
Privat kann ich nicht alles wegschmeißen, nur weil es keine gescheite Verschlüsselungsoption gab.
Siehe auch Festplatte sicher löschen - dckg.net.

Die Problematik ist die, dass durch einen Factory-Reset die Partitionen einfach nur neu formatiert werden, was die Daten jedoch nicht vernichtet.

Vorgehensweise

  • Factory-Reset per Menü oder Recovery (TWRP z.B.) ausführen
  • Per ADB auf das Gerät verbinden und eine Root-Shell holen (Keine Root-Rechte? Dann ist es doch ein Fall für den Shredder 😂) :
    root@kminilte:/ # mount
    rootfs on / type rootfs (ro,relatime)
    tmpfs on /dev type tmpfs (rw,nosuid,relatime,size=644064k,nr_inodes=161016,mode=755)
    devpts on /dev/pts type devpts (rw,relatime,mode=600)
    none on /dev/cpuctl type cgroup (rw,relatime,cpu)
    proc on /proc type proc (rw,relatime)
    sysfs on /sys type sysfs (rw,relatime)
    /sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)
    none on /sys/fs/cgroup type tmpfs (rw,relatime,size=644064k,nr_inodes=161016,mode=750,gid=1000)
    none on /acct type cgroup (rw,relatime,cpuacct)
    tmpfs on /mnt type tmpfs (rw,relatime,size=644064k,nr_inodes=161016,mode=755,gid=1000)
    /dev/fuse on /mnt/runtime/default/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
    /dev/fuse on /mnt/runtime/read/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
    /dev/fuse on /mnt/runtime/write/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)
    /dev/block/mmcblk0p18 on /system type ext4 (ro,relatime,errors=panic,data=ordered)
    /dev/block/mmcblk0p21 on /data type ext4 (rw,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,errors=panic,data=ordered)
    /dev/block/mmcblk0p19 on /cache type ext4 (rw,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,errors=panic,data=ordered)
    /dev/block/mmcblk0p3 on /efs type ext4 (rw,nosuid,nodev,noatime,discard,journal_checksum,journal_async_commit,noauto_da_alloc,data=ordered)
    /dev/block/mmcblk0p16 on /persdata/absolute type ext4 (rw,nosuid,nodev,relatime,data=ordered)
    tmpfs on /storage type tmpfs (rw,relatime,size=644064k,nr_inodes=161016,mode=755,gid=1000)
    /dev/fuse on /storage/emulated type fuse (rw,nosuid,nodev,noexec,noatime,user_id=1023,group_id=1023,default_permissions,allow_other)


  • Partitionen schreibbar machen.
    root@kminilte:/ # mount -o remount,rw /system
    root@kminilte:/ # mount -o remount,rw /data
    root@kminilte:/ # mount -o remount,rw /cache
    root@kminilte:/ # mount -o remount,rw /efs
    root@kminilte:/ # mount -o remount,rw /persdata/absolute
    root@kminilte:/ # mount -o remount,rw /storage
    root@kminilte:/ # mount -o remount,rw /storage/emulated


  • Überall einzeln, in jede Partition ein File mit Nullen reinschreiben.
    dd if=/dev/zero of=/system/zerofile 


    Check:
    ls -lah /{system,data,cache,efs,persdata/absolute,storage,storage/emulated}/zerofile 


  • Partitionen sind nun alle zu 100% belegt, mit der Datei, die nur Nullen enthält
    
    root@kminilte:/ # df -h | grep -v tmpfs | grep -v none                                                                                                                     
    Filesystem Size Used Avail Use% Mounted on
    /dev/fuse 12G 12G 0 100% /mnt/runtime/default/emulated
    /dev/fuse 12G 12G 0 100% /mnt/runtime/read/emulated
    /dev/fuse 12G 12G 0 100% /mnt/runtime/write/emulated
    /dev/block/mmcblk0p18 1.9G 1.9G 0 100% /system
    /dev/block/mmcblk0p21 12G 12G 0 100% /data
    /dev/block/mmcblk0p19 295M 295M 0 100% /cache
    /dev/block/mmcblk0p3 20M 20M 0 100% /efs
    /dev/block/mmcblk0p16 12M 12M 0 100% /persdata/absolute
    /dev/fuse 12G 12G 0 100% /storage/emulated


  • ROM neu flashen.


Anschließend kann man sein Telefon ruhigen Gewissens aus der Hand geben, alle persönlichen Daten wurden unwiderruflich zerstört.

Update 24.02.2017
Mein neues Handy muss ich leider einschicken, dort habe ich auch noch kein Root-Zugriff, wegen Garantie.
Hat man kein root, kann mittels adb immerhin der gesamte verfügbare interne Speicher gelöscht werden - naja immerhin besser als nur formatieren, wie es Android beim Reset macht.

Dazu im SD-Karten Verzeichnis, (z.B: /storage/sdcard0)
nohup dd if=/dev/zero of=zerofile &
Daraufhin kann das Telefon sofort vom Rechner getrennt werden, das Kommando läuft weiter.


Zusammenfassend noch einmal, die Vorgehensweise ist:

  1. Normaler Factory Reset (macht nur Formatierung)
  2. Mit root Null-Files überall reinschreiben oder die Lösung von heute, wenigstens internen Speicher nullen.
  3. Nochmals Factory Reset.