26 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Лаборатория информационной безопасности.              Лаборатория информационной безопасности Пишем простой keylogger для windows на c

Содержание

Как написать кейлоггер на C#

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

Создание кейлоггера на C#

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

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

Еще жертва может пользоваться парольным менеджером, тогда в логе мы получим только Ctrl-C и Ctrl-V. На этот случай будем мониторить еще и содержимое буфера обмена.

Писать будем на C# в Visual Studio. Забегая вперед, скажу, что в результате у меня получилось две версии программы — одна работает через перехват WinAPI, другую я про себя называю «костыльной». Но эта менее красивая версия дает другие результаты при проверке антивирусами, поэтому расскажу и о ней.

Теория создания клавиатурного шпиона на C#

Когда вы нажимаете на кнопку, операционная система посылает уведомления тем приложениям, которые хотят об этом узнать. Поэтому самый простой метод перехватить нажатие на клавиатуре — это принимать сообщения о нажатиях клавиш. Если мы этого сделать не можем (например, функция SetWindowsHookEx запрещена антивирусом или еще чем-либо), можно тянуть сырой ввод и без нее. Есть такая функция — GetAsyncKeyState, которая принимает номер клавиши и позволяет узнать, зажата она или отжата в момент вызова. Собственно, алгоритм действий будет такой: раз в N мс опрашиваем все кнопки и узнаем их состояние, занося нажатые в специальный список. Затем список обрабатываем, учитывая состояние клавиши Caps Lock, Num Lock, Shift, Ctrl и так далее. Полученные данные будут записываться в файл.

Написание кейлоггера на C#

Для начала откроем Visual Studio и создадим новый проект Windows Forms (.NET Framework). Почему именно Windows Forms? Если мы выберем обычное консольное приложение, то при каждом запуске будет создаваться некрасивое черное окошко, а ведь пользователь не хочется беспокоить. Также, пока мы не создали форму (а создавать ее мы и не будем), никаких значков в таскбаре не появится — важная часть скрытой работы. Теперь удаляйте автоматически созданный файл Form1.cs со всеми потрохами и открывайте Program.cs.

Заглушка Main

Здесь нас уже поджидает шаблон программы, но он не будет работать просто так. Первым делом надо убрать строчки 10–12 и 16–18. Теперь меняем объявление метода со static void Main() на static void Main(String[] args). Нужно это для того, чтобы мы могли определить свои аргументы при перезапуске.

Теперь добавим using System.IO; для работы с файлами, System.Runtime.InteropServices для работы с WinAPI и System.Threading для приостановки потока. Если вы не хотите писать костыльный вариант, лучше пропустите этот раздел и сразу переходите к следующему.

Импортируем GetAsyncKeyState из user32.dll:

H Пишем простой Keylogger для Windows на C++ в черновиках Из песочницы

Решил написать программный логгер клавиатуры на C++ с использованием WinAPI. Не могу сказать, что преследовал какую-нибудь шпионскую цель, когда писал его, скорее знакомился с хуками на WinAPI. Так как получилось не так уж и плохо, а на Хабре нет статьи про программные логгеры, решил написать свою.

Как это сделано?

Для отлавливания нажатия клавиш был использован клавиатурный хук.

Для того, чтобы перехватывать нажатия всех клавиатурных клавиш, в качестве параметра idHook удобно указать WH_KEYBOARD или WH_KEYBOARD_LL. Разница лишь в том, что WH_KEYBOARD_LL также перехватывает нажатия системных клавиш (т.е Alt или любая клавиша при зажатом Alt), поэтому его мы и выберем.

lpfn — указатель на функцию, обрабатывающую перехваченные сообщения (в нашем случае нажатия клавиш).
hMod — дескриптор экземпляра приложения, содержащий обрабатывающую функцию.
dwThreadId — идентификатор потока, сообщения которого мы хотим перехватывать. Нужно установить данный параметр в 0, чтобы перехватывать сообщения всех потоков.

Возвращаемое значение — дескриптор нашего хука, который при выходе нужно будет освободить функцией UnhookWindowsHookEx.
Обратившись за справкой в MSDN, мы видим прототип функции, обрабатывающей сообщения данного хука.

Параметр nCode должен быть равен HC_ACTION, иначе сообщение предоставляется другому процессу.
wParam — это одно из следующих значений WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, или WM_SYSKEYUP.
lParam — указатель на структуру KBDLLHOOKSTRUCT, в полях которой нас интересуют только 2 параметра: vkCode(виртуальный код) и scanCode нажатой клавиши.
Данная функция должна вернуть значение функции CallNextHookEx, в противном же случае, следующий обрабатывающий событие хук, может получить неверные параметры сообщения.
Каждый раз при нажатии клавиши, наша программа будет перехватывать это событие и обрабатывать нашей процедурой LowLevelKeyboardProc.

