A continuación podrán encontrar un pequeño análisis sobre la vulnerabilidad en la Shell de Windows que permite la ejecución de código remoto.

Microsoft describe en su respectivo aviso a la vulnerabilidad como la "causa de que Windows procesa incorrectamente los accesos directos en tal forma que código malicioso puede ser ejecutado cuando el ícono de un acceso directo especialmente manipulado es mostrado. Esta vulnerabilidad tiene una mayor probabilidad de ser explotada a través de discos removibles... la fuente del archivo es sinfocol.

El análisis y la exitosa reproducción de la vulnerabilidad se la debemos a ivanlef0u, quien en su publicación adjuntó los archivos necesarios para llevarla a cabo.

Lo primero que hicimos al descargar los archivos, fue analizar la estructura contenida por el archivo LNK.

En resumen, el formato se compone obligatoriamente por una cabecera llamada SHELL_LINK_HEADER y por unos datos extra llamados EXTRA_DATA.

Según unos flags contenidos en la cabecera (LinkFlags), el archivo deberá contener también:
:arrow: Una estructura LinkTargetIDList que contiene los enlaces hacia el archivo (Especificado por el bit HasLinkTargetIDList).
:arrow: Una estructura LinkInfo que contiene información necesaria para resolver el enlace de destino (Especificado por el bit HasLinkInfo).
:arrow: Cero o más estructuras StringData que se usa para transmitir información acerca de la interfaz de usuario y la identificación de la ruta (Especificado por diferentes bits en la cabecera).

El formato del archivo Shell Link Binary está conformado por la siguiente estructura Augmented Backus-Naus Form (ABNF):

Código: Seleccionar todo

SHELL_LINK        = SHELL_LINK_HEADER [LINKTARGET_IDLIST] [LINKINFO] [STRING_DATA] *EXTRA_DATA
LINKTARGET_IDLIST = IDList_Size IDLIST
IDLIST            = ItemIDList TERMINALID
ItemIDList        = *ITEMID
ITEMID            = ItemIDSize Data
TERMINALID        = %x00.00
EXTRA_DATA        = *EXTRA_DATA_BLOCK TERMINAL_BLOCK
TERMINAL_BLOCK    = %x00.00.00 %x00-03

El análisis del archivo proporcionado por ivanlef0u condujo al resultado que podrán detallar a continuación

Código: Seleccionar todo

SHELL_LINK
    SHELL_LINK_HEADER
        HeaderSize = 4C 00 00 00 (Normal)
        LinkCLSID  = 01 14 02 00 00 00 00 00 C0 00 00 00 00 00 00 46 (Normal)
        LinkFlags  = 81 00 00 00 (81 = 10000001)
            HasLinkTargetIDList         = 1 (Debe tener seguido de SHELL_LINK_HEADER una estructura LinkTargetIDList)
            HasLinkInfo                 = 0 (No hay presente una estructura LinkInfo)
            HasName                     = 0 (No hay presente una estructura NAME_STRING)
            HasRelativePath             = 0 (No hay presente una estructura RELATIVE_PATH)
            HasWorkingDir               = 0 (No hay presente una estructura WORKING_DIR)
            HasArguments                = 0 (No hay presente una estructura COMMAND_LINE_ARGUMENTS)
            HasIconLocation             = 0 (No hay presente una estructura ICON_LOCATION)
            IsUnicode                   = 1 (El link contiene cadenas codificadas con Unicode)
            ForceNoLinkInfo             = 0
            HasExpString                = 0
            RunInSeparateProcess        = 0
            Unused1                     = 0
            HasDarwinID                 = 0
            RunAsUser                   = 0
            HasExpIcon                  = 0
            NoPidlAlias                 = 0
            Unused2                     = 0
            RunWithShimLayer            = 0
            ForceNoLinkTrack            = 0
            EnableTargetMetadata        = 0
            DisableLinkPathTracking     = 0
            DisableKnowFolderTracking   = 0
            DisableKnowFolderAlias      = 0
            AllowLinkToLink             = 0
            UnaliasOnSave               = 0
            PreferEnvironmentPath       = 0
            KeepLocalIDListForUNCTarget = 0
        FileAttributes = 00 00 00 00
            FILE_ATTRIBUTE_READONLY             = 0
            FILE_ATTRIBUTE_HIDDEN               = 0
            FILE_ATTRIBUTE_SYSTEM               = 0
            Reserved1                           = 0
            FILE_ATTRIBUTE_DIRECTORY            = 0
            FILE_ATTRIBUTE_ARCHIVE              = 0
            Reserved2                           = 0
            FILE_ATTRIBUTE_NORMAL               = 0
            FILE_ATTRIBUTE_TEMPORARY            = 0
            FILE_ATTRIBUTE_SPARSE_FILE          = 0
            FILE_ATTRIBUTE_REPARSE_POINT        = 0
            FILE_ATTRIBUTE_COMPRESSED           = 0
            FILE_ATTRIBUTE_OFFLINE              = 0
            FILE_ATTRIBUTE_NOT_CONTENT_INDEXED  = 0
            FILE_ATTRIBUTE_ENCRYPTED            = 0
        CreationTime = 00 00 00 00 00 00 00 00
        AccessTime   = 00 00 00 00 00 00 00 00
        WriteTime    = 00 00 00 00 00 00 00 00
        FileSize     = 00 00 00 00
        IconIndex    = 00 00 00 00
        ShowCommand  = 01 00 00 00 (SW_SHOWNORMAL)
        HotKey       = 00 00
        Reserved1    = 00 00
        Reserved2    = 00 00 00 00
        Reserved3    = 00 00 00 00
    LINKTARGET_IDLIST
        IDListSize   = 36 01 (IDList de tamaño 310 bytes incluyendo TerminalID)
        IDList
            Item1 (20 bytes)
                ItemIDSize = 14 00
                ItemID     = 1F 50 E0 4F D0 20 EA 3A 69 10 A2 D8 08 00 2B 30 30 9D
            Item2 (20 bytes)
                ItemIDSize = 14 00
                ItemID     = 2E 1E 20 20 EC 21 EA 3A 69 10 A2 DD 08 00 2B 30 30 9D
            Item3 (268 bytes)
                ItemIDSize = 0C 01
                ItemID     = 00 00 00 00 00 00 00 00 00 00 00 6A 00 00 00 00 00 00 20 00 3A 00 43 00 3A 00 5C 00 64 00 6C 00 6C 00 2E 00 64 00 6C 00 6C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4D 00 69 00 73 00 65 00 73 00 20 00 E0 00 20 00 6A 00 6F 00 75 00 72 00 20 00 61 00 75 00 74 00 6F 00 6D 00 61 00 74 00 69 00 71 00 75 00 65 00 73 00 00 00 43 00 6F 00 6E 00 66 00 69 00 67 00 75 00 72 00 65 00 72 00 20 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 70 00 6F 00 75 00 72 00 20 00 64 00 69 00 73 00 74 00 72 00 69 00 62 00 75 00 65 00 72 00 20 00 61 00 75 00 74 00 6F 00 6D 00 61 00 74 00 69 00 71 00 75 00 65 00 6D 00 65 00 6E 00 74 00 20 00 6C 00 65 00 73 00 20 00 6D 00 69 00 73 00 65 00 73 00 20 00 E0 00 20 00 00 00
        TerminalID = 00 00
    EXTRA_DATA
        TerminalBlock = 00 00 00 00

Del análisis podemos observar que en la estructura LINKTARGET_IDLIST está contenida la estructura IDList que a su vez contiene uno o mas ItemID. Cada ItemID corresponde a un objeto del denominado espacio de nombres de la shell (Los objetos son identificadores únicos que representan en su mayoría carpetas y archivos físicos, y en su minoría carpetas virtuales como por ejemplo impresoras, objetos de red, aplicaciones del panel de control, la papelera de reciclaje, el escritorio, mis documentos, entre otros), por lo cual la secuencia ordenada de los ItemID tiene como propósito principal el servir como ruta para el sistema de archivos.

Al extraer lo respectivos objetos siguiendo el formato establecido por Microsoft, obtenemos el esquema que usa el acceso directo que corresponde.

Código: Seleccionar todo

{20d04fe0-3aea-1069-a2d8-08002b30309d} {21ec2020-3aea-1069-a2dd-08002b30309d} C:\dll.dll

Que puede traducirse a algo más humano como.

Código: Seleccionar todo

{my_computer} {control_panel} C:\dll.dll

Internamente la shell busca el punto principal de la librería y la ejecuta como se puede ver en el video adjunto al final de la publicación y en las diferentes imágenes que pueden encontrar a continuación


Imagen


Imagen


Imagen


Imagen



Aquí un video de la prueba de todo ello, para tenerlo más claro:


[Enlace externo eliminado para invitados]


Microsoft nos recomienda una forma muy simple de deshabilitar la vulnerabilidad, no es la forma correcta de hacerlo pero nos ayudará temporalmente a bloquear este tipo de ataques:

1. Clic en Inicio, clic en Ejecutar, digitar "Regedit" en la caja que se abre y luego dar clic en OK.
2. Localizar la siguiente clave del registro:

Código: Seleccionar todo

HKEY_CLASSES_ROOT\lnkfile\shellex\IconHandler
3. Clic en el menu Archivo y seleccionar Exportar.
4. En la caja de diálogo de exportación escribir LNK_Icon_Backup.reg y clic en Guardar.
Nota: Esto creará una copia del registro en la carpeta Mis documentos por defecto.
5. Selecciona el valor (Default) en la parte derecha del editor de registro. Presione Enter para editar el valor de la clave. Remover el valor, de forma que quede en blanco, y presionar Enter.
6. Localizar la siguiente clave del registro:

Código: Seleccionar todo

HKEY_CLASSES_ROOT\piffile\shellex\IconHandler
7. Clic en el menu Archivo y seleccionar Exportar.
8. En la caja de diálogo de exportación escribir PIF_Icon_Backup.reg y clic en Guardar.
Nota: Esto creará una copia del registro en la carpeta Mis documentos por defecto.
9. Selecciona el valor (Default) en la parte derecha del editor de registro. Presione Enter para editar el valor de la clave. Remover el valor, de forma que quede en blanco, y presionar Enter.
10. Desconecte y conecte a todos los usuarios, o reinicie el computador.


Un saludo
Muy interesante tio, si señor me gusta... lo miraré más lento!
Imagen

http://img844.imageshack.us/img844/8088/mujerrara.jpg
http://img715.imageshack.us/img715/5813/tigree.png
http://img830.imageshack.us/img830/6484/camaleon.png

http://img839.imageshack.us/img839/4944/tigrev2.jpg
http://img843.imageshack.us/img843/443/spidermanxn.png

http://www.youtube.com/watch?v=wHYYkciIKE0
Gracias Skillmax lo vi al video y algunos que estan en la lista y esta buena es técnica
Yo no puedo usar metasploit xq se quema mi maquina
El día que tenga con que voy a tocar estos temas
Imagen

Mostrar/Ocultar

muy buen texto realmente

Código: Seleccionar todo

{******************************************************************************}
{** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING  **}
{******************************************************************************}
{**                                                                          **}
{** The prototypes, declarations and information in this file has been       **}
{** compiled from various sources as well as through reverse engineering     **}
{** techniques. We make no guarantee as to the correctness of the contents.  **}
{** Caution is recommended, USE AT YOUR OWN RISK.                            **}
{**                                                                          **}
{******************************************************************************}
Está muy bien el informe amigo Skillmax pero esta "vulnerabilidad" se conoce hace mucho tiempo por aquellos que utilizamos Unix (la fuente en que te basas no ha descubierto nada nuevo) ... ni tampoco puede solucionar el problema
De todas formas supongo que en algunos ordenadores funcionará esa solución (no me extraña nada ya...) ...

Salu2
Imagen
Todos somos muy ignorantes, lo que ocurre es que no todos ignoramos lo mismo.-Albert Einstein
No nos atrevemos a muchas cosas porque son difíciles, pero son difíciles porque no nos atrevemos a hacerlas.-Séneca

http://iFile.it/ 100% FREE /Reanuda descargas/Usa aceleradores de descargas/ No límita hora ni país / Dos descargas paralelas/NO banners/No Adwares
Basta de filehosts restrictivos: NO a rapidshare, NO a megaupload, NO a multiupload,... decantemonos x FileHostings que den más beneficios!!!
Responder

Volver a “General”