rootedcon 2016 - broker & mq injection
TRANSCRIPT
Broker&MQinjectionDanielGarcía(cr0hn)
@ggdaniel
<spam>Me(cr0hn)</spam>
• Auditordeseguridadyhackingético.• ProgramadorPython.• Organizadorde“saraos”.• Creador/co-creador de más de 16herramientasdeseguridad.
• TrabajoenAbirtone:• Formaciónmuyespecializada.• Herramientasdehackingamedida.
https://www.linkedin.com/in/garciagarciadaniel
@ggdaniel
CapítuloI
NuestrosamigoslosbrokersylasMQ(MessageQueues)
¿QuéesunaMQ?
“Incomputerscience,messagequeuesandmailboxesaresoftware-engineeringcomponentsusedforinter-processcommunication(IPC),orforinter-threadcommunicationwithinthesameprocess.Theyuseaqueueformessaging–the
passingofcontrolorofcontent”
https://en.wikipedia.org/wiki/Message_queue
¿QuéesunaMQ?
“Incomputerscience,messagequeuesandmailboxesaresoftware-engineeringcomponentsusedforinter-processcommunication(IPC),orforinter-threadcommunicationwithinthesameprocess.Theyuseaqueueformessaging–the
passingofcontrolorofcontent”
https://en.wikipedia.org/wiki/Message_queue
¿QuéesunaMQ?…versiónhumanos:)
¿QuéesunaMQ?…versiónhumanos:)
¿Quéesunbroker?
“Messagebrokerisanintermediaryprogrammodulethattranslatesamessagefromthe
formalmessagingprotocolofthesendertotheformalmessagingprotocolofthereceiver”
https://en.wikipedia.org/wiki/Message_broker
¿Quéesunbroker?
“Messagebrokerisanintermediaryprogrammodulethattranslatesamessagefromthe
formalmessagingprotocolofthesendertotheformalmessagingprotocolofthereceiver”
https://en.wikipedia.org/wiki/Message_broker
¿Quéesunbroker?versionpara…frikis?:)
¿Quéesunbroker?versionpara…frikis?:)
¿Quéesunbroker?versionpara…frikis?:)
BrokersvsMQ
Broker MessageQueue
Centralizado Sí No
Toleranciaafallos Sielbroker(ysusréplicas)caen,lacomunicacióncae
Siunelementocae,puedeseguirfuncionando
Localización Ubicacióncentralizadayconocida
Cadaelementohadesaberdóndeestánelrestodenodos(directoriode
servicios)
Transformaciones Sí No(Implementaciónmanual)
Desacoplado Sí Sepuedeimplementar
Complejidad Media(introduceunnuevoelemento) Sencillo
CapítuloII
Quientieneunamigo…
Pongamoscaras…
¿CuálessonlosBrokers/MQOpenSourcemásusados?
•Redis
•RabbitMQ
•ZeroMQ
CasoI:envíodemails
WebApp
send_mail(…)
…
…
• Modelosimple
CasoI:envíodemails
WebApp
send_mail(…)
…
…
• Modelosimple
CasoI:envíodemails
WebApp
send_mail(…)
…
…
• Modelosimple
CasoI:envíodemails
Problema
Elusuariotienequeesperarhastaqueelcorreoseaenviado
• Modelosimple
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconhilos
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconhilos
CasoI:envíodemails
Problema
Crearemostantoshiloscomocorreos->creacióninciertadenumerodehilos
• Modeloconhilos
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconhilos:problema
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconhilos:problema
send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconhilos:problema
send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)send_mail(…)
CasoI:envíodemails
WebApp
send_thread()
…
…
• Modeloconbroker-I
send_mail(…)
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-I
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-I
mail(…)
Worker
Broker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-I
mail(…)
Worker
Broker
mail(…)
Worker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-II
mail(…)
Worker
Broker
mail(…)
Worker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-II
mail(…)
Worker
Broker
mail(…)
Worker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-II
mail(…)
Worker
Broker
mail(…)
Worker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-III
mail(…)
Worker
Broker
mail(…)
Worker
CasoI:envíodemails
WebApp
send_mail()…
…
• Modeloconbroker-III
mail(…)
Worker
Broker
CapítuloIII
“Sirevelastussecretosalviento,noculpesalvientoporrevelarlosalosárboles”
JalilGibran
Brokerinjection:Concepto
• AligualqueexisteSQLInjection,CrossSiteInjectionoDLLinjection…porquéno:
¿Broker/MQInjection?
Brokerinjection:Definición
Lograr interceptar, alterar, interferir oinyectar nueva información en sistemas yentornosqueusansistemasdebrokeringyMessage Queues como e lementosfacilitadoresdelacomunicación.
Brokerinjection:Definición
Lograr interceptar, alterar, interferir oinyectar nueva información en sistemas yentornosqueusansistemasdebrokeringyMessage Queues como e lementosfacilitadoresdelacomunicación.
Brokerinjection:Explicaciónvisual
WebApp
send_mail()…
…
mail(…)
Worker
Broker
Brokerinjection:Explicaciónvisual
WebApp
send_mail()…
…
mail(…)
Worker
Broker
Brokerinjection:Explicaciónvisual
Broker
TCP/IP
5672/TCP
3679/TCP
5555/TCP
Brokerinjection:Explicaciónvisual
Broker
TCP/IP
5672/TCP
3679/TCP
5555/TCP
Brokerinjection:Explicaciónvisual
Broker
TCP/IP
5672/TCP
3679/TCP
5555/TCP
Brokerinjection:Explicaciónvisual
Broker
TCP/IP
5672/TCP
3679/TCP
5555/TCP
Broker
Brokerinjection:ExplicaciónvisualTCP/IP
5672/TCP
3679/TCP
5555/TCP
Broker
Brokerinjection:ExplicaciónvisualTCP/IP
5672/TCP
3679/TCP
5555/TCP
Broker
Brokerinjection:ExplicaciónvisualTCP/IP
5672/TCP
3679/TCP
5555/TCP
Brokerinjection:Quénospermite
• Lecturadeinformaciónenviada
Brokerinjection:Quénospermite
• Lecturadeinformaciónenviada
send_mail(…)…
…Broker
Brokerinjection:Quénospermite
• Lecturadeinformaciónenviada
send_mail(…)…
…Broker
Brokerinjection:Quénospermite
• Lecturadeinformaciónenviada
send_mail(…)…
…Broker
Brokerinjection:Quénospermite
• Listartareasremotas
Brokerinjection:Quénospermite
• Listartareasremotas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Brokerinjection:Quénospermite
• Listartareasremotas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Brokerinjection:Quénospermite
• Listartareasremotas
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)
Brokerinjection:Quénospermite
• Borrartareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Brokerinjection:Quénospermite
• Borrartareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Intrusiondetectionalert
Trytoauthenticate
anuser
Brokerinjection:Quénospermite
• Borrartareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Intrusiondetectionalert
Trytoauthenticate
anuser
Brokerinjection:Quénospermite
• Borrartareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Trytoauthenticate
anuser
Brokerinjection:Quénospermite
• Borrartareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…send_alert(…)…
…
Brokerinjection:Quénospermite
• Inyectarnuevastareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…
Brokerinjection:Quénospermite
• Inyectarnuevastareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…- send_mail(
- to:[email protected]
- from:[email protected]
- subject:Yousmellliketurtlebank)
Brokerinjection:Quénospermite
• Inyectarnuevastareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…
Brokerinjection:Quénospermite
• Inyectarnuevastareas
send_mail(…)…
…
Broker
do_auth(…)…
…
Log(…)…
…
CapítuloIV
Jugando,enredando,trasteandoo…“enteletando”
Brokerinjector:Enteletaor
• Un broker injector que nos permitirá realizardiversostiposdeinyeccionessobrelosbrokersmásconocidos:• RabbitMQ• Redis• ZeroMQ
• Presentadoporprimeravezjuntoaestacharla.
Brokerinjector:Enteletaor
• Un broker injector que nos permitirá realizardiversostiposdeinyeccionessobrelosbrokersmásconocidos:• RabbitMQ• Redis• ZeroMQ
• Presentadoporprimeravezjuntoaestacharla.
Brokerinjector:Enteletaor
Brokerinjector:Enteletaor
Brokerinjector:Enteletaor
Inyectarnuevastareas
Listarprocesos/tareas
Detectarbrokersabiertos
Extraerinformacióndetareas
Borrartareasremotas
Brokerinjector:Enteletaor
• Web:• https://github.com/cr0hn/enteletaor
• Autor:• DanielGarcía(cr0hn)
Brokerinjector:Enteletaor
Brokerinjector:Enteletaor
ESCENARIO:
Brokerinjector:Enteletaor
ESCENARIO:
http://pupita-sana.com
Brokerinjector:Enteletaor
ESCENARIO:
http://pupita-sana.com
WebApp
10.10.0.10
Brokerinjector:Enteletaor
ESCENARIO:
http://pupita-sana.com
WebApp
10.10.0.10
10.10.0.20
Worker
Brokerinjector:Enteletaor
ESCENARIO:
http://pupita-sana.com
WebApp
10.10.0.10
10.10.0.20
Worker
¡Demotime!
CapítuloV
Másquebrokers…
•Redis
•RabbitMQ
•ZeroMQ
Otrosusos
•Redis
•RabbitMQ
•ZeroMQ
Otrosusos
Redis:algunosejemplosdeuso
• Almacenamientodistribuidodesesiones.• Sistemadecachedeestáticos.• Sistemadecachedeobjetosdebasesdedatos.• Locks distribuidos -> solución para problemas deconcurrencia.
• Modeloproductor/consumidor.• AlternativadesencillaimplantaciónyusoasistemasNoSQL.• Sistemadegestióndecolas.• Contadoresdistribuidos.
Redis:algunosejemplosdeuso
• Almacenamientodistribuidodesesiones.• Sistemadecachedeestáticos.• Sistemadecachedeobjetosdebasesdedatos.• Locks distribuidos -> solución para problemas deconcurrencia.
• Modeloproductor/consumidor.• AlternativadesencillaimplantaciónyusoasistemasNoSQL.• Sistemadegestióndecolas.• Contadoresdistribuidos.
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
Acacio
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
Acacio
• Modelosincache
CasoII:Rediscomocache
Problema
Elaccesoadiscoyabasededatosescostosoentiempoyrecursos.
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• Modelosincache
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache
WebApp
http://pupita-sana.com
• ModeloconRedis
CasoII:Rediscomocache• ModeloconRedis
Pero…¿Redisnoseríaentonceselcuellodebotella?
CasoII:Rediscomocache• ModeloconRedis
CasoII:Rediscomocache• ModeloconRedis
Midiendoelrendimientocon:
redis-benchmark
CasoII:Rediscomocache• ModeloconRedis
Midiendoelrendimientocon:
redis-benchmark
CasoII:Rediscomocache• ModeloconRedis
Pero…¿esoesmucho?
CasoII:Rediscomocache• ModeloconRedis
CasoII:Rediscomocache• ModeloconRedis
http://www.internetlivestats.com/one-second/#google-band
CasoII:Rediscomocache• ModeloconRedis
http://www.internetlivestats.com/one-second/#google-band
CapítuloVI
Tucaché,micaché,nuestracaché…¡quémásda!
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
WebApp
http://pupita-sana.com
CachepoisoningenRedis
¡Demotime!
CachepoisoningenRedis
¡Demotime!
Capítulofinal
Conclusiones
Elproblemareal…
WebApp
http://pupita-sana.com
Elproblemareal…
WebApp
http://pupita-sana.com
Elproblemareal…
WebApp
http://pupita-sana.com
Nopongamospuertasalmar
WebApp
http://pupita-sana.com
5672/TCP
3679/TCP
5555/TCP
Nopongamospuertasalmar
WebApp
http://pupita-sana.com
5672/TCP
3679/TCP
5555/TCP
Nopongamospuertasalmar
WebApp
http://pupita-sana.com
Consejosbásicosdesecurización
• Noexponerlosserviciosdebrokeringainternet,soloenredinterna.
• Sinoesposible:• Usarusuario/contraseña.• Nousarlasbasesdedatospordefecto.• Usar bases de datos diferentes, para serviciosdiferente.
• Usartransporteseguro(SSL).• Nousarpuertospordefecto.
Ysi…(locura1)
http://mrlooquer.com
Ysi…(locura1)
http://mrlooquer.com
Ysi…(locura1)
http://mrlooquer.com
Ysi…(locura1)
Ysi…(locura++)
Ysi…(locura++)
• ZeroMQesusadoporStorm Procesamientoentiemporealde
bigdata
Ysi…(locura++)
• ZeroMQesusadoporStorm
• Stormesusadoparaanálisisdestocks
Procesamientoentiemporealde
bigdata
Ysi…(locura++)
• ZeroMQesusadoporStorm
• Stormesusadoparaanálisisdestocks
• Siproporcionamosinformaciónincorrecta
Procesamientoentiemporealde
bigdata
Ysi…(locura++)
• ZeroMQesusadoporStorm
• Stormesusadoparaanálisisdestocks
• Siproporcionamosinformaciónincorrecta
• Afectaralsistemafinanciero
Procesamientoentiemporealde
bigdata
Ysi…(locura++)
• ZeroMQesusadoporStorm
• Stormesusadoparaanálisisdestocks
• Siproporcionamosinformaciónincorrecta
• Afectaralsistemafinanciero
Procesamientoentiemporealde
bigdata
¿Preguntas?
¡Muchasgracias!