Soru:
Bir ELF dosyasının UPX paketlenmiş olup olmadığını nasıl kontrol edebilirim?
qbi
2013-03-23 04:31:47 UTC
view on stackexchange narkive permalink

Bir ELF dosyam var ve UPX ile dolu olup olmadığını öğrenmek istiyorum. GNU / Linux'ta UPX sıkıştırmasını nasıl tespit edebilirim?

Vanilla UPX veya herhangi bir olası UPX değişikliği?
Bir vanilya UPX olduğunu düşünüyorum.
Dört yanıtlar:
#1
+11
0xC0000022L
2013-03-23 04:54:03 UTC
view on stackexchange narkive permalink

Tamam, vanilya UPX varsayarsak UPX! veya UPX0 dizelerini tespit etmekte sorun yaşamazsınız. Hatırladığım kadarıyla bu, Windows'ta da işe yarayacaktı.

Yani, şu gibi bir kabuk tek astarlı:

  grep UPX \! <filename>  

veya

  grep UPX0 <filename>  

... grep burada.


Başka bir yöntem, ancak aynı prensibi kullanarak:

  $ hexdump -C <filename> | grep -C 1 UPX000000a0 00 00 00 00 00 00 00 00 00 00 20 00 00 00 00 00 | .......... ..... | 000000b0 c3 af e9 18 55 50 58 21 20 08 0d 16 00 00 00 00 | .... UPX! ....... | 000000c0 a0 fd 16 00 a0 fd 16 00 38 02 00 00 c6 00 00 00 | ........ 8 ....... | --0000cf60 fe 61 03 83 78 b5 54 03 67 8b 85 2d ca a8 12 3c | .a..xTg.-... < | 0000cf70 44 ad bc 12 ab 7e 86 55 50 58 30 0e 01 ee 7c 64 | D .... ~. UPX0 ... | d | 0000cf80 00 f7 d1 80 4a 11 03 58 6e ac 0d 01 ff 92 83 e8 | .... J..Xn ....... | --000544e0 73 20 66 69 6c 65 20 69 73 20 70 61 63 6b 65 64 | s dosyası paketlendi | 000544f0 20 77 69 74 68 20 74 68 65 20 55 50 58 20 65 78 | UPX ex | 00054500 65 63 75 74 61 62 6c 65 20 70 61 63 6b 65 72 20 | kesilebilir paketleyici | 00054510 68 74 74 70 3a 2f 2f 75 70 78 2e 73 66 2e 6e 65 | http: // upx. sf.ne | 00054520 74 20 24 0a 00 24 49 64 3a 20 55 50 58 20 33 2e | t $ .. $ Id: UPX 3. | 00054530 30 38 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 | 08 Telif hakkı (C) | --00054e40 7d 24 24 92 b7 0c 7f 12 01 a8 24 49 92 ff 00 00 |} $$ ....... $ I .... | 00054e50 00 00 55 50 58 21 00 00 00 00 00 00 55 50 58 21 | ..UPX! ...... UPX! | 00054e60 0d 16 08 07 80 44 b5 80 b9 9a 8a d9 a0 08 00 00 | ..... D. ......... |  
Ayrıca "upx -l" komutunu çalıştırmayı da deneyebilirsiniz.
#2
+7
joxeankoret
2013-03-24 19:24:06 UTC
view on stackexchange narkive permalink

Bulabileceğiniz dizelere veya bölüm adlarına güvenmenizi önermiyorum. Normalde, dosyanın UPX ile dolu olduğunu gösterir, ancak özellikle kötü amaçlı yazılımları analiz ediyorsanız, sizi kandırmak için yapılabilir. Önerim, giriş noktasına bakmak ve buna benzer bir model bulmaktır:

  0x00023b60; FONKSİYON start0x00023b60 (01) 60 PUSHA 0x00023b61 (05) be00904300 MOV ESI, 0xHARDCODED_VIRTUAL_ADDRESS0x00023b66 (06) 8dbe0080fcff LEA EDI, [ESI-0x38000] 0x00023b6c (01) 57 PUSH EDI 1 

Temel olarak PUSHA, MOV ESI, VIRTUAL_ADDRESS, LEA ve JMP'yi bulun.

#3
+5
rev
2013-03-24 17:54:49 UTC
view on stackexchange narkive permalink

Linux / Unix varyantlarında, strings komutu UPX, Aspack, NSPack, NTKrnl, PeCompact, Themida vb. gibi paketleyicileri belirlememe yardımcı oldu. Tüm bu paketleyiciler, paketlenmiş yürütülebilir dosyada gömülü dizeler bırakma eğilimindedir. Paketleyicinin türünü belirler. Elf dosyasının yazarı, analizinizi yoldan çıkarmak için kasıtlı olarak aynı dizeleri sunabilir. Bunu analizimde bir başlangıç ​​noktası olarak kullanırdım.

İşte paketleyici türünü belirlememe yardımcı olan bazı tanımlama dizeleri.
UPX - UPX0, UPX1, UPX2
Aspack - aspack, adata
NSPack - NSP0, NSP1, NSP2
NTKrnl - NTKrnl Security Suite
PECompact - PEC2, PECompact2
Themida - Themida, aPa2Wa

Ayrıca, dosya komutu bazı yaygın paketleyici formatlarını da tanımlar.

Dosyanın kesinlikle UPX ile dolu olduğundan şüpheleniyorsanız, 0xC0000022L'den gelen öneriyi tavsiye ederim.

#4
+5
Ange
2013-03-26 21:25:20 UTC
view on stackexchange narkive permalink
  1. UPX edinin
  2. farklı seçeneklerle (LZMA, NRV, ...) kendi UPX dolu ELF'lerinizi yapın
  3. UPX'in değiştirilmesi kolaydır ve çoğu zaman değiştirilir, yamalanır ve hatta sahtedir; kod başlangıçlarını karşılaştırmak, hedefinizin gerçekten UPX ile dolu olup olmadığını ve bunun gerçekten orijinal UPX sürümü olup olmadığını veya herhangi bir şekilde değiştirilip değiştirilmediğini kontrol etmeyi kolaylaştıracaktır.
Bu aslında mükemmel bir nokta, ancak onu oldukça sıkıcı yapıyor çünkü vanilya UPX'in bile çok fazla sürümü var. Hala +1
haklısınız ama yine de yönetilebilir: vanilya UPX'in birçok sürümü var, ancak akışlarında çok az farklılıklar var, bu yüzden bayt özdeş değiller, ancak yapı gerçekten benzer. tipik olarak, düzgün bir UPX saldırısı, açma ve içe aktarma yükleme gibi ana parçalar arasında bazı ekstra kodlara sahiptir. Eski bir [UPX IDB yorumlu] (https://corkami.googlecode.com/files/upx-idb.zip) benimki yeniden yükledim, belki yardımcı olur.


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...