Для того, чтобы ретранслировать виртуальный и скан код клавиши в символьный вид, нам понадобится функция ToAsciiEx.

Первые 2 параметра — виртуальный и скан коды клавиши соответственно.
lpKeyState — состояние клавиатуры, проверяет какие клавиши нажаты/активны.
lpChar — указатель на двойное слово, в которое функция запишет символьное представление клавиши.
uFlags — параметр, указывающий на активность меню.
dwhkl — идентификатор раскладки клавиатуры.
Возвращаемое значение — количество символов, записанных в буфер lpChar. Нас интересует случай, когда записан 1 символ.
В принципе, это 3 основные функции, требуемые для самого простого клавиатурного логгера.

Немного о программе

Программа компилируется без RTL в Visual Studio 2013. Таким образом, мы получаем небольшой объём исполняемого файла и невозможность сборки в debug-версии. Данные записываются в лог файл в тот же каталог, где находится .exe файл. Для удобства логгер каждый раз создает новый файл при записи, записывает время нажатия клавиш, имя окна, в котором вводились символы и останавливается по нажатию LSHIFT+RSHIFT. Данный сниффер не адаптирован под полную клавиатуру, некоторые служебные клавиши, например F13 или NUM_LOCK, могут писаться, как [unknown]. Думаю те, кто хоть немного знаком с C/C++ смогут запросто их добавить. Более того, Вы можете полностью изменить код так, как Вам удобно.

Программа не требует прав администратора, поэтому её можно втихую поставить на любой компьютер друга под управлением Windows.

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbspЛаборатория информационной безопасности

Воруем пароли или лучшие программы для слежения за компьютером соседа

Кто из нас не хотел почувствовать себя хоть раз кул-хакером и сломать хотя бы что-нибудь? 🙂 Если даже и нет, то уж о том, как было бы здорово заполучить пароль от почты / соц. сети друга, жены / мужа, соседа по комнате думал хотя бы однажды каждый. 🙂 Да и надо же с чего-то начинать, в конце-то концов! Существенная часть атак (взломов) включает в себя заражение компьютера жертвы так называемыми кейлоггерами (spyware).

Итак, в сегодняшней статье поговорим о том, какие есть бесплатные программы для слежения за компьютерами на базе windows, где можно скачать их полные версии, как заразить ими компьютер жертвы и в чём особенности их использования.

Но вначале небольшое введение.

Что такое и зачем нужны кейлоггеры?

О том, что это такое, думаю, Вы догадались и сами. Как правило, они представляют собой некую программу, которая скрыто (хотя это не всегда так) устанавливается на компьютер жертвы, после чего фиксирует абсолютно все нажатия на клавиатуре на данным узле. При этом помимо самих по себе нажатия обычно фиксируется: дата-время нажатия (действия) и программа, в которой эти действия были выполнены (браузер, в том числе адрес сайта (ура, сразу видим, от чего пароли!); локальное приложение; системные службы (в т.ч. пароли входа в windows) и т.д.).

Отсюда сразу видна одна из проблем: я заполучио на пару минут доступ к компьютеру своей соседки и хочу заполучить её пароль от ВК! Установил чудо-программку и вернул комп. Как же мне потом смотреть пароли? Снова искать способ забрать у неё комп? Есть приятная новость: как правило, нет. Большинство кейлоггеров способно не только хранить всю накопленную базу действий локально, но ещё и пересылать её удалённо. Вариантов отправки логов существует масса:

  • Фикситрованный e-mail (может быть несколько) — самый удобный вариант;
  • FTP-сервер (у кого он есть);
  • SMB-сервер (экзотика, да и не очень удобно).
  • Фиксированная флешка (вставляешь её в USB-порт компьютера жертвы, и все логи копируются туда автоматически в невидимом режиме!).
Читать еще:  Что такое HUD и с чем его едят? Head-up-display. Технология Head-up-display (HUD): проекционный дисплей на лобовое стекло автомобиля Что такое head up display

Зачем же всё это нужно? Думаю, ответ очевиден. Помимо банальной кражи паролей, некоторые кейлоггеры умеют ещё ряд приятный вещей:

  • Логирование переписки в заданных соц. сетях или мессенджерах (напр, Skype).
  • Съёмка скриншотов экрана.
  • Просмотр / съемка данных с веб-камеры (что может быть очень интересно).

Как использовать кейлоггеры?

А это вопрос непростой. Надо понимать, что просто найти удобный функциональный хороший кейлоггер мало.

