2026-11-11

PDF dosyalarında zararlı kod analizi

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

Hiç yorum yok: