By Ponicke
Ya uno sabe que la web no es un camino de rosas. Lentamente fue dencantando en nuestras cabezas los riesgos y peligros de andar por la vida virtual sin saber por donde va a saltar la liebre.
Si jugasemos un tutti-frutti y una de las columnas fuese: Amenazas Informaticas, muy probablemente podamos llenarla sin demasiados contratiempos, y eso es muy bueno, por que habla de toma de conciencia y de conocimiento de la situacion.
Como muestra basta un boton, recuerdo hace muchos años cuando uno jugaba con el archivito hosts maravillando al incauto al lograr cambiarle el destino de una URL tipeada en el navegador cual espejito de color , hoy, tecnicas mucho mas elaboradas terminaron delineando los principios de lo que conocemos como phishing.
El problema a veces radica en no solo saber que las amenzas existen si no en tambien tener las herramientas justas para lidiar con ellas.
Muchos usamos Internet Explorer para navegar la web, de hecho mas del 60% de los internautas lo usa. dentro de ese >60% estan los que usan IE6, IE7 e IE8.
Pregunta (no vale espiar) ¿en que año salio IE6?
.
.
.
y? 2005?
2003?
2002?
no no!
2001!!!!!
Ahora, pensemos por un momento usar hoy un navegador desarrollado en 1999/2000 y lanzado en 2001…
La web de aquellos tiempos es un poco diferente a la que tenemos hoy, esta claro que muchas de las amenazas de hoy, no eran ni proyecto por aquellos tiempos.
Phishing, ¿recuerdan que es? basicamente es una tecnica de suplantacion de identidad que intenta hacerle creer al usuario que esta en un lado cuando realmente esta en otro y una vez ahi intentar sacarle algun dato confidencial.
Mirate esto:

y analicemos algunas cosas.
1) Https: el canal de autenticacion entre ML y yo esta protegido. Buena cosa.
2) Ademas tiene un certificado dado por una Autoridad Certificante en la cual confio. Ninguna advertencia o aviso en contrario aparecio al cargar la pagina.
3) Pero fijate que cosa rara. La barra de direcciones esta verde!, habras notado que no todos los canales https se ponen verdes en IE8. ¿Por que este si? Por que Mercado Libre evidentemente si se preocupa por usar las ultimas herramientas de seguridad disponible, ¿Que es lo que esta haciendo que la barra de direcciones de IE8 se ponga verde?
Si bien Mercado Libre tiene un certificado digital que permite el canal https y este fue dado por una CA de confianza, éste ademas tiene EV (Extended Validation)
Veamos que tiene Verisign para contarnos al respecto de estos certificados
¿Qué es SSL con Extended Validation?
Los certificados SSL con Extended Validation ofrecen información a los navegadores Web de alta seguridad para identificar claramente la identidad de la organización de un sitio Web. Por ejemplo, si utiliza Microsoft® Internet Explorer 7 para visitar un sitio Web asegurado con un certificado SSL que cumple el estándar Extended Validation, IE7 hará que la barra de direcciones URL se vuelva de color verde. Junto a la barra verde aparecerá, de forma alternativa, el nombre de la organización indicado en el certificado y la autoridad de certificación (por ejemplo, VeriSign). Firefox 3 también admite SSL con Extended Validation. Se espera que otros navegadores ofrezcan la posibilidad de visualizar Extended Validation en próximas versiones. Los navegadores más antiguos mostrarán los certificados SSL con Extended Validation con los mismos símbolos de seguridad que los certificados SSL existentes.
¿Qué beneficios aporta el SSL con Extended Validation a los propietarios de un sitio Web?
Un certificado SSL con Extended Validation ayuda a sus visitantes a completar transacciones seguras con total confianza y coloca a su organización en una posición de liderazgo. Si su sitio Web tiene la "barra verde" y el de su competidor no, su empresa dará una apariencia de mayor confianza y legitimidad. Este hecho supone una ventaja sobre la competencia en el comercio electrónico. Para empresas con marcas importantes, el uso de un certificado SSL con Extended Validation es la forma más efectiva de defenderse de ataques de phishing. Cuando los clientes ven la barra verde y el nombre de su proveedor de seguridad, pueden realizar transacciones comerciales en línea con su empresa, con total confianza.
¿Que otra cosa podemos notar de esa captura de pantalla ademas de la barra verde?
Domain highlighting
Si prestas atencion vas a notar algo asi:
https://www.mercadolibre.com/jms/mla/secureLogin?…….
La idea es que el navegante pueda rapidamente detectar cual es el dominio real al cual esta accediendo y no caer en la trampa de ips o pseudo dominios que redireccionan a sitios.
El hecho de resaltar el dominio le da claridad al momento detectar el destino del navegante reduciendo los riesgos de caer en lugares no deseados.
Cual es el objetivo de entender estos temas? que el usuario tiene que tener formas de detectar si potencialmente puede ser engañado o no.
Insolitamente , una persona tiene un metodo para detectar si el billete que le estan dando es verdadero o no, basicamente mira si el proces aparece al trasluz, si la tinta brillante cambia de color y si esta la cintita plateada entrelazada. Con esa regla basica esa persona reduce mucho el riesgo de caer incautamente al recibir una fotocopia de un billete. Pero muy probablemente esa misma persona no tenga mucha forma de tener el mismo criterio al intentar detectar si esta visitando la fotocopia de su home banking.
Esa es la idea con esa medidas, que facil y rapidamente los sitios legitimos puedan ser diferenciados de los apocrifos.
Internet Explorer puso mucho foco en estas medidas de seguridad.
No todo es eterno en la vida y lo que hoy es seguro mañana puede no serlo. Si la clave privada de un certificado por alguan razon es comprometida, este debe ser dado de baja y listado en la CLR de la autoridad certicante que lo emitio.
Pero con eso no basta, nuestro explorardor debe ser capaz de enterarse de esa novedad. Es ahi donde Group Policies viene otra vez en nuestra ayuda.

