Mostrando entradas con la etiqueta fundamentos. Mostrar todas las entradas
Mostrando entradas con la etiqueta fundamentos. Mostrar todas las entradas

lunes, 1 de octubre de 2012

Y siguiendo con el vídeo anterior y con la temática de ocultación

Las dos últimas clases las hemos dedicado a ocultación, aspecto que también está vinculado al vídeo de la entrada anterior. Por cierto, para evitar lo que acontece en dicho vídeo, también se puede optar por utilizar un enlace remitido por David, S.S..: generador de perfiles de personas completamente falsos con datos completamente válidos (empresas, direcciones, países, números de VISA, números de la seguridad social, etc., etc.). En algunas ocasiones, no está mal disponer de unos cuantos perfiles.

David, S.S. me remite también un enlace que complementa perfectamente uno de los temas tratados en estas clases. En concreto, es una entrada que compara las ventajas y desventajas de las redes Tor, I2P y FreeNet. Notad la diferencia sustancial en cuanto a su esquema de funcionamiento, inproxy u outproxy.

jueves, 27 de septiembre de 2012

Owning bad guys {and mafia} using javascript botnets en RootedCON 2012

Esta conferencia de Chema y Manu en la Rooted12 es totalmente recomendable y muy didáctica en el contexto de la clase de ocultación de hoy.

Owning bad guys {and mafia} using javascript botnets en RootedCON 2012

[Fuente.: S. Alonso, gracias]

miércoles, 26 de mayo de 2010

Md5 bruteforce benchmark

Teniendo constancia de que a alguno de vosotros le gusta el bechmarking en ataques de fuerza bruta, y siendo consciente de que posiblemente vuestras pruebas no las dejaréis plasmadas en un report, aquí os dejo una referencia de md5 bruteforce bechmarking.

Bueno, parece ser que la entrada ha surtido efecto, y pronto dispondremos de un nuevo report de benchmarking de herramientas en el cracking de md5. Será interesante ver la comparativa.

lunes, 22 de marzo de 2010

SQL injection de última generación

[Gracias Alejo, muy bueno, era lo que necesitaba para alegrar un poco el día]

Por favor, si alguien se llama drop database que no se matricule en PSI.


miércoles, 10 de junio de 2009

Bitácora de PSI.: S y familia

En el capítulo anterior hemos visto los fundamentos y hoy aprenderemos "jugando" con algunas de las herramientas típicas de nuestros entornos de trabajo.

Empezaremos por el GnuPG. De su página principal “GnuPG is the GNU project's complete and free implementation of the OpenPGP standard as defined by RFC4880 . GnuPG allows to encrypt and sign your data and communication, features a versatile key managment system as well as access modules for all kind of public key directories. GnuPG, also known as GPG, is a command line tool with features for easy integration with other applications. A wealth of frontend applications and libraries are available. Version 2 of GnuPG also provides support for S/MIME
Desde un punto de vista práctico, vemos el funcionamiento del GnuPG en las tareas de cifrar un fichero, tanto de forma simétrica como asimétrica, el proceso de cifrado para envío, tanto con firma como sin ella y, finalmente, el proceso de descifrado. Se hace referencia en todo momento a los aspectos vistos en la clase anterior de fundamentos pero, en este caso, sobre una de nuestras típicas herramientas. Para una completa información GnuPG.

También analizamos el funcionamiento de otro de nuestros clásicos, SSH. De su página principal “OpenSSH is a FREE version of the SSH connectivity tools that technical users of the Internet rely on. Users of telnet, rlogin, and ftp may not realize that their password is transmitted across the Internet unencrypted, but it is. OpenSSH encrypts all traffic (including passwords) to effectively eliminate eavesdropping, connection hijacking, and other attacks. Additionally, OpenSSH provides secure tunneling capabilities and several authentication methods, and supports all SSH protocol versions”.

Vemos las principales posibilidades de openssh, y que hace otras muchas cosas además de un ssh a un host, introducir el user y password y tener un shell remoto sobre una conexión “segura”. En primer lugar se analiza el conjunto de utilidades del openssh. De su página principal “The OpenSSH suite replaces rlogin and telnet with the ssh program, rcp with scp, and ftp with sftp. Also included is sshd (the server side of the package), and the other utilities like ssh-add, ssh-agent, ssh-keysign, ssh-keyscan, ssh-keygen and sftp-server”.

Recuerda que el 22 es el número preferido del SSH, que ningún puerto está casado con nadie, y casi todo bajo este cielo abrasador es cambiable. Recuerda también que podrás incluir políticas de filtrado de este y otros servicios, tanto a nivel de firewall, como de wrappers.

SSH hace tanto autenticación del servidor como de usuarios, proporciona un cierto nivel de privacidad en las comunicaciones mediante la típica aproximación híbrida (asimétrico para intercambio de clave de sesión y simétrico para cifrado) y permite la redirección de canales TCP-IP mediante túneles cifrados. También nos proporciona un servicio de gestión de claves para su centralización.

Bueno, me conectaré a un servidor SSH para ver lo que pasa.

batman@dead: $ ssh 192.111.6.66
The authenticity of host '192.111.6.66 (192.111.6.66)' can't be established.
RSA key fingerprint is f1:36:1c:08:92:54:f8:0a:9d:bd:19:65:d5:38:c6:62.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.111.6.66' (RSA) to the list of known hosts.
batman@192.111.6.66's password:
[…]
batman@alive: $


Bueno, que coñazo estos informáticos, siempre haciendo preguntas raras. Ante la duda, yes. ¿Qué está pasando en ese momento de la conexión?. De forma resumida, el host cliente no dispone de la clave pública del host servidor para poder mantener relaciones y, por lo tanto, el servidor le remite su clave pública. En este punto es el cliente, nosotros, los que deberemos indicar si aceptamos o no la clave pública de dicho servidor, identificado por su IP, su clave pública y la correspondiente huella digital. Es aconsejable verificar este tipo de claves antes de aceptarlas dado que, en futuras conexiones, será utilizada de forma automática. Al igual que vimos en el tema dedicado al “sniffing” y las posibilidades de ataque a conexiones seguras https, también es posible inyectar claves para comprometer la confidencialidad de las conexiones seguras SSH.

