Şimdi Ara

Şifrelenmiş bir Executable'ı şifresini açmadan çalıştırmak.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
23
Cevap
1
Favori
747
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Teorik olarak yapmak mümkün müdür ?

    Şifrelenmiş bir executable'ı şifresini açmadan çalıştıracağım fakat şifrelendiği için çalıştırılamıyor.

    Algoritma önerisi : Sistemi yanıltıp executable'ı processlere sokup ondan sonra şifresini çözersem başarılı bir şekilde çalışabilir mi ?

    Bu olabilir ise yeni bir crypting yöntemi olabilir.

    Şuana kadar Scantime ve Runtime Crypterları araştırdım.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 14 Şubat 2020; 20:5:46 >



  • Burada bahsettiğin şey, herhangi bir programın kırılması değil mi? Yanlış anlamadıysam şöyle örnek vereyim. Bir executable programda şifre olduğunu varsayalım. Programın şifre kontrolü de şöyle basit bir şey olsun.
    //////
    if(input() == password)
    start();
    else
    exit(1);
    //////
    Yani burada yapılması gereken tek şey, disassembly yaptıktan sonra instruction pointer'ı değiştirmek veya şifre kontrolüne geldiğimizde jnz/jng/jne yazan yeri jz/jg/je yapmak. Tam tersi de olabilir.
  • cracklemekten bahsediyorsun sanki, binary hacking bilsen yeter, ters mühendislik vakit alır.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Bahsettiğim şey programın kırılması değil. Program benim tarafımdan Runtime Crypter kullanılarak şifrelendi.

    Runtime Crypter çalıştıralacağı anda bunu belleğe yazarak çalıştırıyor.

    Fakat ben bundan farklı bir şey yapmak istiyorum.

    Tarafımdan şifrelenmiş program şifrelendiği için açılmıyor. Ve ben bu şifreyi çözmeden onu açmak istiyorum. C++ ile CreateProcess çağrısında bulundum ve birden programınız 16 bit bu sistemde çalıştırılamaz dedi.

    Eskiden çalışan bir program nasıl da şifrelendikten sonra 16 bit oluyor ?

    Şifrelediğim programın kodlarına baktım ve tüm şifrelenmiş dataları dosyaya yazdığını gördüm.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 15 Şubat 2020; 10:5:45 >
  • quote:

    Orijinalden alıntı: Guest-8F0924900

    Bahsettiğim şey programın kırılması değil. Program benim tarafımdan Runtime Crypter kullanılarak şifrelendi.

    Runtime Crypter çalıştıralacağı anda bunu belleğe yazarak çalıştırıyor.

    Fakat ben bundan farklı bir şey yapmak istiyorum.

    Tarafımdan şifrelenmiş program şifrelendiği için açılmıyor. Ve ben bu şifreyi çözmeden onu açmak istiyorum. C++ ile CreateProcess çağrısında bulundum ve birden programınız 16 bit bu sistemde çalıştırılamaz dedi.

    Eskiden çalışan bir program nasıl da şifrelendikten sonra 16 bit oluyor ?

    Şifrelediğim programın kodlarına baktım ve tüm şifrelenmiş dataları dosyaya yazdığını gördüm.
    Runtime crypter'ı duyunca anladım galiba. Exe dosyasının şifrelenmiş olmasından bahsediyorsun. Yani programı açmak için, runtime crypter üzerinden belirlediği şifre ile decrypt etmen gerekiyor. Tabi sen bu standart yöntemle değilde, başka bir yöntemden bahsediyorsun.

    Bu konu üzerinde pek bilgim yok ama createprocess üzerinden olmaması normal. Oluyorsa, decrypt edilmeden düz açılır zaten.



    < Bu mesaj bu kişi tarafından değiştirildi requizm -- 15 Şubat 2020; 13:35:45 >
    < Bu ileti mobil sürüm kullanılarak atıldı >




  • Requizm kullanıcısına yanıt
    Evet aynen öyle. Decyrpt etmeden açmaya uğraşacağım ama bunun içinde farklı bir crypting yöntemi gerekiyor sanırsam.

    Fakat mantıken scantime crypter bana göre.Hem şifreliyor ve farklı bir program olarak gösteriyor ve de açılabiliyor.

    Bu arada amacım av-bypass etmek. Anti-virüslerin sınırlarını araştırıyorum. (Tabii ki de etik dışı bir şey yapmayacağım sadece bu konuya merakımdan araştırıyorum.)

    Piyasadaki bypass araçlarının çoğu birbirinin aynısı bu yüzden farklı bir şey yapmak istedim.
  • bahsettiğin olayı delphi ile yapmıştım, process resourcedeki veya netten yüklediği crypt binary yi string olarak yükledikden sonra decrypt edip kendi belleğinde çalıştırıyor idi,
    istersem uzakdaki process in bellek alanındada çalıştırtabilirim bende bu bahsettiği olayları yakşalık 10 yil kadar önce denemiştim testleri kaspersky ile yapmıştım, ancak anti virüs motorları zamanında processlerin çalıştırılan makine kodu üzerinde(bellekdeki) makine kodları üzerinde pattern ararlardı,

    şimdi ise artık davranış analizi yapıyorlar yani bunlarla hiç uğraşmayip direk uygulamanı valid bir şekilde sertifika ilede işaretlersen uygulaman nt tarafından çalıştırılmadan önce valid edildikden sonra çalışır, ancak antiler davranış analizi yaptığı için, penceresiz bir uygulama kalkıpda hklm run a bişi yazarsa, servis eklersen sistem dosyalarına müdehale edersen windows içinde binary extract edersen gibi tonlarca değerleme yaparlar ve sandbox bunları emule ettiği için geride alır, hatta gerçek sisteme yansıtmaz.

    decrypt etmeden çalıştıramazsın çünkü çalıştırılabilecek bir makine kodu yok ortada, ancak eğerki bir debuggeri ana uygulamana gömer, ve bu crypt edilmiş sitring içindeki
    makine kodlarını ufak kısımlar olarak misal 1kb gibi ufak ufak açıp çalıştırıp string i imha edersen söylediğine ulaşırsın ancak bu sadece uygulamanı çalıştırmanı sağlar,

    uygulaman çalışma döngüsüne devam edebilmesi için tüm binary op kodlarının dallanacak pointer adresleri ile birlikde sanal bellekde olması gerekir, diğer türlü jmp jnz vs gibi kodların cpu tarafından çalıştırılamayacakdır, e bu çalıştırılmazsa ortada çalışan bir programda kalmaz, kısacası uygulama çalışacaksa binary belleğe yüklenmiş olması gerekir.
    debugger yazar




  • Yapay Zeka’dan İlgili Konular
    .Key dosyalarını açmak?
    15 yıl önce açıldı
    Daha Fazla Göster
  • okoca55 kullanıcısına yanıt
    Çok teşekkürler bilgi verdiğiniz için. Çok işime yarayacak.

    Peki anti virüsler dkom(Direct Kernel Object Manipulation) yönteminde process kernelden çalıştırıldığında ve EPROCESS listesine eklendiğinde bunun davranış analizini yapabiliyorlar mı?

    Yani diyelim kernel process olarak çalışan bir virüs var. Kaskpersky bunun davranış analizini yapabilir mi ?



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 17 Şubat 2020; 22:18:6 >
  • diyorsunki ring0 da çalışan bir rootkit var işletim sistemi nt apilerini hook ediyor,
    elbetteki, normalde os nin versiyonuna göre apilerinin bellek adresleri sabittir, bunu sanal bellek mantığı sağlıyor, evet sen bir api yi hook ettiğin an bu tespit edilebilir pointer adresi değişiyor çünkü ancak esas olan şudur,

    ring0 seviyesinde ilk kancayı atan yetkiyi elinde bulundurur kendini koruyabilirse antivirüsün ona müdehalesini engeller, yeterince ileri seviye yazılmışsa kendinide gizleyebilir, ancak tespit de anti rootkit bulundu mesajını kullanıcıya gösterir,
    en üst seviye driver olarak çalışabilmek için os başlangıcında veya os dende önce
    devreye girmek gerekir, buralardada güvenli os boot yönetimi uhfi vs devreye giriyor.





    < Bu mesaj bu kişi tarafından değiştirildi okoca55 -- 17 Şubat 2020; 22:35:27 >




  • okoca55 kullanıcısına yanıt
    Şuan yapmak istediğimi yaptıktan sonra kapsamlı win32, KMDF konularını araştıracağım.

    İmzasından dolayı her anti-virüse yakalandığı için bir miner(xmrig) indirdim.

    Amacımda miner'i crypter ile şifreleyip her sistem başlangıcında kernel driver ile başlatmaktı.

    *Şimdi miner'ı driver'a load ediyorum ve sonra miner'ın load edildiği driver'ı başarılı bir şekilde "sc delete Rootkit" diye silebiliyorum. Bunu sildirmemek de dediğiniz gibi yine driver'ın elinde mi ?


    *Sizce bu ne kadar güçlü bir yöntem (crypter-exe -- load kernel driver)? Bunun gibi daha güçlü yöntemler var mı ? Miner'ı av görecek illa ki o yüzden şifreli olması gerek diye düşünüyorum executablenin.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 18 Şubat 2020; 8:29:50 >
  • Şifrelenmiş bir Executable'ı şifresini açmadan çalıştırmak.


    sana windows servislerinden örnek vereyim,
    windows hizmet yöneticisindeki her servis esasında registerydeki
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services altında bir anahtardır,
    sen çalışan servisi durdur yaptığında servisine durdurma mesajı gider, servis isterse durdurmaya red vererek
    bunu bloklayabilir ancak kullanıcı servis durumunuda disabled e çekebilir bu durumda servis durduğunda bir daha çalışmayacakdır, eğer servis kendi registery anahtarını monitor ediyor ise,
    start, type gibi anahtarlarını HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servisabc\start|type vs tekrar yazarak sistem başlangıcındaki durumunu 0 layabilir, otomatiğe çekebilir, kullanıcı disabled yapmıştır ancak o ekranı kapatıp açtığında tekrar otomatik görür vs, veya process windows handlerdan pencereye müdehale eder o listbox u disabled e çeker anında.. veya servis usermodda registry fonksiyonlarını regquery regdelete vs hook ediyordur, geriye mmc.exe ye sahte sonuc döndürür, veya process sürekli bellekdeki bildiği adresleri monitor ediyordur, sonuçda biliyorsun tüm ayarlar herşey ramda duran 1 0 ve yazılardan stringden ibaret, direk ram a müdehale eder anında
    read,writeprocessmemory vs ile gibi hepside aynı kapıya çıkar.

    minerinin cpu gpu kullanımınıda gizliyeceksin öyleyse systemqueryperformanceinformation muydu öyle bir api idi
    process kullanımını gösteren uygulamarın taskmngr gibi kullandığı hatırlamıyorum bakmak gerekir, sen driver inda bunları yaptığında, olurda bir hata çıkarsa mavi ekran gelirse, sistem yeniden başlarsa kullanıcı f8 ekranında basitce bilinen en son yapılandırmayı yükle dediğinde senin bu servisler driver lar hepsi geçersiz olur silinirler.

    zaman harcadığın konu pek mantıklı işler değil normal kişiler için, devlet için veya mit için çalışmıyorsan,
    boşa zaman harcama bunlarla boş işler.
    https://0x00sec.org/
    şurası sana göre incele güzel konular vardır.

    Şifrelenmiş bir Executable'ı şifresini açmadan çalıştırmak.
    Z Müzikyoutube
    Grup Abdal - Ervah-ı Ezelde [ Ervah-ı Ezelde © 2011 Z Kalan Müzik ]
    https://www.youtube.com/watch?v=bSnMNxiLbqU



    < Bu mesaj bu kişi tarafından değiştirildi okoca55 -- 18 Şubat 2020; 14:53:43 >




  • Anahtar kelime "Run time crypter" eskiden hobi amaçlı ilgilenirdim en tehlikeli virüsleri bile bu yöntemle fud yapardım
  • Elimde bir runtime crypter src'si var ve bu exe'yi şifreliyor ve shellcode.h diye şifrelenmiş byteları içeren bir header dosyası oluşturuyor. Fakat nedense bunu derlerken stack overflow oluyor ve bu hatayı nasıl çözeceğimi bilemiyorum bir kaç yöntem denedim fakat olmadı.


    src :
    GitHub
    jozemberi/PE-Crypter
    https://github.com/jozemberi/PE-Crypter


    usage :


    1 - *compile xtea.cpp

    run xtea.exe path

    2 - *compile shellcode_generator.c

    run shellcode_generator.exe path


    3 - *compile file.cpp

    Sorun burada başlıyor. shellcode_generator.c shellcode.h oluşturdu ve file.cpp'nin içinde "shellcode.h" include edilmiş. Fakat file.cpp'yi derlediğimde maalesef stack overflow hatası alıyorum.


    not : asm kodu benim değil file.cpp'yi derlediğimde karşıma o geliyor.

    Şifrelenmiş bir Executable'ı şifresini açmadan çalıştırmak.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 18 Şubat 2020; 21:49:9 >




  • Bende sorun çıkmadı. Önce xtea.cpp ve shellcode_generator.c yi derledim şifrelemek istediğim dosyayı(calc.exe) xtea.exe üzerine bıraktım calc.exe şifrelendi, şifrelenmiş calc.exe yi shellcode_generator.exe nin üzerine bıraktım shellcode.h dosyası oluştu son olarak file.exe yi çalıştırdım hesap makinesi çalıştı.
  • Ne ile derlediniz ?
  • Devc++ ile derledim sendeki hata bellek hatası olabilir çünkü yöntem biraz problemli, bu yöntemle şifrelemek istediğin prgram büyük boyutta olursa derleyici bellek oluşturamayabilir bunun yerine şifrelenecek dosya file.exe ye yazılır çalıştığında okuyup şifre çözülür.
  • File.exe'ye şifrelenecek dosyanın verisini okuması için bir buffer oluştursam shellcode'u okuması için de yeniden shellcode.h'ın içindeki char kadar alan gerekmez mi buffer için ?

    O sayede yeniden bellek hatası alınır mantıken. C6262 warning
  • Dinamik bellek sorun çıkartmaz.
    unsigned char *buf = new unsigned char[size];

  • Evet C6262 warning(stack overflow) çözüldü. Dinamik bellek konularını araştıracağım. Sorun çözümü :

    unsigned char *shellcode_decrypted = new unsigned char[size];


    Çok teşekkürler Determinist.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 21 Şubat 2020; 8:26:18 >
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.