Dentro de la increible cantidad de politicas dedicadas a Interner Explorer podemos encontrar algunas como esta. Ayudando a mantener bajo control los certificados de los sitios visitados.
Como ultima recomendacion, el SmartScreen Filter evolucionado del Phishing Filter del IE7, es uan de las herramientas de seguridad mas importantes de IE8. Como el juego del gato y el raton los atacantes evolucionan sus sitios para evitar ser reconocidos facilmente. Por esa razon SmartScreen Filter tambien ha evolucionado,ahora incorpora muchas tecnicas heuristicas desarrollados por los equipos de seguridad de Microsoft tratando de detectar comportamientos sospechosos, Estas tecnicas heuristicas combinadas con un telemetrias nuevas y mejoradas le permiten al sercicio de URL Reputation identificar y bloquear sitios maliciosos
By Miguel Saez
Developers - no es chiste: Así hacemos seguridad en Microsoft
“When we started work on Microsoft .NET more than two years ago, we set a new dire
ction for the company -- and articulated a new way to think about our software. Rather than developing standalone applications and Web sites, today we're moving towards smart clients with rich user interfaces interacting with Web services.
…
However, even more important than any of these new capabilities is the fact that it is designed from the ground up to deliver Trustworthy Computing. What I mean by this is that customers will always be able to rely on these systems to be available and to secure their information. Trustworthy Computing is computing that is as available, reliable and secure as electricity, water services and telephony. “
Así anunciaba Bill Gates en el año 2002 el comienzo de la iniciativa conocida como Trustworthy Computing, enfocada en desarrollar una serie de procesos y prácticas enfocados en cuatro pilares específicos: Seguridad, Privacidad, Confiabilidad e Integridad en los Negocios en los diferentes productos y servicios ofrecidos por Microsoft.
En este artículo describiré brevemente uno de los resultados de esta iniciativa: Microsoft Security Development Lifecycle
. Al final del mismo, les haré una invitación a que me compartan qué tipos de consideraciones de seguridad realizan en sus equipos.
Microsoft Security Development Lifecycle
Se trata de un proceso de QA, explicitando actividades obligatorias que deben ser aplicadas en las diferentes etapas del ciclo de desarrollo: Entrenamiento, Requerimientos, Diseño, Implementación, Verificación, Liberación, Respuesta.

