Android - Linux Attitude Skip to content

Linux Attitude

Le libre est un état d'esprit

Archive

Category: Android

Niveau :      
Résumé : iptables android

Maintenant nous savons tout ce qui passe par la tête d'un android. Mais on a découvert des choses qui ne nous plaisent pas.

Couper des communications

Donc vous voulez interdire certaines communications, par exemple la connexion au serveur de votre ennemi héréditaire (on ne sait jamais, la paranoïa peut mener loin).

C'est simple linux a un firewall, profitez-en et utilisez iptables pour couper la communication :

# toujours sur le téléphone
$ chroot $ROOT
$ iptables -A OUTPUT -d 10.0.0.1 -j DROP

Au fait vous savez comment s'affichent les pubs ? ;-)

Proxy transparent

Vous pouvez même filtrer un peu mieux tout simplement en, redirigeant le traffic vers un service adapté.

C'est simplement la technique du portail captif, mais cette fois à votre avantage. Par exemple pour rediriger le DNS vers votre serveur local :

$ iptables -A OUTPUT -p udp --port 53 -j REDIRECT
$ iptables -A OUTPUT -p tcp --port 53 -j REDIRECT
/// 

Bien sûr il faut mettre un serveur dns local que vous maitrisez.

Et bien sûr vous pouvez faire pareil avec un proxy http qui prendra la décision au niveau du dessus.

$ iptables -A OUTPUT -p tcp --port 80 -j REDIRECT ///

Et pour ceux qu'android n'intéresse pas, n'oubliez pas que ça marche aussi sur votre passerelle à l'entrée de votre réseau ou n'importe quel PC ...

Niveau :      
Résumé : tcpdump, wireshark

Espionnage

Tout le monde le sait, les téléphones nous espionnent. Mais que communiquent-ils ? A qui communiquent-ils ? Que peut-on y faire ?

Aujourd'hui nous somme armés d'une vraie distribution GNU. Nous pouvons donc utiliser des vrais outils.

# on se connecte sur le téléphone
$ ./adb shell
# mettez votre debian dans ce $ROOT
$ chroot $ROOT
$ apt-get install tcpdump
$ nohup tcpdump -i any -s 0 -w /tmp/dump.`date +"%Y-%d-%m"` &

maintenant déconnectez-vous et laissez tourner toute la journée dans son coin après avoir vérifié qu'il reste de la place sur le disque.

Quelque temps plus tard; :

# sur le téléphone
$ chroot debian
$ pkill tcpdump
# sur le pc
$ ./adb get $ROOT/tmp/dump.*

Analyse

Maintenant revenons à notre poste et regardons ce qui s'est passé. Pour cela on utilise wireshark.

On ouvre le fichier dump et c'est parti :

  • on trie par protocole -> LARQ, DNS, ipv6, http, https, ...
  • on trie par adresse -> on a la liste de qui communique avec notre machine
  • on liste des requêtes dns -> on a les noms des précédents

Ce que j'ai découvert pour l'instant

LARQ (limited automatic repeat request) : protocole utilisé pour la retransmission rapide de frame en cas de perte sur la couche de liaison. Très pratique pour améliorer la qualité des transmissions. On ne trouve quasiment pas d'infos sur le net à ce sujet, à part un brevet.

IPv6 : il est activé par défaut chez moi, ouf

DNS : il semble qu'android utilise le resolver public de google (pratique pour ne pas être embêté par les limitations de l'opérateur et les problèmes de configuration).

Niveau :      
Résumé : debootstrap --foreign ; debian.apk

Android is Not GNU

Maintenant qu'on est root, on peut faire tout ce qu'on veut sur notre android. Mais il faut bien avouer que busybox est assez limitée pour les habitués des systèmes GNU que nous sommes.

C'est pourquoi nous allons mettre un système GNU complet sur notre android. Et de préférence sans influer sur la bonne marche du téléphone.

Pour cela, il faut laisser tourner l'android tel quel, et surtout garder son noyau. Mettre un 2e système sur un noyau qui tourne, on sait faire, dans sa version la plus simple ça s'appelle un chroot, c'est disponible de base et c'est exactement ce dont on a besoin.

Notez que les commandes indiquées ici se basent sur un shell et les commandes fournies par busybox telles qu'installée dans l'article précédent. Vous pouvez vous en passer, mais quelques adaptations seront nécessaires (par exemple -o bind à la place de --bind).

Comment qu'on fait ?

Comment créer un chroot sans se presser ?

Choisissons (au hasard) la distribution debian. Elle nous propose ... wait for it ... un créateur de chroot. Il s'appelle debootstrap.

