Дмитрий DarkByte Москин

Мой блог, да.
logo

Spy - RuCTF 2012 Quals

Опубликовано 18.03.2012 автором Дмитрий Москин
Spy [forensics] / 400 баллов
Зашел по ssh к товарищу по работе, сделал cat /dev/inputX :) Как же интересно наблюдать за параноиками. А вы что здесь видите?

Скачиваем файл 930d246235fe2849a356f913413711ea. Распаковываем его как bz2 и затем gz архив и видим два файла: keyboard.data и mouse.data, которые содержат информацию о передвижении мышки и нажимаемых клавишах.

Для начала пробуем выполнить:
cat keyboard.data > /dev/input/event0

И видим, что дамп валидный и какие-то кнопочки нажимаются, что-то вводится. Выполнив несколько раз, успеваем заметить, что в набираемом тексте присутствуют слова board и yandex, но это ни о чём нам не говорит. Переходим на правильный путь. С помощью питона парсим файл keyboard.data и получаем следующие данные:
<LEFTALT><F2>FIREFOX<ENTER><LEFTALT><LEFTCTRL><LEFTALT><LEFT><LEFTCTRL><LEFTALT><RIGHT><LEFTALT><LEFTALT><TAB><LEFTCTRL>L82<DOT>146<DOT>45<DOT>224<ENTER>RUCTF<LEFTCTRL>T<LEFTCTRL>T<ESC><LEFTCTRL>TKEYBOARD<DOT>YANDEX<DOT>RU<ENTER><LEFTCTRL><PAGEUP><LEFTCTRL><PAGEDOWN><LEFTCTRL>RRUCTF<TAB><LEFTCTRL>V<ENTER><LEFTCTRL>U

И сразу становится понятно, что пользователь зашёл по адресу 82.146.45.224 ввёл имя пользователя ructf, затем перешёл на сайт keyboard.yandex.ru... и вот тут то нам и пригождается файл mouse.data. Опять же обрабатываем его питоном, отрисовываем очерёдность кликов и в графическом редакторе совмещаем клавиатуру с яндекса и наш рисунок, используя в качестве ориентира клавишу shift, которая нажимается чаще всего.



Восстанавливаем введённый текст: 0D5ApgUYrQbe. Пытаемся ввести его на сайте, ссылку на который получили выше, и видим сообщение "Hello from RuCTF Dev Team", а в исходном коде страницы находим флаг: "Key for task: Eeh8chaieiPh8thiThahmai7Zuu7ouku"

UPD: скрипт парсинга файлов keyboard.data и mouse.data: spy.py, автор ei-grad.