Hemos visto las típicas fases de una intrusión, y las características básicas de cada una de ellas. Como en la vida misma, la ocultación es el fenómeno que predomina en todas ellas. Hemos visto algunas forma de ocultar en conejo en la chistera.
Se introducen como mecanismos 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.).
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 6 de sus 8 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. En todo momento se analiza la problemática de las técnicas de análisis considerando la existencia de un "firewall" en el camino, y su comportamiento habitual. Para una amplia relación de métodos de análisis http://nmap.org/book/osdetect.html.
No todo son sistemas operativos, el "fingerprinting" a nivel de aplicación proporciona mucha información, tanto jugando con el ascii y las cabeceras, como a nivel de firmas de comportamiento de los protocolos. ¿Qué hacer?.
Hemos jugado un poco con paquetes ICMP. Los "echo request" son muy conocidos, pero existen otros muchos paquetes ICMP.
Se concluye la clase con un aspecto en seguridad no menos importante, el hardening de nuestros sistemas, tanto a nivel de operativo, como de aplicación-servicios o del propio código fuente de nuestos desarrollos, entre otros. Se introducen algunas de las herramientas clásicas de hardening en entornos linux, como bastille-linux, grsecurity, etc.
"Las contraseñas son como la ropa interor. No puedes dejar que nadie la vea, debes cambiarla regularmente y no debes compartirla con extraños" [Chris Pirillo]