Seul problème nous ne pouvons pas le lancer directement sur le téléphone. Il faut donc le lancer sur une autre machine. Et à moins d'avoir une machine arm sous le coude, nous ne serons pas sur la bonne architecture.

Heureusement debian est bien structuré et debootstrap a tout prévu. Nous allons le lancer 2 fois. La première fois sur notre machine habituelle :

$  debootstrap --foreign --arch armel wheezy mydebian 

Pour ceux qui n'ont pas debian, sachez qu'il est possible de télécharger et d'exécuter debootstrap sur n'importe quel autre linux.

Et pour ceux qui voudraient essayer une autre méthode, suivez ce lien : http://wiki.debian.org/EmDebian/Cro...


continue reading...

Niveau :      
Résumé : mv ; rm ; top

Maintenant que vous êtes passé root vous êtes impatient d'optimiser votre téléphone.

Plusieurs choses sont importantes à savoir :

  • une application ce n'est qu'un fichier .apk, ce qui veut dire que supprimer le fichier suffit pour supprimer l'application (mais pas ses données)
  • le firmware n'est rien d'autre qu'un système de fichier standard, donc rien ne vous empêche de le modifier
  • android distingue une carte sd "interne" du reste du système. Sur mob téléphone, il s'agit en pratique de la même mémoire flash découpée en partitions mais formatée avec différents systèmes de fichier

Lister et supprimer les application inutiles

Tout d'abord je vous conseille juiceplotter pour regarder quand et combien consomme votre téléphone.

Ensuite, puisque vous avez un shell, ne vous privez pas et utilisez la commande top lorsque la consommation vous parait importante ou que la machine rame (attention aux bizareries du top d'android, comme la charge)

Enfin je vous recommande de supprimer les applications du système qui ne vous servent pas mais qui semblent se réveiller fréquemment.

Voici comment faire (en root sur le téléphone) :

$ mkdir /sdcard/app-backup
$ mount -o remount,rw  /system # si vous n'utilisez pas busybpox, vous devrez passer tous les paramètres a mount
$ mv /system/app/<applicaiton>.apk /sdcard/app-backup
$ mount -o remount,ro  /system

Ainsi vous gardez l'application sous le coude si vous voulez revenir en arrière.

Sur mon optimus 2x

J'ai supprimé :

  • l'antivirus F-Secure (il consomme pas mal et je n'ai toujours pas vu de virus)
  • PCSync jamais besoin et il est actif le bougre
  • LGOnScreenPhone même chose
  • LGLauncher le home du téléphone, ne pas supprimer si vous n'en installez pas une autre avant
  • LGEmail je n'utilise pas, trop limité (K9-mail est très bien)
  • SNS : se connecte automatiquement a tous vos réseaux sociaux, mais aucun moyen de l'en empecher

Au passage j'ai installé ADW, très bonne home qui remplace celle par défaut, qui permet les thèmes, qui permet de faire des raccourcis vers des activités et qui permet de faire des groupes d'applications pour y accéder plus rapidement. Notez qu'il est possible d'avoir 2 home en même temps mais j'ai tout de même supprimé l'original. Petite touche finale, elle est sous licence libre ...

Et pour vous montrer ce que j'ai gagné, lorsque j'ai eu mon téléphone, il consommait entre 10 et 15% de batterie par nuit. Maintenant après ces suppressions (et après avoir désactivé la 3G) il consomme entre 3% et 4% par nuit !

Correction  : j'ai modifié cet article car le système pour rendre le rootage permanent ne fonctionnait pas !

Niveau :      
Résumé : adb shell

Il y a peu je me suis offert un téléphone android. Devinez quoi ... c'est un linux (pas GNU pour une fois, plutôt un dalvik/linux).

Seule ombre au programme, je ne suis pas root dessus. C'est pas très fair play de la part du vendeur sachant que le téléphone m'appartient. Comment faire pour supprimer les applications installées par le fabriquant et qui me cassent les *** à se lancer sans me demander mon avis ?

Ma première mission est donc de devenir root.

Les habitués des OS de bureau auront l'idée de toucher au bootloader pendant qu'il boote. Bonne idée, mais sur une telle machine le bootloader est assez sobre, et plutôt protégé, ne parlons pas du bios. J'ai donc ignoré cette technique pour passer à une méthode plus courantes pour les bidouilleurs de tout poil : exploiter une faille de sécurité.

C'est donc grâce aux failles de sécurité que je vais avoir le droit d'accéder au système de ma propre machine ! Autrement dit, c'est parce que le fabriquant protège mal le système qu'il m'a vendu que mes droits de consommateur sont respectés ...


continue reading...