Festplatte richtig verstehen

casalx

Neuling
Thread Starter
Mitglied seit
12.12.2013
Beiträge
71
Hallo,

Wie kann ich denn nun prüfen, ob etwas auf dem MBR der Festplatte drauf ist. Reicht es da gparted anzuschauen,
dann müsste die Verschl. Plattte bei Sektor 1 anfangen, oder sehe ich das Falsch.

Oder wie kann ich den MBR auslesen. Mit Linux Bordmitteln müsste das doch gehen.
Wenn ich fdisk /sda eingebe, dann fängt der Sektor erst bei 2048 an. Was ist in 1-2048 drin?

Gruß
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
hexdump -C /dev/sda | more

Schonmal probiert?
 
hexdump -C /dev/sda | more

Schonmal probiert?
ich habe es mal eingegeben. Nur weiss ich jetzt nicht wie ich das in Bezug mit den Sektoren bringe?
Sprich eine Zeile ist gleich ein Sektor? Und rechts ist dann der ASCII Wert.
 
ich habe es mal eingegeben. Nur weiss ich jetzt nicht wie ich das in Bezug mit den Sektoren bringe?
Sprich eine Zeile ist gleich ein Sektor? Und rechts ist dann der ASCII Wert.

Links ist der Offset in Hex, dann hast du 2 Blöcke zu je 8 Bytes, dann eine ASCII-Repräsentation dieser 16 Bytes (mit Punkten für unprintable chars) eingeklammert in |

Ein Sektor von 512 Bytes wären demnach 32 Zeilen dieser Ausgabe, ein 4KB-Sektor 256 Zeilen. Ja, so viel ist das. Die wenigsten gucken sich ihre Daten mal "roh" an.

PS: Darauf achten, dass wiederholte Null-Bytes von hexdump zusammengefasst werden. Immer den Offset links im Auge behalten oder die Option -v hinzufügen.

Edit: Das ist z.B. ein MBR:

Code:
00000000  ea 05 00 c0 07 8c c8 8e  d0 bc fc ff 8e d8 b8 a0  |................|
00000010  07 8e c0 31 f6 31 ff b9  00 02 fc f3 a4 ea 22 00  |...1.1........".|
00000020  a0 07 1e 07 0e 1f b4 02  cd 16 a8 03 74 0a b0 07  |............t...|
00000030  e8 cb 00 80 0e b4 01 01  f6 c2 80 75 08 be 36 01  |...........u..6.|
00000040  e8 af 00 b2 80 be be 01  b9 04 00 8a 04 3c 80 74  |.............<.t|
00000050  0f 83 c6 10 e2 f5 be 6a  01 e8 96 00 fb f4 eb fc  |.......j........|
00000060  88 d0 24 0f 04 30 a2 27  01 b0 34 28 c8 a2 34 01  |..$..0.'..4(..4.|
00000070  56 be 1a 01 f6 06 b4 01  01 75 01 46 e8 73 00 5e  |V........u.F.s.^|
00000080  26 c7 06 fe 01 00 00 f6  06 b4 01 01 75 31 88 14  |&...........u1..|
00000090  bb aa 55 b4 41 cd 13 8a  14 72 24 81 fb 55 aa 75  |..U.A....r$..U.u|
000000a0  1e f6 c1 01 74 19 b0 2e  e8 53 00 66 8b 4c 08 66  |....t....S.f.L.f|
000000b0  89 0e 12 01 56 b4 42 be  0a 01 cd 13 5e 73 19 b0  |....V.B.....^s..|
000000c0  3b e8 3a 00 8a 74 01 8b  4c 02 b8 01 02 31 db cd  |;.:..t..L....1..|
000000d0  13 73 05 be 52 01 eb 81  be 7d 01 e8 14 00 26 81  |.s..R....}....&.|
000000e0  3e fe 01 55 aa 75 05 ea  00 7c 00 00 be 61 01 e9  |>..U.u...|...a..|
000000f0  67 ff 50 fc ac 84 c0 74  0f e8 02 00 eb f6 50 53  |g.P....t......PS|
00000100  b4 0e bb 01 00 cd 10 5b  58 c3 10 00 01 00 00 00  |.......[X.......|
00000110  c0 07 00 00 00 00 00 00  00 00 21 55 73 69 6e 67  |..........!Using|
00000120  20 64 72 69 76 65 20 58  2c 20 70 61 72 74 69 74  | drive X, partit|
00000130  69 6f 6e 20 59 00 4d 42  52 20 6f 6e 20 66 6c 6f  |ion Y.MBR on flo|
00000140  70 70 79 20 6f 72 20 6f  6c 64 20 42 49 4f 53 0d  |ppy or old BIOS.|
00000150  0a 00 0d 0a 52 65 61 64  20 65 72 72 6f 72 0d 0a  |....Read error..|
00000160  00 4e 6f 20 4f 2f 53 0d  0a 00 4e 6f 20 61 63 74  |.No O/S...No act|
00000170  69 76 65 20 70 61 72 74  69 74 69 6f 6e 0d 0a 00  |ive partition...|
00000180  90 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001b0  00 00 00 00 00 00 4f 78  00 00 00 00 00 00 00 00  |......Ox........|
000001c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 01  |................|
000001f0  02 00 a6 7f ff d0 40 00  00 00 40 37 78 00 55 aa  |......@...@7x.U.|
 
Zuletzt bearbeitet:
der MBR sitzt ja in den ersten 512Bytes? und dann folgt die Partitionstabelle?
Mir geht es darum, ob es eine Möglichkeit gibt, Malware in diesen Bereichen erfolgreich zu erkennen.

Und zweitens, will ich wissen, was bei einer Vollverschlüsselten Festplatte noch alles offen ist.
Und nachschauen was in diesem noch offenenem Bereich drin steht.
Ist ein MBR somit IMMER unverschlüsselt, selbst wenn ich die Plattte voll verschlüsseln tue?
 
Aus meiner fdisk-Manpage:

Code:
     The MBR contains bootable code, a partition table, an indication of which
     partition is `active', and (optionally, depending on the boot code) a
     menu for selecting a partition to be booted.  There can be at most 4 par-
     titions defined in sector 0, one of which can be an extended partition
     which can be split into any number of sub-partitions.

Die Partitionstabelle ist im MBR mit drin.

Wenn du von der Platte booten willst, muss der MBR unverschlüsselt sein. Du musst dir überlegen, dass der MBR übelste Steinzeit ist. Das BIOS springt da an feste Adressen und führt direkt Maschinencode aus. Irgendwelche Entschlüsselung müsste ja im BIOS stattfinden. Undenkbar. Der Code zum Entschlüsseln muss also selber unverschlüsselt sein.

Man kann natürlich eine Platte "ohne Metadaten" wie Partitionstabellen ab Sektor 0 verschlüsseln. Dann ist sie aber nicht bootbar. Es kann dann aber trotzdem sein, dass Metadaten der Verschlüsselungssoftware auf der Platte liegen. FreeBSDs GELI z.B. beschreibt den letzten Block mit Metadaten. Dann ist zwar ab Sektor 0 verschlüsselt, aber hinten liegt ein Sektor unverschlüsselt. Ohne das Passwort kann man damit aber natürlich nichts entschlüsseln. Man sieht allerdings, dass Verschlüsselung benutzt wird, was u.U. auch schon unerwünscht sein kann. Kommt halt auf die Software an.

Kleiner Tipp am Rande: Platten vor jeglicher Verwendung an relevanten Stellen immer "nullen", dann einrichten. Wenn Verschlüsselung benutzt wird, die komplette "Schicht" über der Verschlüsselung nullen, damit dort keine Randomdaten liegen und damit gleichzeitig auf der physikalischen Schicht keine "Nicht-Random-Daten" mehr liegen. Dann sieht man auch schön im hexdump, an welchen Offsets jetzt alles anfängt, welche Bereiche nicht Null sind etc.
 
Zuletzt bearbeitet:
ja, mit voll verschlüsselt meine ich, das die Platte nur mit usb/CD bootbar ist. D.h. dann müsste der letzte Sektor frei sein.

Kleiner Tipp am Rande: Platten vor jeglicher Verwendung an relevanten Stellen immer "nullen", dann einrichten. Wenn Verschlüsselung benutzt wird, die komplette "Schicht" über der Verschlüsselung nullen, damit dort keine Randomdaten liegen und damit gleichzeitig auf der physikalischen Schicht keine "Nicht-Random-Daten" mehr liegen. Dann sieht man auch schön im hexdump, an welchen Offsets jetzt alles anfängt, welche Bereiche nicht Null sind etc.

wie mache ich das genau. reicht da ein
dd if=/dev/zero /dev/sda

aus?
 
Die komplette Platte zu nullen ist Overkill, wenn danach eh Verschlüsselung drübersitzt.

Ich würde pauschal einfach das erste MB der Platte löschen (dd if=... of... bs=1M count=1) und je nach verwendeter Software (oder auch einfach pauschal) das letzte MB[1]. Dann alles einrichten - egal ob mit oder ohne Partitionen oder bootbar - und letztendlich das device, was von der Crypto-Software kommt, komplett wipen.

Dann hast du einen sauberen Ausgangszustand und kannst vor allem halbwegs nachvollziehen, wo genau welche Daten auf der Platte liegen und ob die verschlüsselt sind oder nicht.

[1]: Ohne groß rumzurechnen mache ich das behelfsmäßig einfach so: Im dmesg nachsehen, welche Sektorgröße und wieviele Sektoren die Platte hat. Beispiel:
Code:
da7 at mps0 bus 0 scbus2 target 7 lun 0
da7: <ATA WDC WD40EFRX-68W 0A80> Fixed Direct Access SCSI-6 device 
da7: 600.000MB/s transfers
da7: Command Queueing enabled
da7: 3815447MB (7814037168 512 byte sectors: 255H 63S/T 486401C)

Und dann mach ich einfach
Code:
dd if=/dev/zero of=/dev/da7 bs=512 seek=781403[COLOR="#FF0000"]5[/COLOR]168
sprich von der Sektorzahl einfach 2000 abziehen. Beim letzten Sektor ist dann eh Schluss und das letzte knappe MB ist somit leer. Bei 4K natürlich bs=4096 und dann reichts, wenn man 1000 abzieht. Ist eh alles nur grob Pi*Daumen, weil die Metadaten sowieso nie mehr als ein paar Sektoren brauchen.
 
Zuletzt bearbeitet:
Welches Linux System nutz du eigentlich?
Ich besitze noch ein altes BIOS Mainboard, daher kann ich mit UEFI/GPT nichts anfangen.

Arch Linux.
Mein Mainboard unterstützt auch kein UEFI. Ist für gpt aber auch nicht nötig, du brauchst nur eine 1MB große Bios-Boot-Partition (EF02).
 
da7: 3815447MB (7814037168 512 byte sectors: 255H 63S/T 486401C)

Deine Angaben sind sehr informativ :), Top Antworten!

Ist die Zahl 7814037168 die Anzahl der Sektoren, die die Platte besitzt?
Ein Sektor hat die Größe von 512 Byte? Dann würde ich das so verstehen, dass
die letzten 4 Sektoren überschreibst? 4x5012=ca. 2000

Hab ich das richtig verstanden?
 
Nein. seek=, skip= und count= bei dd arbeiten mit Vielfachen von bs=. Wenn ich also bs=512 setze und dann bei "Ende minus 2000" anfange zu schreiben, schreibt er 2000*512 Bytes, also ein knappes Megabyte. Deswegen auch der Hinweis, dass bei bs=4096 etwas weniger Abzug reicht.
 
verstehe, danke. Wie würdest du folgendes am besten Lösen.
Ich habe eine vollverschlüsselte Platte. Ich sehe mit

fdisk -l

die Anzahl der Sektoren. Ich habe mir den ersten Sektor angeschaut mit hexdump, sprich die 32 Zeilen.
Wenn ich jetzt aber die ersten 2000 Sektoren auslesen will, weil die erste Partition fängt bei Sektor 2048 an,
dann müsste ich 2000*32 zeilen scrollen, was nicht so toll wäre. Wie kann ich Hexdump nutzen, das er mir erstens
die 2048 Sektoren ausgibt, und zwar so, dass ich gleich den ascii Wert in einer Datei habe.

Und das selbe mit den letzten 2048 Sektoren. Ich weiss nicht o.k ist

dd if=/dev/sda bs=512 count=2048 | hexdump -C > datei.txt

die letzten 2000 Sektoren wären dann

dd if=/dev/sda bs=512 seek=Sektorgröße-2000 | hexdump -C > datei.txt

sieht zumindest mal nicht schlecht aus. Dann müsste ich eigentlich in der datei.txt, bei
der Suche nach luks aes fündig werden?

wobei der letzte Teil, nicht funktioniert. Ausgabe lautet:

dd Standardausgabe kann nicht zu Position springen: Nicht erlaubter Seek
??
 
Zuletzt bearbeitet:
seek= betrifft die Ausgabe, d.h. of= oder in deinem Fall stdout. In pipes kann man nicht seeken, das stimmt. Bei if= heißt der passende Parameter skip=.
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh