Определить неизвестные объекты ASN.1

Мы искали DER-закодированные SEQUENCE в исполняемом файле. После того, как мы выбрали те, которые выглядели как действительные данные в кодировке DER, мы захотели проанализировать, как они используются.

Сертификаты X.509 и объекты CMS было легко распознать (так как мы знаем о них), но мы также нашли допустимые кодировки, из которых мы не можем сказать, для чего они используются.

Например, посмотрите на следующий вывод openssl asn1parse (...):


    0:d=0  hl=4 l=1804 cons: SEQUENCE          
    4:d=1  hl=2 l=   1 prim:  INTEGER           :03
    7:d=1  hl=4 l=1797 cons:  SEQUENCE          
   11:d=2  hl=2 l=  20 cons:   SEQUENCE          
   13:d=3  hl=2 l=   8 prim:    OBJECT            :des-ede3-cbc
   23:d=3  hl=2 l=   8 prim:    OCTET STRING      [HEX DUMP]:0000000000000000
   33:d=2  hl=2 l=   3 prim:   PRINTABLESTRING   :<OMITTED>
   38:d=2  hl=2 l=  13 prim:   UTCTIME           :<OMITTED>
   53:d=2  hl=2 l=   1 prim:   INTEGER           :01
   56:d=2  hl=4 l=1748 cons:   SET               
   60:d=3  hl=4 l= 830 cons:    SEQUENCE          
   64:d=4  hl=2 l=   6 prim:     PRINTABLESTRING   :PKRoot
   72:d=4  hl=2 l=  13 prim:     UTCTIME           :<OMITTED>
   87:d=4  hl=2 l=   5 prim:     OBJECT            :1.3.36.2.5.1
   94:d=4  hl=4 l= 796 cons:     SEQUENCE          
   98:d=5  hl=2 l=  69 cons:      SEQUENCE          
  100:d=6  hl=2 l=  11 cons:       SET               
  102:d=7  hl=2 l=   9 cons:        SEQUENCE          
  104:d=8  hl=2 l=   3 prim:         OBJECT            :countryName
  109:d=8  hl=2 l=   2 prim:         PRINTABLESTRING   :<OMITTED>
  113:d=6  hl=2 l=  31 cons:       SET               
  115:d=7  hl=2 l=  29 cons:        SEQUENCE          
  117:d=8  hl=2 l=   3 prim:         OBJECT            :organizationName
  122:d=8  hl=2 l=  22 prim:         PRINTABLESTRING   :<OMITTED>
  146:d=6  hl=2 l=  21 cons:       SET               
  148:d=7  hl=2 l=  19 cons:        SEQUENCE          
  150:d=8  hl=2 l=   3 prim:         OBJECT            :commonName
  155:d=8  hl=2 l=  12 prim:         PRINTABLESTRING   :<OMITTED>
  169:d=5  hl=4 l= 614 cons:      SEQUENCE          
  173:d=6  hl=2 l=   3 cons:       cont [ 0 ]        
  175:d=7  hl=2 l=   1 prim:        INTEGER           :02
  178:d=6  hl=2 l=   1 prim:       INTEGER           :00
  181:d=6  hl=4 l= 290 cons:       SEQUENCE          
  185:d=7  hl=2 l=  13 cons:        SEQUENCE          
  187:d=8  hl=2 l=   9 prim:         OBJECT            :rsaEncryption
  198:d=8  hl=2 l=   0 prim:         NULL              
  200:d=7  hl=4 l= 271 prim:        BIT STRING        
  475:d=6  hl=2 l=  32 cons:       cont [ 1 ]        
  477:d=7  hl=2 l=  30 cons:        SEQUENCE          
  479:d=8  hl=2 l=  13 prim:         UTCTIME           :<OMITTED>
  494:d=8  hl=2 l=  13 prim:         UTCTIME           :<OMITTED>
  509:d=6  hl=2 l=  15 cons:       cont [ 2 ]        
  511:d=7  hl=2 l=  13 cons:        SEQUENCE          
  513:d=8  hl=2 l=   9 prim:         OBJECT            :sha256WithRSAEncryption
  524:d=8  hl=2 l=   0 prim:         NULL              
  526:d=6  hl=4 l= 257 prim:       BIT STRING        
  787:d=5  hl=2 l= 105 cons:      cont [ 0 ]        
  789:d=6  hl=2 l= 103 cons:       SEQUENCE          
  791:d=7  hl=2 l=  15 cons:        SEQUENCE          
  793:d=8  hl=2 l=   3 prim:         OBJECT            :X509v3 Basic Constraints
  798:d=8  hl=2 l=   1 prim:         BOOLEAN           :255
  801:d=8  hl=2 l=   5 prim:         OCTET STRING      [HEX DUMP]:<OMITTED>
  808:d=7  hl=2 l=  37 cons:        SEQUENCE          
  810:d=8  hl=2 l=   3 prim:         OBJECT            :X509v3 Subject Alternative Name
  815:d=8  hl=2 l=  30 prim:         OCTET STRING      [HEX DUMP]:<OMITTED>
  847:d=7  hl=2 l=  14 cons:        SEQUENCE          
  849:d=8  hl=2 l=   3 prim:         OBJECT            :X509v3 Key Usage
  854:d=8  hl=2 l=   1 prim:         BOOLEAN           :255
  857:d=8  hl=2 l=   4 prim:         OCTET STRING      [HEX DUMP]:<OMITTED>
  863:d=7  hl=2 l=  29 cons:        SEQUENCE          
  865:d=8  hl=2 l=   3 prim:         OBJECT            :X509v3 Subject Key Identifier
  870:d=8  hl=2 l=  22 prim:         OCTET STRING      [HEX DUMP]:<OMITTED>
  894:d=3  hl=4 l= 910 cons:    SEQUENCE          
  898:d=4  hl=2 l=   4 prim:     PRINTABLESTRING   :Cert
  904:d=4  hl=2 l=  13 prim:     UTCTIME           :<OMITTED>
  919:d=4  hl=2 l=   5 prim:     OBJECT            :1.3.36.2.1.3
  926:d=4  hl=4 l= 878 cons:     SEQUENCE          
  930:d=5  hl=4 l= 598 cons:      SEQUENCE          
  934:d=6  hl=2 l=   3 cons:       cont [ 0 ]        
  936:d=7  hl=2 l=   1 prim:        INTEGER           :02
  939:d=6  hl=2 l=   1 prim:       INTEGER           :00
  942:d=6  hl=2 l=  13 cons:       SEQUENCE          
  944:d=7  hl=2 l=   9 prim:        OBJECT            :sha256WithRSAEncryption
  955:d=7  hl=2 l=   0 prim:        NULL              
  957:d=6  hl=2 l=  69 cons:       SEQUENCE          
  959:d=7  hl=2 l=  11 cons:        SET               
  961:d=8  hl=2 l=   9 cons:         SEQUENCE          
  963:d=9  hl=2 l=   3 prim:          OBJECT            :countryName
  968:d=9  hl=2 l=   2 prim:          PRINTABLESTRING   :<OMITTED>
  972:d=7  hl=2 l=  31 cons:        SET               
  974:d=8  hl=2 l=  29 cons:         SEQUENCE          
  976:d=9  hl=2 l=   3 prim:          OBJECT            :organizationName
  981:d=9  hl=2 l=  22 prim:          PRINTABLESTRING   :<OMITTED>
 1005:d=7  hl=2 l=  21 cons:        SET               
 1007:d=8  hl=2 l=  19 cons:         SEQUENCE          
 1009:d=9  hl=2 l=   3 prim:          OBJECT            :commonName
 1014:d=9  hl=2 l=  12 prim:          PRINTABLESTRING   :<OMITTED>
 1028:d=6  hl=2 l=  30 cons:       SEQUENCE          
 1030:d=7  hl=2 l=  13 prim:        UTCTIME           :<OMITTED>
 1045:d=7  hl=2 l=  13 prim:        UTCTIME           :<OMITTED>
 1060:d=6  hl=2 l=  69 cons:       SEQUENCE          
 1062:d=7  hl=2 l=  11 cons:        SET               
 1064:d=8  hl=2 l=   9 cons:         SEQUENCE          
 1066:d=9  hl=2 l=   3 prim:          OBJECT            :countryName
 1071:d=9  hl=2 l=   2 prim:          PRINTABLESTRING   :<OMITTED>
 1075:d=7  hl=2 l=  31 cons:        SET               
 1077:d=8  hl=2 l=  29 cons:         SEQUENCE          
 1079:d=9  hl=2 l=   3 prim:          OBJECT            :organizationName
 1084:d=9  hl=2 l=  22 prim:          PRINTABLESTRING   :<OMITTED>
 1108:d=7  hl=2 l=  21 cons:        SET               
 1110:d=8  hl=2 l=  19 cons:         SEQUENCE          
 1112:d=9  hl=2 l=   3 prim:          OBJECT            :commonName
 1117:d=9  hl=2 l=  12 prim:          PRINTABLESTRING   :<OMITTED>
 1131:d=6  hl=4 l= 290 cons:       SEQUENCE          
 1135:d=7  hl=2 l=  13 cons:        SEQUENCE          
 1137:d=8  hl=2 l=   9 prim:         OBJECT            :rsaEncryption
 1148:d=8  hl=2 l=   0 prim:         NULL              
 1150:d=7  hl=4 l= 271 prim:        BIT STRING        
 1425:d=6  hl=2 l= 105 cons:       cont [ 3 ]        
 1427:d=7  hl=2 l= 103 cons:        SEQUENCE          
 1429:d=8  hl=2 l=  15 cons:         SEQUENCE          
 1431:d=9  hl=2 l=   3 prim:          OBJECT            :X509v3 Basic Constraints
 1436:d=9  hl=2 l=   1 prim:          BOOLEAN           :255
 1439:d=9  hl=2 l=   5 prim:          OCTET STRING      [HEX DUMP]:<OMITTED>
 1446:d=8  hl=2 l=  37 cons:         SEQUENCE          
 1448:d=9  hl=2 l=   3 prim:          OBJECT            :X509v3 Subject Alternative Name
 1453:d=9  hl=2 l=  30 prim:          OCTET STRING      [HEX DUMP]:<OMITTED>
 1485:d=8  hl=2 l=  14 cons:         SEQUENCE          
 1487:d=9  hl=2 l=   3 prim:          OBJECT            :X509v3 Key Usage
 1492:d=9  hl=2 l=   1 prim:          BOOLEAN           :255
 1495:d=9  hl=2 l=   4 prim:          OCTET STRING      [HEX DUMP]:<OMITTED>
 1501:d=8  hl=2 l=  29 cons:         SEQUENCE          
 1503:d=9  hl=2 l=   3 prim:          OBJECT            :X509v3 Subject Key Identifier
 1508:d=9  hl=2 l=  22 prim:          OCTET STRING      [HEX DUMP]:<OMITTED>
 1532:d=5  hl=2 l=  13 cons:      SEQUENCE          
 1534:d=6  hl=2 l=   9 prim:       OBJECT            :sha256WithRSAEncryption
 1545:d=6  hl=2 l=   0 prim:       NULL              
 1547:d=5  hl=4 l= 257 prim:      BIT STRING

Кто-нибудь узнает, какой тип ASN.1 соответствует этому?

Конечно, есть некоторые шаблоны (например, по смещению 98 или 930), которые легко распознать, но есть ли какой-нибудь "умный" способ идентификации неизвестных структур ASN.1?

Специальные поисковые шаблоны Google, веб-сайты, программное обеспечение и т. Д.?

Мы попробовали поиск Google, как * ::= SEQUENCE { * INTEGER } и т.д., но безуспешно.

2 ответа

Посмотрите на это: http://www.oid-info.com/get/1.3.36.2.1

В настоящее время oid-info.com имеет более 950 000 OID, но ваш OID находится под вопросом до уровня 1.3.36.

Таким образом, запрос этой службы, начиная с 1.3.36, покажет, что этот OID зарегистрирован

TeleTrusT - IT Security Association Germany

и запрос с 1.3.36.2 скажет вам, что это

Security information object

и с 1.3.36.2.1 скажет вам, что это

Certificate

Однако информации по 1.3.36.2.5.1 или 1.3.36.2.1.3 нет, это связано с тем, что в этом нет необходимости, поскольку, как только TeleTrust зарегистрировал 1.3.36, они имеют общее право собственности на подузлы.

Я не знаю, есть ли в регистрационном офисе служба, позволяющая вам делать запросы среди всех зарегистрированных OID, но на данный момент в odi-info имеется около 1 миллиона запросов OID.

Для меня этот дамп выглядит как сообщение PKCS#7 (но это не PKCS#7). Не существует универсального способа привязки необработанных данных к произвольному объекту ASN без модуля ASN. Вам может потребоваться создать свои собственные таблицы, сопоставить с ними необработанные данные и посмотреть, какая таблица удалась. Это не так просто, не зная семантики каждого сообщения (которое определено в модуле ASN). Если вы работаете в Windows, вы можете попробовать следующую команду:

certutil -dump path\fileWithUnknownAsn.ext

Certutil имеет несколько встроенных таблиц для представления общих объектов X509 и, возможно, показывает, что это такое.

Другие вопросы по тегам