¿Cómo roban los piratas informáticos claves y contraseñas?

Busco vulnerabilidades en varios sistemas de seguridad. En cierto momento, me quedó claro que mis clientes no estaban lo suficientemente familiarizados (si es que estaban familiarizados) con las técnicas básicas de "piratería". Las claves API, las contraseñas, las claves SSH y los certificados son excelentes mecanismos de seguridad. Pero esto es así mientras se mantengan en secreto. Una vez que dichos datos están disponibles para aquellos que no deberían tener acceso a ellos, resulta que la complejidad de las contraseñas y la avanzada de los algoritmos de hash ya no importan. En esta publicación, quiero hablar sobre los conceptos, métodos y herramientas que utilizan los investigadores de seguridad para encontrar información clasificada. Estos datos se utilizan para piratear sistemas. También proporcionaré algunos flujos de trabajo simples aquí que pueden ayudar a reducir el riesgo de un ataque de piratas informáticos exitoso.







Es importante señalar que el "juego" de ataque y defensa, que juegan los piratas informáticos y los propietarios de sistemas informáticos, es un juego deshonesto. Es suficiente que el atacante penetre en el sistema, para ganar solo una vez. Y el que se defiende solo puede ganar si gana siempre. La principal dificultad aquí es saber a qué debe prestar atención. Pero una vez que el defensor sabe qué tipo de "puertas" virtuales puede ingresar un hacker en su sistema, estas "puertas" pueden protegerse mediante mecanismos bastante simples. Creo que la simplicidad de estos mecanismos a veces disminuye su importancia y es la razón por la que muchos defensores de los sistemas informáticos pasan por alto estos mecanismos.



Aquí están las reglas básicas para proteger sistemas que voy a divulgar en este artículo. Son simples, pero esto no quiere decir que te puedas olvidar con impunidad:



  • (multi-factor authentication, MFA) , . Google GitHub, , VPN-. MFA — .
  • , .
  • , . .
  • . , .


En materia de prevenir la filtración de información clasificada y prevenir la aparición de "huecos" en los sistemas de seguridad, opera el principio de Pareto , según el cual el 20% de los esfuerzos rinden el 80% del resultado.



¿Cómo trabajan los piratas informáticos cuando encuentran contraseñas y claves secretas? ¿Qué herramientas utilizan?



Los piratas informáticos encuentran datos secretos en archivos JavaScript



Las claves de API se encuentran dispersas por Internet. Cualquiera puede usarlos. Es un hecho. A menudo, no existe una razón particular para que las claves estén disponibles públicamente. Los desarrolladores simplemente los olvidan en todas partes. Por ejemplo, las claves entran en el código por las siguientes razones:



  • Para fines de depuración.
  • Con fines de desarrollo local.
  • En forma de comentarios destinados a quienes posteriormente apoyarán el proyecto.


Con bastante frecuencia, se pueden encontrar bloques de código similares a los siguientes en Internet:



// DEBUG ONLY
// TODO: remove -->
API_KEY=t0psecr3tkey00237948


Aunque muchos piratas informáticos leen los archivos JavaScript por sí mismos, la mayoría de ellos buscan dichos archivos utilizando herramientas como meg y luego comprueban lo que encuentran en busca de patrones coincidentes.



¿Cómo lo hicieron? Después de usar el escáner, parece megque buscan cadenas en los archivos encontrados que coincidan con varios patrones. El que creó meg, escribió otro excelente programa, que está destinado a esto. Se llama gf y es una versión mejorada grep. En este caso, usar la gfopción al inicio truffleHogo, en otra variante de su escritura trufflehog, permite que la herramienta encuentre cadenas de alta entropía que son claves para la API. Lo mismo ocurre con la búsqueda de cadenas.API_KEY... Los resultados de búsqueda de una cadena de este tipo suelen tener éxito (con demasiada frecuencia).



A menudo, existen razones perfectamente normales para que las claves aparezcan en el código, pero dichas claves no están protegidas de personas externas. Dejame darte un ejemplo. Un cliente con el que trabajé utilizó un servicio de información de mapas externo. Esto se hace en muchos proyectos. Para cargar la información del mapa y trabajar con él, era necesario realizar llamadas a la API correspondiente mediante una clave. Pero mi cliente olvidó configurar el servicio que estaba usando para restringir las fuentes desde las cuales el servicio podría recibir solicitudes usando esa clave en particular. No es difícil imaginar un ataque simple, que consiste en agotar la cuota de uso de recursos de un servicio de mapas enviándole muchas solicitudes. Esto puede costarle mucho dinero al usuario de dicho servicio. O,Incluso "mejor" (desde el punto de vista de un atacante), tal ataque puede llevar al hecho de que aquellas partes del proyecto del cliente que están ligadas a las cartas, simplemente "caen".



