mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-16 22:18:27 +00:00
4.5 KiB
4.5 KiB
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- 💬 Discord grubuna veya telegram grubuna katılın ya da Twitter'da bizi takip edin 🐦 @hacktricks_live.**
- Hacking ipuçlarını paylaşmak için HackTricks ve HackTricks Cloud github reposuna PR gönderin.
Paketlenmiş ikili dosyaları tanımlama
- string eksikliği: Paketlenmiş ikili dosyalarda neredeyse hiç string bulmamak yaygındır.
- Birçok kullanılmayan string: Ayrıca, bir kötü amaçlı yazılım bazı ticari paketleyiciler kullanıyorsa, çapraz referanssız birçok string bulmak yaygındır. Bu stringler mevcut olsa bile, bu durum ikili dosyanın paketlenmediği anlamına gelmez.
- Bir ikili dosyayı paketlemek için hangi paketleyicinin kullanıldığını bulmaya çalışmak için bazı araçlar kullanabilirsiniz:
- PEiD
- Exeinfo PE
- Language 2000
Temel Öneriler
- Paketlenmiş ikili dosyayı IDA'da alttan başlayarak analiz etmeye başlayın ve yukarı doğru ilerleyin. Unpackers, unpacked kod çıkış yaptığında çıkış yapar, bu nedenle unpacker'ın başlangıçta unpacked koda yürütme geçirmesi olası değildir.
- register'lara veya bellek bölgelerine JMP veya CALL arayın. Ayrıca, argümanları ve bir adres yönlendirmesi iten fonksiyonlar arayın ve ardından
retn
çağırın, çünkü bu durumda fonksiyonun dönüşü, çağrılmadan önce yığına itilen adresi çağırabilir. VirtualAlloc
üzerinde bir breakpoint koyun, çünkü bu, programın unpacked kod yazabileceği bellek alanını ayırır. "Kullanıcı koduna çalıştır" veya fonksiyonu çalıştırdıktan sonra EAX içindeki değere ulaşmak için F8 kullanın ve "dump'taki o adresi takip edin". Unpacked kodun kaydedileceği bölge olup olmadığını asla bilemezsiniz.VirtualAlloc
'un "40" değerini argüman olarak alması, Okuma+Yazma+Çalıştırma anlamına gelir (buraya kopyalanacak bazı çalıştırılması gereken kod var).- Kodu unpack ederken, aritmetik işlemler ve
memcopy
veyaVirtual
Alloc
gibi fonksiyonlara birçok çağrı bulmak normaldir. Eğer yalnızca aritmetik işlemler gerçekleştiren ve belki de bazımemcopy
yapan bir fonksiyonda bulursanız, öneri, fonksiyonun sonunu bulmaya çalışmaktır (belki bir JMP veya bazı register'lara çağrı) veya en azından son fonksiyona çağrıya kadar koşmak, çünkü kod ilginç değildir. - Kodu unpack ederken, bellek bölgesini değiştirdiğinizde not alın, çünkü bir bellek bölgesi değişikliği unpacking kodunun başlangıcını gösterebilir. Process Hacker kullanarak bir bellek bölgesini kolayca dump edebilirsiniz (işlem --> özellikler --> bellek).
- Kodu unpack etmeye çalışırken, zaten unpacked kodla çalışıp çalışmadığınızı bilmenin iyi bir yolu, ikili dosyanın stringlerini kontrol etmektir. Eğer bir noktada bir atlama yaparsanız (belki bellek bölgesini değiştirerek) ve çok daha fazla string eklendiğini fark ederseniz, o zaman unpacked kodla çalıştığınızı bilebilirsiniz.
Ancak, eğer paketleyici zaten birçok string içeriyorsa, "http" kelimesini içeren string sayısını görebilir ve bu sayının artıp artmadığını kontrol edebilirsiniz. - Bir bellek bölgesinden bir yürütülebilir dosyayı dump ettiğinizde, bazı başlıkları PE-bear kullanarak düzeltebilirsiniz.