0 - Entrenamiento
El primer punto es crucial, considerar el entrenamiento en seguridad una etapa obligatoria propia del ciclo de desarrollo. El entrenamiento no es solo requerido para el desarrollador, sino también para los roles de tester o program manager (para conocer más del modelo de organización de equipos en Microsoft, ver MSF
).
Algunos conceptos básicos incluidos en el entrenamiento requerido:
- Diseño seguro: Reducción de superficie de ataque, defensas de profuncidad, principio del menor privilegio (otorgar el menor privilegio que necesita el usuario y no más), valor por defecto seguros.
- Modelo de amenazas (threat model): Diseño, codificación y testing para un modelo de amenazas.
- Codificación segura: Buffer overruns, errores de aritmética de enteros, Cross-site scripting, SQL Injection, Criptografía débil, Errores de código manejado (estoy escribiendo otro post sobre este item en particular).
- Testeando la seguridad: Testeo de seguridad vs. funcional, manejo de riesgos, metodologías y automatización de tests.
- Privacidad: Tipos de datos privados, mejores prácticas en diseño de privacidad, análisis de riesgo, mejores prácticas de desarrollo y testing de Privacidad.
Dos libros para conocer más sobre prácticas de desarrollo seguro:
1 – Requerimientos
Durante el inicio del proyecto no sólo debe evaluarse las condiciones generales de seguridad y privacidad a ser consideradas durante todo el proyecto, sino hacerse un análisis de costos para asegurar dichas características. Cuanto más temprano identifiquemos defectos de seguridad en nuestro proyecto, menor será el costo de resolverlos, por eso es muy importante el planeamiento de los mismos:
![image[5] image[5]](http://blogs.msdn.com/blogfiles/masaez/WindowsLiveWriter/26b1c08f5820_10C3D/image%5B5%5D_thumb.png)
Para ello debe realizarse un análisis de riesgos el cual incluya:
- Qué porciones del proyecto requerirán un Modelo de Amenazas antes de ser liberado.
- Qué porciones del proyecto requerirán revisiones de diseño de seguridad antes de ser liberado.
- Que porciones del proyecto requerirán testeo de penetración el cual es realizado por un grupo de gente externa al equipo del proyecto.
- Cualquier test adicional o análisis de requerimiento que el Security Advisor considere necesario para mitigar riesgos de seguridad.
A su vez, se realiza un análisis de privacidad, que identifique el grado de sensibilidad de los datos a ser procesados por el software. A partir de este tipo de análisis, se definen las barreras de seguridad que debe cumplir el software.
2 – Diseño
Desde una perspectiva de seguridad, los elementos más importantes durante la fase de diseño son la definición de la arquitectura y guías de diseño de seguridad: La definición de capas, el uso o no de lenguajes fuertemente tipados, la definición de los menores privilegios requeridos, la minimización de la superficie de ataques, deben ser consideradas y aplicadas al software de acuerdo a los requerimientos definidos.
A su vez, el proceso definido establece algunas prácticas requeridas:
- Realizar revisiones de diseño de seguridad, llevadas adelantes por el Security Advisor.
- Al utilizar código manejado, deben utilizarse assemblies fuertemente tipados, requiriendo el permiso mínimo.
- Seguir las mejores prácticas definidas por User Account Control (UAC). El tener esto en cuenta, permite desarrollar aplicaciones que requieran un usuario con los mínimos privilegios, reduciendo así las superficies de ataque.
- Evitar la modificación de las configuraciones de Firewall durante la ejecución de la aplicación.
- Se define un Estándard de Criptografía Microsoft, identificando algorítmos de alto nivel para protección de la información.
- La instalación por defecto debe realizar configuraciones seguras.
- Si se trata de una nueva versión de producto, deben revisarse las causas raiz de defectos de seguridad encontrados en el pasado.
- Debe deprecarse toda funcionalidad desactualizada.
- Todo código nuevo, debe implementarse utilizando código manejado de ser posible.
3 – Implementación
La definición de un Modelo de Amenazas cobra especial atención durante la fase de implementación. Los desarrolladores prestan especial atención a la correctitud del código, mitigando las amenazas de mayor prioridad, permitiendo a los testers asegurar que cada amenaza es realmente bloqueada y mitigada.
Las practicas recomendadas durante esta fase incluyen:
Creación de documentación para el usuario, informando sobre consideraciones de seguridad de la aplicación.
Establecer y Seguir las Mejores Practicas de Desarrollo:
- Utilizar siempre la última version del compilador.
- Utilizar herramientas de análisis estático de código.
- Evitar utilizar APIs deprecadas o prohibidas
. - Validar SIEMPRE los parámetros de entrada, y encodear debidamente los parámetros de salida (especialmente para servicios online).
- NUNCA realizar queries SQL ad-hoc, evitando SQL Injection. Utilizar Stored Procedures, y evitar la entrega de permisos excesivos en los usuarios de conexión a la DB.
- Al utilizar código manejado, correr herramientas de análisis estático como FxCop.
- En código no manejado, debe habilitarse Address Space Layout Randomization. Esto fué introducido en Windows Vista, y asegura que las direcciones de memoria utilizadas por una aplicación siempre sean diferentes en cada corrida.
- Establecer reglas que debe cumplir el código antes de hacer check in al repositorio central.
- Para aplicaciones que utilicen Javascript, evitar el uso de la función eval().
- Verificar que los mensajes de error sean seguros, sin exponer información comprometida de la aplicación.
- Si la aplicación hace accesos a disco, construir una lista de archivos conocidos que ésta puede modificar.
- Ante una URL inválida, devolver un error 400 al usuario, logueando el error real.
- Y la lista continua y continua…
4 – Verificación
Se trata del punto donde la funcionalidad es completa y entra en testeo beta de usuario. Se realiza beta testing, haciendo un gran esfuerzo por violar la seguridad del sistema, y realizando revisiones de seguridad periódicas de código.
El testeo de seguridad de comenzar muy temprano en la etapa de verificación. También se vuelve clave la definición de la superficie de ataque, dado que permitirá priorizar los defectos encontrados, entendiendo cuales de ellos deben ser corregidos inmediatamente.
5 – Liberación
Durante la liberación, el software debe someterse a una Revisión Final de Seguridad: Desde el punto de vista de la seguridad, está el producto listo para los clientes?
La Revisión Final de Seguridad no es un ejercicio donde simplemente se determina si pasa o no pasa; tampoco el objetivo es encontrar el resto de las vulnerabilidades del software, esto podría no lograrse nunca. En lugar de esto, la Revisión Final permite darle al equipo de producto y a la organización una visión general de la seguridad del software, y la probabilidad de que ocurran ataques una vez que es liberado a los clientes. Si se encontraran vulnerabilidades, la respuesta correcta no es simplemente corregirlas, sino revisar las faces anteriores y tomar otras acciones que permitan corregir las causas de raiz (por ejemplo mejorando el entrenamiento, perfeccionando las herramientas).
6 – Respuesta o Soporte
A pesar de aplicar el proceso durante el desarrollo, las prácticas de desarrollo actuales aún no permiten entregar software que esté completamente libre de vulnerabilidades – y existen razones para creer que esto no va a ocurrir nunca. Por ello, los grupos de producto deben prepararse para responder a nuevas vulnerabilidades encontradas aún cuando el software ya fué liberado.
Parte del proceso de respuesta involucra la generación de reportes de vulnerabilidades, y liberar actualizaciones cuando corresponda. El otro componente del proceso de respuesta, es llevar adelante post-mortems de vulnerabilidades reportadas, permitiendo tomar las acciones necesarias.El objetivo es lograr aprender de los errores y utilizar los reportes de vulnerabilidades para encontrar nuevas vulnerabildiades que aún no hayan sido encontradas, antes de poner a los clientes en riesgo.
Implementando SDL en Microsoft y otras variantes
Microsoft implementa SDL desde el año 2002. Productos como Windows Server 2003, Windows Vista, Windows 7, SQL Server 2005 en adelante son el resultado de la aplicación de las prácticas de ingeniería que surgieron a partir de la iniciativa de Trustworthy Computing.
Los equipos de ingeniería deben aplicar estos procesos de forma obligatoria, siendo la seguridad un rol central en el equipo. Visual Studio Team System, incluye una plantilla de proceso SDL
. Herramientas como SDL Threat Modeling Tool
facilitan la definición y administración de los Modelo de Amenazas.
Procesos Ágiles: Existen también definiciones adyacentes al proceso de SDL, enfocada a proveer prácticas y soluciones para equipos con metodologías ágiles, también descriptas dentro del documento: Microsoft Security Development Lifecycle

El post hasta aquí ha sido una muy breve descripción a manera de introducción al proceso seguido en equipos de Microsoft para asegurar la calidad en sus productos. Algunas de estas prácticas te habrán parecido comunes, y otras tal vez nuevas. Te invito me compartas qué significa para vos la seguridad, y cómo es considerada dentro de tu equipo de desarrollo.
Saludos!
By Ponicke
Uno de los desafíos mas grandes que tienen los consultores de seguridad es:
¿Cómo cerrar lo suficientemente bien un server dependiendo del servicio que éste brinda?
Temas a resolver en esta situación:
¿Qué servcios debo dejar corriendo y cuales debo deshabilitar?
¿Quién sabe de memoria el listado de servicios exactos por rol de servidor?
Si bien es algo que deberíamos saber, hay una herramienta que es una incomprendida, pero que vale oro: el Security Configuration Wizard.
La primera gran noticia es que en Windows Server 2008 viene disponible listo para usar en Administrative Tools. Asi que no hay excusas para no usarlo.
Ahi se puede crear, modificar, aplicar e importantisimo, se puede hacer rollback de una politica aplicada que no se comporta como uno espera. Lo bueno de esto es que al aplicar una politica el SCW guarda automaticamente la anterior, asi que es sumamente sencillo volver y recuperarse de una politica con problemas.
Luego el server donde estaremos trabajando, es importante recordar que para trabajar en unserver remoto se deben tener privilegios administrativos en ese server.
Luego el SCW recorrera la base de datos de su base de conocimiento con todos los roles que sabe configurar tildando como activos los roles que el server efectivamente esta cumpliendo.
Ahi uno puede seleccionar o deseleccionar roles a gusto. Luego lo mismo con las caracteristicas, opciones y servicios adicionales. Tambien uno puede decidir que hacer con el resto de servicios no detectados o entendidos por el SCW.
Una vez tomadas esas decisionens el SCW mostrara todos los servicios presentes, su estado actual y como quedaran luego de aplicar el SCW, notese la gran cantidad de servicios dehabilitados que ofrecera el SCW, dificilmente uno tome por si mismo la decision de deshabilitar todo eso, pero si el SCW lo dice ……
Luego el Firewall, al saber los roles y las caracteristicas es facil para el SCW saber que sockets debe dejar establecer, de todas formas uno puede ahi hacer ajustes finos.
Despues, registry settings, temas de autenticacion y cosas por el estilo
A continuacion la auditoria, es importante saber que pasa y quien lo hace, es ahi donde la auditoria hace la diferencia
Uno puede grabar las configuraciones de esa politica para luego reutilizarla y puede aplicarla en ese instante o despues.
Al aplicarla el SCW guardara automaticamente las configuraciones actuales para eventualmente poder hacer rollback con lo cual es super sencillo recuperarse.
Una vez que uno tiene la politica lista puede automatizar la aplicacion de estos templates usando scwcmd.
La gran verdad es que scwcmd es tan poderoso como el propio wizard ya que con el se puede entre otras cosas
Configurar uno o varios servidores con politicas de SCW. Analizar uno o muchos servidores comparandolos con politicas de SCW. Ver Resultados generados en HTML. Hacer rollback. Transformar politicas SCW en templates de seguridad soportados por Group Policies. Muchachos, no hay excusas para no usarlo. Es sin dudas una de nuestros mejores amigos a la hora de asegurar los servers. No trae riesgos y sabe tanto como nosotros sobre cada rol 
http://technet.microsoft.com/en-us/library/cc782586(WS.10).aspx
Bajo el título de “La nueva eficiencia”, Microsoft presenta los nuevos productos que se están lanzando al mercado: Windows 7, Windows Server 2008 R2, Exchange Server 2010, Microsoft Forefront, Office 2010, Sharepoint Server. Temas de interés como virtualización y mobilidad, entre otros. Y una apertura a cargo de Hernán Rincón, presidente de Microsoft Latinoamérica.
Ya pueden ingresar! Que lo disfruten!
Hace ya algunos años, les venimos hablando del compromiso que ha tomado Microsoft por la seguridad de los sistemas.
Y el objetivo en definitiva es seguir consolidando la solidez y seguridad del software que utilizamos todos: nosotros, ustedes, sus familias, mi familia, los usuarios, los clientes.
Al pie de esta nota, doy un poco más de contexto de la inversión de Microsoft en computación confiable y ciertos resultados. Pero lo que reamente me gratifica hoy, tras varios años de trabajo duro de grandes equipos, es el hecho de encontrar en la web revisiones y análisis de destacados especialistas reconociendo el alto grado de seguridad de nuestro nuevo sistema operativo: Windows 7.
Organizaciones como SEGU-INFO comentando en una nota sobre Windows 7 que
“resulta interesante evaluar cómo ha evalucionado el sistema operativo más utilizado del mundo, inseguro por diseño (DOS y Windows en sus primeras versiones) hacia un sistema usable y seguro desde su diseño” y evaluando algunas de sus características de seguiridad en el siguiente informe.
La blogósfera proponiendo temas como “ Los 10 mejores cambios de seguridad en Windows 7” en Geek Urbano.
O mencionando que “por lo que se puede ver, el diseño de seguridad del nuevo sistema resiste a las vulnerabilidades "clásicas" aún mejor que Windows Vista con la ventaja añadida de que por diseño Windows 7 no resulta tan molesto para el usuario con sistemas de seguridad como el UAC.” en base a un estudio realizado por Ed Bott (premiado escritor de tecnología) sobre la evolución de la seguridad de los últimos tres sistemas operativos de Microsoft.
“es un buen comienzo y una prueba de que el equipo de Windows 7 ha hecho un excelente trabajo en materia de seguridad e integridad del sistema como mínimo aprendiendo de los errores de diseño del pasado.” dice MuyWindows
“La apuesta desde Microsoft por la seguridad con Windows 7, se hace evidente” según Auditoría S21sec
Es una satisfacción enorme para cada una de las personas que todos los días trabajamos en Microsoft, ver que el proceso de computación confiable que lanzamos hace algunos años comienza a dar sus frutos cambiando la percepción de los analistas autorizados al comprobar que año a año la seguridad es prioridad numero uno.
Como dicen estos mismos analistas en sus papers: “La seguridad no es un estado, es un proceso” y como tal debe ser de evolución constante. Además, es responsabilidad de todos; no solo depende de la tecnología, sino también de los procesos y sobre todo de las personas. Por lo que también redoblaremos nuestro compromiso por brindar las herramientas, recursos y generar acciones de concientización que ayuden a usuarios finales y profesionales de IT a salir victoriosos en la batalla contra el malware y el resto de las amenazas que rondan la web.
-------------------------------------------------------------------------------
PARA DAR UN POCO DE CONTEXTO
Desde el año 2003, el desarrollo e implementación del ciclo de vida de desarrollo de seguridad de Trustworthy Computing, representa una importante inversión para Microsoft y cambia la manera de diseñar, desarrollar y probar el software, implementando un nuevo concepto llamado “Secure by Design, Secure by Default and Secure by Deployment (SD3)”. Incorpora actividades relacionados con la seguridad a cada una de las fases del proceso de desarrollo de software, para que pueda resistir ataques malintencionados.
El objetivo es reducir el número y la gravedad de las vulnerabilidades de seguridad del software que utilizamos.
Ya en el 2004 se empezaron a vislumbrar algunos resultados de la implementación del ciclo de vida de desarrollo seguro en Microsoft, como la reducción de boletines de seguridad publicados.
------------------------------------------------------------------------------
ALGUNOS RECURSOS DE SEGURIDAD
Portal principal de seguridad para Consumidor final
Portal principal de seguridad para Profesionales de IT
Newsletter de Seguridad
Microsoft Security Assesment Tool (MSAT). Evalúa los tipos de riesgo y las áreas más amenazadas de la compañía
Webcast en vivo y videos de seguridad
Información para Profesionales de IT sobre Windows 7