¿Cómo verificar los certificados raíz de autoridad peligrosa y qué hacer con ellos?

4

Comencé mi exploración después de ver que un programa agrega algunas líneas a certmgr.msc (la PC no estaba conectada a Internet, por lo que no creo que MS pueda descargar este certificado). El instalador del programa contiene este archivo .p12 , Virustotal ays está claro, pero hice algo más de investigación. Revisé mi tienda de certificados usando

sigcheck -tuv

Se encontró un certificado bastante extraño:

User\Root:
   Google
    Cert Status:    Valid
    Valid Usage:    All
    Cert Issuer:    Google
    Serial Number:  00 CD 0B 32 EF B4 F4 CD 13
    Thumbprint: 33FCD70343BBE07972D73CDEFDEB3C9F4DCEFE28
    Algorithm:  sha1RSA
    Valid from: 0:05 22.07.2015
    Valid to:   0:05 21.07.2020

Hay información demasiado baja sobre

  

Huella digital: 33FCD70343BBE07972D73CDEFDEB3C9F4DCEFE28

en Internet, pero encontré algunos enlaces interesantes (lo siento, soy un novato en este foro y no puedo publicar más de 2 enlaces, publiqué otros como citas para este tema).

Ahora, estoy muy asustado y confundido. No entiendo qué tipo de peligro crea. Y no sé qué hacer con esto. Estoy absolutamente seguro de que no instalé este certificado manualmente. El mismo certificado se encontró en otra computadora en mi red local.

Necesito agregar que también revisé mi computadora con varios escáneres AV "a pedido" (CureIt, KVRT), no vieron ningún problema en este certificado.

El resultado de la ejecución certutil -verify -urlfetch es

Поставщик:
    CN=Google
    O=Authenticode
    L=Silicon Valley
    C=US
  Хэш имени (sha1): 407d40e1a0d9d25bb8196644ddfda715a850b236
  Хэш имени (md5): bf22e164aaf0a93af128e23e7a26f74c
Субъект:
    CN=Google
    O=Authenticode
    L=Silicon Valley
    C=US
  Хэш имени (sha1): 407d40e1a0d9d25bb8196644ddfda715a850b236
  Хэш имени (md5): bf22e164aaf0a93af128e23e7a26f74c
Серийный номер сертификата: cd0b32efb4f4cd13

dwFlags = CA_VERIFY_FLAGS_CONSOLE_TRACE (0x20000000)
dwFlags = CA_VERIFY_FLAGS_DUMP_CHAIN (0x40000000)
ChainFlags = CERT_CHAIN_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT (0x40000000)
HCCE_LOCAL_MACHINE
CERT_CHAIN_POLICY_BASE
-------- CERT_CHAIN_CONTEXT --------
ChainContext.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)

SimpleChain.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)

CertContext[0][0]: dwInfoStatus=10c dwErrorStatus=0
  Issuer: CN=Google, O=Authenticode, L=Silicon Valley, C=US
  NotBefore: 22.07.2015 0:05
  NotAfter: 21.07.2020 0:05
  Subject: CN=Google, O=Authenticode, L=Silicon Valley, C=US
  Serial: cd0b32efb4f4cd13
  28fece4d9f3cebfdde3cd77279e0bb4303d7fc33
  Element.dwInfoStatus = CERT_TRUST_HAS_NAME_MATCH_ISSUER (0x4)
  Element.dwInfoStatus = CERT_TRUST_IS_SELF_SIGNED (0x8)
  Element.dwInfoStatus = CERT_TRUST_HAS_PREFERRED_ISSUER (0x100)
  ----------------  Сертификат AIA  ----------------
  Отсутствуют URL "Нет" Время: 0
  ----------------  Сертификат CDP  ----------------
  Отсутствуют URL "Нет" Время: 0
  ----------------  OCSP сертификата  ----------------
  Отсутствуют URL "Нет" Время: 0
  --------------------------------

Exclude leaf cert:
  0907d8af90186095efbf55320d4b6b5eeea339da
Full chain:
  28fece4d9f3cebfdde3cd77279e0bb4303d7fc33
------------------------------------
Проверенные политики выдачи: Все
Проверенные политики применения: Все
Не удалось проверить состояние отзыва сертификата
CertUtil: -verify — команда успешно выполнена.

(Idioma del sistema: rus)

Un poco más tarde ... Encontré otro certificado "extraño", "Dekart Certificate Authority", hay información muy baja sobre ellos, pero algunos sitios señalan que este es un WebMoney adicional ( WM Transfer Ltd, certificado analógico ruso de PayPal). Ok, pero ¿por qué sigcheck detecta el certificado principal de WebMoney como ausente en la lista de confianza de MS, pero no detecta Dekart? Esta es una especie de mística. En términos generales, ¿dónde puedo ver esta lista en forma de texto simple?

    
pregunta WallOfBytes 06.08.2017 - 14:51
fuente

3 respuestas

4

Sí, eso me parece falso, estoy de acuerdo con tu enlace. Estas líneas en particular son sospechosas:

Google
  Cert Issuer:    Google
  Algorithm:  sha1RSA
  Valid from: 0:05 22.07.2015
  Valid to:   0:05 21.07.2020

Analicemos esto y comparémoslo con el certificado presentado cuando navego a google.com .

CA raíz

Lo que publicaste es un certificado de CA raíz autofirmado, podemos decirlo porque subject y issuer son lo mismo

Google
  Cert Issuer:    Google

Google ahora posee su propia CA raíz; parece que tienen una CA intermedia fuera de una raíz de GeoTrust:

Algoritmo

Algorithm:sha1RSA

Sí,esoestámal.GooglehaestadolibrandolaguerraparaeliminarSHA1deInternetdesdeaproximadamenteel2015: a partir de enero de 2017, el navegador Google Chrome ya no muestra el icono de candado verde para los certificados SHA1 , y en Febrero de 2017 Los investigadores de Google demostraron el primer ataque de colisión público contra SHA1 . Así que sí, no hay forma en el infierno de que Google se emita un certificado SHA1 en 2015 y continúe usándolo hasta 2020.

A modo de comparación, el Google Internet Authority G2 real usa SHA-256 With RSA y lo renueva cert cada año y medio (actualmente válido desde mayo de 2017 hasta diciembre de 2018).

Consejos

Eliminaré ese certificado de su almacén de confianza y veré si algo deja de funcionar. Siga ejecutando análisis de virus regulares por temor a que su sistema ya esté comprometido. Si ese certificado (o uno como este) aparece nuevamente en su almacén de confianza, podría ser el momento de borrar su disco duro y reinstalar el sistema operativo.

Actualizar

En respuesta a la información adicional que publicaste:

Subject: CN=Google, O=Authenticode, L=Silicon Valley, C=US

LOL! Sí, eso es completamente falso. Aquí es cómo Google realmente se identifica en un certificado:

CN=*.google.com, O=Google Inc, L=Mountain View, ST=California, C=US
    
respondido por el Mike Ounsworth 06.08.2017 - 16:28
fuente
3

Se ve mal.

Esto parece ser un mal certificado de CA. Lo mejor es destruir y reconstruir tu computadora.

Edición 1: solo por diversión: un poco de investigación.

Algunos análisis en profundidad de los contenidos de ese archivo P12. Lee esto solo si te gusta este tipo de cosas.

Separando el archivo P12

Echemos un vistazo a ese archivo p12 y desenvuélvalo:

$ sha256sum.exe cert.p12
c33d12dc723dfb5af945e69dd2af8a475234d3fae779b444bea924dcb816620a *cert.p12

$ openssl pkcs12 -in cert.p12 -out pembundle.pem -password pass:"" -nodes -info
MAC Iteration 2048
MAC verified OK
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2048
Certificate bag
Certificate bag
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2048


$ csplit -f individual- pembundle.pem '/^Bag Attributes/' '{*}' --elide-empty-files
2036
1969
3396

Ahora miremos dentro y demos a estos objetos algunos nombres más bonitos:

$ head individual-0*
==> individual-00 <==
Bag Attributes
    localKeyID: 70 04 3C 28 93 39 60 37 92 DA 92 8F 73 F5 50 86 60 3F BF 27
subject=/C=US/L=Silicon Valley/O=Authenticode/CN=PortableWares
issuer=/C=US/L=Silicon Valley/O=Authenticode/CN=Google
-----BEGIN CERTIFICATE-----
MIIFFzCCAv8CAQEwDQYJKoZIhvcNAQEFBQAwTjELMAkGA1UEBhMCVVMxFzAVBgNV
BAcMDlNpbGljb24gVmFsbGV5MRUwEwYDVQQKDAxBdXRoZW50aWNvZGUxDzANBgNV
BAMMBkdvb2dsZTAeFw0xNTA3MjEyMTA1MTJaFw0xNzA3MjAyMTA1MTJaMFUxCzAJ
BgNVBAYTAlVTMRcwFQYDVQQHDA5TaWxpY29uIFZhbGxleTEVMBMGA1UECgwMQXV0
aGVudGljb2RlMRYwFAYDVQQDDA1Qb3J0YWJsZVdhcmVzMIICIjANBgkqhkiG9w0B