La aceptación de la clave pública del servidor hará que se añada en el fichero $HOME/.ssh/known_hosts de la máquina cliente la clave pública del host servidor que, por cierto, se encuentra en /etc/ssh/ssh_host_[rsadsa ]_key.pub.

Si quieres "cargarte" alguna clave pública anteriormente aceptada puedes borrar la correspondiente entrada del fichero known_hosts. También podrás utilizar el fichero /etc/ssh/ssh_known_hosts para mantener de forma manual las claves públicas de los hosts confiables.

En la conexión realizada también vemos que el método de autenticación a nivel de usuario es el típico de user-password que esté definido en el servidor.

Los ficheros que te permitirán configurar distintas opciones SSH los encontrarás en /etc/ssh/ssh_config (cliente) y /etc/ssh/sshd_config (servidor). Un vistazo a dichos ficheros te permitirá identificar rápidamente las posibles opciones disponibles. No dejes para mañana, el fichero que puedas mirar hoy.

En SSH también podrás utilizar un esquema asimétrico de autenticación. En este caso tendrás que crear a cada usuario sus correspondientes claves públicas y privadas, tal y como vimos en la clase anterior de fundamentos.

$ ssh-keygen –t rsa
batman@dead: $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/batman/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/batman/.ssh/id_rsa.
Your public key has been saved in /home/batman/.ssh/id_rsa.pub.
The key fingerprint is:
31:04:ac:ab:63:13:c0:f4:a5:0b:59:1a:77:a8:52:26
batman@dead

Podemos utilizar la clave pública de los usuarios para el proceso de autenticación contra el servidor. Para ello deberemos añadir al fichero $HOME/.ssh/authorized_keys2 del servidor las claves públicas de los usuarios autorizados, disponibles en los ficheros $HOME/.ssh/id_[dsarsa].pub del cliente.

Finalmente analizamos las posibilidades de tunelizar con SSH servicios no seguros. Para ello podemos hacer forwarding de tráfico de un puerto local a una remoto o de uno remoto a uno local. Por ejemplo, para tunelizar una conexión mediante forward local contra un servidor web no seguro.:
# ssh –L 666:ssh-www.host:80 apache@ssh-www.host

Si abres tu navegador en la máquina local y te conectas a http://localhost:666/ te "forwardeara" el tráfico sobre un túnel SSH contra el puerto 80 del host ssh-www.host. Existen otras muchas posibilidades en el uso de túneles SSH. Para más información openSSH.
Señalar también la existencia de sshfs para exportar sistemas de ficheros de forma segura.

# sshfs batman@alive:/batmovil-remoto /batmovil-local
Para concluir y no dejar fuera el más típico, tópico, …, de nuestro minimundo de la seguridad, se analiza el handshake del SSL-TLS (Secure Socket Layer-Transpor Layer Security). Incluir información básica sobre esta pareja sería redundar la mucha información disponible en la red. Muy recomendable la entrada "The First Few Milliseconds of an HTTPS Connection", que desglosa a todo detalle lo que acontece en una conexión HTTPS (gracias Nacho).
En el último cuatrimestre hemos visto distintos temas relacionados con la PSI. Todo este material constituye una base más que suficiente para evolucionar en cualquiera de los múltiples campos de esta disciplina. Dedicar muchas horas a “cacharrear” con nuestros equipos es la mejor herramienta para adquirir todos aquellos conocimientos, tanto teóricos como prácticos, necesarios para nuestra práctica profesional. Y recuerda que el demonio nunca duerme.
Hay otros muchos temas de interés que, por las limitaciones espacio-temporales de la asignatura, resulta inviable plantear su inclusión, por lo que las nuevas posibilidades que se te abren son muchas y variadas (mecanismos y herramientas de control de acceso, seguridad perimetral a distintos niveles, detección de intrusiones, honeys, WIFI y seguridad, programación segura, auditorías de seguridad, análisis forense, metodologías de seguridad, etc., etc.)
Y recuerda que en muchas ocasiones lo más sencillo puede ser la mejor opción, especialmente cuando no se dispone de personal técnico o, el disponible, no está lo suficientemente cualificado (o está total o parcialmente quemado).

martes, 9 de junio de 2009

Bitácora de PSI.: Protocolos con [s]. Fundamentos

Aunque a este tema se le podría llamar fundamentos de criptografía, el fin de gran parte de lo que hacemos está en su aplicación a distintos ámbitos de la profesión. En gran medida el aplicativo de estos fundamentos coge forma en los llamados protocolos seguros.

Iniciamos el día con la típica y tópica clasificación de criptosistemas.:

- Clásicos vs. modernos. Recuerda que tarde o temprano todo modernillo se acaba pasando al bando de los clásicos.
- Bloque vs. flujo. ¿Cómo lo quieres?, “a lo bruto o poco a poco”
- Secreta (Simétricos) vs. Pública (Asimétricos). A la una, o las dos, ¡vendido!

Simétricos. Recuerdo el DES, con su gran clave de 56 bits, su elegancia y seguridad. También su muerte y paso al bando de los clásicos. Si, la longitud sí que importa, al menos en criptografía. Pero el hueco dejado por alguien siempre es cubierto por otros; 3DES, blowfish, IDEA (con sus 128 bits), o la estandarización del flexible Rijndael en la forma del AES (bloque de 128 bits y claves de 128, 192 y 256 bits). Estos tienen una clave más larga. Sobra decir que en los criptosistemas simétricos se cifra con una clave, y se utiliza la misma clave para el descifrado. En muchas de las cosas que hacemos vemos criptosistemas simétricos, por ejemplo.:

$ scp –c blowfish /etc/passwd psi@10.10.106.66:passwd

Es fundamental en seguridad el uso de la (s). Póntela (en el cliente), pónsela (en el servidor).

No se debe pensar en la familia de los md5, sha[2, 3], RIPE128-160 et al. como algoritmos criptográficos, son funciones resumen o hash. Otra cosa muy distinta es su directa aplicación en nuestros protocolos seguros, autenticación, etc. En muchos de nuestros linux se utiliza una función hash como sistema básico de autenticación. ¿Cómo funciona?. Si mi password de superusuario es “acnun1erasu2solocotorp3on4soruges;” (un poco largo este password!), la aplicación de la función hash a cualquier password de “cualquier longitud”, me proporcionará una huella digital. Cuando haga un proceso de autenticación, si la huella resultante del password tecleado coincide con la del usuario, la autenticación será correcta. Y por cierto, no todas las funciones hash son igual de seguras, como es de esperar (ciclo de vida de los algoritmos hash).

