Ci-dessous, les différences entre deux révisions de la page.
cryptographie:android_lock_pattern [2016/02/12 16:06] arkinar créée |
cryptographie:android_lock_pattern [2016/07/04 08:38] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | **Lock Pattern Android / Schémas de verrouillage Android** | ||
- | |||
- | Le schémas de verrouillage android fonctionne de la manière suivante : | ||
- | |||
- | Neuf pastilles sont disposées sous la forme d'une grille. | ||
- | |||
- | Au niveau logiciel elles sont numérotées de 1 à 9 | ||
- | |||
- | <code> | ||
- | ------------------- | ||
- | | 1 | | 2 | | 3 | | ||
- | ------------------- | ||
- | | 4 | | 5 | | 6 | | ||
- | ------------------- | ||
- | | 7 | | 8 | | 9 | | ||
- | ------------------- | ||
- | </code> | ||
- | |||
- | Android va stocker notre mot de passe de façon chiffré dans le fichier **/android/data/system/gesture.key** | ||
- | |||
- | Dans notre exmple notre code de verrouillage sera 1234 | ||
- | |||
- | Avant de chiffré notre code, android va décrémenter le pattern(schémas) de 1. | ||
- | |||
- | 1234 deviendra 0123 | ||
- | |||
- | Celle-ci sera encodé en hexa et ensuite chiffré en sha1. | ||
- | |||
- | Ce qui nous donne : | ||
- | |||
- | <code>SHA1("\x00\x01\x02\x03")</code> | ||
- | |||
- | |||
- | **Exploitation : ** | ||
- | |||
- | En face du faible nombre de possibilités il est possible de se faire un tableau de correspondance entre le pattern et le hash sha1 | ||
- | |||
- | __Première méthode : Générer une rainbow table" __ | ||
- | |||
- | Il faut développer un script faisant la correspondance entre le pattern et le sha1 du pattern. | ||
- | |||
- | En attendant de proposer un script voici la Rainbow table complète : [[http://wikisecu.fr/tools/gesture.txt.gz | Gesture keys ]] | ||
- | |||
- | md5sum : d5a9204e9ac2aee5e1ddb883580c4e4a | ||
- | |||
- | Attention à ne pas oublier d'incrementer tous les chiffres de 1 pour retrouver le code d'origine. | ||
- | |||
- | |||
- | __Deuxième méthode : Bruteforce__ | ||
- | |||
- | Le bruteforce dans ce cas est une solution envisageable du fait du faible nombres de combinaisons | ||
- | |||
- | |||
- | Sur github un utilitaire à été développé pour cela : [[https://github.com/sch3m4/androidpatternlock | Crack Android lock pattern]] | ||
- | |||
- | Son utilisation : | ||
- | |||
- | <code> python aplc.py gesture.key </code> | ||
- | |||
- | <code> | ||
- | |||
- | ################################ | ||
- | # Android Pattern Lock Cracker # | ||
- | # v0.1 # | ||
- | # ---------------------------- # | ||
- | # Written by Chema Garcia # | ||
- | # http://safetybits.net # | ||
- | # chema@safetybits.net # | ||
- | # @sch3m4 # | ||
- | ################################ | ||
- | |||
- | [i] Taken from: http://forensics.spreitzenbarth.de/2012/02/28/cracking-the-pattern-lock-on-android/ | ||
- | |||
- | [:D] The pattern has been FOUND!!! => 0123 | ||
- | |||
- | [+] Gesture: | ||
- | |||
- | ----- ----- ----- | ||
- | | 1 | | 2 | | 3 | | ||
- | ----- ----- ----- | ||
- | ----- ----- ----- | ||
- | | 4 | | | | | | ||
- | ----- ----- ----- | ||
- | ----- ----- ----- | ||
- | | | | | | | | ||
- | ----- ----- ----- | ||
- | |||
- | </code> | ||
- | |||
- | Dans la première partie il vous retourne la clé si il l'a trouvé. (clé à incrémenter de 1 pour avoir la bonne valeur) | ||
- | |||
- | Dans la seconde partie il vous explique comment le dessiner au cas où vous n'ayez pas lu la première partie. | ||