==> individual-01 <==
Bag Attributes: <No Attributes>
subject=/C=US/L=Silicon Valley/O=Authenticode/CN=Google
issuer=/C=US/L=Silicon Valley/O=Authenticode/CN=Google
-----BEGIN CERTIFICATE-----
MIIFGDCCAwACCQDNCzLvtPTNEzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV
UzEXMBUGA1UEBwwOU2lsaWNvbiBWYWxsZXkxFTATBgNVBAoMDEF1dGhlbnRpY29k
ZTEPMA0GA1UEAwwGR29vZ2xlMB4XDTE1MDcyMTIxMDUwOFoXDTIwMDcyMDIxMDUw
OFowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAcMDlNpbGljb24gVmFsbGV5MRUwEwYD
VQQKDAxBdXRoZW50aWNvZGUxDzANBgNVBAMMBkdvb2dsZTCCAiIwDQYJKoZIhvcN
AQEBBQADggIPADCCAgoCggIBAOI8i0Hzr4lZFc2FsvopuCyNwZuYNqwiBqgJHKGj

==> individual-02 <==
Bag Attributes
    localKeyID: 70 04 3C 28 93 39 60 37 92 DA 92 8F 73 F5 50 86 60 3F BF 27
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDbVi3zesndOgos
+Kesf017VXMWZwvttim67t15uUy6O6I5kzLElxuehgnHm/yQcNCXh/oLMyoxIPTw
pK0dmC09SRKwcX36ZPteBhhgdRHAY/5/7KaXHgKzWvK02XJ+mC2t81H15lemx/bA
+56zFUgYlxa2A+Zge3n5nrkT3uDPm8kmGfKycKZye4ODoKv/uU4JxGcUvrLKZSet
72gIwIlncK3puU7eRIQ95yBJengOWTdTYEdDl+Bimz+8GH7xGB5gdzB8q9F1QVTe
SHSvMURZLfatbHupbCWEmgqPvZzDV1ohP4Ab5dt1M1H5lnE3DNuOBqfbJ8gE3O26

Ahora que tenemos una idea de lo que hay dentro, podemos darles nombres propios. También los bombeamos a través de openssl para obtener el análisis completo (a través del parámetro -text ) junto con la codificación Base64.

$ cat individual-00 | openssl x509 -text > portablewares.cer

$ cat individual-01 | openssl x509 -text > fakegoogle.cer

$ cat individual-02 | openssl rsa -text > someprivkey.key

¿Qué pasa con esa clave privada?

Ahora veamos si alguno de estos certificados pertenece a la clave privada:

$ openssl x509 -in portablewares.cer -pubkey | openssl pkey -pubin -pubout -outform der | sha256sum
041b989566cd1174449d4f74dbdeb82b58365a8942936676cbff662998f58fb0 *-

$ openssl pkey -in someprivkey.key -pubout -outform der | sha256sum
041b989566cd1174449d4f74dbdeb82b58365a8942936676cbff662998f58fb0 *-

$ openssl x509 -in fakegoogle.cer -pubkey | openssl pkey -pubin -pubout -outform der | sha256sum
1a0873fe3d24bf8e77775694eaab0940c37ac3d03b3d3b42acb4f600bb4f112f *-

Parece que la clave privada podría pertenecer al "portablewares.cer".

Asegurémonos de intentar firmar algo con esto. (Estoy usando el método recomendado por el periodista Hanno Böck para hacer esto.)

$ ./TryAndSignWithThis.sh portablewares.cer someprivkey.key
4a96b377cd177bcece1af794cdcb5144cc9e3f7285e5652b0bc36c4f0551f439 *SignThisBlob.bin
4a96b377cd177bcece1af794cdcb5144cc9e3f7285e5652b0bc36c4f0551f439 *BlobAfterVerify.bin
Files SignThisBlob.bin and BlobAfterVerify.bin are identical

Sí. Esta clave privada pertenece a ese certificado.

Démosle un nombre mejor:

$ mv someprivkey.key portablewares.key

Listado de secuencias de comandos

$ cat TryAndSignWithThis.sh
# Usage: TryAndSignWithThis.sh somecert.cert somekey.key
# Adapted from the script by Hanno Böck ( https://blog.hboeck.de/archives/888-How-I-tricked-Symantec-with-a-Fake-Private-Key.html , https://archive.is/RZgXp )
openssl x509 -in $1 -noout -pubkey > TryThisPubkey.pem
dd if=/dev/urandom of=SignThisBlob.bin bs=32 count=1 status=none
openssl rsautl -pkcs -sign -inkey $2 -in SignThisBlob.bin -out BlobWithSignature.bin
openssl rsautl -pkcs -verify -pubin -inkey TryThisPubkey.pem -in BlobWithSignature.bin -out BlobAfterVerify.bin

sha256sum -- SignThisBlob.bin BlobAfterVerify.bin
diff --report-identical-files -- SignThisBlob.bin BlobAfterVerify.bin

