windows 7, compatibilidad de aplicaciones
Post on 07-Jul-2015
6.320 Views
Preview:
DESCRIPTION
TRANSCRIPT
Compatibilidad de Aplicaciones con Windows 7 Windows 7 SuperHero Technical Readiness
Michał Morciniec , micham@microsoft.com
Microsoft Ibérica
Pocos cambios: la mayoría de software para Windows Vista funcionará en Windows 7 – las excepciones posibles – código de bajo nivel (AV, Cortafuegos,
Aplicaciones de procesamiento de Imágenes, etc). Hardware que funciona bien en Windows Vista funcionará bien en Windows 7 .
Windows 7
Pocos Cambios: Enfoque en rendimiento y estabilidad
Windows 7 Comparte Base con
Windows Vistase mantiene la inversión en Windows Vista
Profundos Cambios: Nuevos modelos de seguridad, drivers, despliegue, y red
Etapas de Compatibilidad de Aplicaciones con SS.OO.
• Diseñoconocimiento de problemáticas de SS.OO.
• Pruebas
ejecutar aplicación en el nuevo SS.OO.
utilizar herramientas de pruebas
• Remediación
cambio de diseño del código
parches de compatibilidad (shimming)
Windows XP Mode en W7
• Certificación
obtener Windows 7 Logo
• Publicación
Publicar aplicación en Windows 7 Compatibility
Center
Cambios: Vista -> Windows 7
Windows Vista es muy compatible con Windows 7 pero se han introducido cambios en:
• Versión de Sistema Operativo• Cambio en Binarios de Bajo Nivel• Alta Resolución de Pantalla (DPI)• Cadena de Agente de Usuario en Internet Explorer 8
Otras Regresiones:• Eliminación de Windows Mail• Eliminación de Windows Movie Maker• National Language Support (NLS) – Cambio del Orden• Eliminación de Reflexión de Registro Windows• Eliminación de Driver WPDUSB.SYS para Windows Portable Devices• Microsoft Message Queuing (MSMQ) - SHA-2 es un algoritmo por
defecto para el calculo de Hash
4
Cambios: XP->Windows 7
•Programas diseñados para XP serán impactados por nuevo modelo de
seguridad de Windows 7:
• User Account Control (UAC) – medidas de seguridad y protección de SS.OO.
• Aislamiento de Servicios
• Virtualización de registro y sistema de ficheros
Además
•Todos los cambios Vista->Windows 7
Aplicación Incompatible con Windows 7
Vista, XP - Windows 7
• Cambio de Versión de Sistema Operativo
Números de Versión de SS.OO. Windows
Operating System Version Number Release Date
Windows 1.0 1.04 1985
Windows 2.0 2.11 1987
Windows 3.0 3.00 1990
Windows NT 3.1 3.10.528 1993
Windows for Workgroups 3.11 3.11 1993
Windows NT Workstation 3.5 3.5.807 1994
Windows NT Workstation 3.51 3.51.1057 1995
Windows 95 4.0.950 1995
Windows NT Workstation 4.0 4.0.1381 1996
Windows 98 4.1.1998 1998
Windows 98 Second Edition 4.1.2222 1999
Windows Me 4.90.3000 2000
Windows 2000 Professional 5.0.2195 2000
Windows XP 5.1.2600 2001
Windows Vista 6.0.6000 2006
Windows 7 6.1.???? ????
Versión de Sistema Operativo
Número de Versión Interno de Windows 7 es 6.1.
• dwMajorVersion igual como en Vista
• dwMinorVersion es diferente
Problema
• Cualquier aplicación que comprueba el número de versión obtiene valor más
alto que quizás no puede procesar.
• Instaladores de Aplicaciones pueden fallar
• Lógica de aplicación puede prevenir el arranque de la misma.
Sugerencia de Solución
• Comprueba funcionalidad en vez de versión
• Aplique Parche de Compatibilidad “version lie” ( layer o shim)
• Compara para SS.OO. posteriores (>) a la versión compatible
9
Porque Versión 6.1?
Muchas aplicaciones solo comprueban dwMajorVersion – Compatibilidad con
Vista
Algunas aplicaciones han intentado la comprobación pero la han implementado
INCORRECTAMENTE:
• if (majorVersion >= 5 && minorVersion >= 1)
OS Version Major >= 5 Minor >= 1 Result Desired?
Windows 2000
5.0 T F F Yes
Windows XP 5.1 T T T Yes
Windows Vista
6.0 T F F NO
Windows 7 6.1 T T T Yes
Mejores Prácticas para Comprobaciones de Versión de SS.OO
No hacer comprobaciones para igualdad (=)
Comprobar para versión XP o posterior (>=5.1)
Comprobar funcionalidad en vez de versión
Seguir ejemplos de código (managed/C++) de
Windows 7 Training Kit for Developer
Puede haber excepciones – certificación para versión de SS.OO determinada
XP - Windows 7
• UAC
Tipos de Cuentas de Usuario
Built-in (local machine) Administrator
• Deshabilitado por defecto
• Ejecuta con “Full token” de Administrador
Protected Administrator
• Usuario en grupo de Administradores
• Ejecuta con “Split token”
Standard User or Limited User Account
• Ninguno de los previamente mencionados
• No tiene privilegios administrativos
13
Control de Cuenta de Usuario (UAC)– Why?
•Aplicaciones ejecutan como Standard User por defecto
•Que puede hacer Standard User?
No Permitido
• Instalar aplicaciones
• Cambiar componentes de SS.OO
• Cambiar configuración de máquina
(machine settings)
• Privilegios de administrador
Permitido
• Ejecutar la mayoría de aplicaciones
• Cambiar configuración de usuario
(per user settings)
UAC -Arquitectura
“Standard User” Token
Admin TokenAbby
Admin Token
AppAdmin Token
Child App
Standard User
Token
App
Standard User
Token
Child AppStandard User
Token
Token Partido (“Split-Token”)
•Tiene menos privilegios la mayoría del tiempo
•Permite “elevar” proceso para conseguir privilegios cuando son necesarios
•Aplica a logons interactivos
Token “partido”
Dialogo de Consentimiento (“Consent UI”)
Componente de SS.OO.
Aplicación sin Firma
Aplicación Firmada
Dialogo de Credencial (“Over The Shoulder”)
Control de Configuración de Windows 7 UAC
Configuración:
1. Como en Vista
2. Excluye binarios de SS.OO.
3. Como 2 + control aparece
en Escritorio del Usuario
4. UAC deshabilitado
20
Windows 7 UAC y “Auto-Elevation”
Configuración 2 y 3 hace uso de “auto elevación”
• Binarios firnados con Windows Publishing Certificate
• En ubicación “segura”
– %SystemRoot%\System32
– Algunas subcarpetas de %ProgramFiles% (Windows Defender, Windows Journal)
• Un Listado “especial” de ejecutables (Pkgmgr.exe, Migwiz.exe)
21
UAC y Política de Seguridad (W7 y Vista)
Cierta funcionalidad de UAC puede ser controlada con Políticas de Seguridad
• Si Diálogos de UAC se muestran para Admins/Standard Users
• Si funciona heurística de detección de Instalador
• Si Diálogos de UAC aparecerán en Escritorio Seguro
• Virtualización de Registro y Sistema de Ficheros
Ex. : Deshabilitar Diálogo OTC para Usuario Estandard
(las peticiones de “elevación será automáticamente denegadas)
22
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
Objetivo del Interfaz de Usuario: Sencillo y Predecible
1 Diseña la aplicación para “Standard User”
2 Claramente identifica tareas administrativas
• Asegura que usuarios estándar puedes ser productivos
• Identifica las tareas administrativas con “shield”
Interfaz de Usuario: Escudo
• Se adjunta a los controles para indicar “elevación” es imprescindible para
utilizar la funcionalidad
• No tiene estado ( “hover”, “disabled” etc.)
• No memoriza/causa “elevación” de proceso
• Programada mediante:
• IDI_SHIELD recurso de icono
• BCM_SETSHIELD mensaje de Windows para botones
Más información:
Enabling UAC Elevation in .Net applications
Ejemplo de Uso del Escudo
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Mandatory Integrity Control (MIC)
•Modelo tradicional de seguridad desde NT se basa en el “token” del proceso
•Windows Vista/Win7 mejora seguridad con MIC:
• Cada proceso tiene “nivel MIC”• Todos los recursos de SS.OO tienen “nivel MIC” (“Medium” por defecto)
•Los cuatro niveles:
• 0: Low (IE with Protected Mode On)• 1: Medium (Standard User)• 2: High (Elevated User)• 3: System (System Services)
MIC y Recursos
•Niveles MIC aplican a:
• Procesos
• Objetos
• Componentes COM
• Servicios
• Sistema de ficheros
• Claves de registro
•Para visualizar nivel MIC utiliza “accesschk –i” (Sysinternals)
•IE actualmente es la única aplicación con Nivel MIC Bajo
•Todos los recursos de IE también tienen Nivel Bajo
Resumen MIC Simplificado
Objetos pueden tener Nivel MIC
• Almacenado en el descriptor de seguridad (Security Descriptor)
Procesos ejecutan con cierto Nivel MIC (IL – Integrity Level)
• Almacenado en el “token” de acceso (Access Token)
Un proceso no puede acceder al objeto si su Nivel MIC < Nivel MIC del objeto
• Forma parte de comprobación del acceso
MIC en más Detalle - Politicas
Cada objeto securizable tiene Nivel y Política MIC
Tipos de Políticas:
• “No-Write-Up”: Nivel más bajo no puede escribir al objeto• “No-Read-Up”: Nivel más bajo no puede leer el objeto• “No-Execute-Up”: Nivel más bajo no puede ejecutar el objeto
Niveles no especificados = “Medium” + “No-Write-Up”
Procesos son “No-Write-Up” + “No-Read-Up”
MIC y Pruebas de Acceso
Nivel de Proceso y típo de accesso solicitado se comprueban con Nivel del Objeto
• If Nivel de Proceso >= Nivel de Objeto, realiza prueba DACL (access control list)• If Nivel de Proceso < Nivel de Objeto ENTONCES
No Write Up No Read Up No Execute
Write
Read
Execute
Y política de objeto es…
Si el tipo de
acceso
solicitado
incluye
Ejemplo de Comprobación de Acceso con MIC
Request Access:
Read + Write
Request Access:
Read + Write
R+W
Internet Explorer
[LOW IL]
MS Money
[Medium IL]
Toby’s
Startup
Folder
Medium (NW)
MIC
User Interface Privilege Isolation (UIPI)
UIPI- proceso con Nivel MIC más bajo no puede
• Validar “window handle” creado por el proceso con nivel más alto• Hacer llamadas SendMessage o PostMessage a las ventanas creadas por el proceso
con nivel más alto• Utilizar “thread hooks” para attachar a los procesos más privilegiados• Utilizar “journal hooks” (SetWindowsHookEx) para monitorizar dichos procesos
Para permitir que Windows Message pasa entre Niveles distintos MIC levelsutiliza
ChangeWindowMessageFilter(message, SGFLT_ADD);
o
marca UIAccess=true en el manifest (vease manifiesto de osk.exe)
Consulta Windows 7 Training Kit for Developer para el código de ejemplo.
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Virtualización
Virtualización de Sistema de Ficheros y Claves de Registro
• Facilita compatibilidad de aplicaciones “legacy”
• No hay garantía de que exista en futuros SS.OO.
• Funciona con aplicaciones interactivas de 32-bit (no “elevadas” acceden a recursos protegidos
• Con claves/ficheros donde Admin tiene acceso
• HKLM\Software; • %SystemDrive%\Program Files• %WinDir%\System32
• Serán redirecionados a:
• HKCU\Software\Classes\VirtualStore• %LocalAppData%\VirtualStore\
• Virtualización elimina necesidad de “elevar”
• Escrituras a HKLM van a HKCU• Escrituras a carpetas de SS.OO re-direccionados a repositorio
“per-usuario”• Diferente de redirección de registro para 32-bit en máquinas x64,
(WOW64…)
Virtualización de Sistema de Ficheros y de Registro
•Virtualización de Claves de Registro NO FUNCIONA
• Para procesos 64 bits
• Procesos que impersonan usuarios
• Procesos que especifican requestedExecutionLevel en sus manifiestos
• Procesos no interactivos (servicios Windows)
• Virtualización de ficheros no funciona para ejecutables
• aspx, .bin,.cmd,.exe, .hlp, .msi, .ocx, .sys, .tlb, .wsh
Virtualización y Windows Explorer
Virtualización
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Virtualización
WRP
WRP (Windows Resource Protection)
Mecanismo general que protege ciertos recursos de SS.OO., e.g.
Windows\system32\kernel32.dll
• NT SERVICE\TrustedInstaller tiene Full Access
– SfcIsFileProtected() permite detectar clave de registro protegida por WRP
– SfcIsFileProtected() permite detectar fichero protegido por WRP
Windows Module Installer (TrustedInstaller.exe) es utilizado para actualizar
componentes de SS.OO.
• ISV no disponen del interfaz para interactuar con el
Local Administrator puede tomar “ownership” del recurso protegido eliminando
WRP
• WRP no es medida de seguridad
Aplicaciones /Instaladores
• No deberían modificar recursos protegidos por WRP.
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Virtualización
WRP
Ubicación de Carpetas
Ubicación de Carpetas
Datos de Usuario se almacenan en : \Users\%username%\
Carpetas Pictures, Music, Documents, Desktop, y Favorites están debajo
Prefijo “My“ eliminado (en Windows 7 Explorerlo muestra…)
“All Users” “Public” o “\ProgramData”
Dónde Debería Almacenar mis Datos?
Shared Data User Data
Show in Explorer FOLDERID_Public FOLDERID_Documents
Hide in Explorer / Local FOLDERID_ProgramData FOLDERID_LocalAppData
Hide in Explorer / Roam - FOLDERID_RoamingAppData
See:Where Should I Write Program Data Instead of Program Files?
Constantes SHGetKnownFolderPath
Mejores Prácticas para Ubicación de Carpetas
No utilizar rutas absolutas
• AppVerifier incluye una prueba
Script: utilizar variables de entorno
Código “Unmanaged” (C, C++)
• ShGetFolderPath function (CLSID_...)• SHGetKnownFolderPath (FOLDERID_...)
Código “Managed” (C#, VB.NET)
• System.Environment.GetFolderPath() • Microsoft.VisualBasic.FileIO.SpecialDirectories• My.Computer.FileSystem.SpecialDirectories
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Virtualización
WRP
Ubicación de Carpetas
Manifiesto de Aplicación
Aplicaciones diseñadas para Vista /Windows 7
•Aplicaciones diseñadas para Vista/W7 embeben un “XML manifest”
•Elemento estándar de Proyecto de VS 2008
•Deshabilita “mitigaciones” como Virtualización
•Manifiesto declara RequestedExecutionLevel:
asInvoker Lanza con el mismo “token” que proceso “padre”
highestAvailable Lanza con parte del “token” más “alta” de la que dispone el usuario
requireAdministrator Lanza con parte del “token” más “alta” del usuario que tiene que ser miembro del grupo Administrators
Ejemplo de Manifiesto XML
MyAdminApp.Exe.Manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.0.0.0" processorArchitecture="X86"name="MyAdminApp" type="win32"/>
<!-- Identify the application security requirements. --><trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security><requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator“uiAccess=“false"/>
</requestedPrivileges></security>
</trustInfo></assembly>
Comprobación/solución de Problemática UAC
•Si haces lo siguiente…
•Escribes a Program Files, Windows, System32, HKLM/Software, o Root (c:)?
•Creas objetos “globalmente” (a nivel de sistema)
•Utilizas Mensajes Windows entre Niveles MIC distintos de procesos
•Haz una prueba
• Ejecuta la aplicación como Admin
• Prueba la aplicación con UAC deshabilitado
•Herramientas de utilizad
• Process Monitor
• Standard User Analyzer
XP - Windows 7
• UAC
Interfaz de Usuario -UI Shield
MIC
Virtualización
Ubicación de Carpetas
• Aislamiento de Servicios Windows (Session 0)
Servicios Windows y Sesión 0
En Windows® XP, servicios de Windows y Aplicaciones de usuarios ejecutaban
conjuntamente en Sesión 0.
Desde Windows Vista®, servicios Windows están aislados en Sesión 0
Aplicaciones de usuarios ejecutan en Sesión 1, Sesión 2, etc.
(“fast user switching” y Terminal Services)
Separación de Sesiones
Session 0 in Windows XP / Windows Server 2003
Session 0 / Session 1 in Windows Vista+
Problemática Relacionada
Mensajes de Windows no pueden cruzar límites del Desktop (y por lo tanto sessión)
Servicios Windows no pueden mostrar Interfaz de Usuario en el Desktop de Usuario(está en la sesión distinta!)
Control de acceso (MIC) añade complejidad a posibles soluciones.
Como mostrar Interfaz de Usuario desde Servicio Windows
1. Mecanismo de “mitigación” avisa al usuario(si el servicio es “interactivo”)
• Interactive Service Detection Service (parado por defecto)
• Inconveniente para Usuario
2. Para mensajes simples
• utiliza TS API WTSSendMessage
3. Para lanzar Interfaz Complejo
• utiliza CreateProcessAsUser
Recursos para Partners
• ACF
• Recursos de Ayuda en temas de Compatibilidad
• Curso de formación para Partners
• Otros recursos
Application Compatibility Factory (ACF)
• 5 Partners ya formados• Tienen conocimiento profundo en pruebas de compatibilidad• Contacto: Wipro, Infosys, TCS (Tata), Satyam, HP, Sogeti• http://technet.microsoft.com/en-us/windows/bb510132.aspx
ACF Training Site
• Material de formación para Partners que quieren participar en ACF• ACT 5.5 + Documentación+ Webcasts + Presentaciones
58
Application Compatibility – Formación para Partners
Programa de formación de 12 horas en inglés a nivel 300 que incluye
• UAC Overview
• Advanced UAC and Windows Resource Protection
• IE in Protected Mode
• Versioning, Folder Locations, Session 0 Isolation
• ACT 5.5 Internals
• Shims and Compatibility Administration
• LUA Tools and Solutions
• Sysinternals Tools and IE Compatibility Test Tool
• Exam
59
Ayuda en Resolución de Problemas de Compatiblidad de Aplicaciónes
Partner Online Technical Communities (OTC)
• Windows 7 Application Compatibility OTC
• https://partner.microsoft.com/US/40014662
• Primera respuesta en 8 horas
• Disponible en Castellano
Foros de Discusión Públicos
• MSDN Application Compatibility for Windows Development
• Technet Windows 7 Application Compatibility Forum
W7 ISV Remediation Workshops DPE
• Aplica en https://www.isvappcompat.com/Default.aspx
• Evento presencial 2-3 días
• Se puede traer la aplicación para remediarla
60
Ejemplos de código - Windows 7 Training Kit for Developers
Developer Kit contiene laboratorios “hands-on”+ ejemplos de código (managed
/unmanaged) sobre siguiente problemática
• OS Version Checks
• Session 0 Isolation
• User Interface Process Isolation (MIC)
• Installer Detection
• High DPI
• Data Redirection(File and Registry Virtualization)
61
Otros Recursos Públicos
Cookbooks – detallan problemas de compatibilidad
• “Application Compatibility Cookbook”• “Windows 7 Application Quality Cookbook”
MSDN Application Compatibility: http://msdn.microsoft.com/en-us/windows/aa904987.aspx
TechNet Windows Application Compatibility: http://technet.microsoft.com/en-us/desktopdeployment/bb414773.aspx
Sysinternals http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
Developer Guides – guías de programación genéricas
• Windows 7 UX Guide• Windows 7 Developer Guide
62
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other
countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentations. Because Microsoft must respond
to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of
this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Contacto:
micham@microsoft.com
Tel. 902 197 198
sptas@microsoft.com
(buzón de servicio para Partners)
top related