Sobre funciones hash tal vez la noticia más relevante en estos momentos sea la competición de algoritmos hash del NIST que, en la forma de SHA-3, nos proporcionará una nueva función para integrar en nuestros aplicativos y protocolos. En 2011 estamos llegando al final de la competición y únicamente quedan 5 funciones en concurso.

Cambiando de bando, cada entidad en un criptosistema asimétrico utiliza dos claves inversas, aunque podría disponer varias, una pública y otra privada. Se cifra con la pública y se descifra con la privada y viceversa. Si quiero enviar algo cifrado necesitaré la clave pública del intercepto o destinatario y cifraré el mensaje con su clave pública, para que dicho receptor la pueda descifrar con su privada. Nota que el nombre de las claves hace referencia a su grado de intimidad. La pública se va con cualquiera y la privada es muy reservada. Como ejemplos de asimétricos, Diffie-Hellman, RSA, DSA, ElGamal o CEE (Criptografía de Curvas Elípticas).

El primero que con la siguiente clave pública RSA de ssh obtenga la privada tendrá una MH en la asignatura. Recuerda que hay otras muchas asignaturas que estudiar y estamos en época de exámenes.

ssh-rsa AAAAB3NzaC1yc2GABAABIwAAAQEAsL2ZngJ0aPrtsrHrJmAAk52SnN0navtOBcDznwTHgyNE+QMVXCux7PlwhDO/fKaziyJJPoipLlGlxv8MGY3vg3YfKqdjoTedJOvqH5egk3D5+LDTd1xQ8UlE31IAlgsFd8tw13pt1axQ5WXSonbZfo5RKv+OrZ8AUSQHcddiuWRvSO3Er6Y2IUYV0hteX6t+NPM9D0gXxy4KBtmehY/xPkwZgaX1AwEQmc/Va0yRMDzlvHqPQSfYhS3FoD7h451FldglNqVYEvo0NkIGOfC14g6+v+tYEBwa01RVwBTFPkCaCUfr0oK+klgGISiqui7IMAXn0ZZP4CyAUj+bYbiEnQ== psi@dead

Aquí os dejo otra, pero esta de verdad

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAkyrFhgJeTOp1OpxgjYoeXv2y9NpTFepLP3HH9eZ4YMjBFiz4mCai4HecLBts6Z1MrViA/x/m7PIC4h7DLpdqi5ifrugaWBPXElD8J8U51JNrxBNB5i3nxWwXYbw/o8uVNItYwftEgxmphSHIn86hbvj3/BWZP59HtS9sFbwB4SxeMiSPuSUmPtC3DB+8/+X/62MxzFldTTV0aGvNaGsjREq3LoDDnBmWY3vfPIDsf8tLCNngdaIFmKWhW5QdEbyZJK1GH9Kb2aFI7w0iohPr4l0BWk+qIEmaM3GvNXEQ62SZ/9J5hbUmQxqS0i6JqysmZZZeeBEJGniibs8mBcjhuQ== psi@dead

También hemos hablado de cifradores de bloque, o a lo bruto, en los que se aplica una función a cada bloque a cifrar normalmente un número de ciclos. Y los cifradores de flujo, poquito a poquito, a nivel de bit o de carácter. Entre los cifradores por bloque, RC2, IDEA, blowfish, RC5, AES, RC6. Entre los cifradores de flujo, el RC4.

Pero bueno, en un planeta plagado de soluciones híbridas, en seguridad no íbamos a ser menos. La mayoría de nuestros protocolos seguros tienen el mismo comportamiento. Sistema asimétrico para intercambio de clave de sesión, y comunicaciones haciendo uso de la clave de sesión mediante un sistema simétrico. Por citar algunos, el GPG, SSH y SSL siguen este comportamiento.

En este punto hemos analizado el sistema de cifrado y descifrado utilizado en RSA y las características que le aportan una cierta fortaleza. Se estudian los teoremas y demostraciones que proporcionan una cierta fortaleza al RSA, que no se incluyen en esta entrada al estar disponibles en varias fuentes. Para más información al respecto recomiendo el capítulo 14 del “Libro Electrónico de Seguridad Informática y Criptografía” del Prof. Ramió Aguirre.

Finalmente hemos analizado el proceso de firma digital y el uso de autoridades certificadoras. De forma resumida, sobre el mensaje a firmar se aplica una función hash, que nos proporciona su huella digital. La huella digital se cifra con la clave privada del remitente. Se envía el mensaje y la huella cifrada. El receptor descifra el hash con la clave pública del emisor. Aplica la función hash al mensaje recibido, que podrá estar o no cifrado y, si el hash remitido y obtenido son iguales, podemos presuponer que todo está bien (que el mensaje es íntegro y que la identidad del remitente es la asociada a la pública utilizada). En el caso de que el mensaje esté cifrado habrá que descifrarlo, con nuestra privada si es un sistema asimétrico puro, o con la clave de sesión en el caso de híbridos. Pero, y las colisiones. En los últimos años mucho se ha escrito sobre que se haya escrito mucho de colisiones. Las colisiones existen en las funciones hash desde su aparición. Es imposible meter un elefante en un seiscientos, al menos sin trocearlo. La teoría de la información no nos engaña y, en toda función hash, por mucho que nos rompamos la cabeza, siempre existirán colisiones. Otra cosa es la posibilidad de poder encontrar colisiones en un tiempo computacional aceptable y su posible uso en romper la seguridad de nuestros sistemas. En este sentido, hemos asistido a la generación de certificados con distinta clave pública con colisión de hash, a colisiones en las elecciones USA, a colisiones en las declaraciones de la renta, a colisiones de tráfico, etc., etc. Hemos visto colisiones, y seguiremos viendo colisiones, nos guste o no.

Propuesta de ejercicio. Coge el ls de tu sistema y genera su hash md5. ¿Podrías encontrar un contenido que produzca una colisión con el ls y, por lo tanto, genere el mismo hash o huella?. ¿Podrías encontrar un binario “usable” que colisione con tu ls?.

