folder Tahribat.com Forumları
linefolder Virüs - Trojan - Keylogger - BotNet
linefolder En Basitten Windows Servis Yapımı (Açıklamalı)



En Basitten Windows Servis Yapımı (Açıklamalı)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    fly_on_the_shit
    fly_on_the_shit's avatar
    Kayıt Tarihi: 11/Haziran/2007
    Erkek

    Merhaba sevgili müridler, bugün bir başka yazıyla karşınızdayım, zararlı yazılıma devam, ancak sanmayın ki bir gün arayla sürekli böyle yazı yazıcam :)

    Önceki yazının linki : http://tahribat.com/Forum-En-Basitten-Keylogger-Yapimi-Aciklamali-156755/

    Bazılarınız sorabilir , windows servisi yazmanın zararlı yazılımla ne ilgisi var, bizi temiz ahlaklı yazılımcı yapmaya mı çalışıyorsun diye, haklısınız hemen açıklayım.

    Windows servisin kendisini direkt zararlı yazılım olarak kullanmayacağız, bunun yerine zararlı yazılımımızı başlatan bir aracı olarak kullanacağız, artıları ve eksilerini birazdan açıklayacağım.

    Windows servisi nedir

    Servisler Service Control Manager (SCM) tarafından başlatılan özel programlardır, amaçları kullanıcı etkileşimi olmadan arka planda çalışıp bazı sessiondan bağımsız işlemleri yerine getirmektir. bir servis kullanıcıdan bağımsız olarak çalışır. (session 0 da). Normal exe gibi çift tıklayarak başlatamazsınız,

    driver olanları olduğu gibi process olanları da vardır. Driver'ları servis olarak başlatmak konumuz dışında çünkü henüz driver yazmıyoruz :)

    1) Servis olarak çalışan program kullanıcı login olmasa da çalışır (doğal olarak pencereli program bile çalışsa bizim sessionda görünmez)

    2) Servis olarak çalışan program tam yetkiyle çalışır

    3) Servis seçimlik olarak windows açılırken otomatik olarak services.exe tarafından başlatılacağı gibi elle de başlatılabilir (demand start)

    Neden windows servisi

    Zararlı yazılımınızı açılışta çalıştırmanın başka yolları da var elbet, mesela registry e yazmak, startup a atmak vb, ancak bunların tespiti çok kolay, servis yazmak tespiti en zor olan değil tabiki ancak ilersi rootkit'e giriyor.

    Serivisin artıları

    1) Program msconfig'de vs startupta görünmez, sistemde trojan varmı diye merak edenlerin ilk baktığı yerdir

    2) Program görev yöneticisinde direkt görünmez, sadece tüm kullanıcılara ait işlemleri göster gibi bi düğme var taskmgr de ona basınca çıkan listede gösterir, burda da yanında SYSTEM yazdığı için, profesyonellerin bile çoğu aldanabilir :)

    3) İyi isimlendirilmiş, bilgileri iyi doldurulmuş yeri simgesi vs iyi ayarlanmış vb bir servisi tespit etmek, tespit etsek bile zararlı olduğunu anlamak normal process'lere göre çok daha zordur.

    4) Servis services.exe tarafından başlatılır, parent'i odur, doğal olarak çok masum görünür.

    5) Servis session bağımsız ve tam yetki ile çalışır.

    Servisin eksileri

    Aslında pek bir eksisi yok, en büyük eksisi UAC aktifken, servisin yüklenmesi için admin yetkisinin gerekmesidir, bunu da aşağıda nasıl hallederiz göstericem.

    Servisimizin kodu, sadece 20 satır :F , tabi bu özellikle minimalize edilmiş koddur, iyi bir çocuk olup gerçek windows servisleri yazmak isterseniz, service main function, service control handler function örnekleri var msdn de süper örnekler.

    #include <windows.h>
    
    VOID WINAPI SvcMain( DWORD dwArgc, LPTSTR *lpszArgv )
    {
        ShellExecute(NULL, "open", "calc.exe", NULL, NULL, SW_NORMAL);
        exit(0);
    }
    
    int main()
    {
        SERVICE_TABLE_ENTRY ServiceTable[2];
        
        ServiceTable[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)SvcMain;
        ServiceTable[0].lpServiceName = "tahribat";
        ServiceTable[1].lpServiceName = NULL;
        ServiceTable[1].lpServiceProc = NULL;
        
        StartServiceCtrlDispatcher(ServiceTable);
        return 0;
    }


    Açıklamaya geçmeden önce servisi yüklenmek için gerekli bat dosyası

    sc create tahribat type= own DisplayName= tahribat binpath= "c:\users\username\desktop\svc.exe" start= auto error= ignore
    sc start tahribat 


    Ne biçim programcısın servisi bat ile yüklüyosun apisi yokmu diyenler olabilir, açıklıyorum, bu bat dosyasını runas ile çalıştırırsak, windows admin yetkisi isterken cmd.exe istiyor diyor ve imzalı program olduğundan uyarı mavi çıkıyor, eğer biz exe'mize manifest dosyası ekleyerek admin yetkisi istetseydik turuncu olacaktı, üstelik exe mizin ismi kabak gibi çıkacaktı :D

    Şimdi kodu kısaca açıklıyorum, zaten pek açıklancak bişey yok ama, Öncelikle her servisin bir start fonksiyonu vardır, exe'nin start fonksiyonu main biliyorsunuz, main fonksiyopnunda gördüğünüz gibi serviceproc olarak SvcMain fonksiyonunu gösterdik, daha sonra StartServiceCtrlDispatcher fonksiyonu ile bunu scm ye bildiriyoruz, bu fonksiyon bulunduğumuz thread'i scm ye bağlıyor ve service processinin yani exemizin kontrol threadi oluyor. Bizim control handler fonksiyonumuz yok çünkü hemen servisi durdurup sonlanıyoruz, ancak normalde servis bu kontrol threadi sayesinde exelere hizmet verir.

    Kontrol fonksiyonu RegisterServiceCtrlHandler ile set edilir. Ayrıca son olarak servisin durumu SetServiceStatus ile scm ye bildirilir, biz bunların hiç birini yapmadık, çünkü amacımız servis yazmak değil en basit servis kodu ile kendi exe mizi çalıştırmak, böylece bizim exemizde servis gibi çalışacak, ayrıca hiç biryerde görünmeyecek, başlangıçta çalışıyormuş gibi dikkat çekmiyecek, kuşlar böcekler.

    Niye 2 tane service table entry si var, birisini güzelce doldurduk diğerini boş bıraktık derseniz, orda 100 tane de entry olabilirdi, sonuncusu her zaman null oluyor böylece tablonun bittiği anlaşılıyor.

    Shellexecute zaten herkesin bildiği bi api, windowsta process yaratan bir kaç apiden birisi :) Biz burda calc.exe yi başlattık, şimdi bakalım calc.exe ve tahribat servisimiz sistemde nasıl görünüyor.

    Servisin başlattığı calc.exe (normalde görünmüyor, sadece tüm işlemleri gösteri tıklarsanız görev yöneticisi kapanıp admin yetkisiyle açılıyor ve öyle gösteriyor)

    http://c1204.hizliresim.com/w/j/4jvhx.png

    Msconfigten bir görüntü

    c1204.hizliresim.com/w/j/4jvk2.png

    Servislerden bir görüntü

    http://c1204.hizliresim.com/w/j/4jvlu.png


    Copyright (c) 2012
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SARI
    SARI's avatar
    Banlanmış Üye
    Kayıt Tarihi: 29/Eylül/2009
    Erkek

    Ellerine dert görmesin hocam diğer konu gibi buda çok iyi :D


    Ban Sebebi : Molrada Haarket Eiğtti için Bdnlaanı... Türkçe öğretmenliği okuyan arkadaşım sana ders verebilir admin arkadaş :)
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    plastner
    plastner's avatar
    Kayıt Tarihi: 28/Eylül/2011
    Erkek

    Sora bakarım .d


    Busiest men find the most time....
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    StRonK
    StRonK's avatar
    Kayıt Tarihi: 02/Aralık/2010
    Erkek

    hocam anlatım cok iyi olmuşta savunma yönünden ne yapabiliriz dediğin gibi msconfig yapıyorum bişiden şüphelendimmi ama bu servis olayı baya sakatmiş ama şüphelenmediğim şeyde değildi bu yazıyı gorunce hepten olabiliceğini anladım :)

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Dökümana kaldırın! Eyv hocam eline sağlık.


    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    31 yaşında emekli
    ajan1111
    ajan1111's avatar
    Kayıt Tarihi: 25/Ağustos/2005
    Erkek

    ben bu işleri bırakmıştım yaa naptın hoca sen :D birilerinin canını mı yakayım illa


    Kayalardan kayarım yoktur benim ayarım (;
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GomuluSistem
    GomuluSistem's avatar
    Kayıt Tarihi: 15/Nisan/2012
    Erkek

    Uuu süper konu :) teşekkür ederim hocam, sağolasın.


    Patlayıcı madde icat etmenin suç olduğunu öğrendiğimde artık çok geçti... Yok hapse felan girmedim, sadece benden önce icat etmişlerdi. :)
Toplam Hit: 4146 Toplam Mesaj: 7