Intercepted Conversations Pt.1
Райтап от тиммейта Kirik
Рассмотрим задание с IceCTF.
Ведется переписка двух хакеров, наша задача, собственно, узнать о чем же они переписываются. Качаем приложенный файл(
), он формата .pcapng, и узнаем в нем всем до боли знакомый формат WireShark, программы для анализа трафика.
Открываем файл, а глаза бросается огромное количество слов USB, откуда догадываемся, что это информация захваченная с клавиатуры мышки и тд.
Бегло пробегаем по пакетам и находим, что устройство с id 21 ни что иное как клавиатура информацию с корой мы и будем «грабить», а узнаем мы это благодаря пакетам у котрых в поле info написано GET DESCRIPTOR. Выделяем необходимые пакеты с адреса 21 с помощью фильтра:
usb.data_flag == "present (0)" && usb.device_address == 21
Далее нас будут интересовать только пакеты: URB transfer type: URB_INTERRUPT, так как в них таится передаваемая с клавиатуры информация, опять же догадываемся об этом из описания пакета в поле info)
Раскопав содержимое пакета находим поле Leftover Capture, в нем видим пока не понятный набор цифр типа 20000a0000000. Предполагаем что это код клавиши.
Идем обратно в гугл и ищем стандарт, а точнее таблицу кодов что бы узнать, что за символы набирались на клавиатуре. Находим ее тут(http://www.hiemalis.org/~keiji/PC/scancode-translate.pdf) USB HID to PS/2 Scan Code Translation Table.
Далее выделяем все пакеты с не нулевыми значениями поля Leftover Capture и достаем из них коды клавиш, убираем из них не нужные нули и получаем следующий набор:
20000a0000000000
2000000000000000
0000000000000000
00000c0000000000
0000000000000000
0000070000000000
0000000000000000
0200000000000000
02000c0000000000
0200000000000000
02000e0000000000
0200000000000000
02001c0000000000
0200000000000000
0000000000000000
0200000000000000
02002f0000000000
0200000000000000
0000000000000000
0200000000000000
0200360000000000
0200000000000000
0000000000000000
00000d0000000000
0000000000000000
0000270000000000
0000000000000000
0200000000000000
02002d0000000000
0200000000000000
0000000000000000
0000130000000000
0000000000000000
00001e0000000000
0000000000000000
2000000000000000
2000190000000000
2000000000000000
0000000000000000
0000200000000000
0000000000000000
0200000000000000
0200330000000000
0200000000000000
02002d0000000000
0200000000000000
0000000000000000
00001b0000000000
0000000000000000
0000360000000000
0000000000000000
0000200000000000
0000000000000000
0200000000000000
0200120000000000
0200000000000000
0000000000000000
0000240000000000
0000000000000000
2000000000000000
2000170000000000
2000000000000000
0000000000000000
0200000000000000
02002d0000000000
0200000000000000
0000000000000000
0000210000000000
0000000000000000
0200000000000000
02000f0000000000
0200000000000000
0200170000000000
0200000000000000
0000000000000000
0000360000000000
0000000000000000
0000210000000000
0000000000000000
0000170000000000
0000000000000000
0000220000000000
0000000000000000
0200000000000000
0200300000000000
0200000000000000
0000000000000000
В глаза явно бросается различие комбинаций: какие-то начинаются с двойки, какие-то с 02, какие-то просто с нулей. Глядим в табличку и находим, что под кодом 02 хранится клавиша Shift. Что наталкивает на мысль о том, что в одном пакете передается информация о всех клавишах, нажатых в один момент. Например согласно таблице комбинация 20000a0000000000 несет в себе сочетание клавиши Shift и «g», и того получается «G», соответственно 00000c0000000000 означает одиноко нажатую «i».
Заручившись этими знаниями перегоняем все коды в символы и получаем флаг: GidIKY{<j0_p1V3:_x,3O7T_4LT,4t5}
Вот только не задача, он не подходит под общий вид флага, который должен начинаться с IceCTF. Тут варианта два либо мы нашли не ту таблицу, либо текст набирался на клавиатуре с альтернативной раскладкой. Начнем с простого и проверим модель клавиатуры, для этого возвращаемся к пакетам GET DESCRIPTOR и в поле idProduct находим название клавиатуры Kinesis Advantage PRO MPC/USB Keyboard.
гугл картинки ииииии… хвала компьютерным богам находим, что это разделяемая клавиатура с альтернативной раскладкой, где буква передаваемая с клавиатуры зависит от ее состояния при этом код передается одинаковый.
Проверяем по картинке и вуаля буква «g» и «i» находятся на одной клавише, переводим наш флаг в соответствии со свежей информацией, при этом разумеется Shift так и остается Shift-ом.
Три два раз получаем набранный хакером текст: IceCTF{wh0_l1k3s_qw3r7y_4NYw4y5}
Это и есть наш флаг! Салют, фанфары, праздничный чаек идем к следующему заданию.
- Автор: drakylar
- Комментарии: 0
- Просмотры: 5441