2015-11-14 1 views
0

Nous avons recherché des SEQUENCES codées en DER dans un exécutable. Après avoir cherché celles qui ressemblaient à des données codées en DER, nous voulions analyser comment elles étaient utilisées.Identifier les objets ASN.1 inconnus

X.509 Les certificats et les objets CMS étaient faciles à reconnaître (puisque nous en sommes conscients), mais nous avons également trouvé des encodages valides, à partir desquels nous ne pouvons pas dire à quoi ils servent.

E.g. Jetez un oeil à la sortie suivante de 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 

Est-ce que tout le monde reconnaît, qui cartes de type ASN.1 à ce sujet?

Bien sûr, il existe certains modèles (par exemple, au décalage 98 ou 930) qui sont faciles à reconnaître, mais existe-t-il une manière «intelligente» d'identifier les structures ASN.1 inconnues?

Motifs de recherche Google spéciaux, sites Web, logiciels, etc.?

Nous avons essayé les recherches Google comme * ::= SEQUENCE { * INTEGER } etc., sans succès.

+1

* Est-ce que quelqu'un reconnaît, quel type ASN.1 correspond à cela? * - Certaines personnes pourraient avoir essayé plus difficile d'identifier si vous aviez partagé le binaire pour télécharger quelque part ... – mkl

+0

oui, copie binaire serait mieux. – Crypt32

+0

Étant donné que les données peuvent contenir des informations que notre client ne veut pas publier, nous en avons retiré certaines - Il serait plus facile de réfléchir, désolé pour cela. – duesee

Répondre

0

Pour moi, cette image ressemble à une sorte de message PKCS # 7 (mais ce n'est pas PKCS # 7). Il n'existe aucun moyen universel de lier des données brutes à un objet ASN arbitraire sans module ASN. Vous devrez peut-être créer vos propres tables, leur assigner des données brutes et voir quelle table a abouti. Ce n'est pas si simple sans connaître chaque message sémantique (qui est défini dans le module ASN). Si vous êtes sous Windows, vous pouvez essayer la commande suivante:

certutil -dump path\fileWithUnknownAsn.ext

Certutil a plusieurs tables intégrées pour représenter des objets X509 communs et, peut-être, il vous montre ce que.

+0

Pas de chance avec 'certutil'. Il décharge juste le fichier entier sans information additionnelle ... – duesee

+0

Je ne peux pas dire exactement ce que c'est. Je vois deux envolepes. La première enveloppe pointe vers un algorithme symétrique et (possible) des données cryptées sous OCTET_STRING. Outer SET contient 2 objets: plusieurs composants similaires au certificat X.509, mais il ne s'agit pas d'un certificat et d'un certificat X.509. Désolé, je ne peux pas identifier l'objet basé sur cette image. – Crypt32

1

Regardez ceci: http://www.oid-info.com/get/1.3.36.2.1

oid-info.com compte actuellement plus de 950.000 années OID, mais il a votre OID en question au niveau 1.3.36.

Par conséquent, en questionnant ce service à partir de 1.3.36 vous donnera la que ce OID est enregistré par

TeleTrusT - IT Security Association Germany 

et avec 1.3.36.2 va interroger vous dire qu'il est un

Security information object 

et 1.3.36.2.1 vous diront que c'est un

Certificate 

Cependant, il y a pas d'information sur 1.3.36.2.5.1 ou 1.3.36.2.1.3, c'est parce qu'il n'est pas obligé, car une fois 1.3.36 est enregistré par TeleTrust, ils ont la propriété globale sur les sous-nœuds.

Je ne sais pas si le bureau d'enregistrement a un service pour vous permettre d'interroger tous les OID enregistrés, mais pour l'instant, odi-info a environ 1 million d'OID interrogeables.

+0

Oh merci. Très utile! Bien sûr, il n'y a pas de définitions ASN.1 disponibles: - /, mais j'ai demandé à TeleTrust de les fournir. – duesee

+0

Ok c'est superbe –