Backdoor en basit tanım ile sistem güvenliğini atlatarak bir bilgisayar sistemine veya şifrelenmiş verilere erişmenin bir tür yoludur. Backdoor'un çalışma mantığı ise şöyledir; ağ üzerinden Client, Server'ın isteklerini yerine getirir. Yani kurban bilgisayar, hackerın istediklerini yerine getirir. Günümüzde sıradan ev kullanıcılarını hacklemek için biliyorsunuz ki reverse shell kullanılır ki analizini yapmıştık ve kodlarını yorumlamıştık. Yani Server = Hacker, Client = Kurban olur. Port dinlemeyi Hacker yapar.
Sunucularda ise Bind Shell kullanılır. Yani Server = Kurban, Client = Hacker olur. Hacker sunucuya bağlantı kurar.

Günümüzde çoğu açık fixlenebildiği ve fixlendiği için güncellemelerle beraber; genelde sosyal mühendislik ile kullanıcı kandırılır ve zararlı yazılım olan .exe kullanıcı tarafından çalıştırılır. Böylece Hacker, kurban bilgisayar ile bağlantı kurmuş olur.
Hani bahsettik ya revershe shell'den aynı uygulamalar burada da olacak elimizde bir server kodu bir de client kodu var C# ile yazılmış.Bu 2 zımbırtımızdan Server tarafı olan kod kurban bilgisayardan gelen bilgileri ekrana yazdıracak ve sonsuz döngü içinde sürekli komut isteyip Client tarafına gönderecek soket üzerinden. Client tarafı kod ise ki bu bizim zararlı yazılımımız kurban bilgisayardan gelen komutları gizli bi' cmd.exe uygulamasına input olarak giriş yaptıracak ve gelen çıktıları Server'a, yani Hacker'a yollayacaktır. Bildiğiniz üzere cmd.exe üzerinden bir çok sistem fonksiyonu gerçekleştirilebiliyor, sistem yönetimini sağlayan komutlar ve bu komutları işlemeye yarayan kontrol mekanizmalarının bulunduğu; Windows işletim sisteminin en dış katmanı bu zımbırtı.
yazılımlarımız::
Server tarafı kodlarımız;

Client tarafına geçmeden ne yapmışız bu server tarafı kodda kısa bi' göz atalım isterseniz. İlk önce TCP ve her IP adresinin bağlanabileceği sadece 4444 portlu bi' Soket oluşturduk. Sonrasında dinlemeye aldık. Daha sonrasında bağlantı kabul etmek için Socket.BeginAccept kullandık. Bağlantı kabul edildiğinde, Client Soketini Socket.BeginReceive'a yolladık ve o Soket'ten veri almaya başladık. Aldığımız verileri ekrana yazdırdık ve tekrar Socket.BeginReceive ile aynı Soket'ten veri almaya devam ettik. Sonrasında program sonsuz bi' döngüye (!) girdi ve bizden herhangi bi' Command Prompt (cmd) komutu istiyor. Bunu Client'a, yani kurbana yolluyor. Eğer Soket'le bağlantısını keserse 10053 hata kodlu Exception veriyor, bu hata, yerel ağ sistemi bir bağlantıyı kestiğinde ortaya çıkabilir. WinSock, veri iletimi başarısız olduktan sonra kurulan bir bağlantıyı keserse meydana gelir.
Şimdi de client tarafına yani zararlı yazılımızın tarafına uçuyoruz;

Burada ne haltlar yedik? Program Console bi' .NET uygulaması olduğu için ShowWindow API'si ile gizlemek zorunda kaldık. API'yi projeye dahil etmek için P/Invoke kullandık.
0 = Disable
1 = Enable olarak anlamaktadır fonksiyon. Biz 0 ile görünmez hale, yani Disable hale getirdik.
Sonrasında TCP bi' Soket oluşturduk ve Server'a, yani Hacker'a 4444 portundan bağlandık. Daha sonrasında Process class'ı ile cmd.exe'yi başlattık. Process.StartInfo.CreateNoWindow ile ekranın görünmesini engelledik.
Process.StartInfo.RedirectStandardOutput, Process.StartInfo.RedirectStandardInput, Process.StartInfo.RedirectStandardError değişkenlerini true yaptık CLI olan programdan veri alacağımıza dair uyarı bu...
Process.OutputDataReceived için ise delegate oluşturduk, Console'dan gelen veriyi böyle alıcaz. Delegate olan fonksiyonda ise DataReceivedEventArgs.Data'yı, yani Console'daki çıktıyı Server'a, yani Hacker'a yolladık.
Sonrasında da Process.Start ile cmd.exe'yi başlattık ve Process.BeginOutputReadLine ile asenkron çıktı almayı başlattık. Sonrasında da Socket.BeginReceive ile Server'dan, yani Hacker'dan veri almaya başladık ve Soket'i ReceiveHandler fonksiyonuna yönlendirdi. Gelen veriyi Process.StandardInput.WriteLine ile Console'a input olarak yolladık, bu komut çalıştığında CMDHandler fonksiyonu devreye girecek. Sonrasında bi' döngü gibi Socket.BeginReceive ile tekrardan Server'dan, yani Hacker'dan bilgi almaya başladık. Son olarak cmd.exe'nin kapanmaması için Process.WaitForExit kullandık.
Kodların genel açıklaması bu şekilde şimdi analiz kısmına geçelim isterseniz.
analiz::
Geçen konumda da olduğu gibi VirusTotal'den kernel.dll'in tetiklendiğini kabak gibi görüyoruz, kernel.dll donanıma etki eder genelde makinenizin beynine etki eder de diyebiliriz aslında çok geniş bir yelpazesi var cidden.

CFF Explorer'a gidelim hemen .dll bilgilerini öğrenmek için, benim ilk gözüme çarpan bu aşağıdaki uzak bağlantı kurmayı sağlayan WSOCK32 ve fonksiyonları oldu direkt


Ayrıca kernel.dll'in altından çıkan muhteşem üçlümüzü de burada görebilmek mümkün;

Bugünlük konum bu kadardı bu konumda kod açıklamalarını ve analizi dengeli bir biçimde anlattım analiz kısmında çok ayrıntıya girmedim, analiz yoğunluklu konuma https://www.turkhackteam.org/zararli...rse-shell.html bakabilirsiniz, okuduğunuz için teşekkür ederim.