Итак, что же нужно для успешной работы программы-шпиона :

  • Администраторский доступ к удалённому компьютеру.
    При чём это совсем не обязательно именно физический доступ. Вы вполне можете зайти туда через RDP (службу Удалённого рабочего стола); TeamViewer; AmmyAdmin и т.д.
    Как правило, с этим пунктом связаны самые большие сложности. Однако же я недавно писал статью о том, как получить права администратора в Windows.
  • Анонимный e-mail / ftp (по которому Вас не вычислят).
    Конечно, если Вы ломаете соседу тётю Шуру, этот пункт можно смело опустить. Как и в случае, если у Вас компьютер жертвы всегда под рукой (аля, узнать пароли брата / сестры).
  • Отсутствие рабочих антивирусов / внутренних систем защиты Windows.
    Большинство публичных кейлоггеров (о которых и пойдёт речь ниже) известны подавляющему большинству антивирусного ПО (хотя есть такие вирусы-логгеры, которые встраиваются в ядро ОС или системный драйвер, и антивирусы уже не могут их ни обнаружить, ни уничтожить, если даже обнаружили). В силу вышесказанного, антивирусное ПО, если таковое имеется, придётся безжалотсно уничтожить. Кроме антивирусов, опасность для нашей программы-шпиона представляют также системы типа Защитник Windows (таковые впервые появились в Windows 7 и далее). Они отлавливают подозрительную активность работающего на компьютере ПО. О том, как же от них избавиться можно без труда найти в гугле.

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

Чуть было не забыл главное! Будучи на рабочем месте, да и дома тоже, не забывайте обезопасить себя самого! Не используйтесь рабочий интернет-канал для поиска и скачивания вредоносного ПО и запросов типа: «как получить права доменного админа в корпоративной сети»! 🙂 Вот моя статья о том, как остаться анонимным в Интернете.

Какие бывают программы-шпионы и где их скачать?

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

0. The Rat!

  • Скрытность: 10
  • Удобство / юзабилити: 9
  • Функциональность: 8

Это просто бомба, а не кейлоггер! В рабочем состоянии занимает 15-20 КБ. Чего удивляться: он целиком написан на ассемблере (ветераны-программисты прослезились) и написан по большей части энтузиастами-хакерами, за счёт чего уровень его скрытности просто поражает воображение: работает он на уровне ядра ОС!

Кроме того, в комлект поставки входит FileConnector — мини-программа, позволяющая склеить данный кейлоггер с абсолютно любой прогой. В результате Вы получаете новый exe-шник практически того же размера, и работающий при запуске ровно так, как та програ, с которой Вы его склеили! Но после первого запуска Ваш кейлоггер будет автоматически установлен в невидимом режиме с заранее заданными Вами параметрами отсылки логов. Удобно, не правда ли?

Прекрасная возможность для социальной инженерии (приносите другу на флешке файл-игру / презентацию, да можно даже просто документ ворд (о том, как создать exe-ик, запускающий конкретный word/excel-файл расскажу в одной из следующий своих статей), запускаете, всё хорошо и прекрасно, однако же друг невидимо уже заражён!). Либо же просто шлёте этот файлик другу по почте (лучше ссылку на его скачивание, т.к. современные почтовые сервера запрещают отправку exe-файлов). Конечно, риск от антивирусов при установке всё же имеет место быть (зато его не будет после установки).

Кстати, при помощи некоторых других приёмов можно склеить любой дистрибутив скрытой установки (таковые есть в The Rat! и в Elite keylogger) не только с exe-файлами (которые у мало мальски продвинутых пользователей всё же вызывают подозрения), но и с обычными word / excel и даже pdf-файлами! Уж на простую pdf-ку никто никогда ничего не подумает, но не тут-то было! 🙂 Как это делается — тема целой отдельной статьи. Особо ретивые могут написать мне вопросы через форму обратной связи. 😉

В общем, The Rat! можно описывать очень долго и много. Куда лучше меня это сделано вот здесь. Там же есть и ссылка на скачивание.

1. Elite keylogger

  • Скрытность: 10
  • Удобство / юзабилити: 9
  • Функциональность: 8

Ссылка на скачивание: здесь

Пожалуй, один из лучших когда-либо созданных кейлоггеров. В число его возможностей, помимо стандартного набора (перехват всех нажатий в контексте приложений / окон / сайтов), входит перехват сообщений мессенджеров, снимки с веб-камеры, а также — что ОЧЕНЬ важно! — перехват паролей службы WinLogon. Иными словами, он перехватывает пароли входа в Windows (включая доменные!). Это стало возможным благодаря его работе на уровне системного драйвера и запуску ещё на этапе загрузки ОС. В силу этой же особенности, данная программка остаётся абсолютно невидимой и для Каспероского, и для всего прочего анти-вредоносного ПО. Признаться, я не встречал ни одного кейлоггера, способного на такое.

Однако же не стоит обольщаться слишком уж сильно. Сам инсталлер распознаётся антивирусами очень легко и для его установки потребуются и админовские права и отключение всех антивирусных служб и сервисов. После установки всё будет работать идеально в любом случае.

