Evita ser hackeado con estos 3 pasos

7
6483

Hasta ahora creo que no he tocado uno de mis temas favoritos, seguridad informática, y considero que este será el tema que les vengo a contar hoy 🙂 Espero que tras este pequeño artículo puedan tener una mejor idea de lo que puede ayudar a tener un mejor control de sus riesgos y cómo mitigar bastantes al mismo tiempo.

Riesgos por doquier

Es inevitable, en este año solamente, ya llevamos más de 15000 vulnerabilidades descubiertas y asignadas de manera pública. ¿Cómo lo sé? Porque parte de mi trabajo es revisar CVEs en los programas que usamos en Gentoo para saber si corremos software vulnerable, de esta manera podemos actualizarlo y asegurar que todos en la distribución tengamos equipos seguros.


CVE

Common Vulnerabilities and Exposures por sus siglas en inglés, son los identificadores únicos que se asignan a cada vulnerabilidad existente. Puedo decir con mucha alegría que varios Developers de Gentoo apoyan al bien de la humanidad, investigando y publicando sus hallazgos para que puedan ser corregidos y solucionados. Uno de los últimos casos que tuve el gusto de leer fue el de Optionsbleed; una vulnerabilidad que afectaba a servidores Apache a nivel mundial. ¿Por qué digo que estoy orgulloso de esto? Pues porque ellos hacen un bien al mundo, mantener las vulnerabilidades en secreto solo beneficia a pocos, y las consecuencias de esto pueden ser catastróficas dependiendo del objetivo.

CNA

Las CNA son entidades encargadas de solicitar y/o asignar CVEs, por ejemplo, tenemos la CNA de Microsoft, encargada de agrupar sus vulnerabilidades, resolverlas y asignarles un CVE para su posterior registro a lo largo del tiempo.

Tipos de medidas

Vamos a comenzar aclarando que ningún equipo es o será 100% seguro, y como decía un refrán bastante común:

El único equipo 100% seguro es aquel que se encuentra encerrado en una bóveda, desconectado de internet y apagado.

Porque es cierto, los riesgos siempre estarán ahí, conocidos o desconocidos, solo es cuestión de tiempo por lo que frente al riesgo podemos hacer lo siguiente:

Mitigarlo

Mitigar un riesgo no es más que reducirlo (NO anularlo). Este es un punto bastante importante y crucial tanto a nivel empresarial como personal, uno no quiere ser “hackeado”, pero a decir verdad el punto más débil de la cadena no es el equipo, ni el programa, ni siquiera el proceso, es el humano.

Todos tenemos costumbre de culpar a otros, sean personas o cosas, pero en seguridad informática, la responsabilidad siempre es y será del humano, podrás no ser tú directamente, pero si no sigues el camino adecuado, serás parte del problema. Más adelante les doy un pequeño truco para mantenerse un poco más seguros 😉

Transferirlo

Este es un principio bastante conocido, tenemos que imaginarlo como un banco. Cuando tu necesitas cuidar tu dinero (me refiero de manera física) lo más seguro es dejarlo con alguien que tenga la capacidad de resguardarlo mucho mejor que tú. No necesitas tener tu propia bóveda (aunque sería mucho mejor) para poder cuidar cosas, solamente necesitas contar con alguien (de confianza) para que guarda algo mejor que tú.

Aceptarlo

Pero cuando el primero y el segundo no aplican, pues ahí es donde viene la pregunta realmente importante. ¿Qué tanto vale este recurso/dato/etc para mí? Si la respueseta es mucho, pues deberías pensar en los primeros dos. Pero si la respuesta es un no tanto, tal vez simplemente debas aceptar el riesgo.

Hay que afrontarlo, no todo es mitigable, y algunas cosas mitigables costarían tantos recursos que sería prácticamente imposible aplicar una solución real sin tener que cambiar e invertir mucho tiempo y dinero. Pero si puedes analizar aquello que intentas proteger, y no encuentra su lugar en el primer o segundo paso, pues simplemente llévalo en el tercer paso de la mejor manera, no le des más valor del que tiene, y no lo mezcles con cosas que realmente tienen valor.

