A Melbourne-based researcher has created a tool which uses Apple's location services, combined with data iPhones and iPads disclose when they join wifi networks, to potentially reveal where users live.
The tool works by accessing Apple's database of wireless access points, which is collected by iPhones and iPads that have GPS and wifi location services enabled.
Most iPhones and iPads regularly submit information about access points within range to Apple, regardless of whether users connect to them.
Apple uses this 'crowd-sourced' data to run its location services, however the location database is not meant to be public.
According to independent penetration tester Hubert Seiwert, Apple will reveal MAC address and GPS information on hundreds of nearby access points if a user queries the location of a single wifi router's MAC address.
His proof of concept Python application, iSniff GPS, uses this process to allow users to view maps of nearby access points.
"You can send Apple a single MAC address of a wifi router and they will send back a result set including the GPS coordinates of that MAC address and about 400 others,” Seiwert said.
“You can plug that MAC address into Apple's location service through iSniff GPS and you will get very precise information back from that.”
The tool makes use of a discovery last year by Immunity Inc's Mark Wuergler, who discovered that iPhones and iPads sometimes disclose sensitive information about previously joined access points when joining a new wifi network.
If captured, this data could previously be used with Google’s location services to discover the locations of targeted devices. Google made its location services more difficult to access following the story.
Seiwert said Apple devices when joining networks will sometimes disclose via ARP requests the MAC addresses of the last 3 wifi routers they have previously connected to, which will frequently include the device owner's home wifi router.
His tool captures these ARP requests along with multicast DNS and SSID name probes for previously joined networks.
“This could be used to locate .. where people live,” he said.
In a test run at BlackHat last year, Seiwert used iSniff GPS to collect data from 1337 devices probing for 3543 unique networks.
The tool contains Python code that uses Scapy to sniff live networks or to read pcap files, and presents the data collected using Google Maps views within a Django web interface.
Seiwert's slides from Syscan 2013 are available here [zip].