Кроме того, описанная особенность (работа на уровне ядра ОС) вносит требования по версия ОС, на которых кейлоггеров будет работать. Версия 5-5.3 (ссылки на которую приведены чуть ниже) поддерживает всё до Windows 7, включительно. Win 8 / 10, а также windows семейства server (2003 / 2008 / 2012) уже не поддерживаются. Есть версия 6, прекрасно функционирующая в т.ч. на win 8 и 10, однако найти крякнутую версию на текущий момент не представляется возможным. Вероятно, в будущем она появится. А пока же скачать Elite keylogger 5.3 можно по ссылке выше.

Нет режима сетевой работы, посему для использования работодателями (для слежения за компьютерами своих сотрудников) или целой группы лиц не подойдёт.

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

Несколько скринов 5-ой версии (дабы показать, на сколько всё красиво и удобно):

2. All-in-one keylogger.

  • Скрытность: 3
  • Удобство / юзабилити: 9
  • Функциональность: 8

Также весьма и весьма удобная штуковина. Функционал вполне себе на уровне Elite keylogger-а. Вот со скрытностью дела по-хуже. Winlogon-пароли уже не перехыватываются, драйвером он не является, в ядро не встраивается. Однако же устанавливается в системные и скрытые AppData-директории, до которых не так легко добраться посторонним пользователям (не тем, от имени которых он установлен). Тем не менее антивирусы рано или поздно с успехом это делают, что делает эту вещь не особенно-то надёжной и безопасной при использовании, к примеру, у вас на работе для слежки за собственным начальством. 😉 Склеить с чем-нибудь или же закриптовать код для сокрытия от антивирусов не получится.

Работает на любых версиях ОС Win (что приятно и практично).

Что же касается остального, всё прекрасно: логирует всё (кроме паролей на вход в Windows), пересылает куда угодно (включая e-mail, ftp, фиксированную флешку). По удобство также всё прекрасно.

3. Spytech SpyAgent.

  • Скрытность: 4
  • Удобство / юзабилити: 8
  • Функциональность: 10

Также неплохой кейлоггер, хотя и с сомнительной скрытностью. Поддерживаемые версии ОС также все возможные. Функционал схож с предыдущими вариантами. Есть интересная функция самоуничтожения после заданного периода времени (либо по достижении заранее заданной даты).

Кроме того, возможна запись видео с веб-камеры и звука из микрофона, что также может быть очень востребовано и чего нет у предыдущих двух представителей.

Есть сетевой режим работы, что удобно для слежения за целой сетью компьютеров. Он же, кстати, есть у StaffCop (в обзор не включён по причине бесполезности для одного пользователя — физ. лица). Пожалуй, эта программа идеально подойдёт работодателям для слежки за своими сотрудниками (хотя лидер в этом поприще безоговорочно StaffCop и LanAgent — если Вы — юр. лицо, обязательно посмотрите в их сторону). Либо же для слежения за Вашим потомством, любящим посидеть за просмотром «сайтов для взрослых». Т.е. там, где нужна более не скрытость, а удобство (в т.ч. куча красивых журналов-отчётов и т.д.) и функционал блокировки заданных сайтов / программ (в SpyAgent он также имеется).

4. Spyrix Personal monitor.

  • Скрытность: 4
  • Удобство / юзабилити: 6
  • Функциональность: 10

Функционал на уровне предыдущего кандидата, однако те же проблемы со скрытностью. Кроме того, в функционал входит интересная вещь: копирование файлов со вставляемых в компьютер USB-носителей, а также удалённый просмотр логов через веб-аккаунт на сайте Spyrix (но мы же собираемся скачать крякнутую версию, посему оно для нас работать не будет).

5. Spyrix Personal monitor.

  • Скрытность: 3
  • Удобство / юзабилити: 6
  • Функциональность: 8

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

Читать еще:  Как сделать внутреннюю страницу для меню группы в контакте. Как создать внутреннюю страницу в группе или сообществе вконтакте Как сделать внутреннюю

Что имеем в итоге?

Вопрос использования кейлоггера в большей мере этический, чем технический, и он сильно зависит от Ваших целей.

Если Вы — работодатель, желающий контролировать своих сотрудников, смело ставьте StaffCop, собирайте со всех сотрудников письменные разрешения на таковые действа (иначе за такие дела Вас могут неслабо привлечь) и дело в шляпе. Хотя я лично знаю и более эффективные способы повышения работоспособности своих сотрудников.

Если же Вы — начинающий IT-специалист, желающий просто испытать, каково оно — кого-то поломать — и как вообще это дело работает, то вооружайтесь методами социальной инженерии и проводите испытания на своих друзьях, используя любой из приведённых примеров. Однако же помните: выявление такой активности жертвами отнюдь не способствует дружбе и долголетию. 😉 И уж точно не стоит проверять это на своей работе. Попомните мои слова: у меня в этом есть опыт. 😉

