Depuis juin 2007 Apple a vendu plus de 13 millions de l'un de ses produits-phare, son smartphone iPhone.
Son succès est dû à son interface conviviale et son ergonomie reprise par ailleurs par nombre de ses concurrents. Il tourne sous iPhone OS, un dérivé de Mac OS X spécifiquement adapté.
Enfin pour ce qui interresse cet article, il embarque un chipset WiFi Marvell 88W8686.

L'activation du WiFi sur les iPhone des utilisateurs est courante du fait des offres de connexion gratuites aux hotspots des operateurs de téléphonie et plus généralement à cause du développement croissant des hotspots dans les hotels, gares, aéroports, stations service...
certains sont même accessibles librement comme ceux d'une grande chaine de fast-food que nous ne nommerons pas ici.

Enfin pour se rapprocher encore plus du but de notre article, notons l'usage du wifi sur les smartphones dans le cadre de l'entreprise pour profiter des services Microsoft Exchange ou tout autre solution de collaboration. Une mauvaise idée comme nous allons le voir.

Voici donc notre terrain de jeu : un réseau local supportant le WiFi et dans le parc des machines évoluant dans ce réseau, un iPhone. Bien sur pour plus d'interet on ajoute au tableau un attaquant : le scanner.





Le prérequis étant que le scanner fasse partie du réseau, celui ci lance une analyse de l'iPhone et en particulier de son OS :

---(nmap -v --fuzzy -O -PN --max_retries 2 )
Starting Nmap 4.76 ( http://nmap.org )
Initiating ARP Ping Scan at 08:21
Scanning 192.168.1.15 [1 port]

Completed ARP Ping Scan at 08:21, 0.13s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 08:21

Completed Parallel DNS resolution of 1 host. at 08:21, 6.50s elapsed
Initiating SYN Stealth Scan at 08:21
Scanning iPhone.home (192.168.1.15) [1000 ports]

Completed SYN Stealth Scan at 08:21, 7.83s elapsed (1000 total ports)
Initiating OS detection (try #1) against iPhone.home (192.168.1.15)
Host iPhone.home (192.168.1.15) appears to be up ... good.

Interesting ports on iPhone.home (192.168.1.15):
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
62078/tcp open iphone-sync
MAC Address: 00:1E:52:1C:40:4F (Apple)

Device type: phone|media device
Running: Apple iPhone OS 1.X
OS details: Apple iPhone mobile phone or iPod touch audio player (iPhone OS 1.0.2 - 1.1.3, Darwin 9.0.0d1)

Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=0 (Trivial joke)
IP ID Sequence Generation: Incremental


Nmap done: 1 IP address (1 host up) scanned in 16.14 seconds
Raw packets sent: 1854 (82.352KB) | Rcvd: 1016 (41.060KB)
---



Il détecte ainsi un iPhone I sous iPhone OS 1.x, deux ports ouverts (ssh et synchronisation) et, surprise, Nmap indique une séquence IP ID incrémentielle et donc une séquence TCP prévisible.
IP ID sequence :
7D81,7D82,7D83,7D84,7D85
TCP sequence :
61A,61B,61C,61D,61E

Ce résultat en fait un candidat parfait pour devenir un zombie dans le cadre d'un Idle Scan : en envoyant des paquets de test vers une cible en son nom (en spoofant son IP), la cible répondra à l'iPhone en augmentant du même coup son IP ID pour chaque résultat positif. L'attaquant dans le même temps surveille cette évolution de l'IP ID de l'iPhone zombie afin d'en déduire les ports ouverts sur la cible.



Le résultat est alors (Nmap Idle Scan, notez l'utilisation du zombie)

---(nmap -sI 192.168.1.15:22 -A -v /notez l'utilisation d'un port ouvert du zombie, ici le port 22)
Starting Nmap 4.76 ( http://nmap.org )
Initiating ARP Ping Scan at 08:32
Scanning 192.168.1.1 [1 port]

Completed ARP Ping Scan at 08:32, 0.09s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 08:32

Completed Parallel DNS resolution of 1 host. at 08:32, 6.52s elapsed
Initiating idle scan against HSIB.home (192.168.1.1) at 08:32
Idle scan using zombie 192.168.1.15 (192.168.1.15:22); Class: Incremental

Completed idle scan against HSIB.home (192.168.1.1) at 08:32, 7.72s elapsed (100 ports)
Host HSIB.home (192.168.1.1) appears to be up ... good.
Interesting ports on HSIB.home (192.168.1.1):
Not shown: 96 closed|filtered ports
PORT STATE SERVICE
23/tcp open telnet
80/tcp open http
443/tcp open https
8443/tcp open https-alt

MAC Address: 00:1F:95:51:E1:01

Nmap done: 1 IP address (1 host up) scanned in 14.47 seconds
Raw packets sent: 354 (15.570KB) | Rcvd: 77 (3084B)
---



Par comparaison, voici le résultat tel qu'il est obtenu en scannant directement la cible :

---(nmap -sS -n -v / scan TCP SYN simple)
Starting Nmap 4.76 ( http://nmap.org )
Initiating ARP Ping Scan at 08:39
Scanning 192.168.1.1 [1 port]

Completed ARP Ping Scan at 08:39, 0.09s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 08:39
Scanning 192.168.1.1 [1000 ports]

Completed SYN Stealth Scan at 08:39, 1.50s elapsed (1000 total ports)
Host 192.168.1.1 appears to be up ... good.

Interesting ports on 192.168.1.1:Not shown: 995 closed ports
PORT STATE SERVICE
23/tcp open telnet
80/tcp open http
443/tcp open https
992/tcp open telnets
8443/tcp open https-alt

MAC Address: 00:1F:95:51:E1:01

Nmap done: 1 IP address (1 host up) scanned in 1.75 seconds
Raw packets sent: 1019 (44.834KB) | Rcvd: 1001 (40.062KB)
---



On constate peu de perte (un port raté, 992) mais par contre une augmentation substantielle du temps nécessaire au scan : il se montre 14 fois plus long lors d'un Idle Scan, ce qu'on comprend aisement.

Il est important de comprendre le fonctionnement de l'Idle Scan : l'attaquant déduit l'état des ports en fonction de l'évolution du zombie.
Il ne dispose pas des résultats réels que renvoie la cible puisque celle ci croit parler avec le zombie. D'une part il peut donc y avoir des erreurs d'interpretation dues au trafic que peut recevoir le zombie pendant le temps du scan, et d'autre part l'attaquant ne peut utiliser cette technique pour un scan évolué tel que la détection de services ou la détection d'OS.
Ce genre d'analyse nécessite que le scanner puisse disposer des réponses de la cible afin d'en analyser les données.

Néanmoins la présence d'un iPhone au sein du réseau représente une vulnérabilité non négligeable puisqu'il permet un scan totalement furtif de la part d'un attaquant même si un firewall l'empechait de dialoguer directement avec la cible.
En outre l'analyse forensic d'un administrateur après l'attaque serait difficile : il n'y a pas de facon simple de trouver des logs de connexion sur les iPhone. Or c'est là le problème majeur pour l'attaquant lors d'un Idle Scan : l'analyse des logs du zombie. Ici, l'attaquant est tranquille.

Aller manger un hamburger n'a jamais été aussi...productif.



Gutek pour FutureZone, 2009