08 octubre 2012

¿Quién ha firmado en mi Windows?

Hace poco ha saltado a la palestra un incidente con un certificado digital propiedad de Adobe, que ha sido empleado para firmar ejecutables ajenos a su legítimo poseedor.

Windows emplea un sistema de firma digital integrado en sus ejecutables llamado 'Authenticode', este sistema permite crear una red de publicadores de confianza y que exista una trazabilidad en los ejecutables que viven en un sistema Windows. A cambio, Microsoft trata con más gentileza esos ejecutables debidamente firmados frente a otros que no lo están. En ciertos componentes es requisito indispensable el uso de authenticode para poder hacer uso de ellos.

A raíz del 'incidente Adobe', me asaltó una duda existencial ¿Quién ha firmado en mi Windows? ¿de quién tengo instalado software en mi sistema?.

Para resolver esta cuestión he creado una herramienta que permite escanear un sistema de ficheros e ir identificando los autores de esos ejecutables en base a su certificado digital authenticode.

El resultado: SigSpotter

Vamos a ver un ejemplo de uso:

Voy a escanear C:\ (donde tengo la partición de sistema) para averiguar de cuantos autores tengo ejecutables firmados:

>Sigspotter.exe c:\

SigSpotter 1.0

Security By Default http://www.securitybydefault.com

Publishers found:

Adobe Systems, Incorporated
Adobe Systems Incorporated.
Adobe Systems Incorporated
Lextek International
Apple Inc.
Microsoft Windows Component Publisher
Oracle America, Inc.
Microsoft Corporation
Microsoft Corporation
VMware, Inc.
ThinPrint AG
Cortado AG
ThinPrint GmbH
Dropbox
Hewlett-Packard Company
Hewlett Packard
Visan Industries
Kernow Software
Microsoft Corporation MSN
CACE Technologies, Inc.
Coupons, Inc.
Microsoft Windows Component Publisher
GEAR Software Inc.
Intel Corporation
Microsoft Windows
Macromedia, Inc.

Como se puede ver tras la ejecución de SigSpotter, aparecen un buen número de publicadores (lo siento, no he encontrado mejor traducción a 'publishers') que han firmado ejecutables que yo tengo en mi sistema.

De esa lista conozco a casi todos, pero hay algunos que ni me suenan, por ejemplo 'Cortado AG'.

SigSpotter, además de entregar una lista sumarizada de todos los publicadores, genera un fichero de log llamado sigspotter.log donde queda guardado el resultado del escaneo en formato 'raw', es decir todos los ejecutables comprobados y su publicador.

Eso me permite localizar rápidamente todos los ejecutables de 'Cortado AG' de la siguiente forma:

>type sigspotter.log | find /I "cortado"

File: c:\Archivos de programa\Archivos comunes\VMware\Drivers\Virtual Printer\TPOG3\i386\TPWinprn.dll --> Publisher: Cortado AG
File: c:\Archivos de programa\VMware\VMware Tools\TPAutoConnect.exe --> Publisher: Cortado AG
File: c:\Archivos de programa\VMware\VMware Tools\TPAutoConnSvc.exe --> Publisher: Cortado AG
File: c:\Archivos de programa\VMware\VMware Tools\TPVCGateway.exe --> Publisher: Cortado AG
File: c:\Archivos de programa\VMware\VMware Tools\TPVCGatewaydeu.dll --> Publisher: Cortado AG
File: c:\WINDOWS\system32\tprdpw32.dll --> Publisher: Cortado AG
File: c:\WINDOWS\system32\TPSvc.dll --> Publisher: Cortado AG
File: c:\WINDOWS\system32\TPVMW32.dll --> Publisher: Cortado AG
File: c:\WINDOWS\system32\spool\prtprocs\w32x86\TPWinPrn.dll --> Publisher: Cortado AG

Como vemos, aparece toda la lista de ejecutables que han sido firmados por 'Cortado AG', que parece estar relacionado con VMware o al menos instalado a través de los paquetes de software de VMware

La herramienta con su correspondiente código fuente se puede descargar desde aquí:


En sistemas Vista / 7 es preferible ejecutarla desde un cmd.exe elevado

17 comments :

Madrikeka dijo...

Yago no paras, eres un crack!
Un saludo.

HDCase dijo...

+1 Yago es un crack. Un enorme profesional. No entiendo como no tiene ya su empresa o está trabajando fuera.

Spawn dijo...

Muy buena aplicación, menuda maquina estas echo. Gran trabajo y muy buen Blog

masticover dijo...

Impresionante como siempre. Gracias por compartir la aplicación.
Saludos.

Angel Alvarez Nuñez dijo...

Muy buena Yago, ¿se pueden revocar "publicadores de confianza" del sistema?

Yago Jesus dijo...

Si, tu puedes abrir certmgr.msc y una vez ahí añadir los certificados que tu estimes oportunos a la lista de no confiables que, por diseño (y lógica), tiene precedencia a la de confiables.

Yago Jesus dijo...

¡¡ Gracias, espero sea útil !!

Yago Jesus dijo...

¡¡ Muchas gracias !!

Yago Jesus dijo...

Muchas gracias !! En realidad, busco excusas para perfeccionar mi Python ! :P

Yago Jesus dijo...

¡¡ Muchas gracias !!

neofito dijo...

Excelente la herramienta y encomiable tu trabajo pero, ¿que beneficios aporta frente a utilidades ya existentes como por ejemplo sigcheck de la suite de sysinternals?

Saludos

Yago Jesus dijo...

Principalmente la sumarización de publicadores, sigcheck (corrígeme si me equivoco) no sumariza ni entrega un listado agrupado de los publicadores, se limita a escanear el directorio y hacer un output similar al log que genera sigspotter.

Entonces, mi planteamiento inicial era 'scriptear' sobre sigcheck para hacer el sumarizado, pero al final decidí que era mas elegante hacer toda la funcionalidad en el script incluida la de sigcheck.

Estimo que es mejor eso que liberar el script y pedir a la gente que se descargue sigcheck para que funcione

neofito dijo...

Desde el momento que, no solo programas la herramienta, si no que la pones a disposicion de todo el mundo de forma altruista y, lo mas importante, incluyendo el codigo fuente, ya tiene mucha razon de ser. La pregunta no era malintencionada, solo se me escapaba la posibilidad de que agregases nuevas funcionalidades que no alcanzaba a ver.

Saludos

Yago Jesus dijo...

Claro que no ! No lo he visto como malintencionado, simplemente trataba de explicar el proceso mental que me llevó a eso. No pretendo competir con Sigcheck, cualquier cosa que venga de mark russinovich está claro que queda por encima de cualquier otra cosa que compita el funcionalidad.

Lo que yo buscaba era tener sumarizados los publicadores que tienen ejecutables en mi PC y sobre eso, poder localizar los ficheros.

j0seant dijo...

Authenticode está bien, pero no deja de ser un abuso
para acorralar cada vez más a
los creadores de Freeware/OpenSource o cualquier tipo de software barato. Los
certificados son carísimos, o al menos yo no he sido capaz de encontrar ninguno
a un precio decente. Estaría bien que sirvieran los típicos de la FNMT o el
DNIe, al fin y al cabo al firmarlo ya tienen a un responsable en caso de
problemas.

Angel Alvarez Nuñez dijo...

Muchas gracias Yago, excelente herramienta XD

JEGaditanus dijo...

Exelente herramienta, gracias!!!