Если же Ваша цель — прошпионить за подругой, мужем, соседом, а может, и вовсе делаете это регулярно и за деньги, хорошо подумайте, стоит ли. Ведь рано или поздно могут привлечь. Да и не стоит оно того: «рыться в чужом грязном белье — удовольствие не из приятных». Если всё же надо (а может, Вы работаете в сфере расследования компьютерных преступлений и такие задачи входят в Ваши профессиональные обязанности), то варианта только два: The Rat! и Elite Keylogger. В режиме скрытых установочных дистрибутивов, склеенных с word / excel / pdf. И лучше, по возможности, закриптованных свежим криптором. Только в этом случае можно гарантировать более менее безопасную деятельность и реальных успех.

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

Словом, Вы только начали погружаться в сложный, опасный, но безумно интересный мир информационной безопасности. 🙂

Кейлоггер по-домашнему. Пишем на C# кейлоггер, который не палится антивирусами

Содержание статьи

Ставим задачу

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

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

Еще жертва может пользоваться парольным менеджером, тогда в логе мы получим только Ctrl-C и Ctrl-V. На этот случай будем мониторить еще и содержимое буфера обмена.

Подробнее об атаках на парольные менеджеры читай в статье «Ищем слабые места современных менеджеров паролей».

Писать будем на C# в Visual Studio. Забегая вперед, скажу, что в результате у меня получилось две версии программы — одна работает через перехват WinAPI, другую я про себя называю «костыльной». Но эта менее красивая версия дает другие результаты при проверке антивирусами, поэтому расскажу и о ней.

Теория

Когда ты нажимаешь на кнопку, операционка посылает уведомления тем программам, которые хотят об этом узнать. Поэтому самый простой способ перехватить ввод с клавиатуры — это принимать сообщения о нажатиях клавиш. Если мы этого сделать не можем (например, функция SetWindowsHookEx запрещена антивирусом или еще чем-либо), можно тянуть сырой ввод и без нее. Есть такая функция — GetAsyncKeyState, которая принимает номер клавиши и позволяет узнать, зажата она или отжата в момент вызова. Собственно, алгоритм действий будет такой: раз в N мс опрашиваем все кнопки и узнаем их состояние, занося нажатые в специальный список. Затем список обрабатываем, учитывая состояние клавиши Caps Lock, Num Lock, Shift, Ctrl и так далее. Полученные данные будем записывать в файл.

Пишем код

Для начала откроем Visual Studio и создадим новый проект Windows Forms (.NET Framework). Почему именно Windows Forms? Если мы выберем обычное консольное приложение, то при каждом запуске будет создаваться некрасивое черное окошко, а ведь юзера мы договорились не беспокоить. Также, пока мы не создали форму (а создавать ее мы и не будем), никаких значков в таскбаре не появится — важная часть скрытой работы. Теперь удаляй автоматически созданный файл Form1.cs со всеми потрохами и открывай Program.cs.

Заглушка Main

Здесь нас уже поджидает шаблон программы, но он не будет работать просто так. Первым делом надо убрать строчки 10–12 и 16–18. Теперь меняем объявление метода со static void Main() на static void Main(String[] args) . Нужно это для того, чтобы мы могли определить свои аргументы при перезапуске.

Теперь добавим using System.IO; для работы с файлами, System.Runtime.InteropServices для работы с WinAPI и System.Threading для приостановки потока. Если ты не хочешь писать костыльный вариант, лучше пропусти этот раздел и сразу переходи к следующему.

Импортируем GetAsyncKeyState из user32.dll:

И добавляем собственно логирование нажатий, собирая их по десять штук, чтобы не делать слишком много дисковых операций:

Расшифровывать такой лог будет неудобно

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

После такого редактирования лог стал намного чище (см. рисунок).

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Статья Пишем simple-кейлогер с передачей дампа по TCP на C#

Перейти к странице

Ishikawa

Однажды возникла острая необходимость выяснить логины/пароли от ряда сетевых ресурсов в крупной организации. Выходов было два — MITM и неизвестность или конкретная цель и кейлогер.
Поскольку практически все известные кейлогеры есть в базах KAV и прочей антивирусной шняги, было принято решение писать что-то свое, без всяких няшных гуев на C# (.Net 3.5-4.0).
Only console,only hardcore.
Задач было две — перехватывать все нажатия клавиш с учетом раскладки клавиатуры, отслеживать долгие нажатия клавиш (зажатый shift и пр.,определять где большая буква, где маленькая.) + забрать логи без палева по сети через TCP на случайном порту.

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

Начнем.
Кодить можно в любой байде,я выбрал Microsoft VisualStudio.
Разработка состоит из следующих этапов:
1. установка хука
2. обработка нажатий
3. шифрование
3. запись в файл
4. создать сервер на произвольном порту, чтобы забирать дамп.

Сперва подключим пространства имен:

