XMPP, algo más que chat        Luis Delgado         @ldelgadoj
Índice1. Introducción2. Estructura3. Seguridad4. Tuenti5. Google6. Conclusiones                           2
Introducción• 1998: Jeremie Miller -> Jabber• 2000: Envío de draft al GD IETF -> IMPP  -> Expira sin contribuciones• 2002:...
Estructura• Conexiones TCP de larga duración  -> BOSH (HTTP-Bind) -> Connection Manager• Intercambio asíncrono de informac...
XML Stanza - Message• Uso: enviar mensajes de una entidad a otra• Tipos: normal, chat, groupchat, headline, error  <messag...
XML Stanza - Presence• Forma básica de broadcast entre una entidad  y todos sus subscriptores• Se puede enviar a un único ...
XML Stanza - IQ• Uso: pedir información a otra entidad/servidor• Tipos: get, set, result, error• Extensiones en XMPP  <iq ...
Seguridad• Pilar importante del protocolo (&Privacidad)• Pocas vulnerabilidades conocidas (1999+)• ¿A qué nos enfrentamos?...
Seguridad (II)• Comunicación cifrada (TLS - SSL)  client<->server & server<->server  end-to-end encryption (PGP)• Autentic...
Seguridad (III)• Spam  sistema de subscripción (presences)  $$ -> no es rentable  limite envíos/tiempo (cuentas+ -> captch...
11
Tuenti - Chat• Cadena de conexión  -> Mismo SID que Web/API -> ¿httponly?  -> Permite elegir el recurso• Configuración apl...
Tuenti - TuTráfico en la red social gratuito-> Tunelización a través de XMPP                                    14
Tuenti - Tu (II)¿Es realmente interesante? -> Algunas cifras                                               15
Tuenti – Tu (III)• Otras opciones ya conocidas:  -> FaceCat (Facebook NetCat)  -> Google Spreadsheet (IMPORTDATA)  -> Face...
Google Talk• Tres vectores de ataque  -> Dispositivos android  -> Formato móvil  -> Aplicación de escritorio• ¿A qué nos e...
Google Talk (II)• Cadena de conexión vulnerable  -> ¿One-Time Token? -> Timeout  -> PLAIN mechanism  -> TLS required -> ¿r...
Google Talk (II)• Cadena de conexión vulnerable  -> ¿One-Time Token? -> Timeout  -> PLAIN mechanism  -> TLS required -> ¿r...
Google Talk (II)• Cadena de conexión vulnerable  -> ¿One-Time Token? -> Timeout  -> PLAIN mechanism  -> TLS required -> ¿r...
Google Talk (II)• Cadena de conexión vulnerable  -> ¿One-Time Token? -> Timeout  -> PLAIN mechanism  -> TLS required -> ¿r...
Google Talk (III)• Aplicación GtalkGateway  -> Demo• Actualización… ¿vulnerable?• Muchos más servicios                    ...
27
¿Preguntas?              28
Luis Delgado - XMPP, algo más que chat [RootedCON 2012]
Luis Delgado - XMPP, algo más que chat [RootedCON 2012]
Luis Delgado - XMPP, algo más que chat [RootedCON 2012]
Luis Delgado - XMPP, algo más que chat [RootedCON 2012]
Luis Delgado - XMPP, algo más que chat [RootedCON 2012]
Upcoming SlideShare
Loading in …5
×

Luis Delgado - XMPP, algo más que chat [RootedCON 2012]

12,748 views

Published on

La ponencia consistirá en mostrar la importancia de la seguridad en servicios que utilicen XMPP (en muchos casos olvidada o en un segundo plano), mostrando para ello una breve introducción al protocolo y dos casos reales (Google y Tuenti).

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
12,748
On SlideShare
0
From Embeds
0
Number of Embeds
6,443
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Luis Delgado - XMPP, algo más que chat [RootedCON 2012]

  1. 1. XMPP, algo más que chat Luis Delgado @ldelgadoj
  2. 2. Índice1. Introducción2. Estructura3. Seguridad4. Tuenti5. Google6. Conclusiones 2
  3. 3. Introducción• 1998: Jeremie Miller -> Jabber• 2000: Envío de draft al GD IETF -> IMPP -> Expira sin contribuciones• 2002: Segundo intento -> IETF -> XMPP• 2004: Se establecen 4 RFC’s (core, …) 3
  4. 4. Estructura• Conexiones TCP de larga duración -> BOSH (HTTP-Bind) -> Connection Manager• Intercambio asíncrono de información (id)• XML Stream• XML Stanza 4
  5. 5. XML Stanza - Message• Uso: enviar mensajes de una entidad a otra• Tipos: normal, chat, groupchat, headline, error <message to=x2@domain.com type=chat xml:lang=es> <subject>SUBJECT</subject> <body>BODY</body> </message> 5
  6. 6. XML Stanza - Presence• Forma básica de broadcast entre una entidad y todos sus subscriptores• Se puede enviar a un único usuario con el atributo TO <presence to=x2@domain.com type=suscribe/> <presence to=x1@domain.com type=suscribed/> 6
  7. 7. XML Stanza - IQ• Uso: pedir información a otra entidad/servidor• Tipos: get, set, result, error• Extensiones en XMPP <iq type=’get’> <iq from=’x1@domain.com’ <query xmlns=’jabber:iq:roster’/> to ‘x1@domain.com’ </iq> type=’set’> <query xmlns=’jabber:iq:roster’> <item jid=’x2@domain.com’/> </query> </iq> 7
  8. 8. Seguridad• Pilar importante del protocolo (&Privacidad)• Pocas vulnerabilidades conocidas (1999+)• ¿A qué nos enfrentamos? -> rogue servers, address spoofing, DoS, spam, phising, leaks, logging, code issues…• Veamoslo más en detalle 8
  9. 9. Seguridad (II)• Comunicación cifrada (TLS - SSL) client<->server & server<->server end-to-end encryption (PGP)• Autenticación e identidad parámetro ‘from’ verificación del dominio (dialback) set de caracteres unicode (a<->a) 9
  10. 10. Seguridad (III)• Spam sistema de subscripción (presences) $$ -> no es rentable limite envíos/tiempo (cuentas+ -> captcha)• Al final… -> Implementación del protocolo (auth, tls) -> Configuración de los servidores (presence) 10
  11. 11. 11
  12. 12. Tuenti - Chat• Cadena de conexión -> Mismo SID que Web/API -> ¿httponly? -> Permite elegir el recurso• Configuración aplicación android -> Libería SMACK -> accept-all 12
  13. 13. Tuenti - TuTráfico en la red social gratuito-> Tunelización a través de XMPP 14
  14. 14. Tuenti - Tu (II)¿Es realmente interesante? -> Algunas cifras 15
  15. 15. Tuenti – Tu (III)• Otras opciones ya conocidas: -> FaceCat (Facebook NetCat) -> Google Spreadsheet (IMPORTDATA) -> Facebook (Debug->Echo->URL) -> (…) 16
  16. 16. Google Talk• Tres vectores de ataque -> Dispositivos android -> Formato móvil -> Aplicación de escritorio• ¿A qué nos enfrentamos? 17
  17. 17. Google Talk (II)• Cadena de conexión vulnerable -> ¿One-Time Token? -> Timeout -> PLAIN mechanism -> TLS required -> ¿really?• Extensiones XMPP -> Contactos -> Feed emails• Añadir un contacto -> ¿añade a contactos? 18
  18. 18. Google Talk (II)• Cadena de conexión vulnerable -> ¿One-Time Token? -> Timeout -> PLAIN mechanism -> TLS required -> ¿really?• Extensiones XMPP -> Contactos -> Feed emails• Añadir un contacto -> ¿añade a contactos? 20
  19. 19. Google Talk (II)• Cadena de conexión vulnerable -> ¿One-Time Token? -> Timeout -> PLAIN mechanism -> TLS required -> ¿really?• Extensiones XMPP -> Contactos -> Feed emails• Añadir un contacto -> ¿añade a contactos? 22
  20. 20. Google Talk (II)• Cadena de conexión vulnerable -> ¿One-Time Token? -> Timeout -> PLAIN mechanism -> TLS required -> ¿really?• Extensiones XMPP -> Contactos -> Feed emails• Añadir un contacto -> ¿añade a contactos? 24
  21. 21. Google Talk (III)• Aplicación GtalkGateway -> Demo• Actualización… ¿vulnerable?• Muchos más servicios 25
  22. 22. 27
  23. 23. ¿Preguntas? 28

×