PC-Forum
https://www.everyscript.de/cgi-bin/pc_forum/YaBB.pl Betriebssysteme >> Windows >> XP-Aktivierung erlischt https://www.everyscript.de/cgi-bin/pc_forum/YaBB.pl?num=1156876088 Beitrag begonnen von Bill Gates am 29.08.2006 , 20:28:06 |
Titel: XP-Aktivierung erlischt Beitrag von Bill Gates am 29.08.2006 , 20:28:06 Microsoft hat einmal verlauten lassen, daß bis zu 5 Änderungen an der Hardware vorgenommen werden können und dann erst die Aktivierung erlösche. Welche Hardware damit spezifisch gemeint ist, darüber schweigt sich MS aus. Etwas mehr an Informationen ist aus dem nachstehenden „White Paper“ in etwas gekürzter Form zu entnehmen: Die Installations-ID Für unsere Analysen haben wir auf die Produktaktivierung über Telefon zurückgegriffen. Wir glauben, dass sich dieses Vorgehen am besten zur Analyse eignet. Um während des Aktivierungsvorgangs, eingeleitet durch msoobe.exe, keine Internet-Verbindung zuzulassen, zogen wir das Netzwerkkabel heraus. Um völlig sicher zu gehen, steckten wir auch das Modem aus, da eine automatisch aufgebaute Wählverbindung die wahrscheinlichste Alternative bei fehlender Internet-Verbindung ist. Msoobe.exe bot uns dann schließlich auch die manuelle Aktivierungsmöglichkeit per Telefon an. Bei der telefonischen Aktivierung nennt man dem Call-Center-Mitarbeiter zunächst die Installations-ID, die msoobe.exe anzeigt. Diese ID besteht aus 50 Dezimalziffern, die in Sechsergruppen unterteilt sind: 002666-077894-484890-114573-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XX In dieser tatsächlich vergebenen Installations-ID haben wir einige Stellen durch X ersetzt. Bei jedem Aufruf von msoobe.exe wird übrigens eine neue Installations-ID erzeugt. Der Call-Center-Mitarbeiter nennt dann eine Bestätigungs-ID, die zu der Installations-ID passt. Die Eingabe der Bestätigungs-ID beschließt den Aktivierungsprozess. Da die Installations-ID die einzige Information während der Aktivierung ist, könnte man die Frage nach den beim Aktivierungsprozess übertragenen Daten auch anders stellen: Wie wird die Installations-ID erzeugt? Um die Frage zu beantworten, verfolgen wir jede einzelne Ziffer zurück zu ihrem Ursprung. Prüfziffern Die letzte Stelle in jeder Zifferngruppe ist eine Prüfziffer, um etwaige Tippfehler auszuschließen. Der Wert der Prüfziffer wird durch Addition der übrigen fünf Stellen der Gruppe gebildet. Dann addiert der Algorithmus die Ziffern an geraden Positionen hinzu und teilt die Summe durch sieben. Der Divisionsrest ergibt den Wert der Prüfziffer. Schritt 2 (Addition aller Ziffern an geraden Positionen) 0 + 6 + 14 = 20 Schritt 3 (Division) 20 : 7 = 2, Rest 6 Die Prüfziffer ist somit 6 Die zusätzliche Addition der Ziffern an geraden Positionen wird wahrscheinlich verwendet, um Fehler durch Zahlendreher zu verhindern. 00626 statt 00266 führt dadurch zu unterschiedlichen Prüfziffern. Dekodierung Entfernt man die Prüfziffern, ergibt sich eine 41-stellige Dezimalzahl. Eine Dezimalzahl dieser Länge stimmt ungefähr mit einem 136-bittigen Multi-Precision-Integer-Wert überein. Und tatsächlich ist die 41-stellige Zahl nur die dezimale Darstellung eines solchen Integer-Werts, der in einer Little-Endian-Byte-Folge als Byte-Array gespeichert ist. Unsere Installations-ID lässt sich also darstellen als Abfolge von 17 Bytes in hexadezimaler Darstellung (die X stehen für die ausgeblendeten Zeichen): 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0x94 0xAA 0x46 0xD6 0x0F0xBD 0x2C 0xC8 0x00 Beim Entschlüsseln beliebiger Installations-IDs kann man feststellen, dass das höherwertige Byte entweder 0x00 oder 0x01 ist, während die übrigen Bytes anscheinend zufällig zu Stande kommen. Der Grund liegt darin, dass die niedrigen 16 Bytes der Installations-ID verschlüsselt sind, das höchstwertige Byte hingegen nicht. Der verwendete kryptographische Algorithmus ist eine proprietäre Feistel-Chiffre mit vier Runden. Da der Block der an eine Feistel-Chiffre übergebenen Eingabe-Bytes in zwei gleich große Blöcke unterteilt wird, wird diese Chiffre-Klasse typischerweise für Eingabeblöcke verwendet, die aus einer geraden Anzahl von Bytes bestehen. In diesem Fall sind das die unteren 16 der 17 Eingabe-Bytes. Rundenfunktion der Chiffre Die Rundenfunktion der Chiffre ergibt sich aus dem Algorithmus SHA-1 Message-Digest, verknüpft mit einer Sequenz aus vier Bytes. Im Folgenden steht + für die Verkettung von zwei Byte-Sequenzen, ^ für die XOR-Verknüpfung, L und R für die linke bzw. rechte Eingabehälfte für eine Runde, L' und R' für die Ausgabehälften dieser Runde und First-8() für eine Funktion, die die ersten acht Bytes eines SHA-1 Message-Digest zurückliefert. Eine Entschlüsselungsrunde sieht dann so aus: L' = R ^ First-8(SHA-1(L + Key)) R' = L Als Ergebnis erhält man 16 Bytes im Klartext. Diese werden - zusammen mit dem 17. unverschlüsselten Byte - von nun an interpretiert als vier Double Words in Little-Endian-Byte-Reihenfolge, mit einem einzelnen Byte am Schluss: Name Größe Offset -------------------------------- H1 Double Word 0 H2 Double Word 4 P1 Double Word 8 P2 Double Word 12 P3 Byte 16 H1 und H2 spezifizieren die Hardware-Konfiguration, auf die die Installations-ID verweist. P1, P2 und P3 enthalten die Produkt-ID, die mit der Installations-ID verknüpft ist. Produkt-ID Die Produkt-ID besteht aus Gruppen dezimaler Ziffern, wie in diesem Beispiel: AAAAA-BBB-CCCCCCC-DDEEE Sucht man in der Registry nach einem Wert "ProductID", findet man die zur jeweiligen Installation passende ID. Im Hilfe/Info-Fenster in Microsofts Internet Explorer findet man die Produkt-ID ebenfalls. Auch die Eigenschaften des Fensters "Arbeitsplatz" zeigen die Produkt-ID an. Dekodierung Die Zuordnung zwischen Produkt-ID in dezimaler Schreibweise und der Binärverschlüsselung in die Double-Word-Werte P1, P2 sowie P3 haben wir in der folgenden Tabelle zusammengefasst: Ziffern Länge Verschlüsselung ---------------------------------------------------------------- AAAAA 17 Bits Bit 0 bis Bit 16 von P1 BBB 10 Bits Bit 17 bis Bit 26 of P1 CCCCCCC 28 Bits Bit 27 bis Bit 31 von P1 (untere 5 Bits) Bit 0 bis Bit 22 von P2 (obere 23 bits) DDEEE 17 Bits Bit 23 bis Bit 31 von P2 (untere 9 bits) Bit 0 bis Bit 7 von P3 (obere 8 Bits) Die Bedeutung der fünf Ziffern-Gruppen: ---------------------------------------- AAAAA Offenbar immer 50293 (in XP Beta 2). Bei RC1 ist dies 55034 BBB die höherwertigen drei Ziffern des Raw Product Key CCCCCCC die niederwertigsten sechs Ziffern des Raw Product Key plus Prüfziffer DD Index des öffentlichen Schlüssels, mit dem der Product Key überprüft wird EEE Zufallswert Wie ersichtlich ist, spielt der (unverschlüsselte) Product Key beim Erzeugen der Produkt-ID eine entscheidende Rolle. Der Product Key Der Raw Product Key steckt im Product Key, der hinten auf jeder XP-CD-Hülle aufgeklebt ist. Er besteht aus fünf Gruppen je fünf alphanummerischer Zeichen, getrennt durch jeweils einen Bindestrich: FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK Es gibt 24 gültige alphanummerische Zeichen für Product Keys: B C D F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9 Ganz ähnlich der Dezimalverschlüsselung der Installations-ID, bilden die 25 Zeichen des Product Key eine Base-24-Kodierung der Binärdarstellung des Product Key. Dekodiert man den Product Key, erhält man einen Multi-Precision-Integer-Wert von annähernd 115 Bits, der - wieder in Little-Endian-Byte-Reihenfolge - in einem Array von 15 Bytes gespeichert wird. Entschlüsseln wir unseren Product Key, erhalten wir folgende Byte-Sequenz: 0x6F 0xFA 0x95 0x45 0xFC 0x75 0xB5 0x52 0xBB 0xEF 0xB1 0x17 0xDA 0xCD 0x00 Von diesen 15 Bytes enthalten die niederwertigsten vier Bytes den Raw Product Key in Little-Endian-Byte-Reihenfolge. Das niederwertigste Bit wird entfernt, indem man diesen 32-Bit-Wert (0x4595FA6F - man denke an die Little-Endian-Byte-Reihenfolge) um ein Bit nach links verschiebt. Dadurch ergibt sich ein Raw Product Key von 0x22CAFD37 oder dezimal 583728439. Die übrigen elf Bytes bilden eine digitale Unterschrift und erlauben so mit Hilfe eines öffentlichen Schlüssels eine Authentizitätsprüfung des Product Key. Da man den passenden privaten Schlüssel benötigt, um eine gültige Signatur zu erzeugen, lässt sich auf diese Weise verhindern, dass ein Angreifer gültige Product Keys generiert. Details über das verwendete Schema der digitalen Signatur geben wir nicht bekannt. Product Key zu Product ID Die drei höchstwertigen Ziffern der neunstelligen dezimalen Darstellung des Raw Product Key (583 in unserem Beispiel) werden direkt auf die BBB-Komponente unserer Product ID abgebildet. Um einen Product Key zu überprüfen, gibt es mehr als einen öffentlichen Schlüssel. Falls die Verifizierung mit dem ersten öffentlichen Schlüssel fehlschlägt, kommt der zweite an die Reihe usw. Die DD-Komponente der Product ID beschreibt, welcher der öffentlichen Schlüssel in dieser Reihenfolge erfolgreich verwendet wurde, um den Product Key zu überprüfen. Mit unterschiedlichen individuellen privaten Schlüsseln ließen sich durch diesen Mechanismus mehrere verschiedene Teilnehmer unterstützen, die gültige Product Keys erzeugen. Die verschiedenen privaten Schlüssel könnten aber auch unterschiedliche Versionen eines Produkts darstellen. Ein Product Key für das "Professional" Release könnte mit einem anderen Schlüssel signiert sein als ein Product Key für das "Server" Release. Die DD-Komponente stünde dann für die Produktversion. Hardware-Information Wie wir festgestellt haben, repräsentieren die zwei Double-Word-Werte H1 und H2 die Hardware-Konfiguration, die mit der Installations-ID verknüpft ist. Bit-Felder Zu diesem Zweck sind die Double-Word-Werte in zwölf Bit-Felder aufgeteilt. Die Beziehung zwischen der Computer-Hardware und den Bit-Feldern zeigt die folgende Tabelle: Double Offset Länge Bit-Feld-Wert basierend auf Word ------------------------------------------------------------------- --------------- H1 0 10 Volume-Seriennummer des System-Volumes (wird beim dir-Befehl angezeigt) H1 10 10 die zehn niederwertigsten Bits der MAC-Adresse der Netzwerkkarte (wird bei netstat -r -n angezeigt) H1 20 7 Identifikations-String des CD-ROM-Laufwerks H1 27 5 Identifikations-String des Displays H2 0 3 unbenutzt, steht auf 001 H2 3 6 die sieben niederwertigsten Bits der CPU-Seriennummer H2 9 7 Identifikations-String der Festplatte H2 16 5 Identifikations-String des SCSI-Hostadapters H2 21 4 Identifikations-String des IDE-Controllers H2 25 3 String des Prozessormodells H2 28 3 RAM-Größe H2 31 1 1 = Dockingstation, 0 = keine Dockingstation Das Bit 31 von H2 spezifiziert, ob es sich bei dem System um ein Notebook handelt, das sich an eine Dockingstation anschließen lässt. Wenn ja, ist der Aktivierungsmechanismus hinsichtlich Modifikationen der Hardware deutlich toleranter, da die Dockingstation ja eine Reihe zusätzlicher Komponenten enthalten könnte. Wird ein Bit-Feld benutzt, enthält es einen Wert ungleich Null, der die entsprechende Hardware-Komponente beschreibt. Die Null gibt an, dass die entsprechende Komponente nicht vorhanden ist. Die meisten Hardware-Komponenten liefern einen Identifikations-String wie "PLEXTOR CD-ROM PX-32TS". Der Wert des entsprechenden Bit-Feldes ergibt sich durch den Hash-Wert des Identifikations-Strings. Hash-basierende Bit-Felder Den Hash-Wert des Strings erhält man, indem man den MD5-Message-Digest-Algorithmus auf den String anwendet. Anschließend werden die für ein Bit-Feld erforderlichen Bits aus vorbestimmten Positionen in die resultierende Message Digest genommen. Für verschiedene Bit-Felder benutzt man unterschiedliche Positionen. Einen Hash-Wert von Null schließt man durch folgende Berechnung aus: Hash = (Hash % BitFieldMax) + 1 BitFieldMax steht für den Maximalwert, der in dem betreffenden Bit-Feld gespeichert werden kann, etwa 1023 für ein 10-Bit-Feld. "x % y" steht für den Divisionsrest von x durch y. Das führt zu Werten zwischen 1 und BitFieldMax. Das Resultat wird dann im jeweiligen Bit-Feld gespeichert. RAM Bit-Feld Das Bit-Feld für die RAM-Größe wird anders berechnet als die übrigen. Die sieben gültigen Werte des RAM-Bit-Feldes geben die ungefähre RAM-Größe an: Wert RAM-Größe ------------------------------------------ 0 (unbenutztes Bit-Feld) 1 weniger als 32 MByte 2 zwischen 32 MByte und 64 MByte 3 zwischen 64 MByte und 128 MByte 4 zwischen 128 MByte und 256 MByte 5 zwischen 256 MByte und 512 MByte 6 zwischen 512 MByte und 1 GByte 7 mehr als 1 GByte Ein konkretes Beispiel Schauen wir uns ein konkretes Beispiel an. Auf einem unserer Testsysteme ergibt sich die Hardware-Information aus den folgenden acht Bytes: 0xC5 0x95 0x12 0xAC 0x01 0x6E 0x2C 0x32 . Konvertiert man die Bytes in H1 und H2, erhält man: H1 = 0xAC1295C5 und H2 = 0x322C6E01 Teilt man H1 und H2 auf, ergibt sich folgende Tabelle, aus der man den Wert jedes Bit-Felds entnehmen kann: Double Offset Wert Hash von Word ------------------------------------------ H1 0 0x1C5 1234-ABCD H1 10 0x0A5 00C0DF089E44 H1 20 0x37 SCSI\CDROMPLEXTOR_CD-ROM_PX-32TS__1.01 H1 27 0x15 PCI\VEN_102B&DEV_0519&SUBSYS_00000000&REV_01 H2 0 0x1 (unbenutzt, immer 0x1) H2 3 0x00 (processor serial number, nicht vorhanden) H2 9 0x37 SCSI\DISKIBM_____DCAS-34330______S65A H2 16 0x0C PCI\VEN_9004&DEV_7178&SUBSYS_00000000&REV_03 H2 21 0x1 PCI\VEN_8086&DEV_7111&SUBSYS_00000000&REV_01 H2 25 0x1 GenuineIntel Family 6 Model 3 H2 28 0x3 (128 MB RAM) H2 31 0x0 (keine Dockingstation) Das XPDec-Utility XPDec ist ein Kommandozeilen-Utility. Es lässt sich mit je einem von vier Parametern aufrufen. XPDEc -i Mit dieser Option greift man auf die Informationen zu, die sich in der Installations-ID verbergen. Die Installations-ID wird dekodiert, und die Werte der Hardware-Bit-Felder sowie die Product ID werden ausgegeben. Beachten Sie, dass die letzten drei Ziffern der Product-ID zufällig erzeugt werden und sich deshalb von denen im Internet Explorer unterscheiden. Das einzige Argument, das -i benötigt, ist die Installations-ID: XPDec -i 002666-077894-484890-114573-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XX XPDec -p Um die Herkunft des Product Key zu entschlüsseln, dekodiert dieser Aufruf einen Product Key und zeigt den Raw Product Key an, so wie er in einer Product ID verwendet werden würde. Das einzige Argument, das -p benötigt, ist der Product Key: XPDec -p FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK Bitte beachten Sie, dass diese Option nicht die digitale Signatur des Product Key überprüft. XPDec -v Diese Option berechnet den Hash-Wert einer bekannten Volume-Seriennummer. Wir haben diese Möglichkeit implementiert, um unsere Beschreibung des String-Hash-Werts zu veranschaulichen. Verwenden Sie zuerst -i, um die Hardware-Bit-Felder anzuzeigen, danach -v, um unsere Behauptung bezüglich des Hash-Werts der Volume-Seriennummer zu überprüfen. Die Seriennummer des System-Volumes erhalten Sie, indem Sie den dir-Befehl aufrufen. Das einzige Argument, das -v benötigt, ist die Seriennummer Ihres System-Volumes: XPDec -v 1263-18D1 XPDec -m Diese Option berechnet den Bit-Feld-Wert der Netzwerkkarte aus einer bekannten MAC-Adresse. Ähnlich wie bei -v haben wir diese Option als "Proof of Concept" implementiert. Die MAC-Adresse erhalten Sie, indem Sie den Befehl netstat -r -n aufrufen. Das einzige Argument, das -m benötigt, ist die MAC-Adresse Ihrer Netzwerkkarte: XPDec -m 01-23-45-67-89-AB Änderungen an der Hardware Sieht man sich an, welche Auswirkungen Änderungen an der Hardware auf eine bereits aktivierte XP-Installation haben, fällt der Datei wpa.dbl aus dem Windows-System32-Verzeichnis eine zentrale Rolle zu. Bei dieser Datei handelt es sich um eine einfache RC4-verschlüsselte Datenbank. Darin finden sich neben anderen Informationen wie dem Ablaufdatum oder der Bestätigungs-ID einer aktivierten Installation: a) die Bit-Felder-Werte, die für die aktuelle Hardware-Konfiguration stehen b) die Bit-Felder-Werte, die für die Hardware-Konfiguration zum Zeitpunkt der Produktaktivierung stehen ( Anmerkung: a) und b) werden neben dem Installations-Key von „CD-Keyreader“ von skaro-net ausgelesen) Während a) bei jeder Modifikation der Hardware-Konfiguration automatisch aktualisiert wird, um die Änderungen zu dokumentieren, bleibt b) unangetastet. Man kann sich b) also wie eine Inventarliste der Hardware-Konfiguration zum Zeitpunkt der Produktaktivierung vorstellen. Diese Liste existiert vor der Produktaktivierung nicht in der Datenbank. Vergleichen Sie die Größe von wpa.dbl vor und nach der Aktivierung, werden Sie eine Zunahme der Dateigröße feststellen, da ja die "Inventarliste" hinzukommt. Wenn es um die Entscheidung geht, ob eine erneute Aktivierung nötig ist, werden die zehn Bit-Felder-Werte von a) mit den entsprechenden Werten von b) verglichen. Die aktuelle Hardware-Konfiguration wird also mit der Hardware-Konfiguration zum Zeitpunkt der Aktivierung verglichen. Dabei wird unterschieden, ob es sich um einen "dockbaren" Computer handelt oder nicht. Lässt sich der Computer nicht an eine Dockingstation anschließen, muss bei mehr als drei geänderten Bit-Feld-Werten eine erneute Aktivierung erfolgen. Das bedeutet in unserem konkreten Beispiel etwa, dass wir die Festplatte und das CD-ROM-Laufwerk austauschen sowie ordentlich RAM nachrüsten könnten, ohne die XP-Aktivierung noch einmal durchführen zu müssen. Wenn wir jedoch XP noch einmal komplett neu installieren würden, wären die Informationen in b) verloren, und wir müssten unsere Installation erneut aktivieren, obwohl wir nichts an unserer Hardware geändert haben. Bei einem Notebook mit Dockingstation vergleicht Windows XP lediglich sieben der zehn Bitfelder. Die Felder für SCSI-Hostadapter, IDE-Controller und Grafikkarte werden ignoriert. Ändern sich mehr als drei der anderen sieben Bitfelder, ist dennoch eine Neuaktivierung notwendig. Gültig ist immer nur der Key der Lizenz (Aufkleber). Das Aktivieren der Software ist dann verknüpft mit: CD Version + Produkt Key + Hardware Informationen http://www.licenturion.com/xp/ Autor unbekannt |
Titel: Re: XP-Aktivierung erlischt Beitrag von Zinedine am 31.08.2006 , 09:06:33 Das ein sehr interessanter Beitrag und deckt sich in etwa mit meinem Wissen, daß a) und b) Referenz-Keys sind. die sich bei Hardware-Änderungen in ihren Werten ebenfalls verändern. Welche Hardware hier einbezogen wird, da ist hier schon etliches klargestellt. |
PC-Forum » Powered by YaBB 2.1! YaBB © 2000-2005. All Rights Reserved. Beiträge die in diesen Foren erscheinen, repräsentieren allein die Meinung der jeweiligen Verfasser. Der Betreiber dieser Website/Domain erklärt hiermit ausdrücklich dass er keinerlei Einfluss auf die Inhalte der Beiträge dieser Foren hat und er sich, unabhängig davon, ausdrücklich von den Inhalten sämtlicher Beiträge dieser Foren distanziert und er sich die Inhalte dieser Beiträge unter keinen Umständen zu Eigen macht. Der Betreiber dieser Website/Domain erklärt hiermit ausdrücklich dass er keinerlei Einfluss auf die Gestaltung und auf die Inhalte von gelinkten Internet-Seiten hat, er sich deshalb in jeglicher Form von den Inhalten der gelinkten Internet-Seiten distanziert und er sich diese Inhalte unter keinen Umständen zu Eigen macht. Diese Erklärungen gelten für alle im Rahmen dieser Website/Domain veröffentlichten Beiträge wie auch für alle im Rahmen dieser Website/Domain angezeigten Links sowie für alle Inhalte der Internet-Seiten zu denen diese Links führen. |