Por otra parte, para garantizar que una clave pública pertenece a una determinada entidad, se utilizan certificados y autoridades certificadoras. En pocas palabras, un certificado tiene una cuanta información sobre la entidad o bicho a certificar, además de su correspondiente clave pública. El certificado estará firmado por una Autoridad Certificadora (una función hash aplicada sobre el certificado genera una huella digital que será cifrada con la clave privada de la Autoridad Certificadora). Obviamente, únicamente la AC dispondrá de la clave privada para poder cifrarla. Para verificar el certificado se aplica el hash al certificado y se descifra la huella mediante la clave pública de la AC. Si la huella obtenida y la descifrada son iguales, el certificado será verificado correctamente. Y, ¿dónde tengo la clave pública del la AC?. En gran parte del software que tienes instalado tienes los certificados de las AC, incluidas sus claves públicas. En tus navegadores sueles tener alguna opción de gestión de certificados, entre ellos de varias AC, que serán utilizadas en caso de tener que verificar algún certificado. ¿Y si me he creado una AC propia con la que firmar certificados?. Siempre podrás importar en los sistemas de gestión de certificados de tus clientes el certificado con la clave pública de tu AC. Entre los estándares de certificados digitales destacar el X509, utilizado en muchas de nuestras infraestructuras de PKI (Public Key Infraestructure). Para más información sobre firma digital recomiendo el capítulo 17 del “Libro Electrónico de Seguridad Informática y Criptografía” del Prof. Ramió Aguirre.

Y recuerda, a bicho que no conozcas, no le pises la cola

miércoles, 3 de junio de 2009

Bitácora de PSI.: (Crypto)

Si, aunque Rapsuskley & Hazhe dirían "dame criptonita", nosotros más bien tenemos que decir "dame criptología". Dejando a un lado el mundo de la música paso a entrar en materia.

Palabrejas de nuestro mundo de la PSI.:

- Autenticación (y tú, ¿quién [c...] eres?). No te olvides que tú puedes ser muchas cosas; un cliente, un servidor, un usuario, un proceso, o simplemente un pensamiento. Los típicos sitemas login-password o nuestro amigo kerberos podrán ayudarte, así como la firma digital, la certificación, o la biometría.

- Control de acceso (y tú, ¿qué [c...] quieres?). No te olvides que puedes querer muchas cosas; acceder a un servicio, a un fichero, o a una cuenta bancaria. Y recuerda extremar las precauciones en tu sistema de control de acceso en época de carnavales. La autenticación y el control de acceso suelen ser muy buenos amigos. Esquemas basados en credenciales, roles y atributos podrán ayudarte en la forma de ACLs, filtros, cortafuegos, o en la forma de simples rwx o tickets de kerberos, entre otros.

- Confidencialidad (el contenido de este párrafo es confidencial). Cíframe despacito, pero procura no meterme retardos. Muerte al telnet, ftp, tftp y familia. Larga vida al s(*). No te olvides guardar siempre la etiqueta y el protocolo exigido en cada caso, y mejor con s que sin ella.

- Integridad de datos (soy quien digo ser aunque en muchas ocasiones trate de ser quien no soy, ¿quién soy?). Procura dejar huella en todo lo que hagas y, ante todo, se íntegro en toda decisión que tomes.

- No repudio (yo no he sido, ha sido ...). Cualquier padre o madre asiste diariamente a situaciones más bien de repudio. La firma digital y las autoridades certificadoras podrán ayudarte, no con tus hijos, pero si con tus sesiones y transacciones.

- Accesibilidad (sal a dar un paseo por nuestras ciudades sobre una silla de ruedas y comprenderás lo que es la no accesibilidad). No te olvides que puedes querer acceder a muchos sitios; un servidor, un fichero, una base de datos, etc. Esta palabreja es colega de la disponibilidad y se lleva muy mal con la [D]DoS.

Analizando todas estas palabras es fácil concluir que la criptografía no está nada mal, y que tiene un cierto interés, o tal vez mucho interés. Pero, y la criptología y el criptoanálisis?. La criptología abarca ambos campos, la criptografía y el criptoanálisis. El primero es el lado de la luz, y el segundo el de la oscuridad, aunque recuerda que las fronteras entre ambos son muy difusas. El primero es el mundo de la algoritmia criptográfica, y el segundo el de la contra-algoritmia. El primero crea, y el segundo destruye. Recuerda que esto es un proceso de control de calidad, y que el criptoanálisis realiza una función muy importante, deshacerse de los débiles. Durante los últimos años hemos visto la desaparición y aparición de muchos algoritmos de cifrado pero, en el fondo, seguimos con la sensación, aunque dichos algoritmos han evolucionado considerablemente, que lo único que estamos haciendo es incrementar cada vez más el tamaño de nuestras claves. Esto parece una carrera sin final entre la longitud de nuestras claves y la potencia computacional al servicio de la [pseudo]fuerza bruta. Pues bien, "que la fuerza te acompañe". Y si, hemos asistido a muchas chapuzas tanto en los algoritmos como en los protocolos seguros y sus implementaciones pero, aún así, son una herramienta muy potente de securización.

Bueno, me has convencido que la criptografía, o mejor dicho, la criptología, es de gran importancia pero, ¿a qué la aplico?. De momento no se ha descubierto ningún método para hacer bocadillos de chorizo cifrados, pero quien sabe. Por lo tanto, tendrás que conformarte con tratar de cifrar, de la mejor forma posible, tanto tus servicios-comunicaciones como los datos.

Y, ¿cómo puedo cifrarme?. Recuerda tus enseñanzas, esas que nos hablaban de las malditas 7 capas del modelo OSI, y podrás imaginarte que puedes cifrar la datos-información en muchas de ellas. En principio, sin divagar en exceso, se podría hacer a nivel de aplicación para, por ejemplo, cifrar tus datos-ficheros. Un ejemplo de este nivel puedes encontrarlo en un viejo conocido, el GnuPG, o GPG (también disponible para los otros en la forma de GPg4win). Y, ¿quiénes son los otros?. Tal vez esta pregunta deberías hacérsela a Amenábar, aquí estamos para hablar de "mi" asignatura, como diría Umbral. También puedes bajar de nivel y cifrar la sesión por medio de la "sslificación", toma nueva leche a la RAE, de cualquier amigo que no tenga una "s" al principio o al final. En este caso SSL, o el TLS son nuestros amigos inseparables que, aunque apunta formas, no termina por vislumbrarse su muerte. Para concluir, no podemos dejarnos fuera otro clásico de la seguridad, las VPNs (Virtual Private Networks), con su máximo exponente de implementación en IP[6]sec. Si quieres hacer pruebas en laboratorio, y aplicar el dicho de aprende jugando, te recomiendo OpenVPN. Existen otras soluciones para VPNs o túneles seguros, como Eclipt Secure Tunnel, o por medio de stunnel o el mismo ssh con la redirección de IPs y puertos. También podrás plantearte el uso de túneles de cifrado a nivel 2.

Y los datos, ¿cómo los cifro?. Pues con mucho cuidado. En este punto podemos diferenciar dos ámbitos, el cifrado de ficheros y el de sistemas de fichero. Para jugar con alguna de las múltiples herramientas para el primer caso puedes utilizar el ya comentado GPG y, para el segundo, muchos de nuestros kernels actuales tienen soporte para cifrado de los sistemas de ficheros. De gran interés en medios extraíbles. Ese fichero de las máquinas debian del laboratorio que has estado "tocando" en la práctica 3, llamado /etc/fstab, te proporciona la opción encryption para tal tarea, especificando además el algoritmo de cifrado.

Además de la seguridad en las comunicaciones, también se debe considerar la seguridad en la parte cliente (por ejemplo navegadores), así como en los servidores, sus SGBDs y aplicativo desarrollado (por ejemplo servidores web, JSPs, ASPs, PHP, etc.). En este último nivel son muchos y variados los problemas de seguridad identificados (SQL Injection, XSS o Cross Site Scripting, Ejecución Remota de Código, RFI (Remote File Inclusion) o Directory traversal, entre otros). Sin duda alguna, este mundo no es del todo decidible. En este contexto, toda sesión siempre puede ser susceptible de sufrir una cierta usurpación, tanto en la parte cliente, como en la propia comunicación o en el servidor.

El infierno está lleno de buenas intenciones,

domingo, 19 de abril de 2009

Cine y PSI.: El empleado del mes (segunda parte)

Considerando la propuesta de la entrada Bitácora de PSI, tras analizar las aportaciones recibidas, tenemos más "alumnos del mes". Incluyo la propuesta de películas relacionadas con la temática sin los comentarios remitidos. El que conozca las películas podrá tratar de identificar las relaciones y, en otro caso, siempre puedes buscar un poco de tiempo para verlas.

La invasión de los ultracuerpos (Adrián F. L)


Cara a Cara (Noemí R. S.)


Battlestar Galáctica (Alejandro M. V.)


Regreso al futuro II (Franciso Alonso R. M.)


300, Asalto al distrito 13, Troya (Ignacio L. G.)




Matrix [dado que somos del mundo de las TIC], El castillo ambulante [cambiando de estilo] (mis propuestas [a este no le premiamos con 0,25 puntos]). Incluiré una tercera que, para mi gusto, es la que mejor define la temática propuesta (el golpe).





martes, 14 de abril de 2009

Bitácora de PSI.: La decisión

MORFEO.: ¿Te gustaría saber lo que es? Matrix nos rodea. Está por todas partes, incluso ahora, en esta misma habitación. Puedes verla si miras por la ventana o al encender la televisión. Puedes sentirla, cuando vas a trabajar, cuando vas a la iglesia, cuando pagas tus impuestos. Es el mundo que ha sido puesto ante tus ojos para ocultarte la verdad.

NEO.: ¿Qué verdad?

MORFEO.: Que eres un esclavo, Neo. Igual que los demás, naciste en cautiverio, naciste en una prisión mal-llamada democracia que no puedes oler ni saborear ni tocar. Una prisión para tu mente. Por desgracia no se pude explicar lo que es Matrix. Has de verla con tus propios ojos. Esta es tu última oportunidad. Después, ya no podrás echarte atrás. Si tomas la pastilla azul fin de la historia. Despertarás en tu cama y creerás lo que quieras creerte. Si tomas la roja, te quedarás en el País de las Maravillas y yo te enseñaré hasta dónde llega la madriguera de conejos. Recuerda: lo único que te ofrezco es la verdad. Nada más. Sígueme.

MORFEO.: ¿Qué es real?. ¿De qué modo definirías real?. Si te refieres a lo que puedes sentir, a lo que puedes oler, a lo que puedes saborear y ver, lo real podría ser señales eléctricas interpretadas por tu cerebro”

CIFRA.: ¿Sabes?. Sé que este filete no existe. Sé que cuando me lo meto en la boca es Matrix la que le está diciendo a mi cerebro: es bueno. Después de nueve años, ¿sabes de qué me doy cuenta?. La ignorancia es la felicidad.

SMITH.: Entonces, tenemos un trato.

CIFRA.: No quiero acordarme de nada. De nada. ¿Entendido?. Y quiero ser rico. No sé, alguien importante como un actor.

SMITH.: Lo que usted quiera señor Reagan.

CIFRA.: Está bien. Devuelve mi cuerpo a una central eléctrica, reinsértame en Matrix y conseguiré lo que quieras.

SMITH.: ¿Alguna vez la ha mirado fijamente maravillándose de su belleza, de su genio?. Millones de personas viviendo sus vidas inconscientes. ¿Sabía que la primera Matrix fue diseñada para ser un perfecto mundo humano donde nadie sufriera, donde todo el mundo fuera feliz?. Fue un desastre. Nadie aceptó ese programa, se perdieron cosechas enteras. Algunos creían que no teníamos el lenguaje de programación para describir su mundo perfecto. Pero yo creo que, como especie, los seres humanos definen su realidad con tristeza y el sufrimiento. Así que el mundo perfecto era un sueño del que sus primitivos cerebros querían constantemente despertar. Por este motivo Matrix fue rediseñada así, en el apogeo de su civilización. Ha oído bien: su civilización, porque cuando empezamos a pensar por ustedes, en realidad se convirtió en nuestra civilización y claro, como imaginará es de lo que va todo esto. De evolución, Morfeo. Evolución. Como el dinosaurio. Mire por esa ventana. Su época ya pasó. El futuro es nuestro mundo Morfeo. El futuro es nuestra época.

