KeySpy: клавиатурный шпион нового поколения

CUK77

Professional
Messages
1,192
Reputation
3
Reaction score
407
Points
83
Многие озабоченные собственной безопасностью пользователи некоторую информацию (прежде всего пароли) всегда держат в голове, никуда не записывают - ни в cookie, ни в реестр, - а всегда вводят с клавиатуры. В какой-то степени они поступают правильно, ведь любой более-менее продвинутый троян без проблем отыщет все записанные в системе пароли и отошлет их хакеру. Юзер думает, что он в безопасности. В ICQ он указал security level=3 и считает, что его никто и никогда не взломает, потому что он вводит все пароли с клавы каждый раз при запуске нужного приложения. Наивный юзер.

А ввело в заблуждение о собственной безопасности пользователя почти полное отсутствие в свободном доступе хороших клавиатурных шпионов - программ, которые символ за символом записывали бы все, что набирает пользователь: пароли, команды, личную переписку. Такая плачевная ситуация с количеством хороших кейлогеров отразилась и на нас с Волком.

Однажды ночью мы прокрались через один хитрый баг под названием RPC DCOM на тачку давнего врага. Нас интересовал пароль от почты, на которую в скором времени этот чухан должен был получить очень важное письмо, безумно ценное для нас. Мы ждали этого момента с нетерпением. Я уже приготовил целую кучу утилит по вытаскиванию из системы паролей, но, облазив всю систему и найдя The Bat! последней версии, я не обнаружил ни одного, даже самого ненужного пароля :(. Противник оказался умнее, чем можно было предположить: наученный горьким опытом общения с троянами, он никогда не сохранял свои пароли в системе. Но он не учел одного – хороший хакер обычно является еще и хорошим кодером.

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

KeySpy

На это ушло почти три дня, за которые мы с Волком выпили целый ящик кока-колы. И вот час икс пробил: мы дописали ЕГО. Лучший, по нашему мнению, существующий публичный клавиатурный шпион. Коротко опишу его достоинства:

Не определяется антивирусами, особенно если его хорошенько запаковать – вдруг придется иметь дело с эвристиком.
Не виден в списках процессов, окон и т.д.
Размер программы всего 10 кб (!), а если сжать, так и вовсе 5!
Записывает не только все нажатые клавиши, но и имена окон и процессов, в контексте которых пользователь нажимал эти клавиши, а также полную дату и время.
Отслеживает работу с буфером обмена – если твой подследственный поместил туда ценные данные, они не ускользнут!
В настройках не нужно указывать никаких SMTP-серверов и прочих ужасных вещей - только мыло, на которое должен приходить лог, и максимальный объем лога, достигнув которого шпион должен его отослать.
Полагаю, тебе уже стало интересно, где можно взять такую классную программу. Как всегда, свежий релиз ты можешь найти на нашем сайте www.xakep.ru.

Работать с нашим клавиатурным шпионом проще простого. Сначала нужно сконфигурировать его серверную часть. Серверной я называю ее потому, что у троянов этот кусок программы обычно играет роль сервера – слушает локальный порт, обрабатывает соединения и т.п. Для этого нужно запустить config.exe, открыть конфигурируемый файл (keylogger.exe), внести свои настройки и нажать кнопку «Сохранить настройки». Даже кролик справится.

После этого смело устанавливай keylogger.exe на компьютер жертвы. Сделать это можно кучей разных способов, начиная от банального впаривания по e-mail, заливкой трояна через открытые шары и заканчивая использованием Folder Sploit и багов в браузере IE, позволяющих запускать у посетителя зло-страницы любые приложения. Мы уже неоднократно писали о каждом из этих способов, так что советую тебе обратиться к архиву старых журналов на сайте www.xakep.ru, заюзав поиск.

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

После конфигурирования я всем очень советую любую засылаемую программу, будь то RAT или шпион, как следует упаковать. Это снижает вероятность определения программы эвристическим антивирусом и уменьшает объем. Волк обычно делает это с помощью всем известного UPX’а. Наш KeySpy сжался в два раза - недурно для программы с объемом сорцов более чем в две тысячи строк, правда?

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

Из-за появления огромного числа разного рода мыльных червяков и спам-ботов общедоступные серверы типа mail.ru начали закрывать возможность отправлять письма без аутентификации, ставить ESMTP-демоны и требовать регистрации на сервере. Троянописцев и подобных им людей, давно пользующихся услугами отправки почты у этих серваков, это очень расстроило и заставило придумать способ обойти эту гребаную аутентификацию. Собственно, все уже было придумано до нас создателями архитектуры почтовой системы. Абсолютно любой SMTP-сервер принимает для доставки письма, адресованные локальным пользователям, не требуя ни аутентификации, ни чего бы то ни было еще. Думаю, несложно догадаться, почему так сделано. Если же это для тебя загадка, подробное объяснение можно найти в соответствующей врезке.

Трудности этого случая заключаются в определении, к какому smtp-серверу нужно подключаться, чтобы отправить письмо. Дело в том, что, вопреки твоим ожиданиям, домен, стоящий справа от @, обычно не является адресом smtp-сервера этого домена. Как же получить нужный хост? Как раз для этого есть служба DNS – стоит только запросить MX-запись необходимого домена, как все проблемы отпадают.

Наш шпион реализует подобный способ, для того чтобы не пришлось все время держать в программе адрес работающего smtp с паролем и логином.

Также кейлогер использует очень интересную технологию внедрения собственного кода в чужой процесс (возможно, в будущих номерах Х ты сможешь прочесть о ее реализации). Эта технология нужна для того, чтобы шпион не светился в списках, а сидел тихо в каком-нибудь explorer.exe или lsass.exe и никого не трогал. С помощью этой технологии, по идее, исключается возможность убить программу в процессе работы, так как для этого пришлось бы убивать всюе систему.

Это еще не конец

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

Работа SMTP-сервера

Так все же, почему сервер принимает от кого ни попадя почту для локальных пользователей? Если бы это было не так, то работа всех служб e-mail была парализована, ни одно письмо не долетало бы до адресата. Ведь смотри, как получается. Ты пишешь письмо, например, в The Bat!, нажимаешь кнопку «Отправить». Клиентская программа подключается к указанному в настройках smtp-серверу и при помощи специального протокола передает ему письмо. Далее серверная программа решает, принять это письмо для пересылки или нет. Если она принимает, то схема простая: SMTP-сервер получает MX-запись, соответствующую домену получателя корреспонденции, подключается к этому хосту и, опять же, при помощи того же самого протокола передает письмо. Только на этот раз оно адресовано уже локальному пользователю и никуда пересылать его не нужно, поэтому сервер безо всяких проверок его принимает и записывает в ящик пользователя.

INFO

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