выделим из них using System.IO — ввод/вывод, System.Net.Sockets — для создания соединений, using System.Security.Cryptography — шифрование.

Затем инициализируем параметры:

WM_KEYDOWN = 0x0100; //нажали
WM_KEYUP = 0x0101; //отпустили
WM_SYSKEYUP = 0x0105; //отпустили syskey
WM_SYSKEYDOWN = 0x0104 //нажали syskey
public const int KF_REPEAT = 0X40000000; //флаг удержания

Ставим «указатели» для установки Hook . Вообще хук — древнее, испытанное средство, работающее от winxp до win10. Инфы по ним — масса.

Описание хука должно быть вынесено за пределы всяких процедур и находится в общем классе.
Нашему приложении придется выполнять две задачи сразу: писать нажатия и висеть с открытым сокетом. Без тредов тут не обойтись.
До описания void Main пишем [STAThread] — это позволит создать два потока.

Поскольку приложение у нас консольное — нам нужно, чтобы его не было видно.
Для этого в static void Main пишем:

ShowWindow(handle, SW_HIDE); //если закомментировать — окно будет visible

Ставим хук (описание будет ниже)

Далее там же определяем текущую раскладку клавы. Используем метод GetKeyboardLayout();

Теперь пишем функцию для установки хуков. Вызывается из блока Main:

Теперь хук установлен (почти). Куда же идти дальше? Дальше — рыбалка
Пишем функцию для отлова нажатий клавиш:

int vkCode = Marshal.ReadInt32(lParam); — один из самых надежных методов — Marshal, но он дает нам не клавишу в чистом виде, а ее код. Например: F == 70
Далее — переводим из marshal в string.

Writer(encrypted); — пишем факт смены раскладки.
mss = mss_check; -по этой переменной при следующем нажатии определяем, изменилась ли раскладка. Кстати если будете дебажить — учтите, что софт будет писать и клавиши отладки (F9,F10 и реагировать на них).
Пишем все остальные нажатия:

Далее пишем только те что были отпущены (в нашем случае все контрольные)

Похожим образом можно ловить сочетания клавиш, например так:

и обрабатывать их со своими правилами.

Или же делать вообще веселые вещи — блокировать сочетания клавиш:

Читать еще:  Источники бесперебойного питания компании APC для офисов и домашнего использования. Источники бесперебойного питания apc back ups Блок бесперебойного питания back ups

return (IntPtr)1; — как раз и блокирует

Чтобы наше приложение не зависло после первой нажатой клавиши, нужно предусмотреть выход из процедуры:

На этом с функцией HookCallback покончено. Займемся троянским конем с одной функцией — передать нам данные из файла лога.
Поскольку сокеты вещь капризная, оформляем ее в try — catch конструкцию:
public static void ServerSocket()
<
while (true) // цикл с условием
<
<
try
<
Создаем точку подключения из текущего IP и порта 9050. Я специально убрал поиск и выбор случайного порта, но порт 9050 как правило, не закрыт.

1. Получаем текущий IP и устанавливаем порт.
2. Создаем сокет.
3. Биндим и ждем подключений .
Поскольку наша прога — сервер — мы ждем клиента. Создаем сокет для клиента:

1. Получаем удаленный IP.
2. Создаем коннект.
3. Пишем в лог, что подключились.

Далее необходимо инициировать отправку файла от сервера клиенту. Для этого снова делаем обертку из try-catch.

Для отправки используем Socket.SendFile. Лог сохраняется туда же, где лежит текущее приложение.
После передачи — разрываем коннект.

Желающие могут переписать client.SendFile на FtpWebRequest reqFTP или SmtpClient client = new SmtpClient(), чтобы использовать возможности FTP или email, но последний не советую, т.к. корпоративные почтовики пишут логи+придется писать еще модуль для работы через proxy.
(подобным же образом можно дописать и шелл-оболочку, hello metsvc )

Осталось только дописать две функции: запись и шифрование.
Запись реализуется чрезвычайно просто:

Обращаем внимание — пишем каждый символ с новой строки. Почему так — скажу в конце.
А вот теперь модуль Encrypt. Дабы не изобретать велосипед — возьмем готовый.

Опишу модуль лишь в кратце. Сложностей там нет.
Шифрование будет AES-256. Параметры у меня предустановлены. Главные из них — длина ключа и вектор.

Cоздаем MemoryStream — работать с памятью удобнее и быстрее. Для шифрование — лучший вариант.
Затем создаем крипто-поток. Получается в некотором роде «матрешка» из потоков.
//пишем
cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);
// записали — почистили
cryptoStream.FlushFinalBlock();
//закрываем потоки
memStream.Close();
cryptoStream.Close();

Теперь есть одна сложность, почему пишем с новой строки, а не продолжаем дальше. AES не позволяет шифровать данные на лету. Если мы так попробуем сделать — файл будет тупо перезаписываться или в конец будет добавлено шифрованное содержимое, которые мы уже никогда не расшифруем, ибо программа не сможет определить где начало,где конец.

Что же делать? Выход прост и лаконичен:
После symmetricKey.Clear(); дописываем следующую строчку:

Да,да. Старый, добрый Base64.
Работает это так: нажали А — открыли файл для записи, зашифровали А в , а записали в Base64 H1BoaX7twhPxtE5AuydhHQ==

В итоге шифрованный файл у нас будет выглядеть как-то так:

3/Cy4CkgahXIZxzWIcHB/w==
bEvDy6XwQ/TCSLteiHV8HNfOpYHaM1wcUjbWXcIA2PjN3NuyZ7s5MdfA+l3fkVHp
fHiGcrcccgtDbW4+Tpf7wA==
bEvDy6XwQ/TCSLteiHV8HNfOpYHaM1wcUjbWXcIA2PhUzj0ghbJZVoJgsbRiS6CH
H1BoaX7twhPxtE5AuydhHQ==
GMv5+3F6dLb5GymIvv3Lhg==
9har47I/6mOOnWtllg52nQ==
fHiGcrcccgtDbW4+Tpf7wA==
8E2+NLMvagqELD4ggKoT0g==
IFwu4krJ7dIVqKdbH/EQ0g==
8E2+NLMvagqELD4ggKoT0g==

Присутствует потенциальная уязвимость, ибо одинаковые символы шифруются AES и Base64 одинаково, и статистически возможно определение одного символа или группы символов
(пароли и вектор ведь не меняются).

По TCP все передается plaintext — поскольку все и так зашифровано — для расшифровки нужно знать длину ключа, пароль, вектор. Без этих данных расшифровка — тухлое дело.

И чуть не забыл самое главное. Чтобы хук работал, нужно получить все нужные нам функции через DLLImport. В конец главного класса дописываем:

Все перечислять не буду — полное описание будет во вложении.
Последнее замечание: поскольку всё это написано на C# 4.0 (уж так получилось), то работать это будет на всей ветке Windows, начиная с Win2003S до Win8.1 и скорее всего и Win10 с установленным .NetFramework 4.0 (лично я проверял на WinXP, Win7,Win2008,Win8.1)

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

Слив курсов по Информационной Безопасности

LeSora

Авторитет

1.Видеокурс программиста и крекера 2018 (Апрель).

В 70 видеоуроках курса автором сайта [email protected] последовательно освещяется процесс становления крекером «с нуля». Основной упор сделан на то, чтобы простым языком передать слушателю видеокурса свой опыт и секреты подхода, накопленные за 11 лет крэкерской карьеры. Вершиной изучения крэкерства считается знание реверсинга, поэтому вас ждёт приятный бонус: мини-курс из 25 уроков по реверсингу!

Ещё более 250 новых уроков других авторов раскрывают секреты таких языков программирования, как:

Ассемблер, машинный код (70 уроков)

Java для Android гаджетов (65 уроков)

Язык Apple Swift для iPhone и MacBook (30+ уроков)

Python для Windows и Unix систем (20+ уроков)

Доступ к информации: SQL и noSQL базы данных (20+ уроков)

JavaScript и CSS 3 технологии для разработки сайтов (30+ уроков).

Также в курс входит масса свежих статей и книг такой же тематики, как и у видеоуроков, что поможет вам ещё глубже познать материал.

Плюс вы найдете в содержании курса раздел инструментов: более 800 актуальных инструментов для программиста и крэкера.

2. Полный Курс По Взлому — От Начального до Продвинутого Уровня! Все Части.

Если вы хотите научиться взлому и тестированию на проникновение, то этот курс для вас. Получите ответы от опытного IT эксперта на каждый имеющийся у вас конкретный вопрос, связанный со взломом. Включая установку Kali Linux, использование VirtualBox, основы Linux, Tor, Proxychains, VPN, Macchanger, Nmap, взлома wifi, aircrack, DoS attacks, SSL strip, известные уязвимости, SQL инъекции, взлом паролей Linux, и многое другое!

3. Тестирование на проникновение с нуля (все части).

  • Введение в курс
  • Подготовка — Создание тестовой лаборатории
  • Подготовка — Основы Linux
  • Основы веб-сайтов
  • Сбор информации
  • Уязвимости при загрузке файлов
  • Уязвимости LFI
  • Уязвимости RFI
  • SQL инъекции
  • SQL инъекции — SQLi в страницах авторизации
  • SQL инъекции — Извлекаем информации из базы данных
  • SQL инъекции — Продвинутые эксплоиты
  • Уязвимости XSS
  • Эксплуатируем XSS уязвимости
  • Управление сеансами
  • Брутфорс и Атака словарем
  • Автоматический поиск уязвимостей с помощью Owasp ZAP
  • Что делать после внедрения
  • Бонусы