rm -- TryThisPubkey.pem SignThisBlob.bin BlobWithSignature.bin BlobAfterVerify.bin

Re. Hexatomium post

También: este falso certificado de Google es de hecho el certificado que se mencionó en la publicación del blog de HexAtomium anterior. Él tiene esto disponible para descargar. Y el pubkey es el mismo que para nuestro certificado.

$ curl -s https://www.trustprobe.com/TI/fake_google.cer | openssl x509 -inform der -pubkey | openssl pkey -pubin -pubout -outform der | sha256sum
1a0873fe3d24bf8e77775694eaab0940c37ac3d03b3d3b42acb4f600bb4f112f *-

Algunos googlear

Hagamos más búsquedas en la web para estos certificados / claves

$ openssl x509 -in fakegoogle.cer -outform der | sha1sum
33fcd70343bbe07972d73cdefdeb3c9f4dcefe28 *-

Buscar en Google no es nada demasiado interesante.

$ openssl x509 -in portablewares.cer -outform der | sha1sum
70043c289339603792da928f73f55086603fbf27 *-

Al buscar en Google se encuentran algunos análisis de VirusTotal de archivos que están firmados con esa cert / key. ¡Bonito! - >

Ahora, ¿qué pasa con esa clave?

$ openssl rsa -in portablewares.key -outform der | sha1sum
writing RSA key
a8ab813368f9f9ef13d70ea6e2489d0d2f7eb36c *-

La búsqueda en Google de esto da como resultado nada.

¿Y ahora si buscamos los números de serie?

$ openssl x509 -in fakegoogle.cer -noout -serial
serial=CD0B32EFB4F4CD13

Al buscar en Google solo se vuelve a activar el análisis de análisis híbrido.

$ openssl x509 -in portablewares.cer -noout -serial
serial=01

Este número de serie es simplemente extraño y agita todo tipo de banderas rojas.

Listado completo de certificados / claves

Análisis completos de las claves / claves:

Editar 2.

En realidad, encontré un archivo EXE de muestra que está firmado con ese certificado / clave.

Editar 3.

No sé qué hacer con esta salida de signtool. La firma principal es obviamente falsa. (Como descubrimos anteriormente). Pero ¿qué pasa con las marcas de tiempo firmadas? ¿Son de verdad? Tal vez alguien más pueda explicar esto.

C:\> signtool verify /all /pa /v /debug RadioSurePortable_x.x.x_online.paf.exe

Verifying: RadioSurePortable_x.x.x_online.paf.exe

Signature Index: 0 (Primary Signature)
Hash of file (sha1): 148528EE2FDB92441711B3E10760E1D191AD108D

Signing Certificate Chain:
    Issued to: PortableWares
    Issued by: Google
    Expires:   Thu Jul 20 23:05:12 2017
    SHA1 hash: 70043C289339603792DA928F73F55086603FBF27

The signature is timestamped: Sun Oct 04 23:04:08 2015
Timestamp Verified by:
    Issued to: Thawte Timestamping CA
    Issued by: Thawte Timestamping CA
    Expires:   Fri Jan 01 01:59:59 2021
    SHA1 hash: BE36A4562FB2EE05DBB3D32323ADF445084ED656

        Issued to: Symantec Time Stamping Services CA - G2
        Issued by: Thawte Timestamping CA
        Expires:   Thu Dec 31 01:59:59 2020
        SHA1 hash: 6C07453FFDDA08B83707C09B82FB3D15F35336B1

            Issued to: Symantec Time Stamping Services Signer - G4
            Issued by: Symantec Time Stamping Services CA - G2
            Expires:   Wed Dec 30 01:59:59 2020
            SHA1 hash: 65439929B67973EB192D6FF243E6767ADF0834E4


Number of signatures successfully Verified: 0
Number of warnings: 0
Number of errors: 1
SignTool Error: WinVerifyTrust returned error: 0x800B010A
        A certificate chain could not be built to a trusted root authority.
    
respondido por el StackzOfZtuff 06.08.2017 - 19:40
fuente
0

Si no instaló el certificado raíz y la PC no está conectada a la PC, entonces el certificado provino de un caché de certificado raíz local de confianza (en la biblioteca Crypt32.dll).

De forma predeterminada, solo un subconjunto de raíces de confianza están preinstalados en la MMC. Sin embargo, cuando CryptoAPI construye una cadena, verifica si el certificado raíz particular está almacenado en el caché. Si lo encuentra, entonces el certificado se copia de Crypt32.dll al almacén de certificados (lo que ve en MMC). Es el comportamiento esperado para MS CryptoAPI y no hay daño en esto.

    
respondido por el Crypt32 06.08.2017 - 15:25
fuente

Lea otras preguntas en las etiquetas