Ich habe kürzlich meinen Weg durch eine ganze Ladung Assembly gesiebt, um herauszufinden, wie ein Programm einige Daten entschlüsselt. Bisher habe ich herausgefunden, wie die IV extrahiert wird, dass die IV 16 Byte lang ist und dass die Entschlüsselungsmethode Cipher Block Chaining verwendet. Folglich glaube ich, dass die verwendete Verschlüsselungsmethode AES-128-CBC ist.Verschleierte AES-Entschlüsselungs-Assembly
Der nächste Schritt bestand darin, zu versuchen, den Schlüssel zu identifizieren, der zum Entschlüsseln verwendet wird. Das Problem besteht darin, dass die Assembly für die Verschlüsselung der einzelnen Blockchiffren ungefähr 2,5 MB groß ist. Was ich jedoch beobachtet haben, ist, dass es alle sehr ähnlicher Form vorliegt, beispielsweise ein Ausschnitt:
add.w r0, r12, #0x13
str.w r0, [lr, #0x44]
tst.w r0, #0xff
mov r0, r12
it eq
eoreq r0, r12, #0x75
add.w r1, r12, #0x5d
str.w r1, [sp, #0xf00]
tst.w r1, #0xff
it eq
addeq r0, #0x3b
r12
enthält die verschlüsselten Daten, aus einem in Argument übergeben geladen (r0
) wie folgt:
mov r4, r0
add.w lr, sp, #0x1000
ldrb.w r12, [r4]
Alle der Montage in das Unterprogramm des Prototyps Form, teilweise zu den verschlüsselten Daten hinzugefügt versetzt ist, gespeichert, geprüft gegen 0xff
(immer0xff
) und dann einige oper Als Ergebnis wird entweder XOR, OR, ADD oder MOV ausgeführt, was sich auf ein anderes Register auswirkt (in den Beispielen ist dies r0
).
Sieht Ihnen dies nach AES-128 und stimmen Sie zu, dass die Verschlüsselung absichtlich verschleiert wurde, um den Schlüssel zu verbergen? Wenn ja, wie wurde es verschleiert und wäre es möglich, den Schlüssel zu finden?
Zusatzinfo
Here's a link auf die volle ASM-Datei für die Verschlüsselung Subroutinenblock Chiffre.
Und this is a link an die Unterroutine, die CBC verwendet und das oben genannte Unterprogramm aufruft, auf das in der Hauptfrage verwiesen wird.
Ich denke, [Tag: Reverse-Engineering] gilt mehr als [Tag: Sicherheit], aber fühlen Sie sich frei, dies zu ändern. Wir brauchen jedoch wirklich das Architektur-Tag. PS: Ich bin normalerweise schnell runter, aber es war diesmal nicht ich;) – Jester
@Jester Klingt gut für mich. Du hast deinen Namen gelöscht: P Wenn es für SO unpassend/weit ist, könnte ich es immer zum Reverse Engineering oder Security SE verschieben. – Joshua
Ich verstehe nicht, wie Sie daraus geschlossen haben, ist CBC-AES, lassen Sie uns sagen, dass das der Fall ist. Aber der ganze Sinn von AES ist, dass der Schlüssel nicht gebrochen werden kann, selbst wenn die Methode bekannt ist. AES benötigt keine Verschleierung. –