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.
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.
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ı.
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.
@Determinist Sizin dediğinizi scantime bir crypter ile yaptım. Builder stub'a şifrelenecek exe'yi şifreleyerek yazıyor. Ve bizden bir output path'i istiyor.
cin>>output; CopyFile("stub.exe", output/*L"Crypted.exe"*/, 0);// Copy stub , so we done need to download a new one each time we crypt
Output'a kopyalanmış Stub.exe'nin resource'sine encrypt edilmiş exe'nin datasını yazıyor.
Hocam scantime falan hiç karıştırma, yapacaklarını sırasıyla yazayım öncelikle dosyayı şifrelemeden çalıştır daha sonra şifrelersin
1: file.exe yi stub.exe ismiyle kopyala CopyFile("file.exe", "stub.exe", 0); 2: stub.exe nin sonuna bir string yaz "fStart" 3: şifrelemek istediğin dosyayı oku (calc.exe) stub.exe nin sonuna calc.exe verisini yaz (şifrelemeden). 4: stub.exe yi çalıştır ve kendini okut, daha sonra yazdığın stringi arat
Temelde bazı problemler gördüm bende sizin gibi amatörüm yanlış anlamayın linkteki e-kitap kafanızdaki bir çok soruyu cevaplayacak.
Edit: for döngüsünün yanında uyarı yapmıştım kendim aynı hataya düşmüşüm strlen("fStart"); //"strcmp, strstr ile aratma"
Sebep şu; dosyada "fStart" stringini ararken ilk bulacağı p = stubdata + i + strlen("fStart"); daki "fStart" olacak bunun yerine (strlen("fStart");) string boyutunu el ile yaz p = stubdata + i + 6;
< Bu mesaj bu kişi tarafından değiştirildi Guest-4D62BFE91 -- 23 Şubat 2020; 1:34:50 >
Ş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.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi Guest-8F0924900 -- 14 Şubat 2020; 20:5:46 >