Epostalar ile her gün çeşitli zararlı kodlar geliyor. Bunları açmadan (çift tıklayıp ilgili program ile görüntülenmesini sağlamadan) içeriğinde zararlı kodlar olup olmadığını anlayabilir miyim? Şu sayfadaki bilgiler hoşuma gitti, paylaşmak istedim.
PDF dosya yapısı şu şekilde tarif edilmiş:
Başlık
Gördüğüğüm kadarıyla tek satırlık, % işareti ile başlayıp dosya sürümünü gösteren bir veri.
%PDF-1.7
Gövde
Belgenin içinde yer alan bir dizi nesnenin listelendiği bölüm. Şu şekilde bir yapı:
1 0 obj
...
2 0 obj
...
3 0 obj
...
Çapraz Başvuru
Belge içinde farklı nesnelerin konumlarının yer aldığı bölüm. xref anahtar kelimesi ile başlayan şöyle bir yapı:
xref
...
Son bölüm
Belgenin kapanışının yapıldığı bölüm. trailer anahtar kelimesi ile başlıyor. Birden fazla trailer olabiliyor. En sonda da %%EOF gibi bir son bölüm oluyor.
trailer
...
%%OEF
Tehlikeli olabilecek bölümler
/JavaScript or /JS: Belgede javascript kodu olduğunu gösterir. Bu kod belge açıldığında çalışabilir.
/Names: Dosyanın bir eki veya nesnesi olduğunu gösterir.
/OpenAction or /AA (Additional Action): Dosyanın otomatik bazı kodlar/nesneler çalıştırabileceğini gösterir.
/EmbeddedFile: Bu da dosyanın bir gömülü script/kod/dosya içerdiğini gösterir.
/URI or /SubmitForm: Dosyanın başka bir web adresine erişebileceğini veya harici HTML-form öğesine veri gönderebileceğini (post) gösterir
/Launch: PDF görüntüleyicinin başka bir program veya dosyayı çalıştırmasını ister. Dosyaya gömülü olmayan harici dosya veya programlar için.
Bunların herhangi biri net bir zararlı kod olduğunu tek başına göstermeyebilir. Ama bir /URI olması ve bunun dosya açıldığında tetiklenmesi, uzak bir komuta kontrol merkezindeki sunucudan zararlı bir kod indirdiğinin göstergesi olabilir.
İnceleme araçları
PDF dosyalarının meta verilerini incelemek için exiftool faydalı olabilir. Aracın geliştiricisi Phil Harvey. winget ile indirilebilecek kopya Oliver Betz'in paketlemesi gibi.
exiftool p.pdf
ExifTool Version Number : 13.59
File Name : p.pdf
Directory : .
File Size : 188 kB
File Modification Date/Time : 2026:11:06 15:32:35+03:00
File Access Date/Time : 2026:11:06 17:50:34+03:00
File Creation Date/Time : 2026:11:06 15:32:36+03:00
File Permissions : -rw-rw-rw-
File Type : PDF
File Type Extension : pdf
MIME Type : application/pdf
PDF Version : 1.7
Linearized : No
Page Count : 1
Language : en
Tagged PDF : Yes
XMP Toolkit : 3.1-701
Producer : Microsoft® Word 2024
Creator : Heritage Abajesude
Creator Tool : Microsoft® Word 2024
Create Date : 2026:11:05 11:12:02+01:00
Modify Date : 2026:11:05 11:12:02+01:00
Document ID : uuid:FF8B01BC-ED4C-4316-842C-634C4A670C36
Instance ID : uuid:FF8B01BC-ED4C-4316-842C-634C4A670C36
Author : Heritage Abajesude
Sysinternals strings aracı da pdf dosyasının içindeki yapının çalıştırılmadan görüntülenmesini sağlayabilir.
strings64 .\p.pdf
Powershell ile komutun çıktısı içinde aramalar yapılabilir, sonuçlar filtrelenebilir:
strings64 .\p.pdf | sls "\d 0 obj"
Bir de strings'e satır numarası ekleyerek (dosyanın içindeki offset değerleri değil, sadece strings64 komutunun çıktısının içindeki satır numarası), bulunan ilgili satırın 5 öncesi ve 5 sonrasını da dahil ederek arama genişletilebilir.
$satir=0;strings64 .\p.pdf | % {"$satir $_";$satir++} | sls "/UR|/NAME|/JAVAS|/JS|/EMBED|/OpenAc|/AA|/Launch|eval|export" -context 5,5
Belgede dosyanın hash'inin hesaplanarak virustotal.com gibi bir sitede aratılması da önerilmiş.
Get-FileHash -path .pdf -Algorithm SHA256
Sıkça kullanılan pdfid.py ve pdfparser.py gibi araçlardan faydalanılabileceği de anlatılmış. Bu araçlar
pip install pdfid
gibi araçlarla edinilebileceği gibi
git clone https://github.com/DidierStevens/DidierStevensSuite.git
şeklinde Didier Stevens'ın Github'dan reposundan da indirilebilir
Riskli bölümler hakkında bir özet almak için pdfid.py kullanılabilir
pdfid.py supheli.pdf
PDF Header: %PDF-1.4
obj 23
endobj 23
stream 5
endstream 5
xref 1
trailer 1
startxref 1
/Page 1
/URI 2
Ama bunların hiçbiri, dosyanın aslında içinde kullanıcıyı yanlış yönlendirmek için ne gibi bir kurmaca hazırladığını göstermez. Açmadan dosyanın için görmek için pdf'i bir resim dosyasına dönüştürecek araçlar kullanılabilir. Windows tarafında:
winget install --id oschwartz10612.Poppler -e
Veya linux tarafında:
sudo apt install poppler-utils
sudo apt install mupdf-tools
Örneğin aşağıdaki komutlar, supheli.pdf dosyasından supheli-1.png, supheli-2.png gibi resim dosyaları üretir:
pdftoppm -png -r 100 -f 1 -l 1 supheli.pdf sayfa
mutool draw -o sayfa-%d.png -r 100 supheli.pdf 1
Ama bu işlemlerin hepsinin bir sanal makinede yapılması önemle tavsiye edilir. PDF'i resme dönüştürecek araç bile istenmeden, sinsice tasarlanmış bir tuzak ile bazı mekanizmaları tetikleyebilir, zararlı yazılımı aktive edebilir.
---
[1] https://zeltser.com/analyzing-malicious-documents
[2] https://sansorg.egnyte.com/dl/YrwOdFIm1I
[3] https://amr-git-dot.github.io/malware%20analysis/Mal-Docs/
[3] https://medium.com/@alaamansouraliahmed/is-that-pdf-safe-how-to-spot-malicious-documents-before-you-open-them-de890ca10eac