Аппаратный кейлоггер: Мой вариант + доработка

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

В первом приближении все тоже самое: микроконтроллер включается в разрыв PS/2 интерфейса клавиатуры и компа, ловит нажатие кнопок и пишет их в свою память. Используется встроенная в МК энергонезависимая память (EEPROM), ёмкости которой хватит на пароль от винды и еще чуть-чуть. Для перехвата чего-то большего лучше использовать внешнюю память.

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

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

Контроллером выбран 8-ми ногий AtTiny45 в маленьком корпусе SOIC, благодаря чему его можно смонтировать прямо в корпусе разъема. Возможна замена на Tiny25/85 (отличаются объемами памяти как флеш, так и EEPROM) или Tiny13/15 (отличаются чуть сильнее). Современные МК отлично подходят для подобных применений, так как не требуют для работы никаких внешних компонентов, например, при некритичных требованиях к стабильности тактовой частоты внешний кварц заменяется внутренней RC цепочкой, что и было сделано. Единственным внешним компонентом стал резистор для «подтяжки» ресета до напряжения питания.

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

Фото процесса создания.

Берем 2 mini DIN 6-pin разъёма папа и мама:
image

Разбираем их и прикидываем как разместить контроллер:
image

Далее, чтобы все состыковалось, дорабатываем некоторые детали:
image

Пластмасса достаточно легко режется обычным канцелярским ножом.
Распаиваем все по схеме:
image

Места внутри очень мало и монтаж требует определенной сноровки. Кое-где контроллер припаян непосредственно к выводам разъема, остальное на проводах. Собирается все без клея, и держится очень прочно. Контроллер и провода внутри нужно обмотать изолентой, чтобы не было замыкания через металлические половинки разъема (на фото изоленты нет для наглядности).
image

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

В разъеме как раз есть 2 неиспользуемых контакта (4 и 6), на которые выведены недостающие для программирования ноги RESET и ISO.
Программа для МК написана на C в среде AVRStudio + WinAVR GCC. Она довольно простая и достаточно прокомментирована. Нужно сбросить по умолчанию взведенный FUSE CKDIV8.

Возможные улучшения
  • Больше памяти. У контроллера осталось 2 неиспользуемые ноги и при желании можно подключить внешний EEPROM в таком же 8-ми ногом SOIC корпусе по шине I2C. Микросхемы можно сложить одну на другую и запихнуть все это в разъем. Тогда памяти будет на пару порядков больше (например у меня есть подходящий EEPROM на 32 Кб).
  • Функция очистки памяти. Еще одна спец. кнопка, по которой прибор будет очищать память. Сейчас же идет перезапись и иногда выводится прошлый или позапрошлый перехват.
  • Интерактивное текстовое меню. Меню из нескольких пунктов (настройки, действия и т.д.), формируемое непосредственно в блокноте.
  • Автоматизатор нажатий. Возможно кому-то понравится возможность независимо от приложения привязать к какой-то кнопке или сочетанию кнопок множество нажатий.
В итоге получился довольно удобный и миниатюрный прибор с обширной функциональностью. Его применение целиком и полностью зависит от вас.
Скачать программу.
  • +2
  • 25 января 2011, 21:15
  • Mr_Pink

Комментарии (0)

RSS свернуть / развернуть

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