Mi Charla en Codemotion 2015. En ella repasamos los principales de problemas de seguridad y olvidos en los sistemas puestos en producción: fingerprinting, configuraciones incompletas, cifrados insuficientes, aplicaciones de gestión por defecto en producción, kernel de *NIX etc.
1. Tu DevOP me da
trabajo: Soy auditor
de seguridad
Daniel García (cr0hn) - @ggdanielMADRID · NOV 27-28 · 2015
2. MADRID · NOV 27-28 · 2015
<spam>Me</spam>
➡ Auditor de seguridad y hacking ético.
➡ Programador Python.
➡ Organizador de “saraos”.
➡ Creador de más de 15 herramientas de seguridad.
➡ Trabajo en Abirtone.
∘ Formación muy especializada.
∘ Asesoramiento.
∘ Herramientas de hacking a medida.
https://www.linkedin.com/in/garciagarciadaniel
https://twitter.com/ggdaniel
3. MADRID · NOV 27-28 · 2015
De que NO va esta charla
4. MADRID · NOV 27-28 · 2015
De que NO va esta charla
5. MADRID · NOV 27-28 · 2015
De que NO va esta charla
6. MADRID · NOV 27-28 · 2015
De que NO va esta charla
7. MADRID · NOV 27-28 · 2015
De que NO va esta charla
8. MADRID · NOV 27-28 · 2015
¿ De qué va esta charla?
Fallos y “despiestes” que cometen
muchos los sysadmin / DevOps y de
cómo se pueden mitigar.
9. MADRID · NOV 27-28 · 2015
Lo primero… ¿qué es un DevOP?
10. MADRID · NOV 27-28 · 2015
Lo primero… ¿qué es un DevOP?
11. MADRID · NOV 27-28 · 2015
Lo primero… ¿qué es un DevOP?
12. MADRID · NOV 27-28 · 2015
Lo primero… ¿qué es un DevOP?
13. MADRID · NOV 27-28 · 2015
Lo primero… ¿qué es un DevOP?
16. MADRID · NOV 27-28 · 2015
Banners (1/2)
➡ Exponen el servidor web y/o la versión que está
corriendo en el servidor.
➡ Algunos exponen la tecnología de backend usada, y su
versión.
➡ La versión del servidor en producción podría contener
fallos públicos … o no públicos.
➡ Cuanta menos información ofrezcamos a un atacante
mejor.
22. MADRID · NOV 27-28 · 2015
Verbos HTTP
➡ Limitar a aquellos estrictamente necesarios.
➡ Desactivar verbos potencialmente peligrosos:
∘ CONNECT
∘ PATCH
∘ PUT
∘ TRACE
∘ DELETE
➡ Usar listas blancas para servir contenido dinámico.
23. MADRID · NOV 27-28 · 2015
Verbos HTTP
➡ Limitar a aquellos estrictamente necesarios.
➡ Desactivar verbos potencialmente peligrosos:
∘ CONNECT
∘ PATCH
∘ PUT
∘ TRACE
∘ DELETE
➡ Usar listas blancas para servir contenido dinámico.
24. MADRID · NOV 27-28 · 2015
Algoritmos de cifrado (1/2)
➡ SSL permite configurarle varios algoritmos de cifrado.
➡ Por defecto vienen activos todos, en la mayoría de las
distribuciones.
➡ No usar algoritmos de cifrado débiles.
∘ Nulos.
∘ Md5
➡ No usar algoritmos de cifrado criptográficamente comprometidos.
∘ RC4
∘ *CBC*
25. MADRID · NOV 27-28 · 2015
Algoritmos de cifrado (2/2)
26. MADRID · NOV 27-28 · 2015
Algoritmos de cifrado (2/2)
27. MADRID · NOV 27-28 · 2015
Algoritmos de cifrado (2/2)
28. MADRID · NOV 27-28 · 2015
Instalaciones por defecto
29. MADRID · NOV 27-28 · 2015
Ficheros por defecto en el servidor
➡ Ficheros configuración en servidores de produccción.
➡ Ficheros de licencia, readme o agradecimientos.
➡ “Restos” de instalaciones guiadas.
➡ NO solo han de ser controladas en la instalación,
también en las actualizaciones.
➡ Protección con medidas genéricas: .htaccess
30. MADRID · NOV 27-28 · 2015
Ficheros por defecto en el servidor
➡ Ficheros configuración en servidores de produccción.
➡ Ficheros de licencia, readme o agradecimientos.
➡ “Restos” de instalaciones guiadas.
➡ NO solo han de ser controladas en la instalación,
también en las actualizaciones.
➡ Protección con medidas genéricas: .htaccess
31. MADRID · NOV 27-28 · 2015
Ficheros por defecto en el servidor
➡ Ficheros configuración en servidores de produccción.
➡ Ficheros de licencia, readme o agradecimientos.
➡ “Restos” de instalaciones guiadas.
➡ NO solo han de ser controladas en la instalación,
también en las actualizaciones.
➡ Protección con medidas genéricas: .htaccess
32. MADRID · NOV 27-28 · 2015
Aplicaciones de ejemplo
➡ Pueden dar información útil a un atacante.
➡ Pueden contener fallos de seguridad.
➡ Puede que hayan sido concebidas para ser instalas en
entornos de DESARROLLO únicamente.
➡ La documentación también es una “aplicación” por
defecto -> da información a un atacante.
34. MADRID · NOV 27-28 · 2015
Administración mal configurada
35. MADRID · NOV 27-28 · 2015
SSH
➡ NO permitir versiones del protocolo obsoletas o
vulnerables: SSHv1.
➡ Denegar el acceso root remoto.
➡ Limite de intentos de loging.
➡ Permitir solamente orígenes válidos, cuando sea
posible.
➡ Cambiar puerto por defecto.
37. MADRID · NOV 27-28 · 2015
RPCBind
➡ Servicio de soporte a otros servicios.
➡ Por defecto escucha en todas las interfaces.
➡ SAMBA / NFS usan RPC.
➡ Un atacante podría listar los procesos que están
usando el RPC y acceder a ellos:
∘ http://examples.oreilly.com/networksa/tools/
rpc_proxy.pdf
38. MADRID · NOV 27-28 · 2015
RPCBind
➡ Servicio de soporte a otros servicios.
➡ Por defecto escucha en todas las interfaces.
➡ SAMBA / NFS usan RPC.
➡ Un atacante podría listar los procesos que están
usando el RPC y acceder a ellos:
∘ http://examples.oreilly.com/networksa/tools/
rpc_proxy.pdf
39. MADRID · NOV 27-28 · 2015
CUPSD
➡ Servicio de impresión de *NIX.
➡ Activo por defecto en prácticamente todas las nuevas
distribuciones de Linux.
➡ Puede usarse para:
∘ Obtener usuarios del sistema.
∘ “Incordiar” enviando a imprimir información.
➡ Puede contener fallos de seguridad.
40. MADRID · NOV 27-28 · 2015
DHCP
➡ SOLO debe de estar activo como CLIENTE en redes
locales.
➡ En servidores debería ser desactivado -> nuestro
proveedor nos proporcionará una IP pública estática.
➡ Existen numerosas formas de atacar a un cliente
DHCP:
∘ Envió de información falsa y modificación de
configuración de red.
42. MADRID · NOV 27-28 · 2015
Escucha en todas interfaces
➡ No todos los servicios han de escuchar en todas las
interfaces.
➡ Las BBDD de datos no deberían de estar públicas.
➡ Los contenedores de aplicaciones deberían de
apoyarse en un frontal para servir contenido.
43. MADRID · NOV 27-28 · 2015
Broking / mensajería (1/2)
➡ Usados para distribución de
carga.
➡ Escuchan en todas las interfaces,
por defecto.
➡ Que no usen un protocolo “user-
friendly” no implica que se pueda
extraer contenido de ellos.
44. MADRID · NOV 27-28 · 2015
Broking / mensajería (2/2)
45. MADRID · NOV 27-28 · 2015
Broking / mensajería (2/2)
46. MADRID · NOV 27-28 · 2015
Broking / mensajería (2/2)
47. MADRID · NOV 27-28 · 2015
MongoDB
➡ Expuesta al público para consumirse directamente su
información.
➡ Comprobar privilegios.
➡ Conexiones por segundo.
➡ Securizar la conexión.
➡ Restringir acceso a información.
48. MADRID · NOV 27-28 · 2015
MongoDB
➡ Expuesta al público para consumirse directamente su
información.
➡ Comprobar privilegios.
➡ Conexiones por segundo.
➡ Securizar la conexión.
➡ Restringir acceso a información.
50. MADRID · NOV 27-28 · 2015
Memcache
➡ No implementa autenticación.
➡ Fue intentada para rendimiento, no para seguridad.
➡ Que no esté expuesta a internet, no implica que no se
pueda acceder a ella -> a través de un fallo en la
aplicación que la usa.
➡ Separar almacenes de información por aplicación.
51. MADRID · NOV 27-28 · 2015
Redis
➡ Uno de sus principales usos es el de caché.
➡ Sistema clave/valor.
➡ Almacenes de información compartidos y sin
autenticación, por defecto.
➡ Tiene un lenguaje propio de consulta -> susceptible de
ataques de inyección.
57. MADRID · NOV 27-28 · 2015
Roles y credenciales
➡ Las credenciales: root/root … no es una una contraseña
segura.
➡ Limitar acceso de administración al sistema local.
➡ No exponer una base de datos a internet.
➡ Cambiar el puerto por defecto, cuando sea posible.
58. MADRID · NOV 27-28 · 2015
Restricción de accesos
➡ Limitar el acceso de los usuarios:
∘ Acceso a bases de datos.
∘ Acceso a tablas.
∘ Operaciones en tablas / bases de datos.
∘ Operaciones en tablas.
➡ Limitar el acceso a funciones propias del motor
∘ Funciones de acceso al S.O.
∘ Funciones críticas o cuyo uso es muy restringido.
60. MADRID · NOV 27-28 · 2015
Fallos de seguridad en código
➡ CUIDADO con los “scripts rápidos”.
∘ Se suelen dejar olvidados en el servidor.
∘ No se suelen protegen.
➡ SQL Injection / Cross Site Scripting (XSS) -> te podría
pasar a ti.
➡ Log inyection: muy usado para ocultar el rastro.
62. MADRID · NOV 27-28 · 2015
Algoritmos de cifrado
MD5 / SHA1 son algoritmos de cifrado “rotos”
-> se pueden encontrar colisiones con
relativa facilidad.
63. MADRID · NOV 27-28 · 2015
Políticas de contraseñas
➡ Cuidado con las políticas de contraseñas y los usuarios:
∘ Contraseñas muy cortas -> crakeable con software.
∘ Contraseñas muy largar y con cambios muy
habituales….
64. MADRID · NOV 27-28 · 2015
Políticas de contraseñas
➡ Cuidado con las políticas de contraseñas y los usuarios:
∘ Contraseñas muy cortas -> crakeable con software.
∘ Contraseñas muy largar y con cambios muy
habituales….
65. MADRID · NOV 27-28 · 2015
Comandos del sistema operativo
➡ En producción NUNCA deberían de estar disponibles
ciertos comandos / aplicaciones:
∘ gcc
∘ hex
∘ netcat
∘ hexedit
∘ sudo…
66. MADRID · NOV 27-28 · 2015
Protocolo de red “inofensivos”
➡ ICMP
∘ Alerta de la presencia en la red.
∘ Si se necesita, filtrar por
orígenes válidos.
∘ No permitir todos los tipos.
67. MADRID · NOV 27-28 · 2015
Protocolo de red “inofensivos”
➡ ICMP
∘ Alerta de la presencia en la red.
∘ Si se necesita, filtrar por
orígenes válidos.
∘ No permitir todos los tipos.
68. MADRID · NOV 27-28 · 2015
IPv6
➡ Activo por defecto en todos los sistemas.
➡ Prácticamente un desconocido.
➡ Su filtrado en firewalls tiene que ser activado
expresamente -> reglas para IPv4 NO son compatibles
con IPv6 (la mayoría).
➡ Los IDS tienen que ser activados y configurados para
detectar ataques de IPv6.
➡ Existen DECENAS de ataques.
69. MADRID · NOV 27-28 · 2015
Kernel (1/2)
➡ Los módulos no usados pueden contener fallos.
➡ Cualquier módulo puede cargarse.
➡ Por defecto, están activos muchos protocolos no
usados: SCTP.
➡ Compilaciones sin medidas de protección anti-exploits.
➡ Soluciones:
∘ Kernel monolíticos.
∘ Firmar los módulos
70. MADRID · NOV 27-28 · 2015
Kernel
Kernel (2/2)
https://wiki.gentoo.org/wiki/Signed_kernel_module_support
71. MADRID · NOV 27-28 · 2015
Kernel
Kernel (2/2)
https://wiki.gentoo.org/wiki/Signed_kernel_module_support
72. MADRID · NOV 27-28 · 2015
Kernel
Kernel (2/2)
https://wiki.gentoo.org/wiki/Signed_kernel_module_support
73. MADRID · NOV 27-28 · 2015
Kernel
Kernel (2/2)
https://wiki.gentoo.org/wiki/Signed_kernel_module_support
74. MADRID · NOV 27-28 · 2015
¿Dudas o preguntas?
¡Gracias!