• 27-08-2013, 02:11:30
    #1
    Arkadaşlar bu başlıkta blogumda yazdığım bir yazı dizisini paylaşacağım, sorularınız olursa buradan yanıtlayabilirim, yorum olarak da sorabilirsiniz.


    Yazılım Sanallaştırmaya ve API Hookinge Giriş
    Alıntı
    Merhaba arkadaşlar,
    Bu yazım ve bundan sonra gelecek bir kaç yazımda Türkiye’de hiç itibar görmeyen, ancak bulut bilişim, yazılım geliştirme araçları ve güvenlik araçlarının vazgeçilmez bir parçası olan API Hooking ve Yazılım sanallaştırma işleminden bahsedeceğim.
    Uygulama sanallaştırma işlemi, çalışan bir process’in, aslında gerçek kaynaklara (dosya sistemi, kayıt defteri, sistem değişkenleri, process listesi, donanımlar vb) ulaşmaya çalışırken bu uygulamaya müdahele etmek ve programın istediği kaynaktan başka bir kaynağa ulaştırmaktan ibarettir.
    Yazı dizisi boyunca adım adım tüm bu kaynaklara nasıl ulaşıldığını inceleyeceğiz ve istediğimiz kaynakları manipüle edeceğiz. Ancak bu işlemleri gerçekleştirebilmemiz için API Hooking ve DLL Injection gibi konularda bir miktar bilgiye sahip olmamız gerekiyor. Eğer bu konularda bilginiz varsa doğrudan 2. yazıya atlayabilirsiniz, zira bu yazıda çok detaylı olmasa da temel bilgilerle başlayacağım.
    NEDEN
    Günümüzde .Net ve Java gibi üst düzeyli diller ile neredeyse herkes kolaylıkla kendi ihtiyaçlarını giderecek kadar programlama yapabiliyor, internetteki kaynaklar, kitaplar programlama konusunda son derece detaylı bilgi ve örnek kodlar sağlıyor. Ancak, sadece üst düzeyli dillerle çalışmak işimizi son derece kolaylaştırsa da ek bir çaba harcamadıkça sistemlerin çalışma mantıkları hakkında çok sınırlı bilgi ediniyoruz, pek çok bilgisayar mühendisi bile sınavları geçmeye yetecek kadar bilgi öğreniyor ve kısa zamanda bu bilgileri unutuyor. Kurumsal uygulamalarda da üretim hızı ve kolaylık bakımından üst düzey diller kullanıldığı için, günümüzdeki işletim sistemlerinin çalışma mantığı küçük bir kitlenin, 10-15 yıllık makale ve kaynaklardan öğrenebildiği bir alan haline geliyor.
    Dosya Sistemi Sanallaştırma
    Alıntı
    Merhaba arkadaşlar,
    Geçmiş yazımda yazılım sanallaştırmanın temel nedenleri ve yöntemlerinden bahsetmiştim.
    Yazı dizisinin bu bölümünde ise dosya sistemlerinin sanallaştırılmasından bahsedeceğiz. Peki dosya sistemini sanallaştırmadan kastımız nedir? Yapacağımız işlem kısacası, seçtiğimiz bir programın hangi dosyalara ulaşıp ulaşamayacağına karar vermek, ve eğer ulaşabilekse de bu ulaşıma müdahele etmek olacak.
    Yani dosya sistemi sanallaştırmadan kastım üstteki videoda görebileceğiniz gibi, seçtiğimiz bir uygulama, örneğin “x.txt” dosyasına ulaşmaya çalışırken, programa enjekte ettiğimiz DLL bu API çağrısını yakalıyor ve programa “y.txt” dosyasını döndürüyor. Ancak program hala “x.txt” dosyasına ulaştığını sanıyor ve buna göre işlem yapıyor.
    NEDEN
    Gelelim bunu neden yapıyoruz, uygulama sanallaştırma işleminde dosya sisteminin sanallaştırması konusu önemli bir rol oynuyor, zira uygulamalar ayarlarını ve kayıtlarını basit dosyalarda tutuyorlar, biz bu dosya ulaşımlarına müdahele ederek, programın istediğimiz ayarlarda çalışmasını sağlayabiliyor, hatta üzerinde çalışılacak dosyayı başka bir dosyayla değiştirebiliyoruz.
    İlk Bölümün Tamamı: http://blog.fatihbakir.net/yazilim-sanallastirma/
    İkinci Bölümün Tamamı: http://blog.fatihbakir.net/yazilim-sanallastirma-2-dosya-sistemi-sanallastirma/
  • 29-08-2013, 10:43:49
    #2
    API Hooking için x86 üzerinde bir üst seviye olarak SSDT hook tavsiye edebilirim. System Service Dispatch Table olarak da bilinen bu yapı windows üzerindeki tüm apilerin ortak bir alanda toplandığı tablodur. Kullanıcının kullanımına izin verilen her türlü api bu tabloda yer alır. Hook işlemini bu tabloya uyguladığınız zaman herhangi bir process'e erişim gereksinimi duymaksızın. İstediğiniz API'yi kontrol altına alabilirsiniz. Ancak bunun için gerekli olan şey kernel level bir sürücü yazmaktır. Bu sistem bir çok hacker ve virüs yazarı tarafından kullanılarak, keylogger, trojan, process hide ve hile gibi programlar oluşturulmuştur. Windows ise x64 sürümünde "Patch Guard" adı verilen bir sistem yazılımı ile bunun önüne geçmiştir. x64 üzerinde kernel erişimi sağlamanız için windows onaylı bir sürücüye sahip olmanız gerekmekte. Onaya sahip olsanız bile bu erişime hakkınız yok diye biliyorum. Hooking programlama üzerindeki en güçlü yöntemlerden biridir.
    Verdiğin bilgiler için teşekkürler Fatih.

    Aynı zamanda mühendisler hakkında söylediklerine katılıyorum. Eğitim sistemi sadece diploma veriyor bu çok yanlış, ring1, ring2, ring3 ve ring0 hakkında herhangi bir bilgi veya tam anlamıyla server/client iletişim paket veri gönderimi veri şifreleme vb. bir çok sistem apilerine kapalı olan mühendislerimiz bu nedenle herhangi bir ilerleme kayıt edemiyor.. Bu çok çok üzücü yine de insanın kendisini yetiştireceğine inanıyorum. Kernel çok zevkli bir kısım bence herkez biraz kernel ile haşır neşir olmalı
  • 29-08-2013, 14:28:32
    #3
    10küsür yıl önce yazılmış makaleyi tercüme edip özetleyip hazırladığınız yazı ile buradaki üçüncü mesajınızda bu yazıya link vererek hit toplama amacında olmadığınızı varsayarsak, Türkçe'ye katmış olduğunuz "hooklamak" "enjekte" gibi terimlerden dolayı kutluyorum(!)
  • 29-08-2013, 22:23:26
    #4
    emirhanguven adlı üyeden alıntı: mesajı görüntüle
    API Hooking için x86 üzerinde bir üst seviye olarak SSDT hook tavsiye edebilirim. System Service Dispatch Table olarak da bilinen bu yapı windows üzerindeki tüm apilerin ortak bir alanda toplandığı tablodur. Kullanıcının kullanımına izin verilen her türlü api bu tabloda yer alır. Hook işlemini bu tabloya uyguladığınız zaman herhangi bir process'e erişim gereksinimi duymaksızın. İstediğiniz API'yi kontrol altına alabilirsiniz. Ancak bunun için gerekli olan şey kernel level bir sürücü yazmaktır. Bu sistem bir çok hacker ve virüs yazarı tarafından kullanılarak, keylogger, trojan, process hide ve hile gibi programlar oluşturulmuştur. Windows ise x64 sürümünde "Patch Guard" adı verilen bir sistem yazılımı ile bunun önüne geçmiştir. x64 üzerinde kernel erişimi sağlamanız için windows onaylı bir sürücüye sahip olmanız gerekmekte. Onaya sahip olsanız bile bu erişime hakkınız yok diye biliyorum. Hooking programlama üzerindeki en güçlü yöntemlerden biridir.
    Verdiğin bilgiler için teşekkürler Fatih.

    Aynı zamanda mühendisler hakkında söylediklerine katılıyorum. Eğitim sistemi sadece diploma veriyor bu çok yanlış, ring1, ring2, ring3 ve ring0 hakkında herhangi bir bilgi veya tam anlamıyla server/client iletişim paket veri gönderimi veri şifreleme vb. bir çok sistem apilerine kapalı olan mühendislerimiz bu nedenle herhangi bir ilerleme kayıt edemiyor.. Bu çok çok üzücü yine de insanın kendisini yetiştireceğine inanıyorum. Kernel çok zevkli bir kısım bence herkez biraz kernel ile haşır neşir olmalı
    Hocam kernel driver işleri konusunda windows 7-8 64bit kullandığım için çok bir çalışma yapamadım dediğiniz korumadan dolayı, bunu aşan bir kaç yöntem buldum ancak çok da ihtiyacım olmadığı için üzerine fazla düşmedim, bilgilendirme için çok teşekkür ederim

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:23:26 -->-> Daha önceki mesaj 22:21:11 --

    zinan adlı üyeden alıntı: mesajı görüntüle
    10küsür yıl önce yazılmış makaleyi tercüme edip özetleyip hazırladığınız yazı ile buradaki üçüncü mesajınızda bu yazıya link vererek hit toplama amacında olmadığınızı varsayarsak, Türkçe'ye katmış olduğunuz "hooklamak" "enjekte" gibi terimlerden dolayı kutluyorum(!)
    Hocam açıkçası bu yorumunuz Türkçe kaynağı hiç olmayan bir konuda biraz da olsa yardımcı olma isteğimi kırdı. İlk konumda bahsettiğiniz makaleye buradan yararlandığımı belirterek link verdim ki eminim ki bu konuda okuduğunuz ilk makaleydi. İkinci metni çevirip özetlediğim orjinal metni de yayınlarsanız sevinirim sonuçta öyle dediniz değil mi?

    Enjekte etmek ingilizce teriminin yerini gayet tuttuğunu düşünüyorum eğer literatürde geçerli bir terim varsa makalemi düzeltmek isterim.

    Hooklamak konusunda da herhangi bir sorun göremiyorum, yazdığım makale bilimsel standartlarda profesyonel bir yazı değildir, sadece konu hakkındaki bildiklerimi paylaşmak amacıyla ortaya koyduğum bir yazı dizisidir.

    Ayrıca geçtiğimiz yılki veritabanından user tablosunun truncate edilmesi sonucunda 2011 ocak ayında beri kullandığım hesabım silindi, ayrıca ilk mesajımdan gelip bunu burada paylaşıp link versem bile buna aykırı bir kural olduğunu hatırlamıyorum.
    Sadece iyi niyetlerle oluşturduğum yazı dizime yaptığınız hakaret gibi yorum için de tekrar teşekkür ediyorum.

    Paylaşım yaptığım sitemde 2 yıldır tek bir reklam yada link bulunmadı ve bulundurmayı da planlamıyordum.

    R10 topluluğunun burayı sadece ticaret amacıyla kullandığını unutmuşum, affola.
  • 30-08-2013, 02:53:14
    #5
    Lulu adlı üyeden alıntı: mesajı görüntüle
    Hocam kernel driver işleri konusunda windows 7-8 64bit kullandığım için çok bir çalışma yapamadım dediğiniz korumadan dolayı, bunu aşan bir kaç yöntem buldum ancak çok da ihtiyacım olmadığı için üzerine fazla düşmedim, bilgilendirme için çok teşekkür ederim

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:23:26 -->-> Daha önceki mesaj 22:21:11 --

    Hocam açıkçası bu yorumunuz Türkçe kaynağı hiç olmayan bir konuda biraz da olsa yardımcı olma isteğimi kırdı. İlk konumda bahsettiğiniz makaleye buradan yararlandığımı belirterek link verdim ki eminim ki bu konuda okuduğunuz ilk makaleydi. İkinci metni çevirip özetlediğim orjinal metni de yayınlarsanız sevinirim sonuçta öyle dediniz değil mi?

    Enjekte etmek ingilizce teriminin yerini gayet tuttuğunu düşünüyorum eğer literatürde geçerli bir terim varsa makalemi düzeltmek isterim.

    Hooklamak konusunda da herhangi bir sorun göremiyorum, yazdığım makale bilimsel standartlarda profesyonel bir yazı değildir, sadece konu hakkındaki bildiklerimi paylaşmak amacıyla ortaya koyduğum bir yazı dizisidir.

    Ayrıca geçtiğimiz yılki veritabanından user tablosunun truncate edilmesi sonucunda 2011 ocak ayında beri kullandığım hesabım silindi, ayrıca ilk mesajımdan gelip bunu burada paylaşıp link versem bile buna aykırı bir kural olduğunu hatırlamıyorum.
    Sadece iyi niyetlerle oluşturduğum yazı dizime yaptığınız hakaret gibi yorum için de tekrar teşekkür ediyorum.

    Paylaşım yaptığım sitemde 2 yıldır tek bir reklam yada link bulunmadı ve bulundurmayı da planlamıyordum.

    R10 topluluğunun burayı sadece ticaret amacıyla kullandığını unutmuşum, affola.
    hocam emeğinize sağlık bilmeyen bir çok insan vardı eminim , lütfen şevkinizi kıran insanlara aldırış etmeyin böyle insan dolu ortalıkta siz birilerine faydalı olmaya çalıştıkca sizi çekemeyenler çok olacaktır , kolay gelsin
  • 30-08-2013, 13:34:56
    #6
    eline sağlık hocam, türkçe kaynağın pek olmadığı bir konuda çeviri yapıp düzenlemişsiniz. elinize sağlık.. ingilizce bilmeyen ya da yetersiz olanlar için iyi bir kaynak olabilir. farklı konulara üzerine de çalışabilirsiniz (türkçe kaynağı az olan ya da olmayan şeyler..)

    iyi çalışmalar
  • 12-09-2013, 20:06:08
    #7
    bu yöntemleri kullanan bir loader yazdırmak istiyorum üçretli üzretsiz yardımcı olacak birileri iletişime gecebilirmi ?


    mysamed@gmail.com adresim şimdiden teşekkürler...