Mantenerse al día

Esta es una verdad que escapa a cientos de personas y negocios. La seguridad informática no se trata de cumplir con tu auditoría 3 veces al año y esperar que nada suceda en los otros 350 días. Y esto es verdad para muchos administradores de sistemas. Yo hace poco al fin me pude certificar como LFCS (les dejo a ustedes buscar en dónde lo hice 🙂 ) y este es un punto crítico durante el curso. Mantener al día tu equipo y sus programas es vital, crucial, para evitar la mayoría de riesgos. Seguro aquí muchos me dirán, pero el programa que usamos no funciona en la siguiente versión o algo similar, pues la verdad es que tu programa es una bomba de tiempo si no funciona en la última versión. Y eso nos lleva al anterior apartado, ¿puedes mitigarlo?,¿puedes transferirlo?,¿puedes aceptarlo?…

A decir verdad, solo para tenerlo presente, según las estadísticas 75% de los ataques de seguridad informáticas son originados desde el interior. Esto puede ser porque tiene usuarios en la empresa incautos, o malintencionados. O que sus procesos de seguridad no le han hecho difícil a un hacker irrumpir en sus locales o redes. Y casi más del 90% de ataques son originados por software desactualizado, no por vulnerabilidades de día cero.

Piensa como máquina, no como humano

Este será un pequeño consejo que les dejo de aquí en adelante:

Piensen como máquinas

Para los que no comprendan, pues ahora les doy un ejemplo.

Resultado de imagen para john the ripper software

Les presento a John. Entre los amantes de la seguridad es uno de los mejores puntos de partida cuando comienzas en el mundo del ethicla hacking. John se lleva de maravilla con nuestro amigo crunch. Y básicamente agarra una lista que se le entrega y empieza a probar las combinaciones hasta encontrar una clave que resuelva la contraseña que busca.

Crunch es un generador de combinaciones. esto quiere decir que tu le puedes decir a crunch que quieres una contraseña con 6 caractéres de largo, que contenga letras minúsculas y mayúsculas y crunch empezará a probar uno por uno… algo como:

aaaaaa,aaaaab,aaaaac,aaaaad,....

Y se preguntarán cuánto tiempo lleva ir por toda la lista seguro… no toma más de unos cuantos minutos. Para los que se quedaron con la boca abierta, permítanme explicarles. Como conversamos anteriormente, el eslabón más débil de la cadena es el hombre, y su forma de pensar. Para una computadora no es complicado probar combinaciones, es algo sumamente repetitivo, y con el pasar de los años los procesadores se han vuelto tan poderosos que no necesitan más de un segundo para hacer mil intentos, o incluso más.

Pero ahora lo bueno, el ejemplo anterior es con el pensamiento humano, ahora vamos por el pensamiento de máquina:

Si le decimos a crunch que empiece a generar una contraseña con solo 8 dígitos, bajo los mismos requerimientos anteriores, hemos pasado de minutos a horas. Y adivinen qué sucede si le decimos que use más de 10, se convierten en días. Para más de 12 ya estamos en meses, además del hecho de que la lista sería de proporciones que no podrían ser almacenadas en una computadora normal. Si llegamos a 20 hablamos de cosas que una computadora no va a poder descifrar en cientos de años (con los procesadores actuales claro está). Esto tiene su explicación matetmática, pero por cuestiones de espacio no se las voy a explicar aquí, pero para los más curiosos tiene mucho que ver con la permutación, las combinatorias y las combinaciones. Para ser más exactos, con el hecho de que por cada letra que agregamos al largo tenemos casi 50 posibilidades, así nos quedará algo como:

20^50 posibles combinaciones para nuestra última contraseña. Ingresen ese número a su calculadora para que vean cuantas posibilidades existen con una clave de longitud de 20 símbolos.

¿Cómo puedo pensar como máquina?

No es sencillo me dirá más de uno pensar en una clave de 20 letras seguidas, sobre todo con el antiguo concepto de que las contraseñas son palabras clave. Pero veamos un ejemplo:

dXfwHd

Esto es difícil de recordar para un humano, pero súmamente sencillo para una máquina.

caballoconpatasdehormiga

Esto por otro lado es súmamente fácil de recordar para un humano (hasta incluso divertido) pero es un infierno para crunch. Y ahora más de uno me dirá, ¿pero no es recomendable también cambiar de manera seguida las claves? Sí, es recomendable, por lo que ahora podemos matar dos pájaros de un tiro. Supongamos que este mes estoy leyendo El Quijote de la mancha, tomo I. En mi contraseña pondré algo como:

ElQuijoteDeLaMancha1

20 símbolos, algo bastante difícil de descubrir sin conocerme, y lo mejor es que cuando acabe el libro (suponiendo que leen de forma constante 🙂 ) sabrán que deben cambiar su contraseña, incluso el cambiar a:

ElQuijoteDeLaMancha2

Es ya un progreso 🙂 y seguramente les ayudará a mantener sus contraseñas seguras y al mismo tiempo les recordará que deben acabar su libro.

Ya es bastante lo que he escrito, y aunque me encataría poder hablar sobre muchos más temas de seguridad, lo dejaremos para otro momento 🙂 Saludos

