rootedcon 2016 - broker & mq injection

Post on 16-Apr-2017

301 Views

Category:

Internet

1 Downloads

Preview:

Click to see full reader

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:boss@company.es

- from:user@company.es

- 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!

top related