СКАЧАТЬ:

4. Metasploit — программа для взлома в хакерском дистрибутиве Kali. Полный курс.

-Основы Metasploit: MsfCLI, Msfconsole, эксплойты, важные команды для использования эксплойтов, базовая полезная загрузка Payload, генерация различных Payload, Meterpreter.

-Сбор информации с помощью Metasploit: Сканирование портов с Metasploit, получение информации о службах в Metasploit, SNMP сниффинг, скрипт psnuffel.

-Сканирования на уязвимости с помощью Metasploit: SMB Login Check Scanner, open VNC server scanning, WMAP web scanner, NeXpose scanner, nessus.

-Создание эксплойтов с полезной нагрузкой: проектирование, Msfvenom, Msfpayload, Msfencode, Shellcode.

-Клиентская часть: бинарная полезная нагрузка, троянский конь для Linux, вредоносный PDF.

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

-Скрипты, meterpreter and расширения на Ruby

-Бекдоры, лазейки для удаленного входа в систему: кейлогеры, metsvc.

-Эксплуатация в реальном мире

5. Профессиональное руководство по взлому и проникновению в беспроводную сеть WiFi.

— 802.11: Основы, Частоты, Точки доступа, Ad-Hoc, ABGN, SSID, ESSID и BSSID, Beaconing And Broadcasting, Enterprise Networks, Wi-Fi для Windows, Wi-Fi в ОС Mac OS, Wi-Fi в Linux

— Обеспечение безопасности беспроводной сети: Аутентификация, 802.1X, Радиус, Шифрование, WEP, WPA, WPA2, WPS, EAP, Скрытая сеть, Фильтрация, Сегментация сети, Конфигурации по умолчанию

— Инструменты беспроводной Атаки : Встроенные инструменты, Кали Linux, Kismet, Aircrack-НG, WiFi Explorer, Wireshark, Wireless Attack Toolkit, NetStumbler, Ettercap, Dsniff, Airpwn, Aireplay-NG, Fern, WiFi Tap, Cowpatty, WiFi-Honey

— Атаки на беспроводные сети: Использование Wireshark, Захват сетевых пакетов, Режим монитора, Investigating Packets, Фильтрация, Radio Traffic, War Driving, Frame Injection, RADIUS Replay, SSL Stripping, Де-аутентификация, Airodump, фальшивая аутентификация

— Атаки на точку доступа: Replay Атака, Взлом WEP, Взлом WPA, Rogue Access Points, Атака «человек посередине», Изменения MAC-адреса

— Bluetooth: Обзор Bluetooth, аутентификации Bluetooth, профили Bluetooth, Bluesnarfer, Blueranger, BT сканер

— Другое беспроводые сети: WiMax, Near Field Communication, ZigBee, RFID

6. Атака и защита веб-сайтов по OWASP top 10.

Цель курса – получить знания и навыки, необходимые для успешного выявления и устранения проблем безопасности веб-приложений. Курс посвящен методикам проведения тестирования на проникновение согласно классификации OWASP Top 10.

В курсе представлены подробные материалы по работе веб-серверов и веб-приложений. Детально описаны уязвимости в соответствии с классификацией OWASP Top 10 и техники применения эксплойтов для многочисленных тестов на проникновение. А также предложены рекомендации по укреплению защищенности веб-приложений для каждого вида уязвимости.

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

7. Реверс-инжиниринг и разработка эксплойтов (первая чаcть).

01. Начало работы

  • Введение в реверс
  • Об авторе
  • Этические соображения
  • Инструменты реверс-инжиниринга — Часть 1
  • Инструменты реверс-инжиниринга — Часть 2
  • Инструменты реверс-инжиниринга — Часть 3
  • Инструменты реверс-инжиниринга — Часть 4
  • Реверсивные Инструменты реверс-инжиниринга — часть 5
  • Реверсивные Инструменты реверс-инжиниринга — Часть 6
  • Как пользоваться файлами примеров (рабочими файлами)

02. Реверсивные скомпилированных приложений для Windows

  • Обзор уязвимостей — Часть 1
  • Обзор уязвимостей — Часть 2
  • Обзор уязвимостей — Часть 3
  • Использование Fuzzing (методика тестирования, при которой на вход программы подаются невалидные, непредусмотренные или случайные данные) — Часть 1
  • Использование Fuzzing — Часть 2
  • Использование Fuzzing — Часть 3
  • Использование Fuzzing — Часть 4
  • Just Enough Assembly (Наверное, простой реверс) — Часть 1
  • Just Enough Assembly — Часть 2
  • Just Enough Assembly — Часть 3
  • Переполнение стека — Часть 1
  • Переполнение стека — Часть 2
  • Переполнение стека — Часть 3

СКАЧАТЬ:

Данная статья создана исключительно для ознакомления и не призывает к действиям!

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector