Digitalna forenzika lako 🖥️ Terminal Vežba

File Signatures i Magic Bytes

1️⃣ Šta su file signatures?

Svaki fajl na disku počinje posebnim nizom bajtova koji definiše njegov pravi tip — bez obzira na ekstenziju. Ti bajtovi se zovu magic bytes ili file signature.

Ekstenzija (.jpg, .pdf, .exe) je samo deo imena fajla i može se trivijalno promeniti. Magic bytes su upisani unutar samog fajla i ne menjaju se preimenovanjem.

Zašto je ovo važno u sajber bezbednosti?

  • ✔ napadač može preimenovati virus.exe u slika.jpg da prevari filter ili antivirus
  • ✔ web aplikacije se mogu prevariti da prihvate maliciozni fajl sa .jpg ekstenzijom
  • ✔ u digitalnoj forenzici — verifikujemo da li je fajl zaista ono što tvrdi da jeste
  • ✔ u CTF zadacima — fajlovi namerno imaju pogrešnu ekstenziju

2️⃣ Primeri magic bytes

Format Magic bytes (hex) ASCII prikaz
JPG FF D8 FF ÿØÿ
PNG 89 50 4E 47 0D 0A 1A 0A ‰PNG....
PDF 25 50 44 46 %PDF
ZIP 50 4B 03 04 PK..
EXE 4D 5A MZ
GIF 47 49 46 38 GIF8
MP3 49 44 33 ID3
7ZIP 37 7A BC AF 27 1C 7z¼¯'.

💡 ZIP i JAR fajlovi dele iste magic bytes (PK) jer JAR je ZIP arhiva sa Java klasama.


3️⃣ Alat file

Komanda file čita magic bytes i vraća pravi tip fajla.

file dokument.pdf
dokument.pdf: PDF document, version 1.4

Otkrivanje pogrešne ekstenzije

file slika.jpg
slika.jpg: PHP script, ASCII text

Svi fajlovi u direktorijumu

file *

4️⃣ Hex editor

Hex editor prikazuje sirove bajtove fajla u heksadecimalnom zapisu. Prvih nekoliko bajtova su upravo magic bytes.

Alati

Alat Platforma Opis
xxd Linux terminal Brz hex dump
hexedit Linux terminal Interaktivni hex editor
HxD Windows Grafički hex editor
hexed.it Online hexed.it

Prikaz prvih bajtova

xxd slika.jpg | head -3
00000000: ffd8 ffe0 0010 4a46 4946 0001 0100 0001  ......JFIF......
00000001: 0001 0000 ffdb 0043 0008 0606 0706 0504  .......C........

FF D8 FF na početku — potvrđuje da je fajl JPG.


5️⃣ Realna primena — web upload bypass 🌐

Web aplikacije koje prihvataju upload fajlova često proveravaju samo ekstenziju. Napadač to može iskoristiti tako što uploaduje PHP shell sa .jpg ekstenzijom:

echo -e '\xff\xd8\xff\xe0<?php system($_GET["cmd"]); ?>' > shell.jpg

Fajl počinje sa JPG magic bytes — prolazi osnovnu proveru. Ali unutra je PHP kod koji se izvršava na serveru čim se fajl „prikaže".

Bezbedne aplikacije proveravaju ceo sadržaj fajla, ne samo ekstenziju ili prve bajtove.


6️⃣ File signatures u CTF zadacima 🕵️

Korak 1 — file komanda

file sumnjivi_fajl.jpg

Korak 2 — Ručna provera magic bytes

xxd sumnjivi_fajl.jpg | head -2

Korak 3 — Promeni ekstenziju i raspakuj ako je arhiva

mv sumnjivi_fajl.jpg sumnjivi_fajl.zip
unzip sumnjivi_fajl.zip

Korak 4 — Referenca za poznate potpise

Gary Kessler's File Signatures Table


Zadatak

Istraži koji potpis fajla (magic bytes) imaju Java .class fajlovi i unesi odgovor.

Rešenje 0xCAFEBABE

Hint

Korisna referenca: Gary Kessler's File Signatures Table


📝 Provera znanja

U terminalu se nalaze tri fajla: slika1.jpg, slika2.jpg i slika3.jpg. Jedan od njih nije pravi JPG — otkrij koji!

Napiši odgovor: slika?.jpg

Pomoć > Koristi komandu `file` na svakom fajlu:

📝 Provera Znanja

Unesite svoj odgovor ispod da biste proverili da li ste razumeli lekciju:


💻 Terminal Simulator

Ova lekcija uključuje interaktivni terminal simulator za praktičnu vežbu:

🖥️ Otvori Terminal Simulator

Simulirani terminal sa komandama specifičnim za ovu lekciju.