martes, 24 de noviembre de 2020

Como protegernos antes el ataque de moda Kerberoasting

Estimados amigos de Inseguros !!!

En todos los aspectos de la vida sufrimos la incidencia de las modas. En la ciberseguridad no iba a ser menos.

Si bien hace 5 años la seguridad de los sistemas Microsoft no se trabajaba, ahora todo el mundo la práctica. Conocer los 4 ataques más sencillos de manual no te hace galan del título de maestro del universo. 

Otra moda actual es la de los CTF´s, en la que muchos jóvenes, no todos, emplean su tiempo en encontrar la gloria de un ranking o puesto laboral en base a pasar pruebas al estilo de las olimpiadas. Pregunta a los jugadores de CTF´s de hace 15 años si pensaban que algún día esto iba a ser de "chicos guays".

Si juntamos las dos opciones me encuentro con gente que sabe eso, lanzar el ataque, en este caso el Kerberoasting, pero que no tienen ni pajolera idea de que es lo que está ocurriendo por detrás... o lo que es más curioso, como solucionarlo !!!

Cuando te inicias en el mundo del CTF tu misión no es arreglar, es romper, pero en la vida real luchamos contra el cibercrimen, y si bien este ataque nos produce inmenso placer cuando conseguimos hacerlo y obtener buenos resultados, el objetivo es proteger a las organizaciones. Al menos es mi visión, atacar para defender y viceversa...

Una aproximación del ataque podría ser esta y una explicación un poco de más bajo nivel podría ser esta de la gente de Tarlogic con una explicación sencilla.

Disponible a partir de Windows Server 2012, podemos implementar Fast ( Flexible Authentication Secure Tunneling

La idea es sencilla, crear, o mejor dicho, requerir una autenticación previa a la hora de pedir al KDC el TGS que luego crackeamos.

Cuando se hace la petición del TGT se establece una session key con el timestamp y la contraseña del equipo, que como sabes es random y de 120 caracteres, lo que aporta la suficiente aleatoriedad a la mezcla que hace imposible el ataque criptográfico.

Como siempre, es necesario tener el dominio en nivel funcional 2012, todos los DC´s 2012 o superiores :-) y todos los clientes Windows 8 o superior.

Si tenemos otro ambiente debemos de ser muy cuidadosos con esto o perderemos integración con Kerberos en esos dispositivos.

La teclas del piano son muy sencillas, y como suele ser habitual en este tipo de settings, podemos configurar si el comportamiento es obligado o recomendado.


Primero lo definimos y luego en la rama de Kerberos, bajo KDC le decimos que lo ponga en marcha.


El resultado con un antes y un después es muy gráfico

Como siempre, espero que entiendas el propósito del post y no te quedes con los dos comandos ofensivos o defensivos, sino reflexiona y amplía tu información sobre esta temática y aporta valor, no te quedes con lo superficial.

Gracias por leerme !!


viernes, 6 de noviembre de 2020

Openvas i hate you and i love you... actualizad feeds


Estimados amigos de Inseguros!!!

Sin duda alguna Openvas es un producto interesante en la gestión de vulnerabilidades, en concreto en el análisis, pero si has trabajado con el coincidiras conmigo que se rompe más que la escopeta de una feria.

Recuerdo una frase de un gran amigo manchego diciendo eso, que es más complicado que configurar openvas xD.

Tengo colegas que a pesar de aceptar que es una pedazo de herramienta, le tienen "reticencias" por lo complejo que es el troubleshooting.

Bajo mi punto de vista, y además el uno formaba parte del otro, le ha pasado lo mismo que a OSSIM, grandes proyectos que no han sabido/querido mantener la evolución de las dos líneas de producto, comunitaria y comercial, por supuesto en detrimento la primera de la segunda. 

Bueno, a pesar de esta reflexión, me gusta Openvas y lo uso, y recientemente hay problemas para actualizar los feeds, la inteligencia...las detecciones... De poco nos sirve usar este programa si no detectamos las vulnerabilidades que aparecen mes a mes. Hay que actualizar !!!

Y desde hace poco, han cambiado el servidor de feeds y si eres como yo que andas con una versión vieja del software base, y no has actualizado los componentes, no podrás actualizar.

Podrías actualizar el sistema, pero la vas a liar, la vas a liar mucho xDDDD

Para actualizar los feeds vamos a empezar por los NVT con el comando:  

/usr/sbin/greenbone-nvt-sync

Si todo va bien no sigas, pero sospecho que no podrás.

Yo para empezar he editado este fichero /usr/sbin/greenbone-nvt-sync y he cambiado donde ponía feed.openvas.org y lo he cambiado por feed.community.greenbone.net.

Una vez descargados, lo suyo es hacer un rebuild en vez de hacer un update. Como sabes por defecto Openvas usa Sqlite ( podemos poner postgresql) .

/usr/sbin/openvasmd --rebuild --verbose –progress

Le pegamos un reinicio a la máquina y seguimos con

greenbone-certdata-sync  greenbone-scapdata-sync

Me gusta hacerlo por partes para ir delimitando problemas, y por supuesto, snapshot en mi caso a la máquina para no pasarlo luego mal…

Espero que os guste y os sirva de ayuda si usais el producto. Gracias por leerme !!! 

martes, 3 de noviembre de 2020

Tienes un antivirus... los malos tienen un anti-antivirus ... Process Herpaderping para evasión de medidas...

 Estimados amigos de Inseguros !!!

Dentro la carrera, lucha, guerra entre el bien y el mal... en el mundo ciber tenemos ataques, medidas defensivas, evasión de las medidas defensivas, detección de evasión de medidas defensivas, y así hasta encontrar la verdad sobre qué fue antes, el huevo o la gallina...

En esta ocasión vamos a probar una técnica recién publicada por el señor Johnny Shaw.  El fundamento técnico en detalle podemos conocerlo de la mano del mismo autor, pero sin duda es un gran paso en la evasión de antivirus por lo novedoso de la técnica.

En el momento de revelar la prueba de concepto se podía evadir al antivirus de Microsoft, pero en el momento de mis pruebas el proceso de evasión no era capaz de evitar la ejecución de la herramienta, sin embargo probé con otro antivirus, en este caso Avast y funcionaba perfectamente.


Los pasos son muy sencillos y están plenamente descritos en el repositorio de la POC.

Algunos ejemplos de detección los tenemos como siempre de la mano del maestro...


Qué te parece? has probado en otras plataformas?

miércoles, 28 de octubre de 2020

For, For, Fortificación de Sql Server for for for fun...

 Estimados amigos !!!

Me hace mucha ilusión participar en este artículo, ya que aúna dos de mis pasiones, una quizás más pasada y otra presente, pero sin dudas dos disciplinas que me han marcado en mi carrera. Me refiero a las bases de datos y la ciberseguridad.

El primer curso que impartí en mi vida fue sobre Sql Server 7 creo que recordar en 3000 informática allá por el 2000, y siempre me fascinó el funcionamiento interno del motor, la memoria, la optimización. Si es cierto que me gustaba más la parte de "sistemas" que desarrollo, y eso derivó en mi pasión por los servidores. Pero bueno, batallitas aparte, que este post va de Seguridad en Sql Server sobre Windows.

Comenzamos "asentando" nuestro Sql Server sobre una UO que nos permita luego filtrar el conjunto de GPO´s diseñadas para la labor y a continuación creamos la Directiva de grupo vinculada a dicha UO. Metemos el servidor a la UO y comenzamos el viaje...

Siguiente paso, quitar roles del servidor. Si no vas a imprimir, quita el rol de servidor de impresión. Hay ataques que explotan este servicio y cuando menos superficie de exposición, mejor.

Establecer el servicio de copias VSS manual y no iniciado. Podemos sufrir un incidente por este mecanismo y no es necesario ( a no ser que sí lo sea).

Cambia el nombre al usuario SA  y comprueba que está deshabilitado.

En las propiedades del servidor, en seguridad, habilitar la auditoría de inicio de sesión, correcto y erróneo. 

Habilita la auditoría general del sistema creando una nueva política y establece la rama "Seguridad" o el fichero donde quieres ques se guarde. Esto dependerá del uso que le vayas a dar, y si tienes un SIEM o un SYSLOG y la manera que tenga de recolectar la información.



Si te ves con fuerza actívala :-)

Otra buena práctica es dejar el servidor al antojo de los administradores Sql Server, por lo que yo pondría una GPO específica para ese o esos servers y habilitaría el inicio de sesión sólo a los miembros del grupo administradores de Sql Server... 

Usa el cifrado transparente TDE en las bases de datos para cifrar con un certificado los ficheros. Es útil para entornos en los que se puede realizar un ataque físico, por ejemplo, con acceso a un disco duro, a un backup etc. Por defecto en 2019 todas las bases de datos creadas se cifran, pero si vienes del pasado... sigue este procedimiento.

Otra buena idea es cifrar el contenido de una columna, por ejemplo datos sensibles, para que el administrador de la base de datos no tenga que ver el contenido de la misma.


Firewall

Uno de los aspectos claves para securizar una instancia de Sql Server es el firewall del sistema operativo que corre bajo el. Por defecto, el puerto TCP de Sql Server escucha en la "emisora" 1433. Sin embargo, en servicios "menos" pro como Sql Express la conexión con el motor se hace por puertos aleatorios. Como se puede saber el puerto, viendo el log, pero Sql Server gestiona esto con el Sql Browser, que escucha en el puerto UDP 1434. Según tu entorno, sabiendo esto, la recomendación es abrir solo el puerto 1433 y si es posible, deshabilitar el servicio Sql Browser para cumplir con el compromiso de minimizar la superficie de exposición... Si necesitas este "dinamismo" en los puertos de entrada, te recomiendo leer este documento, y filtrar el servicio por el ejecutable, no por el puerto.

Protección extendida

Imagina el concepto de un Rogue AP. Montar un acces point wifi similar a uno en producción, y esperar que los clientes se intenten conectar... enviando sus credenciales...

El mismo concepto se puede dar en un entorno de Man in the Middle contra un sql server mediante una autenticación basada en NTLM, en la que el cliente envía el desafío, pero un atacante "en medio", por ejemplo habiendo falseado una entrada DNS, puede hacer de relay contra el Sql Server real y así hacerse con el acceso.


Microsoft implementa el Extended Protection, lo que hace es añadir un token único para cliente, y establecer una whitelist de SPN, o cuentas en las que sí se podrá acceder. De esta manera podemos evadir dicho ataque de manera sencilla.

Esta vulnerabilidad no es intrínseca de Sql Server, sino de la autenticación basada en NTLM, por lo que es aplicable a otros servicios, como el conocido uso de Responder o Inveight para el mismo concepto, pero implementando el ataque para la aplicación SMB ( compartición de carpetas) o HTTP ( las páginas wweeeeeee).

La recomendación genérica para entornos Microsoft, es deshabilitar la autenticación NTLMv1 pero ni siempre es posible, sobre todo, con sistemas Legacy o no Compliance 100% etc...y también se puede creackear.

Vamos a hacer una pequeña prueba de concepto para que veais lo "sencillo" que es aprovechar este fallo.

Voy a usar la herramienta Inveigh, el clon de Responder para Powershell. La tool ejecuta un servidor SMB falso y esnifa, escucha, peticiones NTLM en la red. El escenario teórico del ataque sería una red en la que conseguimos acceso a un sql server, por ejemplo mediante una SqlInyection y podemos ejecutar "cosas". Si podemos ejecutar una dirtree en una equipo remoto, es decir un DIR, estaremos pasando las claves NTLM* al equipo destino. Si ese equipo destino es la herramienta, esnifará la petición y obtendremos el codiciado hash. Luego lo usaremos de varias maneras, pero se extralimita de este propósito. Vamos a verlo. Ejecuto una consulta desde el SqlServer hacía Inveigh



Y ahora vemos en la herramienta como hemos capturado el hash.


Ahora vamos a configurar la seguridad extendida en el SqlServer, y vamos a comprobar el resultado.


*NTLM: Cuando hablamos de Ntlm me refiero a net-ntlm. No es lo mismo que NTLM, pero para centrar al lector en la seguridad del Sql Server los conceptos son los mismos, y a fin de cuentas, ambos hashes se pueden crackear. Esto es una aclaración para puristas. Si quieres saber la diferencia entre Net-NTLM y NTLM pincha aquí y estudia :-) *

Otro tip para tu conocimiento. Si has hecho esta POC, prueba a pedir desde el Sql Server el DirTree con nombre de equipo en vez de dirección IP, sabes qué ocurre? Cuando hacemos barra barra a un equipo pasa lo mismo !!! si lo hacemos por nombre, la autenticación es basada en Kerberos, y no entra en juego Ntlm... tip de seguridad genérico :-)

Actualizaciones

El tema de las actualizaciones siempre ha sido complejo, pero como todo en la vida, al final es un reto más, pero no podemos dejarlo de lado. En numerosas auditorías y pentest que hago informo de versiones de Sql Server Viejas y sin parches importantes. Como que a TIC, y si es una rama dev. más aún, les da la risa floja en plan: "ahora viene este a decirme que no parcheo la bbdd" pero es necesario.

Es importante conocer un poco más sobre esta tarea que no todo el mundo sabe. Por lo general, los parches se liberan el segundo martes de cada mes, como los Windows... por lo que por la noche, o el miércoles por la mañana, tendrás parches...

Las actualizaciones suelen dividirse en 3 grandes grupos: HotFix, suelen ser soluciones a errores puntuales. CU o actualizaciones acumuladas, que son un conjunto de HotFix. Services Pack, son un conjunto de CU´s y HotFix y suelen tener funcionalidades nuevas. El ciclo de publicación es mayor por lo que suelen estar mucho más testeadas y son mas seguras y estables.

Dentro de este modelo, también debemos separar dos "branches" de las actualizaciones, una basada en hotfix puntuales que tienes o no, y otra denominada GDR ( General Development Release). 

Imagina un hotfix que soluciona un problema X para los Sql Server sobre 2019 en versión castellano en servidores Hp de la gama ZYX... puede que tengamos ese parche, ese hotfix, si tenemos esa casuística concreta... pero si sale el service pack 1, esta "rama" de actualizaciones es general para todos los sql servers. El service pack 2 incluiría todas las actualizaciones del 1, por ser acumulativo.

Me gusta este video de mi líder mundial Enrique Catala

Usuario Servicio

Otra de toda la vida... Si instalas un SqlServer con permisos de administrador del dominio, el SqlServer se ejecuta con este contexto de seguridad. Si un atacante accede a la bbdd, accede con esos permisos... Es sencillo. Hay que crear usuarios específicos para el servicio, y fortificarlos para que tengan solo los permisos necesarios para la labor de ejecutar el servidor. No tiene sentido que ese usuario tenga acceso de escritura a la carpeta "nóminas" de ese fileserver... si no es necesario.


NMAP

Un básico de los sistemas y más estos, es realizar auditorías periódicas para conocer el estado real de la seguridad de los mismos. Es común creer que nuestros entornos son más seguros de lo que lo son, y en el peor de los casos, podemos aprender de cambios no controlados. Nos ocurre muchas veces que encontramos planteamientos distintos de los que creían en la organización, por un cambio en un partner, una reparación rápida y "provisional", etc...

Aunque no estés muy puesto en este mundo, lanzar desde un linux algo así : nmap --script ms-sql-info,ms-sql-empty-password,ms-sql-xp-cmdshell,ms-sql-config,ms-sql-ntlm-info,ms-sql-tables,ms-sql-hasdbaccess,ms-sql-dac,ms-sql-dump-hashes --script-args mssql.instance-port=1433,mssql.username=sa,mssql.password=,mssql.instance-name=MSSQLSERVER -sV -p 1433 192.168.1.1 siempre es bueno.

PORT     STATE SERVICE  VERSION

1433/tcp open  ms-sql-s Microsoft SQL Server  15.00.2000.00

| ms-sql-ntlm-info: 

Host script results:

| ms-sql-info: 

|   192.168.1.101:1433: 

|     Version: 

|       name: Microsoft SQL Server 

|       number: 15.00.2000.00

|       Product: Microsoft SQL Server 

|_    TCP port: 1433

Transact Sql

El propio lenguaje de gestión del Sql Server te proporciona algunos procedimientos y funciones relacionadas con la seguridad, que si bien te pueden sonar a chino si no las necesitas, es bueno conocerlas y darles un repaso, lo mismo identificas implementaciones inseguras o valores no deseados. Las principales son: sys.database_permissions, sys.database_principals, sys.database_role_members, sys.database_scoped_credentials, sys.master_key_passwordssys.user_tokensys.credentials, sys.login_token, sys.securable_classes, sys.server_permissionssys.server_principals, sys.server_role_members, sys.sql_logins, sys.system_components_surface_area_configuration, sys.asymmetric_keys, sys.certificatessys.column_encryption_key_values, sys.column_encryption_keys, sys.column_master_keys, sys.crypt_properties, sys.cryptographic_providerssys.key_encryptions, sys.openkeys, sys.security_policies, sys.security_predicatessys.symmetric_keys, sys.server_audits, sys.server_audit_specifications, sys.database_audit_specifications,  PWDCOMPARE (Transact-SQL)CERTPRIVATEKEY (Transact-SQL)PWDENCRYPT (Transact-SQL)CURRENT_USER (Transact-SQL)SCHEMA_ID (Transact-SQL)DATABASE_PRINCIPAL_ID (Transact-SQL)SCHEMA_NAME (Transact-SQL)sys.fn_builtin_permissions (Transact-SQL)SESSION_USER (Transact-SQL)sys.fn_get_audit_file (Transact-SQL)SUSER_ID (Transact-SQL)sys.fn_my_permissions (Transact-SQL)SUSER_SID (Transact-SQL)HAS_PERMS_BY_NAME (Transact-SQL)SUSER_SNAME (Transact-SQL)IS_MEMBER (Transact-SQL)SYSTEM_USER (Transact-SQL)IS_ROLEMEMBER (Transact-SQL)SUSER_NAME (Transact-SQL)IS_SRVROLEMEMBER (Transact-SQL)USER_ID (Transact-SQL)ORIGINAL_LOGIN (Transact-SQL)USER_NAME (Transact-SQL)PERMISSIONS (Transact-SQL)

Azure

Como pudimos ver hace unos días, el propio Azure nos permite fortificar o supervisar la seguridad de nuestros sistemas, integrando en el Security Center nuestras instancias, tanto en la nube como On Premise.

Como puedes ver, hay muchas formas de abordar el proceso de robustecimiento de nuestros motores de base de datos SQL Server, no es un proceso cerrado, y seguro que entre todos se nos ocurren más procesos, verdad?

Espero que te guste, gracias por leerme !!!

martes, 27 de octubre de 2020

Fortificación sencilla de SQL en Azure..y en On Premise...

 Estimados amigos de Inseguros !!!

Nube segura, seguro? por defecto si o por defecto no? pues depende !!! la nube, en este caso Azure, nos proporciona principalmente "seguridad del hardware" y disponibilidad, bueno y la seguridad de no tener que gestionar el sistema operativo que hay por debajo... pero podemos subir un poquito más las cotas de ciberseguridad de nuestros Sql Server en la nube mediante unos pequeños procesos. Pero espera... quizás nos sirva para On premise...


Los ataques que podemos experimentar en nuestros motores de bases de datos son los típicos ataques de fuerza bruta, inyecciones de código y algunos comportamientos denominados atípicos. El sistema es capaz de detectar elementos inseguros ( XP_cmd...) y configuraciones débiles, por ejemplo, demasiados permisos en usuarios... Esto se realiza mediante el análisis de vulnerabilidades y la monitorización constante.

El conjunto de funcionalidades de seguridad de nuestras bases de datos no se queda en esta capa, existen numerosas funcionalidades como el etiquetado de datos sensibles, transporte cifrado... quizás esto sea objetivo de otro post...

Como siempre, las teclas del piano son muy sencillas y la configuración inicial es más bien un paseo... para eso nos hemos quedao :-)



Podemos apreciar como desde el inicio el análisis me aporta valor.


El sistema nos indica, en un Sql Server recien instalado, que solo tenemos un usuario, el DBO y que esto es peligroso... bieeeen.

Pero bueno, todos sabemos que las nubes están muy ricas y son muy buenas, pero seguimos teniendo elementos On-Premise, y más, los que consumen recursos altos. El proceso es muy sencillo, solo tenemos que instalar el servicio Azure Arc, descargar el script y ejecutarlo en nuestro servidor On-Premise. En unos minutos veremos nuestro Sql Server, o mejor, los resultados, en el centro de seguridad.


Aunque recuerda que puedes ejecutar el análisis de vulnerabilidades sin nada de todo esto en los nuevos SqlServe 2019.



Como ves, es muy sencillo usar estas funcionalidades para mejorar la seguridad y sobre todo monitorización de nuestros servidores Sql Server.

Espero que te sirva, gracias por leerme !!!


Related Posts Plugin for WordPress, Blogger...