SMITH.: Quisiera compartir una revelación que he tenido desde que estoy aquí. Esta me sobrevino cuando intenté clasificar a su especie. Verá, me di cuenta de que, en realidad no son mamíferos. Todos los mamíferos de este planeta desarrollan instintivamente un lógico equilibrio con el hábitat natural que les rodea. Pero los humanos no lo hacen. Se trasladan a una zona y se multiplican y siguen multiplicándose hasta que todos los recursos naturales se agotan. Así que el único modo de sobrevivir es extendiéndose hasta otra zona. Existe otro organismo en este planeta que sigue el mismo patrón ¿Sabe cuál es? Un virus. Los humanos sois una enfermedad, sois el cáncer de este planeta, sois una plaga. Y nosotros somos la cura.

MORFEO.: ¿Alguna vez has tenido un sueño, que pareciera tan real que no lo puedes distinguir de la realidad?. Y si no pudieras despertar de ese sueño, ¿cómo sabrías que estas soñando?

MORFEO.: Desde sus inicios, la humanidad siempre ha dependido de las máquinas. El destino, al parecer, no está carente de cierta ironía.

RATÓN.: ¿Sabes a lo que realmente me recuerda? -refiriéndose a la comida que tienen en la nave- Al trigo rico, ¿alguna vez lo probaste?

INTERRUPTOR.: No, pero técnicamente tú tampoco.

RATÓN.: Y a eso me refiero exactamente. Porque si te preguntas: ¿cómo sabrán las máquinas a qué sabía en realidad el trigo rico? Quizás se equivocaron. Yo creo que el sabor del trigo rico era en realidad el sabor de la avena o quizás del atún. Eso hace que te plantees cosas. Piensa en el pollo por ejemplo, a lo mejor no supieron concretar a qué sabía el pollo y por eso hay tantas cosas que saben a pollo.

MORFEO.: Tarde o temprano entenderás la diferencia entre conocer el camino y andar el camino.

----------------------
Todo profesional de las TIC tiene que decidir, en algún momento de su vida, si tomar la pastilla azul o la roja. Y recuerda en la toma de decisión que la ignorancia en muchas ocasiones es la felicidad. Sin duda alguna, estamos ante una difícil decisión, un ignorante feliz, o seleccionar el tortuoso camino del conocimiento, tratando de incorporar la calidad en todo lo que se haga. Desafortunadamente tenemos demasiados profesionales que han optado por la pastilla azul. Espero y deseo que gran parte de mis alumnos seleccionen la roja.

martes, 24 de marzo de 2009

Bitácora de PSI: Fundamentalistas

En el capítulo de hoy hemos introducido las “técnicas” de “Decoy Scan” e “Idle Scan”. Una pila TCP que haga una gestión inteligente de sus paquetes y, entre otros, de sus números de secuencia, complicará considerablemente el que los sistemas se conviertan en “zombies”.

El enmascaramiento de nuestras máquinas TCP-IP permitirá jugar al gato y al ratón y, en la medida de lo posible, tratar de engañar a un posible atacante y, o, a sus herramientas. Se puede tratar de modificar “a pelo” los parámetros característicos de estos protocolos sobre el registro del sistema en "windows" o sobre los ficheros de configuración en /proc/sys/net/ipv4 (para IPv4) en nuestros linux. Como es lógico, no estaría mal hacer antes “backup” del registro y ficheros de configuración. También se puede optar por utilizar distintas herramientas que automatizan esta tarea. Te recomiendo dos magníficas entradas, una del blog de Álvaro Paz, Enmascarar sistema para evitar OS Fingerprinting, y la segunda de Kriptopolis, Security Cloak, enmascarando tu Windows. La incorporación de técnicas de "hardening" y “hardening tools” es otro de los mecanismos recomendables para fortalecer la seguridad en nuestros sistemas. Existen distintos paquetes de “hardening”, como bastille-linux o harden.

Hemos visto las típicas fases de una intrusión, y las principales características de cada una de ellas. Como en la vida misma, la ocultación es el fenómeno que predomina en todas ellas.
Se introducen y definen las medidas básicas de seguridad (técnicas de ocultación, parcheo a todos los niveles, “firewalls”, tcp-wrappers, IDSs, honeys, herramientas de auditoría, de integridad, analizadores de vulnerabilidades, etc.). En este punto, un alumno plantea una cuestión general, la diferencia entre un “firewall” y un IDS. En un mundo empresarial en el que la tendencia es a ir con una careta de "supercrack" de la informática, y en el que en demasiadas ocasiones vender la moto se valora mucho más que un trabajo bien hecho, el que alguien plantee cualquier cuestión que le pueda surgir, sea de la naturaleza que sea, es muy de agradecer. La curiosidad y ganas de aprender es la principal característica que todos debemos tener para no terminar por convertirnos en “zombies”. Sobre la cuestión planteada, se analizan sus características básicas y diferencias, además de la necesidad de que trabajen de forma conjunta y colaborativa.

En cuanto a la formación que todo profesional debe seguir a lo largo de toda su existencia, es bastante lamentable asisitir a cursos de empresa, repletos de profesionales, y comprobar la forma en la que muchos de ellos se enfrentan a sus complejos; o se limitan a callar, y por lo tanto pierden la característica natural de la curiosidad, del aprendizaje, o por el contrario, se dedican a hacer intervenciones orientadas a tratar de demostrar lo guapos, altos y superdotados que son, como un mecanismo para tapar sus miedos y complejos. Afortunadamente también existen profesionales con una constante curiosidad por la tecnología, con ganas de "saber" y "saber hacer", que se enfrentan a los problemas con una gran naturalidad y sentido común. Sin duda alguna, nuestro objetivo principal debe ser el llegar a ser uno de ellos. Y recuerda que este camino no es fácil, y aunque en algún momento nos podamos desviar de la senda hacia el "lado oscuro", no dudar nunca en volver a ella lo antes posible.

La segunda parte de la clase se centra en el reconocimiento de sistemas operativos, iniciando la andadura por los sistemas prehistóricos de reconocimiento ascii, y continuando por los sistemas basados en los protocolos TCP-IP. El conocimiento de los protocolos utilizados por nuestros sistemas, y la forma en la que organizan los datos, es fundamental para poder comprender muchos de los temas tratados. En este punto, utilizamos unos minutos para analizar el protocolo TCP, la forma en la que se establecen y cierran los conexiones y, en general, el funcionamiento de sus 6 flags (URG, ACK, PSK, RST, SYN, FIN), utilizados en algunos métodos, hoy en día clásicos, de análisis. También se estudia el protocolo TCP, su gestión de errores, congestión y flujo, así como los distintos campos de la cabecera de un paquete TCP. Finalmente se introducen las técnicas clásicas de análisis basada en los “flags” TCP, valores de opciones TCP, tamaño de ventana, etc. Para una amplia relación de métodos de análisis http://nmap.org/book/osdetect.html

domingo, 15 de marzo de 2009

Bitácora PSI.: Evolucionamos

En los laboratorios de prácticas empezamos a funcionar. Sin duda alguna, las prácticas de laboratorio son lo más importante en toda materia. "Saber" es fundamental, pero "saber hacer", lo es mucho más. Al respecto, sin novedad en el frente.

En la clase de teoría, hemos seguido analizando y presentando casos de las distintas categorías de ataques. Entre las palabrejas introducidas, “spoofing” y “fingerprinting”.

Una buena aproximación a los conceptos básicos del "spoofing" la puedes encontrar en http://es.wikipedia.org/wiki/Spoofing

Sobre "fingerprinting", en este caso limitado a los sistemas operativos, en http://www.sans.org/reading_room/whitepapers/testing/an_overview_of_remote_operating_system_fingerprinting_1231?show=1231.php&cat=testinghttp://es.wikipedia.org/wiki/Spoofing tienes una buena aproximación para "saber" lo básico del tema.

Respecto a la operativa de un profesional de las TIC, en clase se ha expuesto la problemática existente en la elaboración de cualquier pliego de concurso de infraestructuras TIC, y el proceso involucrado. Sin duda alguna, el uso de normas y estándares en los pliegos es vital para dejarlo todo bien cerrado, y no llevarnos sorpresas. En este sentido, el conocimiento de los estándares y normas de las infraestructuras involucradas es fundamental. Gran parte de vosotros deberá afrontar este proceso más tarde o temprano, sea desde el punto de vista del profesional que tiene que elaborar los pliegos, o del comercial o técnico-comercial que se presenta a los mismos. Recordar que únicamente se deberán considerar factores económicos-técnicos en las decisiones tomadas, otro tipo de actuación te convertiría en un mercenario de la información. Entre las herramientas utilizadas para la toma de decisión, recuerda que las más sencillas, como los árboles de decisión, te pueden ayudar considerablemente. Como es lógico, siempre acompañado de un informe que justifique los pesos y decisiones tomadas.

jueves, 12 de marzo de 2009

Bitácora de PSI.: Nuestras redes (segunda parte)

Aunque segundas partes no suelen ser buenas, he recibido varios emails solicitando referencias generales de interés relacionadas con el llamado cableado estructurado. Como el tiempo es un bien limitado, en el caso de tener que seleccionar entre las fuentes, en estos temas una imagen es mejor que 666 palabras, por lo que me centraría en los enlaces de los videos del final de esta entrada. Posteriormente, es aconsejable formalizar los distintos temas con el enlace-documento indicado.
Preferible este enlace a la entrada de la wikipedia en castellano, más extensa, pero con la que no comparto un par de apreciaciones. Lo bueno si breve, ... (Nota.: Si cae por esta página el autor de dicha entrada, que no lo entienda como una crítica, es un magnífico trabajo, pero a la hora de hacer una selección, hay que tomar decisiones).
En el caso de que el noble arte del idioma de Shakespeare no te atraiga mucho, recuerda que gran parte de la documentación que manejamos en nuestra profesión, no ha sido escrita por Shakespeare, pero casi. Aportando soluciones, en este caso, http://es.wikipedia.org/wiki/Cableado_estructurado
Para terminar, destacar dos magníficos videos localizados en el portal de los portales del mundo audiovisual, muy recomendable para "ver", en el mejor sentido de la palabra, lo que es un cableado estructurado, y sus elementos. Por cierto, son muy didácticos, y de gran interés.:

martes, 10 de marzo de 2009

Bitácora de PSI.: Fundamentalismo

En el capítulo anterior (ver entrada), se hizo referencia a la problemática general de la DoS y DDoS, y se dejó un enlace a una pequeña, pero muy interesante guía de actuación, que proporciona diversas ideas para tomar decisiones ante este tipo de incidentes. En dicha entrada aparece un pequeño "shell script", que aprovechamos para analizar y sacar algunas conclusiones.
- La seguridad de la información requiere unos ciertos conocimientos en gran cantidad de campos (redes de comunicaciones, protocolos, programación, jardinería, etc., etc., etc.).
- En muchas situaciones un problema, que puede ser de seguridad, no tiene una solución definitiva, y sí acciones que pueden mitigar los efectos y reducir el impacto. En nuestra profesión, no siempre todo es 0 y 1. Considerando el "shell script" de referencia, se ha dejado constancia de que lo que puede ser una solución aceptable ante un incidente-problema, puede ser nefasto para el mismo incidente-problema, pero en un contexto o entorno distinto. Nuevamente entramos en la necesidad de tomar decisiones, que requerirán de un ámplio conocimiento de los sistemas involucrados, y del entorno en el que actúan. Sin contar que deberemos saber asumir las consecuencias de las decisiones tomadas. El "esto no es mi responsabilidad, no es de mi área", cuando las cosas no salen bien, no es aceptable. O "que listo soy, que bien me ha salido la fotocopia", cuando es un éxito, tampoco es aceptable. Trabajamos en entornos multi-área, en los que la seguridad es un sumatorio de acciones de todas ellas, con independencia de la existencia o no de un responsable-departamento de seguridad que, de existir, debería coordinar acciones en la totalidad de las áreas (pero esto es otra película).
- Muchas de nuestras máquinas están repletas de "shell scripts". El conocimiento de la programación de "scripts" permite, por un lado, identificar muchos de los procesos que se ejecutan en nuestras máquinas ("shells" de arranque, de estado, etc.) y, por otro, desarrollar distintas herramientas que nos faciliten las tareas de administración, monitorización y control de nuestros sistemas. Por lo tanto, es altamente aconsejable que el alumno se familiarice con la programación de "shell scripts" (no forma parte del temario de PSI, pero cada alumno decide en lo que quiere empelar su tiempo):
* Entre la gran cantidad de enlaces relacionados con "shell scripting" http://linuxcommand.org/writing_shell_scripts.php
* Después de hacer distintas pruebas y algún "shell script", aconsejo que revises alguno de los muchos existentes en la máquina debian de prácticas. Entre otras posibles curiosidades para hacer pruebas, esta entrada "A web server in a shell script"
Señalar que existen otras opciones para automatizar tareas de administración, como por ejemplo perl, o directamente con programación C, etc., etc.
- Otro aspecto de gran importancia introducido en la clase está relacionado con el conocimiento que todo profesional debe tener de las infraestructuras de TIC que gestiona-administra. El desconocimiento de lo que se tiene hará imposible su protección. En este sentido, se ha presentado la estructura organizativa de una red de datos, considerando el concepto de "cableado estructurado". En todo momento se ha utilizado el modelo de red de voz y datos de la UDC y la RECETGA, para mostrar ejemplos reales de redes de comunicaciones.
Sobre la Red de Ciencia y Tecnología de Galicia (RECETGA) recomiendo en http://www.cesga.es/index.php?option=com_docman&task=cat_view&gid=14&Itemid=11, de la revista dixitos del CESGA, el Anuario 2007, disponible en pdf. En esta publicación, la sección "RECETGA Communications", páginas 55 a 63, presenta el estado casi actual de dicha red. Para los que tengan sed de conocimientos, recomiendo también el apartado "Data Storage", páginas 43 a 45 del anuario, de interés para cuando tratemos el tema de dispositivos de almacenamiento. Y si después de estos sigues con sed de conocimientos, el apartado sobre el finisterrae. Recuerda que el CESGA es uno de los "top ten" de Galicia para desarrollar un futuro profesional en TICs. Para los nostálgicos de las tecnologías, recomiendo la evolución de la RECETGA desde 1993 a 2005 disponible en http://www.cesga.es/content/view/424/21/lang,es/
Sobre la red de la UDC no tengo constancia de la existencia en digital de información pública sobre la misma, por lo que tendréis que conformaros con el esquema expuesto en clase.
En cuanto a las prácticas de laboratorio, señalar que los equipos han mejorado mucho respecto a años anteriores. En pocas palabras, las máquinas virtuales tienen una velocidad más que agradable. Sin duda alguna, disponer de buenas máquinas y RAM en cantidades tiene sus resultados. Agradecer al personal del CECAFI todo el trabajo realizado.

