El comportamiento de Outlook es diferente para distintos tipos de vínculos. Por ejemplo, para enlaces que comienzan con http:// o https://, el cliente de correo electrónico enviará el enlace al navegador predeterminado instalado en el sistema operativo. Sin embargo, si un correo electrónico incluye enlaces para otros controladores de protocolo, por ejemplo skype:, el cliente de correo electrónico mostrará una advertencia de que el enlace podría no ser seguro antes de permitir al usuario continuar y reenviar la solicitud a la aplicación Skype instalada localmente, que es la Controlador de protocolo registrado para Skype: enlaces.
Otro protocolo de enlace común es file://, que normalmente llamaría a una aplicación externa para representar el archivo según su formato. Sin embargo, Microsoft ha establecido intencionalmente una restricción para no permitir la apertura de enlaces de archivos remotos; por ejemplo, archivos alojados en una red remota compartida potencialmente a través de Internet.
Sin embargo, los investigadores de Check Point descubrieron que esta restricción se podía evitar agregando el carácter «!» seguido de una cadena aleatoria al final de la URL. Por ejemplo, file:///\\10.10.111.111\test\test.rtf no funcionaría, pero file:///\\10.10.111.111\test\test.rtf!algo funcionaría y se pasaría el archivo a Microsoft Word, que es el controlador registrado para la extensión de archivo .rtf.
La razón por la que esto funciona es porque la parte !algo hace que Outlook trate el vínculo como un vínculo de apodo en el contexto del Modelo de objetos componentes (“COM”) en Windows, donde la parte después de ! se utiliza para buscar un objeto COM. El modelo de objetos componentes es una interfaz binaria a través de la cual diferentes componentes de software pueden comunicarse entre sí. Desde 1993 ha servido como base para diferentes tecnologías como ActiveX o Microsoft Object Linking & Embedding (OLE).
En esencia, Outlook elimina el controlador de protocolo file:// y analiza el enlace utilizando la API “ole32!MkParseDisplayName()”. Esto, a su vez, lo trata como un apodo compuesto: FileMoniker es \\10.10.111.111\test\test.rtf y ItemMoniker es «algo».
Debido a que FileMoniker tiene la extensión .rtf, la API llamará a un servidor COM que maneja esa extensión, que resulta ser Microsoft Word, que se ejecuta como un servidor COM en segundo plano sin la GUI. Al recibir la solicitud, Word abre el archivo remoto y luego intenta buscar un objeto COM para el «algo» ItemMoniker.