7 COMENTARIOS

  1. Muy interesante, pero a mi punto de vista los ataques de fuerza bruta se están quedando obsoletos, y la generación de contraseñas como “ElQuijoteDeLaMancha1” tampoco parese una solución viable, esto es debido a que con un poco de ingeniería social es posible dar con las contraseñas de este tipo, solo vasta con investigar superficialmente a la persona y ella misma nos la revelara, ya sea en sus redes sociales, a sus conocidos o en su trabajo, es parte de la naturalesa humana.

    A mi punto de vista la mejor solución es usar un gestor de contraseñas, porque es mas seguro usar una contraseña de 100 dígitos a una de 20, además se tiene la ventaja de que al solo conocerse la contraseña maestra, no es posible revelar ni por occidente las contraseñas generadas porque no se conocen.

    Este es mi gestor de contraseñas, es de código abierto y al emular un teclado, es inmune a los keylogers.

    https://www.themooltipass.com

    • Bueno, no pretendo dar una solución totalmente segura (recordando que nada es 100% impenetrable) en solo 1500 palabras 🙂 (no deseo escribir más que eso a menos que sea obligatoriamente necesario) pero así como tu dices que 100 es mejor que 20, pues 20 es sin duda mejor que 8 🙂 y bueno, como dijimos al principio, el eslabón más débil es el hombre, así que es ahí donde la atención siempre va a estar. Conozco a varios “ingenieros sociales” que no saben mucho de tecnología, pero solo lo suficiente como para hacer un trabajo de asesoramiento de seguridad. Mucho más difícil es encontrar verdaderos hackers que encuentran fallas en programas (los conocidos zero-day).
      Si hablamos de “mejores” soluciones ya estamos entrando en un tema para gente con expertis en el campo, y yo estoy compartiendo con cualquier tipo de usuario 🙂 pero si gustas ya podremos hablar de “mejores” soluciones en otro momento. Y gracias por el link, seguro sus pros y contras tiene, pero no le hecharía mucho a un gestor de contraseñas tampoco, te sorprendería la facilidad y el deseo con el que los atacan, después de todo… una sola victoria implica muchas claves reveladas.
      Saludos

  2. Interesante artículo, ChrisADR. Como administrador de sistemas Linux este es un buen recordatorio para no tirarnos en la fiaca de no darle la suma importancia que requieren hoy en día mantener las contraseña al día y con la seguridad que requieren los tiempos de hoy. Incluso este es un artículo que le serviría mucho a la gente común que piensa que una contraseña no es el causante del 90% de los dolores de cabeza. Me gustaría ver más artículos de seguridad informática y de como mantener la mayor seguridad posible dentro de nuestro querido sistema operativo. Creo que siempre hay algo más por aprender más allá del conocimiento que uno adquiere realizando cursos y capacitaciones.
    Más allá de que siempre consulto este blog para enterarme de algún programa nuevo para Gnu Linux para meterle mano.

    Saludos!

  3. ¿Podrías explicar un poco en detalle, con números y cantidades, por que es más segura “DonQuijoteDeLaMancha1” (“El Quijote de La Mancha” no existe ;p ) que “•M¡ ¢0nt®a$3Ñ@•”?
    No sé nada de matemática combinatoria, pero sigue sin convencerme esa idea que tanto se repite de que es mejor una contraseña larga con un juego de caracteres sencillo que una más corta con un juego de caracteres mucho más numeroso. ¿De verdad la cantidad de combinaciones posibles es mayor sólo usando letras latinas y números que usando todo el UTF-8?

    Saludos.

    • Hola Dani, vamos por partes para poder dejarlo claro… alguna vez has tenido una de esas maletas con combinaciones de número como candado? Veamos el siguiente caso… suponiendo que llegan a nueve tenemos algo como:

      |10| |10| |10|

      Cada uno tiene diaz posibilidades, por lo que si tu quieres saber la cantidad de combinaciones posibles, solo tienes que hacer una simple multiplicación, 10³ para ser exactos o 1000.

      La tabla ASCII contiene 255 caractéres esenciales, de los cuales usamos normalmente los números, minúsculas, mayúsculas y algunos signos de puntuación. Supongamos que ahora vamos a tener una clave de 6 dígitos con aproximadamente 70 opciones (mayúsculas,minúsculas,números y algunos símbolos)

      |70| |70| |70| |70| |70| |70|

      Como puedes imaginar, es un número bastante grande, 117 649 000 000 para ser exactos. Y esas son todas las posibles combinaciones que existen para un espacio de 6 dígitos de clave. Ahora vamos a reducir mucho más el espectro de posibilidades, sigamos que solo vamos a usar 45 (minúsculas, números y uno que otro símbolo tal vez) pero con una contraseña mucho más larga, digamos tal vez 20 dígitos (Eso que la del ejemplo tiene como 21).

      |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45| |45|

      El número de posibilidades se convierte en… 1 159 445 329 576 199 417 209 625 244 140 625… No sé como se cuenta ese número, pero para mi que es un poco más largo :), pero vamos a reducirlo aún más, solo usaremos números del 0 al 9, y veamos qué sucede con la cantidad

      |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10| |10|

      Con esta simple regla se puede llegar a la sorprendente cantidad de 100 000 000 000 000 000 000 combinaciones :). Esto se debe a que cada dígito que se agrega a la ecuación incrementa el número de posibilidades de forma exponencial, mientras que el agregar posibilidades dentro de una sola casilla lo incrementa de forma lineal.

      Pero ahora vamos a lo que es “mejor” para nosotros humanos.

      ¿Cuánto te toma escribir “•M¡ ¢0nt®a$3Ñ@•” en términos prácticos? Asumamos por un segundo que tienes que escribirlo cada día, porque no te gusta guardarlo en la computadora. Este se convierte en un trabajo tedioso si tienes que hacer contracciones de manos de maneras poco usuales. Mucho más rápido (a mi punto de vista) es escribir palabras que puedes escribir con naturalidad, puesto que otro factor importante es cambiar las claves con regularidad.

      Y por último, pero no por eso menos importante… Depende mucho del humor de quien ha desarrollado tu sistema, aplicativo, programa, el poder usar tranquilamente todos TODOS los caracteres de UTF-8, en algunos casos hasta te puede inhabilitar el uso de la cuenta porque la aplicación “convierte” algo de tu clave y la hace inutilizable… Por eso tal vez es mejor ir a lo seguro con los caractéres que siempre sabes que están disponibles.

      Espero que esto ayude con las dudas 🙂 Saludos

Dejar una respuesta