MI5, puzzleСегодня друзья прислали ссылку на головоломку, решение  которой позволяет подать заявку на трудоустройство офицером государственного ведомства британской контрразведки (МИ5). Вот ссылка. Такой способ поиска сотрудников в последнее время становится всё более популярным. Многие компании публикуют головоломки, решение которых позволяет пройти «виртуальное собеседование на профпригодность».

Я решился тоже решить головоломку от МИ5, чтобы представить себе уровень базовых требований этой загадочной организации.

…download the file and start unpicking the task our Digital Intelligence unit have set. If you can find the messages in the hidden documents you may be suitable for a role in our team.
…скачивайте файл и начинайте решение задачи нашего Разведывательного Бюро. Если вы найдёте сообщения в скрытых документах, то вы можете быть пригодны нашей команде.

Скачиваем файл по предложенной ссылке (или по этой, если с сайта МИ5 ребус удалят). Файл имеет название itjobs.pcap и начинается с последовательности байт 0xd4, 0xc3, 0xb2 и 0xa1, которые выдают в нём файл захваченного сетевого трафика. Такие файлы обрабатываются с помощью программного обеспечения Wireshark.

mi5-puzzle-wireshark-001

Открываем файл и видим IGMP, ARP пакеты, следом за которым идут TCP-пакеты. Делаем предположение, что ребус является отдельной сессией передачи данных и в потоке различных соединений копаться не придётся.

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

mi5-puzzle-wireshark-002 mi5-puzzle-wireshark-003

Теперь, как гласит послание, надо найти «скрытое сообщение». Для начала проверяем, что объём не-tcp-трафика незначительно — делаем вывод, что сообщение передавалось с помощью TCP сообщений. Определяем используемый протокол, для этого быстро просматриваем файл и видим большое кол-во SMTP-пакетов. Задаём новый фильтр, исключающий такие пакеты и снова убеждаемся в незначительном количестве всех прочих (в основном это около десятка HTTP GET-запросов).

mi5-puzzle-wireshark-004 mi5-puzzle-wireshark-005

Анализ выше показал, что искомое сообщение, которое надо раздобыть из полученного файла — это сообщение, переданное по протоколам электронной почты.

Анализируем дальше… обмен идёт между двумя какими-то адресами, которые просто просматриваем и пока не придаём им значения. Пролистываем SMTP трафик и натыкаемся на интересную посылку в которой указан какой-то пароль Hell0W0rld!, который запоминаем. Пролистываем сообщения к концу файла, обращая внимание, что идёт передача большого блока данных из нескольких не склеенных сообщений. Находим последнее сообщение в цепочке переданных и видим, что «большим сообщением являлся» архивный файл, присоединённый к телу послания.

mi5-puzzle-wireshark-007 mi5-puzzle-wireshark-008

Из добытой информации делаем вывод, что ничего интереснее, чем русская матрёшка специалисты из английской разведки не придумали. С грустью о том, что головоломка оказалась слишком простой — сохраняем добытую информацию из цепочки Internet Message Format в отдельный файл itjobs.eml, который открываем с помощью Outlook Express, с помощью которого сохраняем добытый файл backup.rar.

Пробуем открыть новый файл. Видим, что содержимое файла закрыто паролем. Пробуем добытый ранее пароль Hell0W0rld!. Пароль подходит. В архиве обнаруживаются ещё 4 файла. Какая это уже матрёшка по счёту — пятая наверное? Даты создания файлов — начало сентября 2011 года, т.е. поиск специалистов для МИ5 проводится после каникул в учебных заведениях… попутно обращаем внимание, что над головоломкой Некто трудился минимум 3 рабочих дня, соответственно 9, 12 и 13 сентября (пятница, понедельник и вторник).

mi5-puzzle-wireshark-009

Открываем первый файл file.docx в Microsoft Word, видим белый лист бумаги. Выделяем содержимое и видим какой-то белый прямоугольник в центре документа. Удаляем прямоугольник и видим открывшийся позади него текст.

mi5-puzzle-wireshark-00b

Текст гласит

Well done. There are four interesting files to find as part of our challenge but only three are hiding something. This is the third file.

Т.е. нам сообщают, что из четёрых файлов лишь в трёх что-то спрятано, при этом открытый файл — третий по счёту.

Пробуем открыть следующий файл image.jpg — он не открывается. Просматриваем его содержимое, видим в начале файла знакомые символы PK, также находим внутри файла строчку word/document.xml, делаем вывод, что это тоже документ, поэтому переименовываем его в файл image.jpg.docx. Открываем и сразу видим новый текст, в котором нас поздравляют с открытием второго послания.

mi5-puzzle-wireshark-00c

В файле info.docx ничего интересного нет, видимо это один из четырых не зашифрованных файлов.

Открываем файл remember.docx, снова видим белый лист бумаги. Таким фокусом нас не проведёшь — выделяем содержимое, видим что есть какой-то текст. Белый текст на белом фоне. Меняем цвет шрифта и нам открывается последнее послание.

mi5-puzzle-wireshark-00d

Вот так я решил головоломку. Некоторые загадки меня даже повеселили — хорошие юмористы их всё-таки придумывают (особенно понравился белый текст на белом фоне).

Головоломка оказалась простой (не сложной), но оригинальной. Решение задачки подразумевает наличие базовых знаний в протоколах передачи данных в компьютерных сетях, знание и умение пользоваться инструментами для обработки сетевых протоколов, небольшой смекалки и… 15 мин. времени.