Los piratas informáticos utilizan los archivos JS para algo más que encontrar datos secretos. Después de todo, estos archivos son el código de su aplicación, que puede ser visto por cualquiera que esté interesado en este código. Un buen pirata informático puede, después de leer detenidamente el código, comprender el enfoque para la denominación de entidades que se utiliza en él, averiguar las rutas a la API y encontrar comentarios valiosos. Los resultados como estos se formatean como una lista de palabras que se pasan a los escáneres automáticos. Esto es lo que se llama un "análisis automatizado inteligente", donde un pirata informático combina herramientas automatizadas y la información que han recopilado sobre un proyecto específico.



Aquí hay un comentario real de la página de inicio de un proyecto, que habla en texto plano sobre API inseguras de las que cualquiera puede obtener datos:



/* Debug ->
domain.com/api/v3 not yet in production 
and therefore not using auth guards yet 
use only for debugging purposes until approved */


▍¿Qué hacer?



  • . . , , .
  • API. , . , .
  • , , . , , , , , , . , .
  • , . . , . grep gf . . , , .
  • -. , - . 100% . - — .


, -



El archivo de Internet (también conocido como "Wayback Machine") almacena instantáneas periódicas de sitios web. Este proyecto te permite ver cómo era Internet hace muchos años. Los datos de archivo son de considerable interés para los piratas informáticos que necesitan recopilar información sobre un determinado proyecto. Puede escanear archivos en busca de variantes antiguas de sitios web utilizando herramientas como waybackurls (basadas en waybackurls.py ). Esto significa que incluso si encontró una clave en el código del sitio y la eliminó de allí, pero no rotó las claves, los piratas informáticos pueden encontrar esta clave en la versión anterior del sitio y usar esta clave para piratear el sistema.



Esto es lo que debe hacer si encuentra una clave donde no debería estar:



  1. Cree una clave diseñada para reemplazar la clave comprometida.
  2. Lanza una nueva versión del código que usa la nueva clave. Este código debe reescribirse para que no haya líneas que faciliten la identificación de la clave.
  3. Quite o desactive la llave antigua.


▍ Internet Archive no es el único lugar para encontrar claves



El código antiguo proporciona a los atacantes una amplia variedad de información que les interesa.



  • Rutas secretas de API. Estamos hablando de puntos finales de API no seguros que el desarrollador pensó que nunca se compartirían. Si bien las rutas que descubre un pirata informático pueden no ser útiles para ellos, estas rutas pueden ayudar a comprender el diseño de la API de un proyecto y sus convenciones de API. Una vez que el código del sitio entra en producción, el desarrollador no tiene forma de ocultar este código a las miradas indiscretas. Es muy importante recordar esto.
  • -. , API, . , . , , . , -. , , . , , . , s https.


GitHub



GitHub es una mina de oro para los piratas informáticos. Si sabe dónde buscar, puede encontrar muchas cosas interesantes utilizando herramientas de búsqueda simples. Si la cuenta de GitHub de su organización no está protegida por autenticación multifactor, entonces todos los empleados de la organización, sin excepción, son agujeros de seguridad caminando. Es muy posible que algunos de los empleados usen la misma contraseña en todas partes, y que esta contraseña ya les haya sido robada a través de algún otro sistema. Un pirata informático que esté interesado en una determinada organización puede automatizar fácilmente la búsqueda de contraseñas comprometidas, pero qué puedo decir, puede encontrar dichas contraseñas manualmente.



La lista de empleados de una organización se puede crear utilizando técnicas de inteligencia de código abierto (OSINT). LinkedIn o una lista pública de empleados de la empresa de GitHub pueden ayudar al atacante con esto.



Si, por ejemplo, alguien decide piratear Tesla, entonces bien puede comenzar a estudiar la empresa desde esta página:



https://api.github.com/orgs/teslamotors/members


E incluso si una empresa no usa GitHub como plataforma de git, todavía hay algo valioso que encontrar en GitHub. Basta que esta plataforma sea utilizada por al menos uno de los empleados de la empresa, por ejemplo, para un proyecto de vivienda. Si algo secreto sobre una empresa aparece en el código de este proyecto (o en el historial de git), será suficiente para penetrar en los sistemas de esta empresa.



Hacer un seguimiento del historial completo de los cambios realizados en cada proyecto es la naturaleza de git. A la luz de los problemas de seguridad, este hecho juega un papel muy importante. En otras palabras, cada cambio realizado en el código por cualquier persona que tenga acceso a cualquiera de los sistemas de una organización pone a esa organización en riesgo.



