World Wide Something (PHD Quals 2014)

Find the key

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

В задании дан файл с дампом трафика:
file world_wide_something.pcapng.bb7625881876ce291c9a8af3c17ae1d8
world_wide_something.pcapng.bb7625881876ce291c9a8af3c17ae1d8: pcap-ng capture file - version 1.0

При изучении дампа в Wireshark выясняем, что он содержит всего 3 стрима, при этом все пакеты принадлежат всего двум хостам (192.168.96.1 и 192.168.96.151), т.е. «левых» пакетов в дампе нет. Протокол прикладного уровня был мне незнаком, хотя строка «/sys/devices/pci0000:00/0000:00:11.0/0000:02:03.0/usb1/1-1» в первом стриме указывает на то, что он как-то связан с USB-устройствами. Однако нам это совершенно неважно для решения таска!

Хорошо видно, что подавляющее большинство пакетов в дампе принадлежит второму стриму, а при просмотре его содержимого трудно не заметить большой блок данных, размером несколько мегабайт, передаваемый от 192.168.96.1 к 192.168.96.151. Что это могут быть за данные? При изучении дампа при помощи strings весьма подозрительной выглядит строчка «P_201~1MP4». Видео? А почему бы и нет!

Отфильтровываем в Wireshark интересующие нас пакеты и сохраняем в файл их содержимое (Follow TCP Stream -> Save As).
tcp.stream eq 2 && ip.src_host == 192.168.96.1

Осталось подгрузить файл в какой-нибудь player и посмотреть что получится… И это работает! Проигрыватель воспроизводит видео, на котором явно видно, что показываются какие-то надписи, по-видимому ключ. Однако точно разобрать их практически невозможно из-за «мусора» на экране. Это неудивительно, ведь сохраненные данные, кроме видео, содержат структуры протокола прикладного уровня, по которому они передаются. Эти заголовки хорошо видны и идентифицируются по magic word «USBC». Впрочем, в основном они присутствуют в начале и в конце файла.

Теперь воспользуемся обычным HEX-редактором, чтобы «почистить» файл. После многочисленных USBC-заголовков находим начало видеофайла — его хорошо видно по специфическим структурам. К тому же обычно файлы данного типа имеют сигнатуру \x00\x00\x00\xnn. Именно с этой сигнатуры вырезаем данные и сохраняем в новый файл. Вуаля! Теперь видео почти идеального качества! 🙂

Flag: VFN5g96J49oZz4DcXgkI68SvK6JWC4JYu778ca

P.S. Скорее всего по задумке авторов таска, участники должны были разобраться в USBC-протоколе, понять, что происходит в дампе и корректно извлечь передаваемый файл. Но все решалось гораздо проще 🙂

Leave a Comment

Your email address will not be published.

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.