Seguridad Informática
Los Grandes Avances trae Como mejoras nueva Segirudad
lunes, 11 de mayo de 2015
Bienvenida
La Seguridad Informática es una disciplina que trata de asegurar la integridad y la privacidad de los sistemas de la información. Cubre todos los componentes que forma un sistema de información: datos, software, redes, usuarios, etc.
En este Blog te ayudaremos con información importante para que estés Protegido y te daremos herramientas útiles para evitar ataques a tu equipo.
10 consejos de seguridad informática
- Hay cosas que tu antivirus, por muy bueno que sea, no puede hacer. Te explico qué medidas de seguridad informática necesitas aplicar por tu cuenta.
1. Mantén actualizados los programas
Para evitar sorpresas, debes mantener actualizados tus programas. Aplicaciones comoSecunia PSI o Softonic for Windows te ayudan a conseguirlo.
2. En redes públicas, navega con cifrado
En las redes WiFi públicas, tus datos pueden ser interceptados de muchas maneras. Navegar desde ellas sin protección es una imprudencia que se paga muy cara.
Para defenderte, navega siempre con el protocolo HTTPS activado; con HTTPS Everywherees muy fácil. Y para añadir seguridad extra, te recomiendo usar estas apps.
3. Crea usuarios y contraseñas distintos
Crea contraseñas distintas y seguras para todos tus servicios, y usa nombres de usuario diferentes cuando se te dé esa opción. Y usa un gestor de contraseñas como Dashlane.
4. Cambia tus contraseñas a menudo
Las contraseñas envejecen. Y si las vulnera un intruso discreto, puede que tardes mucho en saber si alguien ha accedido a tus archivos y mensajes.
Por muy fuertes que sean tus contraseñas, cámbialas periódicamente. Y para añadir un factor de protección adicional, activa la verificación en dos pasos allá donde puedas.
5. Comprueba las apps autorizadas
"¿Puede la aplicación X leer tus datos de Facebook y Google?". Cuando autorizas una app maligna, el desastre está servido: spam enviado en tu nombre, robo de datos...
Revocando una aplicación en Facebook
Para prevenir problemas, controla las apps autorizadas de Google, Facebook, Twitter y otros sitios importantes. Revocar permisos es fácil y rápido.
6. Protege tu red WiFi frente a intrusos
Una red WiFi abierta es un gesto solidario... y peligroso. Un visitante mal intencionado puede intentar acceder a los datos de tu ordenador. Y entonces hablamos de intrusos.
Revisar la seguridad de tu red WiFi es la mejor manera de evitar sorpresas desagradables. Sigue mis ocho consejos para reforzar tu red WiFi.
7. Controla la privacidad de tus redes
En tus perfiles de Facebook y Google hay un montón de información personal que puede usarse en tu contra (por ejemplo, para adivinar contraseñas).
Cuidado con los perfiles falsos en Facebook, podrían ser ladrones de datos...
Rechaza solicitudes de amistad sospechosas y configura bien la privacidad de Facebook yotras redes sociales. Es una cuestión de privacidad fundamental.
8. Crea usuarios para cada persona
He visto un montón de ordenadores con una sola cuenta para toda la familia. O con varias cuentas, pero desprotegidas. Es un camino seguro hacia el desastre.
Dos usuarios conviven en el mismo PC con Windows 7 (fuente)
Si más de una persona va a usar un PC, crea diferentes cuentas, cada una protegida por una contraseña fuerte u otro sistema de identificación. ¡Y por favor, bloquea el PC!
9. Desconfía de los archivos que te envían
Uno de los virus más dañinos de los últimos tiempos se propagó a través de Skype: un amigo enviaba un archivo y la gente, al confiar en su origen, lo abría. Y kaputt.
Estés donde estés, no abras un archivo misterioso por ninguna razón, ni siquiera si te lo envía un amigo. Pregúntale antes qué es. En la duda, escanéalo en la web.
10. Aprende a ser escéptico
La seguridad es una actitud. Implica desconfiar sanamente de las cosas que ves a diario en Internet, ese mágico mundo de colores... y estafas.
Sé escéptico. En mis guías Cómo detectar y desmontar bulos y Qué hacer ante un mail sospechoso te proporciono pautas de sentido común para ser más vigilante.
Tips de Seguridad informatica
Relacionados con su equipo informático:
- Actualice regularmente su sistema operativo y el software instalado en su equipo, poniendo especial atención a las actualizaciones de su navegador web. A veces, los sistemas operativos presentan fallos, que pueden ser aprovechados por delincuentes informáticos. Frecuentemente aparecen actualizaciones que solucionan dichos fallos. Estar al día con las actualizaciones, así como aplicar los parches de seguridad recomendados por los fabricantes, le ayudará a prevenir la posible intrusión de hackers y la aparición de nuevos virus.
- Instale un Antivirus y actualícelo con frecuencia. Analice con su antivirus todos los dispositivos de almacenamiento de datos que utilice y todos los archivos nuevos, especialmente aquellos archivos descargados de internet.
- Instale un Firewall o Cortafuegos con el fin de restringir accesos no autorizados de Internet.
- Es recomendable tener instalado en su equipo algún tipo de software anti-spyware, para evitar que se introduzcan en su equipo programas espías destinados a recopilar información confidencial sobre el usuario.
Relacionados con la navegación en internet y la utilización del correo electrónico:
- Utilice contraseñas seguras, es decir, aquellas compuestas por ocho caracteres, como mínimo, y que combinen letras, números y símbolos. Es conveniente además, que modifique sus contraseñas con frecuencia. En especial, le recomendamos que cambie la clave de su cuenta de correo si accede con frecuencia desde equipos públicos.
- Navegue por páginas web seguras y de confianza. Para diferenciarlas identifique si dichas páginas tienen algún sello o certificado que garanticen su calidad y fiabilidad. Extreme la precaución si va a realizar compras online o va a facilitar información confidencial a través de internet. En estos casos reconocerá como páginas seguras aquellas que cumplan dos requisitos:
- Deben empezar por https:// en lugar de http.
- En la barra del navegador debe aparecer el icono del candado cerrado. A través de este icono se puede acceder a un certificado digital que confirma la autenticidad de la página.
- Sea cuidadoso al utilizar programas de acceso remoto. A través de internet y mediante estos programas, es posible acceder a un ordenador, desde otro situado a kilómetros de distancia. Aunque esto supone una gran ventaja, puede poner en peligro la seguridad de su sistema.
- Ponga especial atención en el tratamiento de su correo electrónico, ya que es una de las herramientas más utilizadas para llevar a cabo estafas, introducir virus, etc. Por ello le recomendamos que:
- No abra mensajes de correo de remitentes desconocidos.
- Desconfíe de aquellos e-mails en los que entidades bancarias, compañías de subastas o sitios de venta online, le solicitan contraseñas, información confidencial, etc.
- No propague aquellos mensajes de correo con contenido dudoso y que le piden ser reenviados a todos sus contactos. Este tipo de mensajes, conocidos como hoaxes, pretenden avisar de la aparición de nuevos virus, transmitir leyendas urbanas o mensajes solidarios, difundir noticias impactantes, etc. Estas cadenas de e-mails se suelen crear con el objetivo de captar las direcciones de correo de usuarios a los que posteriormente se les enviarán mensajes con virus, phishing o todo tipo de spam.
- Utilice algún tipo de software Anti-Spam para proteger su cuenta de correo de mensajes no deseados.
En general, es fundamental estar al día de la aparición de nuevas técnicas que amenazan laseguridad de su equipo informático, para tratar de evitarlas o de aplicar la solución más efectiva posible.
Inseguridad Bancaria Online.
Usualmente recibimos propaganda de nuestras entidades financieras acerca del cuidado que se debe tener de nuestra contraseña para acceder a los portales de banca online. Sin embargo, muy pocas veces se nos advierte que el nombre de usuario/login/etc es tan importante o tal vez más que el tan celosamente guardado "password".
La razón es simple: sin la contraseña, nuestro criminal informático puede no tener acceso a realizar operaciones bancarias en linea a nuestro nombre; sin embargo, con el nombre de usuario, el atacante puede lograr que nosotros tampoco las hagamos.
El problema radica en que ningún sistema bancario en linea puede darse el lujo de permitir infinitos intentos de acceso a una cuenta bancaria. De lo contrario, expondrian a sus clientes a ataques de fuerza bruta para adivinar su contraseña. Por lo tanto, absolutamente todos los sistema de banca en linea que he visto ejecutan algún tipo de bloqueo despues de un numero predeterminado de intentos de accesos incorrectos. En consecuencia, el atacante que conozca nuestro nombre de usuario, solo necesita hacer unos cuantos intentos de ingreso incorrectos para bloquearnos el acceso a nuestra cuenta de banca en linea.
La situación empeora cuando el propio sistema de banca en linea hace que los nombres de usuario sean facilmente predecibles. Esto sucede muy a menudo cuando las entidades financieras deciden utilizar numeros de cuentas de bancos, numeros de tarjetas de debito, etc en lugar de un nombre de usuario arbitrario. La razón es simplemente comodidad a la hora de hacer el rollout de credenciales. Por ejemplo, si el usuario ya tiene su tarjeta de débito y su clave de cajero, puede usar esas mismas credenciales para acceder al sistema de banca en linea. El usuario está automáticamente listo para hacer uso de la fabulosa banca en linea sin necesidad de emitir nuevas credenciales, verificación de identidad, firma de acuerdos, etc. Ésta comodidad no viene sin su alto costo en riesgo no sólo para el usuario final, sino también para la propia entidad financiera.
El resultado inmediato, pero no el único, es una vulnerabilidad de denegacion de servicio al sistema de banca en linea que no requiere más que de un ordenador personal, una conexión a internet de muy poco ancho de banda, y un programa de una docena de lineas de código para llevarse a cabo. Las entidades financieras invierten grandes sumas de dinero en sistemas redundantes, ancho de banda, sistemas de deteccion de inundaciones, etc. pero con esta vulnerabilidad hacen que todos estos sistemas queden completamente inútiles.
Diversas culturas tienen distintas imágenes sobre el futuro apocalíptico. La imagen que a mi se me viene a la mente con este tipo de sistemas es una entidad bancaria colapsada con tickets de soporte de reseteo de credenciales de acceso y una cantidad muy grande de clientes frustrados por no poder llevar a cabo sus transacciones financieras online. A pesar de nunca haber escuchado a alguna entidad financiera aceptar que ha tenido sucesos de esta índole, yo mismo he sido victima de reiterados bloqueos de acceso inexplicables. Estoy seguro que no soy el único tampoco.La solución definitiva a esta problemática es por supuesto el uso de nombres de usuario que sean dificiles de predecir. Sin embargo, es posible disminuir el impacto de esta vulnerabilidad sustituyendo los bloqueos permanentes por bloqueos temporales. La intención es por supuesto evitar el escenario apocaliptico dando acceso a las victimas despues de un tiempo prudencial, pero previniendo en cierta medida que el criminal informático lleve a cabo un ataque de fuerza bruta contra las credenciales de sus victimas. Esta medida paliativa, por supuesto, se hace imposible de implementar si el espacio de contraseñas es muy pequeño. Por ejemplo, en el caso en que la clave de acceso sea una cadena de 4 digitos.
ataques de fuerza bruta
Implementando ataques de fuerza bruta.
"En teoria, la práctica y la teoría son iguales. En la práctica, no lo son."
Bruce Schneier.
Y en efecto, en algunos casos, la teoría y la práctica, llegan a ser muy distintas. Especificamente, por ejemplo, muchos clientes de mis pruebas de penetración consideran que los ataques descritos en artículos anteriores son imprácticos pues: "cualquier firewall/IPS es capaz de bloquear tu dirección IP apenas se detecte el ataque de fuerza bruta". Sin embargo, esta medida de mitigación funciona sólo en teoría y sólo si tu atacante es un novicio.
En la práctica, la medida de bloquear la dirección IP de tu atacante no sería tan mala de no ser por la gran cantidad deproxies libres y pagos a la disposición de cualquiera que pueda ejecutar una busqueda en google. Si además agregamos la gran cantidad de servicios baratos en "las nubes" (ya sea de amazon, o las creadas por los criminales informáticos en lo que se conoce como "botnets"), nos damos cuenta que en realidad nuestro atacante dispone de una cantidad casi inagotable de direcciones IP desde donde puede lanzar su ataque! En la práctica, lo que sucederá al bloquear la dirección IP de nuestro atacante "no-novicio" es que simplemente se utilizará otra dirección IP casi instantaneamente. Antes de detener a tu atacante efectivamente mediante el bloqueo de su cada vez nueva dirección IP, será tu firewall/IPS quien muy probablemente tendrá serios problemas de desempeño al intentar bloquear tantas direcciones IP particulares. Esta consecuencia es muy bien conocida por los que nos hemos enfrentado a estos tipos de ataque de forma rutinaria y conocemos los intringulis de la bestia de forma práctica, no sólo teórica.
Pero ¿qué tan fácil es implementar un ataque de cambio de dirección IP automático luego que el administrador novicio intente bloquear nuestra dirección IP? la respuesta es: trivial. Por ejemplo, si estamos trabajando contra un sistema web, con nuestro propio script en perl y usando la libreria LWP::UserAgent, agregar la funcionalidad mencionada requiere una sola linea de código:
DIGRESIÓN: Si no conocias la información anterior y estas pensando iniciar tu carrera criminal con las técnicas descritas aquí, te tengo malas noticias. Usar proxies de esta manera no provee la anonimidad que muchos probablemente piensan. Es muy fácil dejar pistas de tu identidad por muchos lados y si tu víctima tiene los recursos y tiempo para buscarte te van a atrapar. En mis trabajos de forénsica de redes hemos logrado atrapar a muchos atacantes novicios de forma muy rápida debido a errores muy tontos de su parte. Mi recomendación: olvida el mundo criminal y ejecuta este tipo de demostraciones de forma profesional, con permiso y ganando buen dinero por ello.
Esta digresión me lleva al siguiente punto equivocado que escucho con cierta frecuencia de mis clientes con un poco más de experiencia en estos temas. El argumento es mas o menos el siguiente: "en la presencia de un ataque de fuerza bruta, nosotros no bloqueamos ninguna dirección IP, nosotros bloqueamos directamente al individuo que ejecuta el ataque, lo buscamos con ayuda de las autoridades y lo visitamos a su casa". Esta política es mucho más efectiva que la anterior pero sólo hasta cierto punto. Asumiendo que tu organización tiene los recursos y el tiempo para ejecutar tal respuesta en todos los casos, lo cual no es usual, y asumiendo también que tu atacante se encuentra en tu jurisdicción o una jurisdicción colaboradora, esta medida sólo será efectiva contra los atacantes menos sofisticados. Tu criminal informático "profesional", del tipo que va tras organizaciones con los recursos y tiempo que estamos considerando, muy probablemente también sepa contra-medidas para no ser encontrado. Hablamos no sólo de medidas técnicas, como encadenamiento de proxies, sino que incluso pueden tambien hacerle una visita mafiosa al investigador técnico a cargo de tu investigación. En otras palabras, tu atacante cuenta con exactamente las mismas posibilidades que tú, sólo que desde el punto de vista criminal y sin restricciones legales.
En cuanto a las técnicas avanzadas de anonimidad que usan estos "criminales informáticos avanzados", pienso que no tienen cabida en este tipo de artículos. Por un lado, porque para el pentester profesional tienen muy poca utilidad. En nuestras pruebas de penetracion nosotros no sólo tratamos de no cambiar IP. Por el contrario, intentamos ser lo más identificables posible. Esta situación es, por supuesto, con la idea de proveer a la organización que nos contrata de un método efectivo para diferenciar un ataque verdadero de las actividades de nuestro servicio. Por el otro lado, tampoco tienen cabida pues este blog trata de ser un punto de referencia para los profesionales de seguridad informática y no una enciclopedia de ayuda a los pichones de criminales informáticos.
El problema es el siguiente: ¿Cuándo es un espacio de busqueda lo suficientemente grande sin hacer que mis usuarios tengan que recordar credenciales inhumanamente grandes? En este tema intervienen demasiados factores como para dar una respuesta adecuada para todos los casos. En consecuencia, yo siempre recomiendo hacer lo que equivale a un "análisis de stress" a la aplicación. Simplemente se ejecuta un ataque de fuerza bruta controlado sobre los procesos importantes incluyendo el de "login" y se estudian los resultados. Al final de este trabajo no sólo se tiene un estimado de cúal es la capacidad de atención real del sistema, sino que también se tiene un estimado de la velocidad con que un atacante puede conseguir la información que necesita para continuar su ataque. Es con esta información que se deben tomar decisiones sobre controles de mitigación en lugar de abusar de los "estandares" y/o "buenas practicas" y/o ISO-XXXX como se quieran llamar. Siempre hay que recordar: los estandares no dejan de ser una recomendación meramente teorica y que se quedan, en la gran mayoría de casos, muy cortos en la práctica.
El tema es tán sutíl que hasta colegas pentesters con cierta trayectoria reportan una tasa muy pequeña de velocidad de revisión en los ataques de fuerza bruta ejecutados por sus scripts. Una de las formas en que pentesters (y criminales) profesionales hacen scripts de gran desempeño es mediante el uso de multi-threading.
La clase InputThread se encarga de manejar la interacción con el usuario. Por el momento, escribir la palabra "quit" ocasiona la señal de parada para todos los threads y termina limpiamente. Cualquier otro input simplemente produce la impresión de estadisticas de velocidad, avance y status general del programa. Esta clase se podría mejorar para proveer otras acciones como aumento de threads, disminución de threads, etc. La clase RequestThread se encarga de hacer el trabajo bruto. En el loop "while 1" se ejecuta la tarea que se asigna en la cola request_queue y es necesario manejar todos los casos de respuesta. Para el caso de aplicaciones web, es necesario manejar una situación de éxito, una de fracaso y una de ninguna de las dos. En los comentarios del código hay un poco más de explicación.
Finalmente, a pesar de que este artículo está enfocado a aplicaciones web, no hay ninguna razón por la que estas ideas no se puedan aplicar a otro tipo de aplicaciones. Por supuesto, habrán detalles teóricos que hay que sortear. Pero eso nunca es problema en la práctica. Si estos detalles no los han descubiertos los expertos en seguridad informática, de seguro lo habrán hecho los criminales informáticos. En ambos casos, lo único que hay que hacer es aprender de éstos y adaptar nuestros sistemas.
Y en efecto, en algunos casos, la teoría y la práctica, llegan a ser muy distintas. Especificamente, por ejemplo, muchos clientes de mis pruebas de penetración consideran que los ataques descritos en artículos anteriores son imprácticos pues: "cualquier firewall/IPS es capaz de bloquear tu dirección IP apenas se detecte el ataque de fuerza bruta". Sin embargo, esta medida de mitigación funciona sólo en teoría y sólo si tu atacante es un novicio.
En la práctica, la medida de bloquear la dirección IP de tu atacante no sería tan mala de no ser por la gran cantidad deproxies libres y pagos a la disposición de cualquiera que pueda ejecutar una busqueda en google. Si además agregamos la gran cantidad de servicios baratos en "las nubes" (ya sea de amazon, o las creadas por los criminales informáticos en lo que se conoce como "botnets"), nos damos cuenta que en realidad nuestro atacante dispone de una cantidad casi inagotable de direcciones IP desde donde puede lanzar su ataque! En la práctica, lo que sucederá al bloquear la dirección IP de nuestro atacante "no-novicio" es que simplemente se utilizará otra dirección IP casi instantaneamente. Antes de detener a tu atacante efectivamente mediante el bloqueo de su cada vez nueva dirección IP, será tu firewall/IPS quien muy probablemente tendrá serios problemas de desempeño al intentar bloquear tantas direcciones IP particulares. Esta consecuencia es muy bien conocida por los que nos hemos enfrentado a estos tipos de ataque de forma rutinaria y conocemos los intringulis de la bestia de forma práctica, no sólo teórica.
Pero ¿qué tan fácil es implementar un ataque de cambio de dirección IP automático luego que el administrador novicio intente bloquear nuestra dirección IP? la respuesta es: trivial. Por ejemplo, si estamos trabajando contra un sistema web, con nuestro propio script en perl y usando la libreria LWP::UserAgent, agregar la funcionalidad mencionada requiere una sola linea de código:
$ENV{HTTP_PROXY} = 'http://direccion.ip.del.proxy:puerto_del_proxy';
Y por supuesto, es necesario codificar el manejo de error cuando la conexión falle y cambiar la variable anterior. Este método tiene la ventaja que cualquier otro script que esté atento a la variable de entorno, continuará funcionando transparentemente luego de hacer este cambio en vivo. En caso que el proxy requiera autenticación, las modificaciones necesarias son igualmente triviales. El último ingrediente necesario es una lista de proxies que como hemos visto, es de muy fácil acceso hasta para el principiante.
DIGRESIÓN: Si no conocias la información anterior y estas pensando iniciar tu carrera criminal con las técnicas descritas aquí, te tengo malas noticias. Usar proxies de esta manera no provee la anonimidad que muchos probablemente piensan. Es muy fácil dejar pistas de tu identidad por muchos lados y si tu víctima tiene los recursos y tiempo para buscarte te van a atrapar. En mis trabajos de forénsica de redes hemos logrado atrapar a muchos atacantes novicios de forma muy rápida debido a errores muy tontos de su parte. Mi recomendación: olvida el mundo criminal y ejecuta este tipo de demostraciones de forma profesional, con permiso y ganando buen dinero por ello.
Esta digresión me lleva al siguiente punto equivocado que escucho con cierta frecuencia de mis clientes con un poco más de experiencia en estos temas. El argumento es mas o menos el siguiente: "en la presencia de un ataque de fuerza bruta, nosotros no bloqueamos ninguna dirección IP, nosotros bloqueamos directamente al individuo que ejecuta el ataque, lo buscamos con ayuda de las autoridades y lo visitamos a su casa". Esta política es mucho más efectiva que la anterior pero sólo hasta cierto punto. Asumiendo que tu organización tiene los recursos y el tiempo para ejecutar tal respuesta en todos los casos, lo cual no es usual, y asumiendo también que tu atacante se encuentra en tu jurisdicción o una jurisdicción colaboradora, esta medida sólo será efectiva contra los atacantes menos sofisticados. Tu criminal informático "profesional", del tipo que va tras organizaciones con los recursos y tiempo que estamos considerando, muy probablemente también sepa contra-medidas para no ser encontrado. Hablamos no sólo de medidas técnicas, como encadenamiento de proxies, sino que incluso pueden tambien hacerle una visita mafiosa al investigador técnico a cargo de tu investigación. En otras palabras, tu atacante cuenta con exactamente las mismas posibilidades que tú, sólo que desde el punto de vista criminal y sin restricciones legales.
En cuanto a las técnicas avanzadas de anonimidad que usan estos "criminales informáticos avanzados", pienso que no tienen cabida en este tipo de artículos. Por un lado, porque para el pentester profesional tienen muy poca utilidad. En nuestras pruebas de penetracion nosotros no sólo tratamos de no cambiar IP. Por el contrario, intentamos ser lo más identificables posible. Esta situación es, por supuesto, con la idea de proveer a la organización que nos contrata de un método efectivo para diferenciar un ataque verdadero de las actividades de nuestro servicio. Por el otro lado, tampoco tienen cabida pues este blog trata de ser un punto de referencia para los profesionales de seguridad informática y no una enciclopedia de ayuda a los pichones de criminales informáticos.
La conclusión de este segundo error común con respecto a los ataques de fuerza bruta es: no siempre podrás identificar físicamente a tu atacante. En consecuencia, no puedes confiar enteramente en esta medida tampoco.
El tercer y último "error" que escucho, aunque no muy frecuentemente debido al detalle técnico que requiere, de mis clientes es el siguiente: "para una organización incluso tan pequeña como la mía, es relativamente barato hacer que el espacio de búsqueda de mi atacante sea lo suficientemente grande como para que su ataque requiera tanto tiempo que se genere un cambio de interés en sus objetivos". Este argumento es 100% correcto. Por supuesto, usualmente lo escucho de clientes con sistemas de nombres de usuario de 8 caracteres y un password de 4 dígitos. Obviamente, este espacio de búsqueda es realmente muy pequeño para los estándares de recursos actuales, pero no dejan de tener razón en la teoría.
El problema es el siguiente: ¿Cuándo es un espacio de busqueda lo suficientemente grande sin hacer que mis usuarios tengan que recordar credenciales inhumanamente grandes? En este tema intervienen demasiados factores como para dar una respuesta adecuada para todos los casos. En consecuencia, yo siempre recomiendo hacer lo que equivale a un "análisis de stress" a la aplicación. Simplemente se ejecuta un ataque de fuerza bruta controlado sobre los procesos importantes incluyendo el de "login" y se estudian los resultados. Al final de este trabajo no sólo se tiene un estimado de cúal es la capacidad de atención real del sistema, sino que también se tiene un estimado de la velocidad con que un atacante puede conseguir la información que necesita para continuar su ataque. Es con esta información que se deben tomar decisiones sobre controles de mitigación en lugar de abusar de los "estandares" y/o "buenas practicas" y/o ISO-XXXX como se quieran llamar. Siempre hay que recordar: los estandares no dejan de ser una recomendación meramente teorica y que se quedan, en la gran mayoría de casos, muy cortos en la práctica.
El tema es tán sutíl que hasta colegas pentesters con cierta trayectoria reportan una tasa muy pequeña de velocidad de revisión en los ataques de fuerza bruta ejecutados por sus scripts. Una de las formas en que pentesters (y criminales) profesionales hacen scripts de gran desempeño es mediante el uso de multi-threading.
La clase InputThread se encarga de manejar la interacción con el usuario. Por el momento, escribir la palabra "quit" ocasiona la señal de parada para todos los threads y termina limpiamente. Cualquier otro input simplemente produce la impresión de estadisticas de velocidad, avance y status general del programa. Esta clase se podría mejorar para proveer otras acciones como aumento de threads, disminución de threads, etc. La clase RequestThread se encarga de hacer el trabajo bruto. En el loop "while 1" se ejecuta la tarea que se asigna en la cola request_queue y es necesario manejar todos los casos de respuesta. Para el caso de aplicaciones web, es necesario manejar una situación de éxito, una de fracaso y una de ninguna de las dos. En los comentarios del código hay un poco más de explicación.Finalmente, a pesar de que este artículo está enfocado a aplicaciones web, no hay ninguna razón por la que estas ideas no se puedan aplicar a otro tipo de aplicaciones. Por supuesto, habrán detalles teóricos que hay que sortear. Pero eso nunca es problema en la práctica. Si estos detalles no los han descubiertos los expertos en seguridad informática, de seguro lo habrán hecho los criminales informáticos. En ambos casos, lo único que hay que hacer es aprender de éstos y adaptar nuestros sistemas.
ataques de fuerza bruta
Implementando ataques de fuerza bruta.
"En teoria, la práctica y la teoría son iguales. En la práctica, no lo son."
Bruce Schneier.
Y en efecto, en algunos casos, la teoría y la práctica, llegan a ser muy distintas. Especificamente, por ejemplo, muchos clientes de mis pruebas de penetración consideran que los ataques descritos en artículos anteriores son imprácticos pues: "cualquier firewall/IPS es capaz de bloquear tu dirección IP apenas se detecte el ataque de fuerza bruta". Sin embargo, esta medida de mitigación funciona sólo en teoría y sólo si tu atacante es un novicio.
En la práctica, la medida de bloquear la dirección IP de tu atacante no sería tan mala de no ser por la gran cantidad deproxies libres y pagos a la disposición de cualquiera que pueda ejecutar una busqueda en google. Si además agregamos la gran cantidad de servicios baratos en "las nubes" (ya sea de amazon, o las creadas por los criminales informáticos en lo que se conoce como "botnets"), nos damos cuenta que en realidad nuestro atacante dispone de una cantidad casi inagotable de direcciones IP desde donde puede lanzar su ataque! En la práctica, lo que sucederá al bloquear la dirección IP de nuestro atacante "no-novicio" es que simplemente se utilizará otra dirección IP casi instantaneamente. Antes de detener a tu atacante efectivamente mediante el bloqueo de su cada vez nueva dirección IP, será tu firewall/IPS quien muy probablemente tendrá serios problemas de desempeño al intentar bloquear tantas direcciones IP particulares. Esta consecuencia es muy bien conocida por los que nos hemos enfrentado a estos tipos de ataque de forma rutinaria y conocemos los intringulis de la bestia de forma práctica, no sólo teórica.
Pero ¿qué tan fácil es implementar un ataque de cambio de dirección IP automático luego que el administrador novicio intente bloquear nuestra dirección IP? la respuesta es: trivial. Por ejemplo, si estamos trabajando contra un sistema web, con nuestro propio script en perl y usando la libreria LWP::UserAgent, agregar la funcionalidad mencionada requiere una sola linea de código:
DIGRESIÓN: Si no conocias la información anterior y estas pensando iniciar tu carrera criminal con las técnicas descritas aquí, te tengo malas noticias. Usar proxies de esta manera no provee la anonimidad que muchos probablemente piensan. Es muy fácil dejar pistas de tu identidad por muchos lados y si tu víctima tiene los recursos y tiempo para buscarte te van a atrapar. En mis trabajos de forénsica de redes hemos logrado atrapar a muchos atacantes novicios de forma muy rápida debido a errores muy tontos de su parte. Mi recomendación: olvida el mundo criminal y ejecuta este tipo de demostraciones de forma profesional, con permiso y ganando buen dinero por ello.
Esta digresión me lleva al siguiente punto equivocado que escucho con cierta frecuencia de mis clientes con un poco más de experiencia en estos temas. El argumento es mas o menos el siguiente: "en la presencia de un ataque de fuerza bruta, nosotros no bloqueamos ninguna dirección IP, nosotros bloqueamos directamente al individuo que ejecuta el ataque, lo buscamos con ayuda de las autoridades y lo visitamos a su casa". Esta política es mucho más efectiva que la anterior pero sólo hasta cierto punto. Asumiendo que tu organización tiene los recursos y el tiempo para ejecutar tal respuesta en todos los casos, lo cual no es usual, y asumiendo también que tu atacante se encuentra en tu jurisdicción o una jurisdicción colaboradora, esta medida sólo será efectiva contra los atacantes menos sofisticados. Tu criminal informático "profesional", del tipo que va tras organizaciones con los recursos y tiempo que estamos considerando, muy probablemente también sepa contra-medidas para no ser encontrado. Hablamos no sólo de medidas técnicas, como encadenamiento de proxies, sino que incluso pueden tambien hacerle una visita mafiosa al investigador técnico a cargo de tu investigación. En otras palabras, tu atacante cuenta con exactamente las mismas posibilidades que tú, sólo que desde el punto de vista criminal y sin restricciones legales.
En cuanto a las técnicas avanzadas de anonimidad que usan estos "criminales informáticos avanzados", pienso que no tienen cabida en este tipo de artículos. Por un lado, porque para el pentester profesional tienen muy poca utilidad. En nuestras pruebas de penetracion nosotros no sólo tratamos de no cambiar IP. Por el contrario, intentamos ser lo más identificables posible. Esta situación es, por supuesto, con la idea de proveer a la organización que nos contrata de un método efectivo para diferenciar un ataque verdadero de las actividades de nuestro servicio. Por el otro lado, tampoco tienen cabida pues este blog trata de ser un punto de referencia para los profesionales de seguridad informática y no una enciclopedia de ayuda a los pichones de criminales informáticos.
El problema es el siguiente: ¿Cuándo es un espacio de busqueda lo suficientemente grande sin hacer que mis usuarios tengan que recordar credenciales inhumanamente grandes? En este tema intervienen demasiados factores como para dar una respuesta adecuada para todos los casos. En consecuencia, yo siempre recomiendo hacer lo que equivale a un "análisis de stress" a la aplicación. Simplemente se ejecuta un ataque de fuerza bruta controlado sobre los procesos importantes incluyendo el de "login" y se estudian los resultados. Al final de este trabajo no sólo se tiene un estimado de cúal es la capacidad de atención real del sistema, sino que también se tiene un estimado de la velocidad con que un atacante puede conseguir la información que necesita para continuar su ataque. Es con esta información que se deben tomar decisiones sobre controles de mitigación en lugar de abusar de los "estandares" y/o "buenas practicas" y/o ISO-XXXX como se quieran llamar. Siempre hay que recordar: los estandares no dejan de ser una recomendación meramente teorica y que se quedan, en la gran mayoría de casos, muy cortos en la práctica.
El tema es tán sutíl que hasta colegas pentesters con cierta trayectoria reportan una tasa muy pequeña de velocidad de revisión en los ataques de fuerza bruta ejecutados por sus scripts. Una de las formas en que pentesters (y criminales) profesionales hacen scripts de gran desempeño es mediante el uso de multi-threading. Hace un tiempo y para aprender algo de python decidí hacer un esqueleto de muti-threading para utilizarlo con mis scripts. Al ser mi primer programa en python está un poco áspero en los bordes, pero lleva a cabo el trabajo con efectividad:
class RequestThread(threading.Thread):
def __init__(self, id, request_queue):
threading.Thread.__init__(self, name ="ResquestThread-%d" %(id,))
self.request_queue = request_queue
def run(self):
while 1:
pid = self.request_queue.get()
# trabajar con pid. Manejar errores de la transaccion web con cuidado.
# 3 posibles estados: exito->anotar exito y terminar, error->anotar error y terminar, else->reintentar.
class InputThread(threading.Thread):
def __init__(self, id, salir, tope, startp, startt):
threading.Thread.__init__(self, name ="InputThread-%d" %(id,))
self.salir = salir
self.tope = tope
self.startp = startp
self.startt = startt
def run(self):
while 1:
text = str(raw_input())
if text == "quit":
#salir
salir.put(1)
break
cur = tope.get()
print "pid: " + str(cur) + " Speed: " + str(abs(cur - self.startp)/abs(time.time() - self.startt)) + " thrs/sec",
if __name__ == "__main__":
pid = 0 ### Inicio del ataque de fuerza bruta. Esto puede ser la secuencia de usernames/passwords/etc.
N_compute_threads = 30 ## Numero de Threads concurrentes. 30 es un buen numero para iniciar las pruebas.
request_queue = Queue.Queue(N_compute_threads)
for i in range(N_compute_threads):
RequestThread(i,request_queue).start()
salir = Queue.Queue(1)
tope = Queue.Queue(1)
InputThread(1, salir, tope, pid, time.time()).start()
while salir.full() == False:
if request_queue.full() == False:
request_queue.put(pid)
try:
tope.get_nowait()
except:
pass
tope.put(pid)
pid = pid + 1
for i in range(N_compute_threads):
request_queue.put(None)
print "Shuting down " + str(pid)
while request_queue.empty() == False:
print "!",
time.sleep(1)
La clase InputThread se encarga de manejar la interacción con el usuario. Por el momento, escribir la palabra "quit" ocasiona la señal de parada para todos los threads y termina limpiamente. Cualquier otro input simplemente produce la impresión de estadisticas de velocidad, avance y status general del programa. Esta clase se podría mejorar para proveer otras acciones como aumento de threads, disminución de threads, etc. La clase RequestThread se encarga de hacer el trabajo bruto. En el loop "while 1" se ejecuta la tarea que se asigna en la cola request_queue y es necesario manejar todos los casos de respuesta. Para el caso de aplicaciones web, es necesario manejar una situación de éxito, una de fracaso y una de ninguna de las dos. En los comentarios del código hay un poco más de explicación.
Finalmente, a pesar de que este artículo está enfocado a aplicaciones web, no hay ninguna razón por la que estas ideas no se puedan aplicar a otro tipo de aplicaciones. Por supuesto, habrán detalles teóricos que hay que sortear. Pero eso nunca es problema en la práctica. Si estos detalles no los han descubiertos los expertos en seguridad informática, de seguro lo habrán hecho los criminales informáticos. En ambos casos, lo único que hay que hacer es aprender de éstos y adaptar nuestros sistemas.
Y en efecto, en algunos casos, la teoría y la práctica, llegan a ser muy distintas. Especificamente, por ejemplo, muchos clientes de mis pruebas de penetración consideran que los ataques descritos en artículos anteriores son imprácticos pues: "cualquier firewall/IPS es capaz de bloquear tu dirección IP apenas se detecte el ataque de fuerza bruta". Sin embargo, esta medida de mitigación funciona sólo en teoría y sólo si tu atacante es un novicio.
En la práctica, la medida de bloquear la dirección IP de tu atacante no sería tan mala de no ser por la gran cantidad deproxies libres y pagos a la disposición de cualquiera que pueda ejecutar una busqueda en google. Si además agregamos la gran cantidad de servicios baratos en "las nubes" (ya sea de amazon, o las creadas por los criminales informáticos en lo que se conoce como "botnets"), nos damos cuenta que en realidad nuestro atacante dispone de una cantidad casi inagotable de direcciones IP desde donde puede lanzar su ataque! En la práctica, lo que sucederá al bloquear la dirección IP de nuestro atacante "no-novicio" es que simplemente se utilizará otra dirección IP casi instantaneamente. Antes de detener a tu atacante efectivamente mediante el bloqueo de su cada vez nueva dirección IP, será tu firewall/IPS quien muy probablemente tendrá serios problemas de desempeño al intentar bloquear tantas direcciones IP particulares. Esta consecuencia es muy bien conocida por los que nos hemos enfrentado a estos tipos de ataque de forma rutinaria y conocemos los intringulis de la bestia de forma práctica, no sólo teórica.
Pero ¿qué tan fácil es implementar un ataque de cambio de dirección IP automático luego que el administrador novicio intente bloquear nuestra dirección IP? la respuesta es: trivial. Por ejemplo, si estamos trabajando contra un sistema web, con nuestro propio script en perl y usando la libreria LWP::UserAgent, agregar la funcionalidad mencionada requiere una sola linea de código:
$ENV{HTTP_PROXY} = 'http://direccion.ip.del.proxy:puerto_del_proxy';
Y por supuesto, es necesario codificar el manejo de error cuando la conexión falle y cambiar la variable anterior. Este método tiene la ventaja que cualquier otro script que esté atento a la variable de entorno, continuará funcionando transparentemente luego de hacer este cambio en vivo. En caso que el proxy requiera autenticación, las modificaciones necesarias son igualmente triviales. El último ingrediente necesario es una lista de proxies que como hemos visto, es de muy fácil acceso hasta para el principiante.
DIGRESIÓN: Si no conocias la información anterior y estas pensando iniciar tu carrera criminal con las técnicas descritas aquí, te tengo malas noticias. Usar proxies de esta manera no provee la anonimidad que muchos probablemente piensan. Es muy fácil dejar pistas de tu identidad por muchos lados y si tu víctima tiene los recursos y tiempo para buscarte te van a atrapar. En mis trabajos de forénsica de redes hemos logrado atrapar a muchos atacantes novicios de forma muy rápida debido a errores muy tontos de su parte. Mi recomendación: olvida el mundo criminal y ejecuta este tipo de demostraciones de forma profesional, con permiso y ganando buen dinero por ello.
Esta digresión me lleva al siguiente punto equivocado que escucho con cierta frecuencia de mis clientes con un poco más de experiencia en estos temas. El argumento es mas o menos el siguiente: "en la presencia de un ataque de fuerza bruta, nosotros no bloqueamos ninguna dirección IP, nosotros bloqueamos directamente al individuo que ejecuta el ataque, lo buscamos con ayuda de las autoridades y lo visitamos a su casa". Esta política es mucho más efectiva que la anterior pero sólo hasta cierto punto. Asumiendo que tu organización tiene los recursos y el tiempo para ejecutar tal respuesta en todos los casos, lo cual no es usual, y asumiendo también que tu atacante se encuentra en tu jurisdicción o una jurisdicción colaboradora, esta medida sólo será efectiva contra los atacantes menos sofisticados. Tu criminal informático "profesional", del tipo que va tras organizaciones con los recursos y tiempo que estamos considerando, muy probablemente también sepa contra-medidas para no ser encontrado. Hablamos no sólo de medidas técnicas, como encadenamiento de proxies, sino que incluso pueden tambien hacerle una visita mafiosa al investigador técnico a cargo de tu investigación. En otras palabras, tu atacante cuenta con exactamente las mismas posibilidades que tú, sólo que desde el punto de vista criminal y sin restricciones legales.
En cuanto a las técnicas avanzadas de anonimidad que usan estos "criminales informáticos avanzados", pienso que no tienen cabida en este tipo de artículos. Por un lado, porque para el pentester profesional tienen muy poca utilidad. En nuestras pruebas de penetracion nosotros no sólo tratamos de no cambiar IP. Por el contrario, intentamos ser lo más identificables posible. Esta situación es, por supuesto, con la idea de proveer a la organización que nos contrata de un método efectivo para diferenciar un ataque verdadero de las actividades de nuestro servicio. Por el otro lado, tampoco tienen cabida pues este blog trata de ser un punto de referencia para los profesionales de seguridad informática y no una enciclopedia de ayuda a los pichones de criminales informáticos.
La conclusión de este segundo error común con respecto a los ataques de fuerza bruta es: no siempre podrás identificar físicamente a tu atacante. En consecuencia, no puedes confiar enteramente en esta medida tampoco.
El tercer y último "error" que escucho, aunque no muy frecuentemente debido al detalle técnico que requiere, de mis clientes es el siguiente: "para una organización incluso tan pequeña como la mía, es relativamente barato hacer que el espacio de búsqueda de mi atacante sea lo suficientemente grande como para que su ataque requiera tanto tiempo que se genere un cambio de interés en sus objetivos". Este argumento es 100% correcto. Por supuesto, usualmente lo escucho de clientes con sistemas de nombres de usuario de 8 caracteres y un password de 4 dígitos. Obviamente, este espacio de búsqueda es realmente muy pequeño para los estándares de recursos actuales, pero no dejan de tener razón en la teoría.
El problema es el siguiente: ¿Cuándo es un espacio de busqueda lo suficientemente grande sin hacer que mis usuarios tengan que recordar credenciales inhumanamente grandes? En este tema intervienen demasiados factores como para dar una respuesta adecuada para todos los casos. En consecuencia, yo siempre recomiendo hacer lo que equivale a un "análisis de stress" a la aplicación. Simplemente se ejecuta un ataque de fuerza bruta controlado sobre los procesos importantes incluyendo el de "login" y se estudian los resultados. Al final de este trabajo no sólo se tiene un estimado de cúal es la capacidad de atención real del sistema, sino que también se tiene un estimado de la velocidad con que un atacante puede conseguir la información que necesita para continuar su ataque. Es con esta información que se deben tomar decisiones sobre controles de mitigación en lugar de abusar de los "estandares" y/o "buenas practicas" y/o ISO-XXXX como se quieran llamar. Siempre hay que recordar: los estandares no dejan de ser una recomendación meramente teorica y que se quedan, en la gran mayoría de casos, muy cortos en la práctica.
El tema es tán sutíl que hasta colegas pentesters con cierta trayectoria reportan una tasa muy pequeña de velocidad de revisión en los ataques de fuerza bruta ejecutados por sus scripts. Una de las formas en que pentesters (y criminales) profesionales hacen scripts de gran desempeño es mediante el uso de multi-threading. Hace un tiempo y para aprender algo de python decidí hacer un esqueleto de muti-threading para utilizarlo con mis scripts. Al ser mi primer programa en python está un poco áspero en los bordes, pero lleva a cabo el trabajo con efectividad:def __init__(self, id, request_queue):
threading.Thread.__init__(self, name ="ResquestThread-%d" %(id,))
self.request_queue = request_queue
def run(self):
while 1:
pid = self.request_queue.get()
# trabajar con pid. Manejar errores de la transaccion web con cuidado.
# 3 posibles estados: exito->anotar exito y terminar, error->anotar error y terminar, else->reintentar.
class InputThread(threading.Thread):
def __init__(self, id, salir, tope, startp, startt):
threading.Thread.__init__(self, name ="InputThread-%d" %(id,))
self.salir = salir
self.tope = tope
self.startp = startp
self.startt = startt
def run(self):
while 1:
text = str(raw_input())
if text == "quit":
#salir
salir.put(1)
break
cur = tope.get()
print "pid: " + str(cur) + " Speed: " + str(abs(cur - self.startp)/abs(time.time() - self.startt)) + " thrs/sec",
if __name__ == "__main__":
pid = 0 ### Inicio del ataque de fuerza bruta. Esto puede ser la secuencia de usernames/passwords/etc.
N_compute_threads = 30 ## Numero de Threads concurrentes. 30 es un buen numero para iniciar las pruebas.
request_queue = Queue.Queue(N_compute_threads)
for i in range(N_compute_threads):
RequestThread(i,request_queue).start()
salir = Queue.Queue(1)
tope = Queue.Queue(1)
InputThread(1, salir, tope, pid, time.time()).start()
while salir.full() == False:
if request_queue.full() == False:
request_queue.put(pid)
try:
tope.get_nowait()
except:
pass
tope.put(pid)
pid = pid + 1
for i in range(N_compute_threads):
request_queue.put(None)
print "Shuting down " + str(pid)
while request_queue.empty() == False:
print "!",
time.sleep(1)
La clase InputThread se encarga de manejar la interacción con el usuario. Por el momento, escribir la palabra "quit" ocasiona la señal de parada para todos los threads y termina limpiamente. Cualquier otro input simplemente produce la impresión de estadisticas de velocidad, avance y status general del programa. Esta clase se podría mejorar para proveer otras acciones como aumento de threads, disminución de threads, etc. La clase RequestThread se encarga de hacer el trabajo bruto. En el loop "while 1" se ejecuta la tarea que se asigna en la cola request_queue y es necesario manejar todos los casos de respuesta. Para el caso de aplicaciones web, es necesario manejar una situación de éxito, una de fracaso y una de ninguna de las dos. En los comentarios del código hay un poco más de explicación.Finalmente, a pesar de que este artículo está enfocado a aplicaciones web, no hay ninguna razón por la que estas ideas no se puedan aplicar a otro tipo de aplicaciones. Por supuesto, habrán detalles teóricos que hay que sortear. Pero eso nunca es problema en la práctica. Si estos detalles no los han descubiertos los expertos en seguridad informática, de seguro lo habrán hecho los criminales informáticos. En ambos casos, lo único que hay que hacer es aprender de éstos y adaptar nuestros sistemas.
¿Qué es un Hacker?
Pero en realidad, ¿Qué es un Hacker?
Si existiera un record Guiness para el término menos comprendido y peor usado de todas las culturas en toda la historia de la humanidad, en mino tan humilde opinión, la palabra "hacker" se llevaría todos los premios y reconocimientos.
Sólo por completitud y con la esperanza de que algún día la comunidad "no-hacker" logre entenderlo, repito aquí la definición más aceptada entre losverdaderos conocedores de la materia. El RFC 1392, "Glosario de usuarios de Internet", define claramente el término "Hacker":
hacker
A person who delights in having an intimate understanding
of the internal workings of a system, computers and computer
networks in particular. The term is often misused in a
pejorative context, where "cracker" would be the correct
term. See also: cracker.
Como tarea al lector no-técnico, aquí se puede averiguar lo que es un RFC y la razón por la cual, con especial énfasis en este caso en particular, debe considerarse como una fuente autoritativa. Ahora bien, lejos de golpear al hombre caido, abrumandolo con más y más términos rimbombantes como "phisher", "phreaker", "pharmer", "script-kiddie", script-junkie", "lamer", etc, que muy poco aportan a toda esta discusión, el resto de este artículo trato de señalar los errores y posibles razones por las cuales históricamente se ha abusado de este término de forma tan inclemente.
Como siempre, el post/artículo que lo inicio todo, afirma lo siguiente:
"...
Un hacker es un experto informático especialista
en entrar en bases de datos ajenas sin autorización alguna
..."
Armados con el nuevo conocimiento adquirido del RFC anterior, se puede ver que esta afirmación es doblemente incorrecta. Por un lado, en el contexto peyorativo, el término correcto debería ser "cracker". Sin embargo, aún haciendo esa corrección, se cae en el segundo error de pensar que un "cracker", por definición, es algún tipo de experto informático, cualidad adecuadamente atribuida, por definición, a un "hacker".
La raíz primordial de la confusión es un básico error de lógica. A pesar de que algunos "crackers" puedan poseer algún tipo de conocimiento que les permita compararse con los "hackers", no los hace miembros de la misma casta. De hecho, en la gran mayoría de casos de "crackers" conocidos, se ha evidenciado su mediocridad y pobre entendimiento de los conocimientos técnicos de los sistemas y redes de computadoras. De aquí que el término correcto en el contexto peyorativo sea "cracker" y no "hacker". Al final, una persona con poco conocimiento, poco entendimiento y gran deseo de importancia lo único que le queda es tratar de llamar la atención para compensar su deficiencia. La forma más simple es utilizar el conocimiento de los verdaderos "hackers" de formas muy "escandalosas" (usualmente ilegales) y esperar que los medios de comunicación inflen su tan golpeado ego. Su poco entendimiento, y mediocres técnicas los hacen terminar en manos de las autoridades y pagar por sus fechorías más temprano que tarde. Pero esto no importa, pues los minutos de "gran fama", para la mente del "cracker", muy bien los valen. Aún así, "crackers reformados" continuan ordeñando el conocimiento que se han robado despues de pagar sus condenas, contribuyendo a que se perpetúe cada vez más el incorrecto uso del término "hacker".
El artículo original continúa de la siguiente manera:
"... Generalmente trabajan con seudónimos y compiten entre ellos mismos por vulnerar sistemas de seguridad. Existen varias clasificaciones, pero la más utilizada actualmente es la de hackers sombrero blanco y negro ..."
Con este comentario acabamos de avanzar 10 años en un abrir y cerrar de ojos. La clasificación de hacker y cracker ha quedado muy atras para dar paso a un animal completamente distinto, el "hacker sombrero negro". El nacimiento de este término es nada mas entendible. En los párrafos anteriores dejamos establecido que la capacidad y conocimiento técnico es completamente ortogonal al hecho de ser o no un "cracker". Sin embargo, en un mundo donde la Internet ha permeado la gran mayoría de aspectos de nuestras vidas directa o indirectamente, se abre una posibilidad para la persona de pocos principios morales y éticos que en efecto posee la habilidad técnica de un "hacker". Es un mundo en donde nos vemos obligados a criminalizar las acciones abusivas que permiten ganancias inmorales a las personas que hacen uso poco ético de su conocimiento (Leyes sobre delitos informáticos). A diferencia de una Internet académica en donde habitaban los "hackers", en el mundo de hoy, vivimos una Internet donde se mueven grandes cantidades de dinero a velocidades realmente sorprendentes. Hemos llegado a un mundo en donde el "hacking" se transformó en una ocupación por demás rentable, ya sea por medio de actividades legales o ilegales, en donde son más rentables las últimas que las anteriores. Bienvenidos al mundo de los "criminales informáticos".
Continuando con el artículo original:
"... Hacker sombrero blanco (también conocido como hacker ético) Infiltran las redes para mostrar el grado de vulnerabilidad que tienen. Sus motivaciones son inocuas. Generalmente dejan mensajes advirtiendo sobre lo desprotegido que puede estar el sistema. ..."
Suspiro. Sin ánimos confrontacionales, pero con la autoridad que me dan más de una década en el mundo de la seguridad informática, multiples certificaciones internacionales, y miembro élite de los muy pocos en el mundo en haberlas alcanzado, tengo que oponerme fervientemente a la anterior definición. El punto más importante para la definición del "hacker sombrero blanco" reposa en hacer lo que hacen los "hackers" pero con permiso expreso y legal de los dueños del sistema que se infiltra. Lamentablemente no hay nada ético en vulnerar un sistema sin el permiso de sus dueños. Es como si llegaran a tu casa, abrieran la puerta, se durmieran en tu cama, y te dejen una nota alertandote que laves tus sábanas pues cualquiera te las puede dejar sucias. Por más inocua que pueda ser la motivación, estas acciones no dejan de ser un acto inmoral y a la luz de una ley de delitos informáticos, son además unos actos ilegales y criminales.
La definición incorrecta, sin embargo, es convenientemente utilizada por criminales tratando de presentar una imagen "reformada" que buscan justificación para continuar con su conducta delictiva. A pesar de que la anterior afirmación parezca argumentativa, invito a mis lectores a analizar la ley de delitos informáticos del mismo linkdel artículo original. El lector atento notará inmediatamente que la "motivación" dentro de la mencionada ley no juega ningún papel. Si obtienes acceso a un sistema sin autorización, por la motivación que sea, estas cometiendo un delito y en consecuencia tu única clasificación es de "criminal", o en todo caso, "criminal informático", nada de hacker, nada de blanco y nada de negro. Ni siquiera un sombrero, a lo sumo un traje anaranjado.
Finalmente llegamos a la posiblemente única afirmación mas o menos precisa del artículo:
"... Hacker sombrero negro: Son los expertos informáticos que intentan causar –y en algunos casos lo logran- daños a los usuarios y administradores del sistema. También son conocidos como ciberpiratas. Pueden incurrir en la extorsión y en actos criminales. Literalmente “roban” información y hacen uso de esta a su conveniencia. ..."
Las motivaciones de nuevo, pueden ser muchas más de las que se mencionan en el párrafo anterior. Sin embargo, el punto clave, de nuevo, es que todas estas acciones carecen de laautorización expresa de los dueños del sistema que se vulnera. Cabe destacar que algunos "criminales confesados o reformados" algunas veces intentan pasar aunque sea por "hackers de sombrero negro" en su afán de fama. Vale entonces la pena hacer una distinción adicional. Como habíamos dicho anteriormente, el hacker de sombrero negro, por ser hacker, posee un profundo conocimiento técnico sobre la tecnología que vulnera. En consecuencia, resulta muy difícil creer que los conocimientos del criminal atrapado y condenado sean tan sofisticados que ni siquiera pudieron evitar que lo atraparan. A menos, por supuesto, que ademas de criminal, haya tenido algún deseo morboso de visitar una celda por la parte de adentro y por un periodo alargado. En consecuencia, tampoco los atrapados y condenados, pueden recibir la "condecoración" de "hacker" pues sus conocimientos no han demostrado ser lo suficientemente "élite". En efecto, los verdaderos "hackers" son "invisibles". Ahora bien, la única esperanza de reivindicación para un criminal convicto y confeso es ponerse a estudiar verdaderamente y conocer en profundidad las cosas. Esta capacidad no esta prohibida para nadie, incluso para los criminales menos sofisticados. Sin embargo, requiere de mucho esfuerzo y dedicación, requerimientos que los "media-whores" carecen, pues todo su tiempo lo dedican a llamar la atención.
Es aquí donde radica toda la confusión. Los medios de comunicación se enteran de un evento criminal o "escandaloso" y buscan información. Lamentablemente, nunca hay un "verdadero" hacker disponible pues ellos están "siempre ocupados". Tristemente, los medios de comunicación caen en manos de los charlatanes, embusteros, media-whores, entre otros, cuya desinformación contribuye aún más a la mala utilización del término y obteniendo una pésima fama para los "hackers".
Para finalizar este agrío y áspero "rant", no podemos dejar de mencionar a la piedra en el zapato. En este caso, los sucesos de las vulneraciones de las cuentas de twitter de personalidades importantes Venezolanas por parte de un grupo de individuos que se hacen llamar N33. Como buenos "media-whores", y ávidos de atención, lograron una entrevista aquí. Tal como hemos demostrado en los parrafos anteriores, calificar a estos individuos como "hackers" es un error por demás peligroso. De acuerdo a toda la discusión anterior, el termino indiscutiblemente correcto es "criminal informático". Sin embargo, ¿podría tratarse de un "hacker sombrero negro"? Es decir, ¿Saben algo realmente de lo que están haciendo? o simplemente ¿utilizan las herramientas enlatadas fácilmente accesibles en Internet para cometer actos ilegales? Lamentablemente, no se tiene suficiente información para responder estas preguntas. Sin embargo, vulnerar cuentas de correo electronico o cuentas de twitter no requiere de prácticamente ningún conocimiento en informática o en casi nada en realidad. Lo único que se requiere es saber buscar en Internet o ser lo suficientemente "hala mecate" para que algún "hacker sombrero negro" te diga o "proporcione" las herramientas que necesitas para cometer tus fechorías. Así de simple y poco interesante es el mundo de los "criminalillos" informáticos. Lastima que ese tipo de "noticias" no sean tan interesantes para los medios de comunicación.
Por el bien de las generaciones futuras y como lo diría un verdadero hacker hace varios años atras, Ken Thompson, en su discurso donde recibió el premio Turing:
"...I would like to criticize the press in its handling of the "hackers", the 414 gang, the Dalton gang, etc. The acts performed by these kids are vandalism at best and probably trespass and theft at the worst. It is only the inadecuacy of the criminal code that saves the hackers from very serious prosecution..."
Casi 30 años despues, señor Thompson, lastimosamente, se continúa un manejo inadecuado por parte de la prensa, y a pesar de nuevas leyes y castigos, las fuerzas policiales de la gran mayoría de paises poseen capacidades técnicas tan limitadas que con mucha dificultad logran aprehender a los más mediocres y menos sofisticados de los criminales informáticos de hoy en día.
Suscribirse a:
Comentarios (Atom)





