david barroso - iphone + botnets = fun! [rootedcon 2010]
DESCRIPTION
TRANSCRIPT
Congreso de Seguridad ~ Rooted CON’2010
iPhone + Botnets = Fun
El ascenso y caída de un imperio
Autor: David Barroso
Congreso de Seguridad ~ Rooted CON’2010
Agenda
• Nuestro personaje • Cómo intentó infectar millones de iPhones
– En quién se fijó – Cómo lo hizo – Cómo acabó
• Conclusiones
2
Congreso de Seguridad ~ Rooted CON’2010
Aviso
La presentación contiene datos reales y datos de ciencia-ficción
En caso de duda, siga el principio de la Navaja de Occam
3
Congreso de Seguridad ~ Rooted CON’2010
Nuestro personaje
• Nombre: Homer • Edad: 38 • Ocupación: Inspector
de Seguridad • Lugar: Springfield
4
Congreso de Seguridad ~ Rooted CON’2010
Springfield Shopper
5
Mariposa
Congreso de Seguridad ~ Rooted CON’2010
Congreso de Seguridad ~ Rooted CON’2010
Hmmmm
7
Congreso de Seguridad ~ Rooted CON’2010
Idea
8
Congreso de Seguridad ~ Rooted CON’2010
Ser el amo de millones de ordenadores
9
Congreso de Seguridad ~ Rooted CON’2010 10
Congreso de Seguridad ~ Rooted CON’2010 11
Congreso de Seguridad ~ Rooted CON’2010
Be Cool
12
Congreso de Seguridad ~ Rooted CON’2010
iPhone e iPad
13
Congreso de Seguridad ~ Rooted CON’2010
iBoard e iMat
14
Congreso de Seguridad ~ Rooted CON’2010
iPhone
15
Fuente: Wikipedia
Congreso de Seguridad ~ Rooted CON’2010
Tienda de donuts
16
Congreso de Seguridad ~ Rooted CON’2010
Encuentro con A-Z
17
Congreso de Seguridad ~ Rooted CON’2010
Zhiguli Sedan
18
Congreso de Seguridad ~ Rooted CON’2010
Mercedes SLR
19
Congreso de Seguridad ~ Rooted CON’2010
ZeuS - Precio
• ZeuS Kit 1.3.4 ($3000 - $4000) – Licencia por hardware
• Backconnect ($1500) • Firefox form grabber ($2000) • Soporte Jabber ($500) • VNC ($10000) • Windows Vista/Windows 7 ($2000)
20
Congreso de Seguridad ~ Rooted CON’2010
ZeuS Builder
21
Congreso de Seguridad ~ Rooted CON’2010
ZeuS no infecta
• Spam • Drive-by downloads • Web 2.0 infections • Pay-per-install • Falsos codecs
22
Congreso de Seguridad ~ Rooted CON’2010
Tienda de donuts
23
Congreso de Seguridad ~ Rooted CON’2010
Ikee Worm
• Primer código malicioso para iPhone • Ashley Towns, 21 años • Australia
24
Congreso de Seguridad ~ Rooted CON’2010
SSH Scanning
25
Congreso de Seguridad ~ Rooted CON’2010
Ikee Worm
• Ikee iPhone Worm (alpine): “<ikee> Secondly I was quite amazed by the number
of people who didn't RTFM and change their default passwords.”
• Segundo iPhone Worm (ohshit!): – Roba información – Es una botnet con dos C&C – Afecta a bancos holandeses – Ya no es sólo un script de prueba sino que tiene
un proceso malicioso (sshd) 26
Congreso de Seguridad ~ Rooted CON’2010
Idea
27
Congreso de Seguridad ~ Rooted CON’2010
iOrchard
iOrchard = Botnet de iPhones
Basada en ZeuS
28
Congreso de Seguridad ~ Rooted CON’2010
Coming soon
29
ZeuS vs
iOrchard
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Conexión al C&C
30
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – C&C
31
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – C&C
32
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – C&C
33
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– C&C
34
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– C&C
35
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– C&C
36
• Basado en LAMP (como casi todos) • Fuerte uso de javascript (mootools)
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Cifrado (antiguo)
37
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Cifrado
• ZeuS utiliza el algoritmo RC4 con claves de 256 bytes – Enviar datos robados – Contactar con el C&C – Recibir ordenes
• El fichero de configuración está cifrado con la clave única (unas 1200)
38
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Cifrado
• Algoritmos disponibles enum { kCCAlgorithmAES128, kCCAlgorithmDES, kCCAlgorithm3DES, kCCAlgorithmCAST, kCCAlgorithmRC4, kCCAlgorithmRC2 };
39
CCCrypt(encryptOrDecrypt, kCCAlgorithmRC4, kCCOptionPKCS7Padding, vkey, //"123456789012345678901234", //key kCCKeySizeDES, vinitVec, //"init Vec", //iv, vplainText, //"Your Name", //plainText, plainTextBufferSize, (void *)bufferPtr, bufferPtrSize, &movedBytes);
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Supervivencia
• HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon
"Userinit" = "C:\WINDOWS\system32\userinit.exe,C:\WINDOWS\system32\sdra64.exe
• HKLM\Software\Microsoft\Windows\CurrentVersion\Run
"Userinit" = "C:\Documents and Settings\user\Application Data\sdra64.exe"
40
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Supervivencia
• LaunchDaemons – /System/Library/LaunchDaemons/ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/
PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.simpsons.iorchard</string> <key>Program</key> <string>/usr/bin/iorchard</string> <key>StandardErrorPath</key> <string>/dev/null</string> <key>OnDemand</key> <false/> </dict> </plist> 41
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Información privada
• Roba credenciales almacenados en el Windows Protected Storage
• Roba certificados X.509 • Roba credenciales FTP y POP3 • Roba cookies HTTP y Flash
42
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Direcciones de correo – /var/mobile/Library/Preferences/
com.apple.accountsettings.plist • POP3, IMAP, Gmail, MobileMe, etc.
– No está la contraseña (PSKeychainUtilities) • /private/var/Keychains/keychain-2.db 1||||||||||||||[email protected]||mail.mrx.com|smtp||25||<t?????hT
Sj??\]6=?|apple
43
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• SMS – /private/var/mobile/Library/SMS/sms.db
sqlite> select * from message; 581|605234312|1268480030|"Hola David, soy Homer.
Oye, llamame por favor cuando puedas, vale? Venga, hasta luego." - via SpinVox. Recuerda: DictaSMS es gratis. Solo se cobra al que te llama si te deja msj. |2|0||230|0|0|0|0||es|||1||
44
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Llamadas – /System/Library/PrivateFrameworks/
AppSupport.framework/calldata.db – /private/var/mobile/Library/CallHistory/call_history.db sqlite> select * from call; 1357|0097142925822|1268039168|0|5|1659 1358|943324191|1268039290|77|5|-1 1359|+971503515393|1268040783|0|131077|-1 1360|+971333495251|1268040824|810|5|-1
45
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Contactos – NSArray *people = (NSArray
*)ABAddressBookCopyArrayOfAllPeople(addressBook);
– /private/var/mobile/Library/AddressBook/AddressBook.sqlitedb
sqlite> select * from ABPerson;
46
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Eventos y tareas – /private/var/mobile/Library/Calendar/Calendar.sqlitedb sqlite> .tables Alarm OccurrenceCache AlarmChanges OccurrenceCacheDays Attendee Participant AttendeeChanges Recurrence Calendar RecurrenceChanges CalendarChanges Store Event Task EventChanges TaskChanges EventExceptionDate _SqliteDatabaseProperties
47
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Redes Wireless – /Library/Preferences/SystemConfiguration/
com.apple.wifi.plist • SSID_STR • lastJoined • lastAutoJoined
48
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Datos del teléfono – /var/mobile/Library/Preferences/
com.apple.commcenter.plist • ICCID, IMSI, SBFormattedPhoneNumber
– /var/mobile/Library/Preferences/com.apple.mobilephone.settings.plist
• call-forwarding-number – /var/mobile/Library/Preferences/
com.apple.mobilephone.plist • DialerSavedNumber • AddressBookLastDialedUid
49
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Fotografías – /var/mobile/Media/DCIM/100APPLE
• JPG y PNG • Longitud y latitud
50
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Localización geográfica – /var/mobile/Library/Preferences/com.apple.Maps.plist
• UserLocation with date • /var/mobile/Library/Preferences/
com.apple.preferences.datetime.plist – Timezone
– /var/mobile/Library/Preferences/com.apple.weather.plist
• Tiempo en ciudades
51
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Búsquedas recientes – /var/mobile/Library/Preferences/
com.apple.mobilesafari.plist • RecentSearches
– /var/mobile/Library/Preferences/com.apple.youtube.plistTimezone
• Bookmarks, History, lastSearch
52
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Información privada
• Keyboard Cache – /var/mobile/Library/Keyboard/
• dynamic-text.dat • es_ES-dynamic-text.dat
• Imagenes cacheadas • /private/var/mobile/Library/Caches/Snapshots
53
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Robo de credenciales
• Hooks típicos en ring3: wininet.dll
• HttpSendRequestW • HttpSendRequestA • HttpSendRequestExW • HttpSendRequestExA • InternetReadFile • InternetReadFileExW • InternetReadFileExA • InternetQueryDataAvailable • InternetCloseHandle • HttpQueryInfoA • HttpQueryInfoW
54
ws2_32.dll • send • sendto • WSASend • WSASendTo • closesocket
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Robo de credenciales
• Hooks típicos en ring3: user32.dll – GetMessageW – GetMessageA – PeekMessageA – PeekMessageW – GetClipboardData – TranslateMessage
crypt32.dll – PFXImportCertStore
55
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Robo de credenciales
• Hagamos lo mismo que en los cajeros automáticos
56
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Robo de credenciales
• Hagamos lo mismo que en los cajeros automáticos
57
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Robo de credenciales
• Teclado en el iPhone – UIKeyboardLayout (UIView)
• UIKeyboardLayoutRoman – UIKeyboardInputManager
• UIKeyboardInputManagerAlphabet (hook predicción)
– Para hacer hooks: • MobileSubstrate
– void MSHookFunction(void* function, void* replacement, void** p_original);
58
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – Kill OS
• Nethell: – Borra NTDETECT.COM y ntldr
• InfoStealer: – Borra \drivers\*.sys – Borra algunas claves (HKLM\Microsoft\Windows NT
\CurrentVersion\Winlogon: Shell = Explorer.exe • ZeuS:
– Borra HKCU, HKLM\Software y HKLM\System • Glacial Dracon:
– del /A:S /Q /F C:\\*.* – del /S /Q %SYSTEMROOT% %PROGRAMFILES%
59
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Kill OS
• rm –rf /
60
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– Acceso por VNC
• $10000 en ZeuS • Open Source en iOrchard ($0) • Integrando Veency, un servidor VNC
disponible en Cydia
61
Congreso de Seguridad ~ Rooted CON’2010
Objetivo conseguido
62
Congreso de Seguridad ~ Rooted CON’2010
Veamos los resultados
Después de varias oleadas de infecciones masivas…
… y de una intensa actividad de compra, alquiler y venta
63
Congreso de Seguridad ~ Rooted CON’2010
ZeuS – ZeusTracker
64
Congreso de Seguridad ~ Rooted CON’2010
iOrchard– iOrchardTracker
65
Congreso de Seguridad ~ Rooted CON’2010
Conclusiones
• Hay unos 40 millones de iPhone – 10% jailbreak
• Infección es simple – Contraseña por defecto
• Acceso total a los datos privados – Acceso a tu entidad financiera – Spear phishing
• Conectividad 24x7 • Copiemos las características de un caso de éxito • Vigila tu iPod/iPhone/iPad
66
Congreso de Seguridad ~ Rooted CON’2010 67
¿Cómo acabó todo? ¿Qué pasó con
Homer y su iOrchard?
Congreso de Seguridad ~ Rooted CON’2010
¿Cómo acabó todo?
68
Congreso de Seguridad ~ Rooted CON’2010
¿Cómo acabó todo?
69
Congreso de Seguridad ~ Rooted CON’2010
¿Cómo acabó todo?
70
Congreso de Seguridad ~ Rooted CON’2010
Gracias a: S21sec e-crime Jay Freeman (saurik) Nicolas Seriot (iPhone privacy) KennyTM (Keyboard hooks) Homer – Matt Groening
David Barroso [email protected]
@lostinsecurity