Démonter pour identifier l'algorithme de cryptage
Objectif (En Général)
Mon ultime (à long terme) l'objectif est d'écrire un importateur pour un fichier binaire dans une autre application
Question De Fond
- Je suis intéressé par deux champs à l'intérieur d'un format de fichier binaire. L'un est
crypté, et l'autre est compressé et éventuellement chiffrés
(Voir comment je suis arrivé à cette conclusion ici). - J'ai un programme de visionneuse (je vais l'appeler viewer.exe) qui pourront ouvrir ces fichiers pour l'affichage. J'espère que cela peut offrir quelques indices.
- Je vais (bientôt) ont une corrélation déchiffré sortie de comparer et d'avoir des valeurs à rechercher.
- C'est la plus pertinente stackoverflow Q/A j'ai trouvé
Question Spécifique
Quelle est la meilleure stratégie étant donné les ressources que j'ai pour identifier l'algorithme utilisé?
Idées Actuelles
- Je me rends compte que sans la clé, l'identification de l'algo de juste des données est pratiquement impossible
- Avoir un fichier et un viewer.exe moi, je dois avoir la clé quelque part. Qu'elle soit publique, privée, symétrique, etc...ça pourrait être sympa à découvrir.
- Je voudrais démonter le viewer.exe à l'aide de OllyDbg avec le findcrypt plugin comme une première étape. Je ne suis pas suffisamment compétent dans ce genre de chose à accomplir encore.
Ressources
plein exemple de fichier
extrait binaire du terrain, je suis intéressé par
les données déchiffrées Dans cette archive zip il y a un binaire liste de chars représentant x,y,z (model2.sommets) et d'un binaire liste d'entiers (model2.les visages). J'ai aussi inclus un "stl" fichier, que vous pouvez afficher avec de nombreux programmes, mais à cause de l'étrange manière dont les données sont stockées dans la STL, ce n'est pas ce que nous attendons de sortir du fichier d'origine.
Progrès
1. J'ai démonté le programme avec Olly, puis fait la seule chose que je sais faire à ce poing et de recherche "pour toutes référencées texte" après la pause de la porgram droit avant d'importer des fichiers. Ensuite, j'ai cherché les mots les piqûres comme "la crypte, de hachage, AES, chiffrer, SHA, etc etc". Je suis venu avec un tas de choses, notamment "Blowfish64", ce qui semble aller parfaitement avec le fait que mydata parfois est de 4 octets trop long (et depuis qu'il est garantis pour être mod 12 = 0) pour moi, cela ressemble à de rembourrage pour 64 bits taille du bloc (les montants des sommets non mod 8 quantités d'octets). J'ai aussi trouvé des messages d'erreur comme...
“Données non valides taille (Taille 4) mod 8 doit être 0"
Après la lecture de Igor réponse ci-dessous, voici le résultat de signsrch. J'ai mis à jour cette image avec un point vert qui cause pas de problèmes lors de l'remplacé par int3, rouge si le programme ne peut pas démarrer, et orange si elle échoue lors du chargement d'un fichier d'intérêt. Pas de point signifie que je n'ai pas encore testé.
Accessoire Info
- Im en utilisant windows 7 64 bits
- viewer.exe est win32 x86 application
- Les données sont encodées en base64 ainsi que chiffré
- Le déchiffrer les données sont des groupes de 12 octets qui représentent les 3 chars (x,y,z coordonnées)
- J'ai OllyDb v1.1 avec le findcrypt plugin, mais mon utilisation est limitée à la suite avec ce gars les vidéos de youtube
L'IDA a une technique appelée FLIRT, qui identifie les fonctions connues. Si ils utilisent un standard de chiffrement de la bibliothèque, il peut identifier l'algorithme.
Parce que je n'étais pas conscient que c'est un meilleur endroit pour demander cela. Je vais vérifier ça dès que possible
Je ne suis pas convaincu que super-Utilisateur est mieux que StackOverflow pour cette question. Vous pourriez envisager de security.stackexchange.com trop. Je ne suis pas sûr que c'est nettement mieux que SI, si.
Hmm, j'ai l'freeware IDA, est FLIRTER builtin ou un plugin? Je vais vérifier ça aussi.
OriginalL'auteur patmo141 | 2012-02-25
Vous devez vous connecter pour publier un commentaire.
De nombreux algorithmes de chiffrement utilisation très spécifique constantes pour initialiser l'état du chiffrement. Vous pouvez vérifier si le binaire est avec un programme comme signsrch. Si vous obtenez plausible, hits, ouvrez le fichier de l'IDA et de recherche pour les constantes (Alt-B (binaire de recherche) serait de l'aide ici), puis suivre renvois à essayer d'identifier la /les clé(s) utilisé.
Ok, je comprends que signsrch a identifié des constantes, mais comment puis-je rechercher? Par exemple, le Blowfish bfp table. 00856893 est que la constante réelle ou est-ce que l'emplacement de la constante dans le programme? Mes excuses pour la réponse naïve
Il semble pour obtenir la réelle constantes que vous pouvez utiliser l'option-L. Toutefois, si ces chiffres sont des décalages de fichier, vous pouvez utiliser le bouton "Saut-Saut à l'offset du fichier" pour y accéder.
OriginalL'auteur Igor Skochinsky
Vous ne pouvez pas différencier un bon cryptage AES (avec mode XTS par exemple) à partir des données aléatoires. Il n'est pas possible. Essayez d'utiliser la touche ent pour comparer /dev/urandom des données et des volumes TrueCrypt. Il n'y a aucun moyen de les distinguer les uns des autres.
Edit: Re-lecture de votre question. La meilleure façon de déterminer algorithme symétrique, de hachage et de la mode est utilisé (si vous avez une clé de déchiffrement) est de tous les essayer. Par force Brute sur les combinaisons possibles et d'avoir quelques test pour déterminer si vous ne réussit à déchiffrer. C'est de cette façon TrueCrypt monte un volume. Il ne connaît pas l'algo à l'avance de sorte qu'il essaie toutes les possibilités et les tests que les premiers octets décrypter pour VRAI.
Merci. Option 1: la force Brute avec toutes les méthodes raisonnables une fois que je trouve la clé.
OriginalL'auteur 01100110