viernes, 6 de marzo de 2009

Bitácora de PSI.: Fundamentos

- Factor humano.: Tener buenos profesionales que tomen decisiones (más o menos buenas), pero que las tomen desde un punto de vista técnico-económico, es mucho más importante que el disponer de grandes cantidades de €€€€€€€€€s para equipamiento, máquinas, etc. Es preferible un buen profesional con un PC prehistórico, que 500.000 € en material que …

- En seguridad no obsesionarse con los incidentes intencionados, los accidentales existen, y causan gran cantidad de pérdidas y daños. La importancia de ellos depende del entorno en el que nos encontremos y, por lo tanto, nuevamente tomar decisiones acertadas es lo fundamental.

- En algunas ocasiones las ideas más sencillas son las que proporcionan las mejores soluciones. El sentido común es la principal herramienta profesional. Bueno, y no profesional también.

- Un sistema de detección de incidentes basado en la recepción de llamadas telefónicas de usuarios cabreados no es aceptable bajo ningún concepto. La detección de incidentes, anomalías, etc. debe ser uno de nuestros principales objetivos y, el usuario-cliente, deberá siempre ser el último en percatarse (desde el punto de vista de no degradar el servicio prestado, no desde el punto de vista de la ocultación de la información y los acontecimientos).

- Hemos visto un caso real de incidente de seguridad (en este caso de naturaleza accidental), y comprobado que no es nada fácil determinar las acciones a seguir. Nuevamente estamos ante la problemática de tomar decisiones, repito, desde un punto de vista siempre técnico-económico (que será lo que diferencie un buen profesional de un mercenario de la información). Planificar las líneas de actuación ante incidente-desastres es de gran importancia para proporcionar una rápida y eficiente respuesta.

- Hemos introducido el concepto y problemática general de la DoS. Os recomiendo la entrada que he dejado bajo la etiqueta DDoS, en la que encontrarás acceso a una pequeña guía de actuación ante el DDoS (http://www.zeltser.com/network-os-security/ddos-incident-cheat-sheet.html), información de técnicas de detección, etc., etc.

- Los profesionales que no toman decisiones, nunca se equivocan, y posiblemente asciendan mejor en las empresas. Los profesionales que toman decisiones considerando criterios no técnicos-económicos, no sirven a los intereses de la empresa, únicamente sirven a los intereses de unos cuantos "listillos". En el corto-medio plazo, puede que esto resulte. En el largo plazo esas empresas desaparecerán por falta de productividad y competitividad, especialmente en tiempos difíciles. Siempre que puedas, toma decisiones según criterios técnicos-económicos, y te convertirás en un buen profesional. Podrán ser más o menos acertadas, pero serás un buen profesional. No es fácil, pero es una de las principales competencias que debemos perseguir los docentes.

- La regulación de nuestra profesión, y la definición de competencias (fichas o como les quieran llamar), es fundamental para todos los sectores empresariales-productivos. Hoy todo depende de la tecnología, y sin buenos profesionales y una correcta regulación, todos los sectores se verán seriamente afectados. Hace tiempo que hemos dejado de ser una titulación joven. En la actualidad, las canas y calvicie campan en muchos de nuestros profesionales.

*) Fotografía de la entrada.: Star Trek. Estos sí que llevan tiempo con su cuaderno de bitácora. Pensando en la problemática general de la toma de decisiones, en cualquier ámbito, un análisis del sistema organizativo-funcional de Star Trek podría proporcionar una estudio muy curioso e interesante en el mundo empresarial, además de divertido. Tal vez alguien de empresa podría planteárselo como tesis doctoral. Pero recuerda, Star Trek es una película de ciencia ficción. ¿La ciencia ficción no se adelanta casi siempre a la realidad?. ¿Qué pasaría en el Enterprise si en todo momento sus personajes estuviesen compitiendo por ascender-promocionar, y utilizasen para ello todo tipo de "estrategias"?. Posiblemente la habrían desintegrado hace un buen montón de años. ¿Qué personaje del Enterprise te gustaría ser?. Tal vez esa debería ser una de las muchas preguntas "chorra" que suelen pulular en las entrevistas de trabajo. NOTA.: Un poco de humor en la vida es una buena herramienta para todo.