¿Qué es Get-AuthenticodeSignature?
Get-AuthenticodeSignature es un cmdlet de PowerShell que permite verificar la firma digital de un archivo. Esta firma permite comprobar:
- Quién publicó el archivo.
- Si el archivo ha sido modificado después de ser firmado.
- Si la firma es válida y confiable.
Es una herramienta muy útil para administradores de sistemas y profesionales de seguridad cuando necesitan validar la procedencia de ejecutables, scripts o bibliotecas.
Sintaxis básica
Get-AuthenticodeSignature -FilePath "C:\Ruta\Archivo.exe"
Ejemplo:
Get-AuthenticodeSignature -FilePath "C:\Program Files (x86)\Steam\steam.exe"
Campos más importantes
La salida suele contener información como:
SignerCertificate Status
----------------- ------
CN=Valve Corp. Valid
Status
Los valores más comunes son:
| Estado | Descripción |
|---|---|
| Valid | La firma es válida. |
| NotSigned | El archivo no está firmado. |
| UnknownError | Ocurrió un error al validar la firma. |
| HashMismatch | El archivo fue modificado después de ser firmado. |
| NotTrusted | La firma existe, pero no es de confianza para el sistema. |
Ejemplo 1: Verificar Steam
Get-AuthenticodeSignature `
"C:\Program Files (x86)\Steam\steam.exe"
Resultado esperado:
Status : Valid
Ejemplo 2: Verificar un instalador descargado
Get-AuthenticodeSignature `
"C:\Descargas\WindowsAdminCenter.msi"
Si el resultado es:
Status : Valid
significa que el instalador conserva una firma digital válida.
Ejemplo 3: Ver únicamente el estado
(Get-AuthenticodeSignature "archivo.exe").Status
Salida:
Valid
Ejemplo 4: Mostrar el editor del archivo
(Get-AuthenticodeSignature "archivo.exe").SignerCertificate.Subject
Ejemplo de salida:
CN=Microsoft Corporation,
O=Microsoft Corporation,
L=Redmond,
S=Washington,
C=US
Ejemplo 5: Revisar varios ejecutables
Get-ChildItem "C:\Tools" -Filter *.exe |
ForEach-Object {
[PSCustomObject]@{
Archivo = $_.Name
Estado = (Get-AuthenticodeSignature $_.FullName).Status
}
}
Salida:
Archivo Estado
------- ------
tool1.exe Valid
tool2.exe NotSigned
tool3.exe Valid
Ejemplo 6: Encontrar archivos sin firma
Get-ChildItem "C:\Tools" -Filter *.exe |
Where-Object {
(Get-AuthenticodeSignature $_.FullName).Status -eq "NotSigned"
}
Este comando ayuda a identificar ejecutables que carecen de firma digital.
Ejemplo 7: Exportar resultados a CSV
Get-ChildItem "C:\Tools" -Filter *.exe |
ForEach-Object {
[PSCustomObject]@{
Archivo = $_.Name
Estado = (Get-AuthenticodeSignature $_.FullName).Status
}
} | Export-Csv "C:\Temp\Firmas.csv" -NoTypeInformation
Interpretación en un contexto de seguridad
Cuando Microsoft Defender reporta una amenaza asociada a un proceso, una de las primeras verificaciones recomendadas es validar la firma digital del ejecutable:
Get-AuthenticodeSignature `
"C:\Program Files (x86)\Steam\steam.exe"
Si:
- El estado es
Valid. - El certificado pertenece a por ejemplo a
Valve Corp.. - El archivo se encuentra en la ruta oficial de instalación.
Entonces aumenta considerablemente la probabilidad de que se trate de un falso positivo o de una detección basada en comportamiento y no de un ejecutable malicioso reemplazado.
Buenas prácticas
- Verificar siempre la firma de software descargado desde Internet.
- No confiar únicamente en el nombre del archivo.
- Validar la firma cuando Defender detecte comportamientos sospechosos.
- Combinar esta validación con análisis antivirus y revisión de hashes.
- Revisar periódicamente herramientas administrativas y scripts ejecutados en servidores.
Resumen
Get-AuthenticodeSignature es una herramienta sencilla pero extremadamente útil para validar la autenticidad de archivos en Windows. Permite comprobar si un archivo está firmado, quién lo firmó y si la firma sigue siendo válida, convirtiéndose en una excelente primera línea de investigación ante alertas de seguridad o software sospechoso.
