Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

RootedCON 2016 - Broker & MQ injection

464 views

Published on

Presentación de un nuevo concepto de ataques: Broker Injection, así como la herramienta de explotación: Enteletaor Broker injector.

El video con todas las animaciones lo puedes encontrar en:

https://youtu.be/OxtBiQ7n60Y

Published in: Internet
  • Be the first to comment

  • Be the first to like this

RootedCON 2016 - Broker & MQ injection

  1. 1. Broker & MQ injection Daniel García (cr0hn) @ggdaniel
  2. 2. <spam>Me (cr0hn)</spam> • Auditor de seguridad y hacking ético. • Programador Python. • Organizador de “saraos”. • Creador/co-creador de más de 16 herramientas de seguridad. • Trabajo en Abirtone: • Formación muy especializada. • Herramientas de hacking a medida. https://www.linkedin.com/in/garciagarciadaniel @ggdaniel
  3. 3. Capítulo I Nuestros amigos los brokers y las MQ (Message Queues)
  4. 4. ¿Qué es una MQ? “In computer science, message queues and mailboxes are software-engineering components used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content” https://en.wikipedia.org/wiki/Message_queue
  5. 5. ¿Qué es una MQ? “In computer science, message queues and mailboxes are software-engineering components used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content” https://en.wikipedia.org/wiki/Message_queue
  6. 6. ¿Qué es una MQ? … versión humanos :)
  7. 7. ¿Qué es una MQ? … versión humanos :)
  8. 8. ¿Qué es un broker? “Message broker is an intermediary program module that translates a message from the formal messaging protocol of the sender to the formal messaging protocol of the receiver” https://en.wikipedia.org/wiki/Message_broker
  9. 9. ¿Qué es un broker? “Message broker is an intermediary program module that translates a message from the formal messaging protocol of the sender to the formal messaging protocol of the receiver” https://en.wikipedia.org/wiki/Message_broker
  10. 10. ¿Qué es un broker? version para … frikis? :)
  11. 11. ¿Qué es un broker? version para … frikis? :)
  12. 12. ¿Qué es un broker? version para … frikis? :)
  13. 13. Brokers vs MQ Broker Message Queue Centralizado Sí No Tolerancia a fallos Si el broker (y sus réplicas) caen, la comunicación cae Si un elemento cae, puede seguir funcionando Localización Ubicación centralizada y conocida Cada elemento ha de saber dónde están el resto de nodos (directorio de servicios) Transformaciones Sí No (Implementación manual) Desacoplado Sí Se puede implementar Complejidad Media (introduce un nuevo elemento) Sencillo
  14. 14. Capítulo II Quien tiene un amigo…
  15. 15. Pongamos caras… ¿Cuáles son los Brokers / MQ OpenSource más usados? •Redis •RabbitMQ •ZeroMQ
  16. 16. Caso I: envío de mails Web App send_mail(…) … … • Modelo simple
  17. 17. Caso I: envío de mails Web App send_mail(…) … … • Modelo simple
  18. 18. Caso I: envío de mails Web App send_mail(…) … … • Modelo simple
  19. 19. Caso I: envío de mails Problema El usuario tiene que esperar hasta que el correo sea enviado • Modelo simple
  20. 20. Caso I: envío de mails Web App send_thread() … … • Modelo con hilos
  21. 21. Caso I: envío de mails Web App send_thread() … … • Modelo con hilos
  22. 22. Caso I: envío de mails Problema Crearemos tantos hilos como correos -> creación incierta de numero de hilos • Modelo con hilos
  23. 23. Caso I: envío de mails Web App send_thread() … … • Modelo con hilos: problema
  24. 24. Caso I: envío de mails Web App send_thread() … … • Modelo con hilos: problema send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…)
  25. 25. Caso I: envío de mails Web App send_thread() … … • Modelo con hilos: problema send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…) send_mail(…)
  26. 26. Caso I: envío de mails Web App send_thread() … … • Modelo con broker - I send_mail(…)
  27. 27. Caso I: envío de mails Web App send_mail() … … • Modelo con broker - I
  28. 28. Caso I: envío de mails Web App send_mail() … … • Modelo con broker - I mail(…) Worker Broker
  29. 29. Caso I: envío de mails Web App send_mail() … … • Modelo con broker - I mail(…) Worker Broker
  30. 30. mail(…) Worker Caso I: envío de mails Web App send_mail() … … • Modelo con broker - II mail(…) Worker Broker
  31. 31. mail(…) Worker Caso I: envío de mails Web App send_mail() … … • Modelo con broker - II mail(…) Worker Broker
  32. 32. mail(…) Worker Caso I: envío de mails Web App send_mail() … … • Modelo con broker - II mail(…) Worker Broker
  33. 33. mail(…) Worker Caso I: envío de mails Web App send_mail() … … • Modelo con broker - III mail(…) Worker Broker
  34. 34. mail(…) Worker Caso I: envío de mails Web App send_mail() … … • Modelo con broker - III mail(…) Worker Broker
  35. 35. Capítulo III “Si revelas tus secretos al viento, no culpes al viento por revelarlos a los árboles” Jalil Gibran
  36. 36. Broker injection: Concepto • Al igual que existe SQL Injection, Cross Site Injection o DLL injection … por qué no: ¿Broker/MQ Injection?
  37. 37. Broker injection: Definición Lograr interceptar, alterar, interferir o inyectar nueva información en sistemas y entornos que usan sistemas de brokering y Message Queues como elementos facilitadores de la comunicación.
  38. 38. Broker injection: Definición Lograr interceptar, alterar, interferir o inyectar nueva información en sistemas y entornos que usan sistemas de brokering y Message Queues como elementos facilitadores de la comunicación.
  39. 39. Broker injection: Explicación visual Web App send_mail() … … mail(…) Worker Broker
  40. 40. Broker injection: Explicación visual Web App send_mail() … … mail(…) Worker Broker
  41. 41. Broker injection: Explicación visual Broker TCP/IP 5672/TCP 3679/TCP 5555/TCP
  42. 42. Broker injection: Explicación visual Broker TCP/IP 5672/TCP 3679/TCP 5555/TCP
  43. 43. Broker injection: Explicación visual Broker TCP/IP 5672/TCP 3679/TCP 5555/TCP
  44. 44. Broker injection: Explicación visual Broker TCP/IP 5672/TCP 3679/TCP 5555/TCP
  45. 45. Broker Broker injection: Explicación visual TCP/IP 5672/TCP 3679/TCP 5555/TCP
  46. 46. Broker Broker injection: Explicación visual TCP/IP 5672/TCP 3679/TCP 5555/TCP
  47. 47. Broker Broker injection: Explicación visual TCP/IP 5672/TCP 3679/TCP 5555/TCP
  48. 48. Broker injection: Qué nos permite • Lectura de información enviada
  49. 49. Broker injection: Qué nos permite • Lectura de información enviada send_mail(…) … … Broker
  50. 50. Broker injection: Qué nos permite • Lectura de información enviada send_mail(…) … … Broker
  51. 51. Broker injection: Qué nos permite • Lectura de información enviada send_mail(…) … … Broker
  52. 52. Broker injection: Qué nos permite • Listar tareas remotas
  53. 53. Broker injection: Qué nos permite • Listar tareas remotas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … …
  54. 54. Broker injection: Qué nos permite • Listar tareas remotas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … …
  55. 55. Broker injection: Qué nos permite • Listar tareas remotas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … … - do_auth(p0:str) - send_mail(p0:str, p1:str..) - log(p0:str) - send_alert(p0:str)
  56. 56. Broker injection: Qué nos permite • Borrar tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … …
  57. 57. Broker injection: Qué nos permite • Borrar tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … … Intrusion detection alert Try to authenticate an user
  58. 58. Broker injection: Qué nos permite • Borrar tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … … Intrusion detection alert Try to authenticate an user
  59. 59. Broker injection: Qué nos permite • Borrar tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … … Try to authenticate an user
  60. 60. Broker injection: Qué nos permite • Borrar tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … send_alert(…) … …
  61. 61. Broker injection: Qué nos permite • Inyectar nuevas tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … …
  62. 62. Broker injection: Qué nos permite • Inyectar nuevas tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … … - send_mail( - to: boss@company.es - from: user@company.es - subject: You smell like turtle bank )
  63. 63. Broker injection: Qué nos permite • Inyectar nuevas tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … …
  64. 64. Broker injection: Qué nos permite • Inyectar nuevas tareas send_mail(…) … … Broker do_auth(…) … … Log(…) … …
  65. 65. Capítulo IV Jugando, enredando, trasteando o… “enteletando”
  66. 66. Broker injector: Enteletaor • Un broker injector que nos permitirá realizar diversos tipos de inyecciones sobre los brokers más conocidos: • RabbitMQ • Redis • ZeroMQ • Presentado por primera vez junto a esta charla.
  67. 67. Broker injector: Enteletaor • Un broker injector que nos permitirá realizar diversos tipos de inyecciones sobre los brokers más conocidos: • RabbitMQ • Redis • ZeroMQ • Presentado por primera vez junto a esta charla.
  68. 68. Broker injector: Enteletaor
  69. 69. Broker injector: Enteletaor
  70. 70. Broker injector: Enteletaor Inyectar nuevas tareas Listar procesos/tareas Detectar brokers abiertos Extraer información de tareas Borrar tareas remotas
  71. 71. Broker injector: Enteletaor • Web: • https://github.com/cr0hn/enteletaor • Autor: • Daniel García (cr0hn)
  72. 72. Broker injector: Enteletaor
  73. 73. Broker injector: Enteletaor ESCENARIO:
  74. 74. Broker injector: Enteletaor ESCENARIO: http://pupita-sana.com
  75. 75. Broker injector: Enteletaor ESCENARIO: http://pupita-sana.com Web App 10.10.0.10
  76. 76. Broker injector: Enteletaor ESCENARIO: http://pupita-sana.com Web App 10.10.0.10 10.10.0.20 Worker
  77. 77. Broker injector: Enteletaor ESCENARIO: http://pupita-sana.com Web App 10.10.0.10 10.10.0.20 Worker ¡ Demo time !
  78. 78. Capítulo V Más que brokers…
  79. 79. •Redis •RabbitMQ •ZeroMQ Otros usos
  80. 80. •Redis •RabbitMQ •ZeroMQ Otros usos
  81. 81. Redis: algunos ejemplos de uso • Almacenamiento distribuido de sesiones. • Sistema de cache de estáticos. • Sistema de cache de objetos de bases de datos. • Locks distribuidos -> solución para problemas de concurrencia. • Modelo productor/consumidor. • Alternativa de sencilla implantación y uso a sistemas NoSQL. • Sistema de gestión de colas. • Contadores distribuidos.
  82. 82. Redis: algunos ejemplos de uso • Almacenamiento distribuido de sesiones. • Sistema de cache de estáticos. • Sistema de cache de objetos de bases de datos. • Locks distribuidos -> solución para problemas de concurrencia. • Modelo productor/consumidor. • Alternativa de sencilla implantación y uso a sistemas NoSQL. • Sistema de gestión de colas. • Contadores distribuidos.
  83. 83. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo sin cache
  84. 84. Caso II: Redis como cache Web App http://pupita-sana.com Acacio • Modelo sin cache
  85. 85. Caso II: Redis como cache Web App http://pupita-sana.com Acacio • Modelo sin cache
  86. 86. Caso II: Redis como cache Problema El acceso a disco y a base de datos es costoso en tiempo y recursos. • Modelo sin cache
  87. 87. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo sin cache
  88. 88. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo sin cache
  89. 89. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo sin cache
  90. 90. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo sin cache
  91. 91. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  92. 92. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  93. 93. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  94. 94. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  95. 95. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  96. 96. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  97. 97. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  98. 98. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  99. 99. Caso II: Redis como cache Web App http://pupita-sana.com • Modelo con Redis
  100. 100. Caso II: Redis como cache • Modelo con Redis Pero… ¿Redis no sería entonces el cuello de botella?
  101. 101. Caso II: Redis como cache • Modelo con Redis
  102. 102. Caso II: Redis como cache • Modelo con Redis Midiendo el rendimiento con: redis-benchmark
  103. 103. Caso II: Redis como cache • Modelo con Redis Midiendo el rendimiento con: redis-benchmark
  104. 104. Caso II: Redis como cache • Modelo con Redis Pero… ¿eso es mucho?
  105. 105. Caso II: Redis como cache • Modelo con Redis
  106. 106. Caso II: Redis como cache • Modelo con Redis http://www.internetlivestats.com/one-second/#google-band
  107. 107. Caso II: Redis como cache • Modelo con Redis http://www.internetlivestats.com/one-second/#google-band
  108. 108. Capítulo VI Tu caché, mi caché, nuestra caché… ¡qué más da!
  109. 109. Cache poisoning en Redis Web App http://pupita-sana.com
  110. 110. Cache poisoning en Redis Web App http://pupita-sana.com
  111. 111. Cache poisoning en Redis Web App http://pupita-sana.com
  112. 112. Cache poisoning en Redis Web App http://pupita-sana.com
  113. 113. Cache poisoning en Redis Web App http://pupita-sana.com
  114. 114. Cache poisoning en Redis Web App http://pupita-sana.com
  115. 115. Cache poisoning en Redis Web App http://pupita-sana.com
  116. 116. Cache poisoning en Redis ¡ Demo time !
  117. 117. Cache poisoning en Redis ¡ Demo time !
  118. 118. Capítulo final Conclusiones
  119. 119. El problema real… Web App http://pupita-sana.com
  120. 120. El problema real… Web App http://pupita-sana.com
  121. 121. El problema real… Web App http://pupita-sana.com
  122. 122. No pongamos puertas al mar Web App http://pupita-sana.com
  123. 123. 5672/TCP 3679/TCP 5555/TCP No pongamos puertas al mar Web App http://pupita-sana.com
  124. 124. 5672/TCP 3679/TCP 5555/TCP No pongamos puertas al mar Web App http://pupita-sana.com
  125. 125. Consejos básicos de securización • No exponer los servicios de brokering a internet, solo en red interna. • Sino es posible: • Usar usuario/contraseña. • No usar las bases de datos por defecto. • Usar bases de datos diferentes, para servicios diferente. • Usar transporte seguro (SSL). • No usar puertos por defecto.
  126. 126. Y si… (locura 1)
  127. 127. http://mrlooquer.com Y si… (locura 1)
  128. 128. http://mrlooquer.com Y si… (locura 1)
  129. 129. http://mrlooquer.com Y si… (locura 1)
  130. 130. Y si… (locura++)
  131. 131. Y si… (locura++) • ZeroMQ es usado por Storm Procesamiento en tiempo real de big data
  132. 132. Y si… (locura++) • ZeroMQ es usado por Storm • Storm es usado para análisis de stocks Procesamiento en tiempo real de big data
  133. 133. Y si… (locura++) • ZeroMQ es usado por Storm • Storm es usado para análisis de stocks • Si proporcionamos información incorrecta Procesamiento en tiempo real de big data
  134. 134. Y si… (locura++) • ZeroMQ es usado por Storm • Storm es usado para análisis de stocks • Si proporcionamos información incorrecta • Afectar al sistema financiero Procesamiento en tiempo real de big data
  135. 135. Y si… (locura++) • ZeroMQ es usado por Storm • Storm es usado para análisis de stocks • Si proporcionamos información incorrecta • Afectar al sistema financiero Procesamiento en tiempo real de big data
  136. 136. ¿Preguntas?
  137. 137. ¡Muchas gracias!

×