▍¿Por qué está pasando esto?



  • Las empresas no comprueban sus sistemas en busca de vulnerabilidades.
  • , , .
  • , , ( , , 1%), ( — git, , , ).
  • , . .


▍ GitHub



Existe algo llamado "idiotas": consultas de búsqueda especiales que utilizan diferentes capacidades de los motores de búsqueda para encontrar lo que está relacionado con ciertos datos. Aquí hay una lista interesante de búsquedas similares para Google por exploit-db.com.



Si quieres profundizar en este tema, y ​​te recomiendo que lo hagas, antes de darte una breve lista de cadenas que se utilizan para encontrar claves y contraseñas en GitHub, te sugiero que leas este valioso material, escrito por un talentoso investigador de seguridad de sistemas. Habla sobre cómo, qué y dónde buscar en GitHub, cómo usar dorks y describe en detalle el proceso manual de búsqueda de datos secretos.



Las carreteras utilizadas en GitHub no son tan complejas como las utilizadas en Google. El punto aquí es que GitHub simplemente no ofrece al usuario las mismas capacidades de búsqueda avanzada que ofrece Google. Independientemente, buscar correctamente en los repositorios de GitHub puede hacer maravillas. Intente buscar en el repositorio que le interese las siguientes líneas:



password
dbpassword
dbuser
access_key
secret_access_key
bucket_password
redis_password
root_password


Y si intenta buscar archivos específicos mediante consultas como filename:.npmrc _autho filename:.htpasswd, puede filtrar los resultados de la búsqueda por tipos de filtraciones de datos. Aquí hay otro buen artículo sobre este tema.



▍Medidas de mitigación de riesgos asociadas con GitHub



  • Haga que el escaneo de su código en busca de vulnerabilidades sea parte del proceso de CI. La excelente herramienta GitRob puede ayudarte con esto .
  • . GitRob . , no-expand-orgs.
  • . GitRob, , 500 , , -commit-depth <#number>.
  • GitHub !
  • , , , , . G Suite Active Directory. , .


Luego de la publicación de este material, algunos de sus lectores realizaron valiosos comentarios sobre la complejidad de las contraseñas y su rotación, así como el uso de protección hardware de la información.



Aquí están los comentarios de @ codemouse92 :



Utilice contraseñas complejas y únicas siempre que se utilice el inicio de sesión con contraseña. Pero tenga en cuenta que una contraseña compleja no es necesariamente una mezcla misteriosa de letras, números y caracteres especiales. La mejor estrategia ahora es utilizar frases largas como contraseñas. Me gustaría hacer una nota sobre los administradores de contraseñas. Si bien definitivamente vale la pena usar tales programas, es mejor usar contraseñas, que son frases que los usuarios recuerdan y pueden ingresar por su cuenta.


Esto es lo que dice el usuario @corymcdonald :



Donde trabajo, todos reciben hardware de autenticación multifactor. Cada uno tiene 2 dispositivos YubiKey. Además, cada equipo usa el administrador de contraseñas 1Password y cada equipo tiene su propio almacén de contraseñas. Cuando un empleado deja la empresa, el equipo de soporte rota las contraseñas en cada bóveda a la que el empleado tuvo acceso. Personalmente, por ejemplo, cometí un error imperdonable al cargar claves para acceder a AWS en GitHub. Se recomienda que verifique sus cosas usando git-secrets antes de comprometerse . Esto evitará que se comparta lo que parece información clasificada.


Los piratas informáticos usan Google



Ahora que tenemos una comprensión básica de los idiotas, podemos hablar sobre el uso de consultas de búsqueda específicas en Google. Aquí puedes encontrar cosas increíbles con su ayuda. Google es un potente motor de búsqueda que le permite crear consultas que describen cadenas que deberían y no deberían estar presentes en los datos que está buscando. Google, entre otras cosas, le permite buscar archivos con ciertas extensiones, puede buscar dominios específicos, URL. Eche un vistazo a la siguiente cadena de búsqueda:



"MySQL_ROOT_PASSWORD:" "docker-compose" ext:yml


Esta cadena está diseñada para buscar archivos con la extensión yml; además, estos deben ser archivos docker-composeen los que los desarrolladores suelen almacenar contraseñas. Contraseñas no particularmente únicas. Intente realizar una búsqueda en Google para esta cadena. Te sorprenderá lo que encuentres.



Otras cadenas de búsqueda interesantes pueden buscar claves RSA o credenciales de AWS. Aquí hay otro ejemplo:



"-----BEGIN RSA PRIVATE KEY-----" ext:key


Aquí se abren ante nosotros infinitas posibilidades. La calidad de la búsqueda depende únicamente del nivel de creatividad del investigador y de su familiaridad con varios sistemas. Aquí hay una gran lista de Google Dorks si quieres experimentar.



Los piratas informáticos examinan los sistemas que les interesan



Cuando un investigador de seguridad (o un pirata informático motivado) está muy interesado en un determinado sistema, comienza a estudiarlo en profundidad. Llega a conocerla de cerca. Está interesado en puntos finales de API, convenciones de nomenclatura para entidades, características de interacción de partes internas de los sistemas, acceso a diferentes versiones del sistema si se utilizan diferentes versiones del mismo simultáneamente.



Un enfoque no tan bueno para proteger las API es complicar las rutas para acceder a ellas, ocultarlas usando algo como un generador de caracteres aleatorios. Esto no sustituye a los mecanismos de seguridad reales. Los investigadores de seguridad están tratando de encontrar rutas de acceso no seguras a sistemas, puntos finales de API, por ejemplo, utilizando herramientas para la búsqueda "difusa" de vulnerabilidades. Estas herramientas utilizan listas de palabras, construyen rutas a partir de ellas y prueban esas rutas analizando las respuestas que reciben cuando intentan acceder a ellas. Tal escáner no encontrará un punto final, cuya ruta está representada por un conjunto de caracteres completamente aleatorio. Pero estas herramientas son excelentes para identificar patrones y encontrar puntos finales que los propietarios del sistema olvidaron o nunca conocieron.



Recuerde que la "seguridad a través de la oscuridad" no es la mejor manera de proteger los sistemas (aunque no debe ignorarla por completo).



Aquí es donde los dorks de GitHub, de los que hablamos anteriormente, acuden en ayuda de los ciberdelincuentes. Saber qué reglas se utilizan al construir rutas a los puntos finales del sistema (por ejemplo, algo así api.mydomain.com/v1/payments/...) puede ser de gran ayuda para un pirata informático. Al buscar en el repositorio GitHub de la empresa (y en los repositorios de sus empleados) cadenas relacionadas con la API, a menudo se encontrarán rutas que incluyan caracteres aleatorios.



Pero las "cadenas aleatorias", sin embargo, tienen su lugar en los sistemas. Su uso siempre es mejor que usar secuencias de identificadores de recursos, cadenas como usersy en las rutas a la API orders.



Aquí está el increíble repositorio SecLists, que contiene muchas cadenas que se usan al nombrar entidades. Casi todo el mundo en la industria de la protección de datos lo utiliza. A menudo, estos materiales se modifican para un sistema específico. Otra herramienta que se puede utilizar para encontrar rutas "encriptadas" es FFuf , un programa de lógica difusa extremadamente rápido escrito en Go.



Salir



Los problemas de seguridad a menudo se pasan por alto en las nuevas empresas. Los programadores y gerentes generalmente priorizan la velocidad de desarrollo y la frecuencia de lanzamientos de productos, sacrificando la calidad y la seguridad. Aquí puedes ver la inclusión de información secreta en el código que ingresa a los repositorios, el uso de las mismas claves en diferentes lugares del sistema, el uso de claves de acceso donde puedes usar otra cosa. A veces puede parecer que algo como esto le permite acelerar el trabajo en el proyecto, pero, con el tiempo, puede tener muy malas consecuencias.



En esta publicación, traté de mostrarte cómo las cadenas que parecen estar protegidas al estar almacenadas en un repositorio privado pueden fácilmente volverse públicas. Lo mismo ocurre con un clon de un repositorio, realizado por un empleado bienintencionado y no destinado a miradas indiscretas, pero resultó ser público. Pero puede construir una base para una operación segura utilizando una herramienta segura para compartir contraseñas, usando un depósito centralizado de secretos, configurando políticas de seguridad de contraseñas y autenticación multifactor. Esto permitirá, sin ignorar la seguridad, no ralentizar la velocidad de trabajo en el proyecto.



Cuando se trata de proteger la información, la idea de que la velocidad es lo más importante no funciona muy bien aquí.



Conocer cómo funcionan los piratas informáticos suele ser un primer paso muy bueno para comprender qué es la seguridad de la información. Este es el primer paso hacia la protección de los sistemas. Al proteger los sistemas, considere los métodos anteriores para penetrarlos y el hecho de que los piratas informáticos utilizan un conjunto bastante limitado de tales métodos. Se recomienda considerar desde el punto de vista de la seguridad absolutamente todo lo que de una forma u otra está relacionado con un determinado sistema, independientemente de que se trate de mecanismos externos o internos.



La seguridad del sistema a veces puede percibirse como algo poco importante, pero que requiere mucho tiempo y es agitado. Pero tenga la seguridad de que los sencillos pasos que sigue para proteger sus sistemas pueden ahorrarle muchos problemas.



¿Cómo protege sus sistemas?










All Articles