Сейчас на форуме: Kybyx (+3 невидимых) |
![]() |
eXeL@B —› Оффтоп —› Cоревнования специалистов по кибербезопасности NeoQUEST-2015 |
Посл.ответ | Сообщение |
|
Создано: 13 марта 2015 19:35 · Личное сообщение · #1 Приглашаем принять участие в онлайн-туре ежегодного соревнования специалистов по кибербезопасности NeoQUEST-2015, который пройдет с 10 по 17 марта! NeoQUEST — это ежегодное испытание для специалистов в области кибербезопасности, затрагивающее как фундаментальные, так и самые актуальные и нетривиальные проблемы защиты информации. В этом году участников ждут увлекательные и разнообразные задания следующей направленности: – стеганография; – reverse engineering; – криптография; – безопасность современных мобильных технологий; – форенсика; – виртуализация. Лучшие участники онлайн-тура получат не только отличные призы, но и приглашение на участие в очном туре NeoQUEST-2015, который пройдет в Санкт-Петербурге в период белых ночей! Главный приз очного тура – поездка на одну из международных хакерских конференций, на выбор победителя! Регистрация открыта здесь: http://2015.neoquest.ru/. Больше узнать про квест можно на сайте http://neoquest.ru и на Хабрахабр (http://habrahabr.ru/company/neobit/blog/). ![]() |
|
Создано: 13 марта 2015 19:40 · Личное сообщение · #2 |
|
Создано: 14 марта 2015 01:17 · Личное сообщение · #3 |
|
Создано: 14 марта 2015 01:24 · Поправил: dosprog · Личное сообщение · #4 |
|
Создано: 14 марта 2015 08:41 · Личное сообщение · #5 |
|
Создано: 15 марта 2015 07:31 · Личное сообщение · #6 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 15 марта 2015 10:20 · Личное сообщение · #7 |
|
Создано: 17 марта 2015 12:40 · Поправил: Crawler · Личное сообщение · #8 Ок, раз уж очный тур завершён - расскажите, что там с ключом, который был спрятан в последнем задании. А был ли ключ? Сначала - монтируем образ диска в режиме "только для чтения" в Windows 8 или выше. Можно, конечно, его было конвертировать в vhd вот так: C:\Program Files\Oracle\VirtualBox>vboxmanage clonehd --format VHD D:\downloads\ contest\win7_neoquest.vhdx D:\downloads\contest\win7_neoquest.vhd Однако я не стал заниматься такой хренью, поставил восьмёрку на VMWare и подключил диск Ясное дело, что нужно было сам ключ достать из папки "dali" в корне диска, где был удалённый файл "key-x.jpg". В метаданных был ключ, а сам файл был ключом для TrueCrypt-контейнера "files", находящегося в папке "C:\users\JohnSmith". Там были картинки и биография. А дальше что - скрытый криптоконтейнер? Я как не бился, не смог понять, что делать с двумя ключами (из файла key-x.jpg и файла "descript.ion" из папки "dali") и какие ключевые файлы нужны для скрытого кк, если он был. Это основное, что меня интересует. По поводу этого задания было множество догадок. Например, зачем flv-плеер на рабочем столе? Были какие-то flac-файлы в удалённом, но ничего интересного в них не нашлось. С применением R-Studio я посмотрел последовательность действий над файлами диска. Но это не помогло. Вот до чего я докопался в попытках решить остальные задания (я не смотрел подробно, что там было, например, задания с Solaris, Mason Os (образом дискеты) и андроид-приложением с SSL я вообще не смотрел (хотя последнее решается, наверное, тоже легко, после декомпиляции). Если там было что-то интересное, отпишитесь тут, кто решал их. Mystic Square ("Пятнашки"). Почти халява. Прежде всего, получаем ключ. Кто как, а я не люблю пятнашки, поэтому получил первый ключ, воспользовавшись Adobe Photoshop (собрал куски картинки), потом уже собрал пятнашки ради интереса, пока было время. Ключ такой: 10838670582455823456841. Декомпилим игру (Java Decompiler), смотрим на методы. Класс "Simple" содержит основное, что нам нужно знать. Там есть методы Get() и Decrypt (String paramString). Первый получает файл от скрипта "http://79.175.2.83/0b32bd28a8632f9895f9d5d8a6c51dad/game.php". В запросах фигурирует строка: [ASM]79.175.2.83/0b32bd28a8632f9895f9d5d8a6c51dad/game.php?message=10838670582455823456841[/ASM] Кстати, md5-хэш строки-названия папки - testgame, не знаю, имеет ли это значение. В результате запроса получаем файл ("/sdcard/key.txt") со следующим содержимым: [ASM]5890287499022904927250918089905639153507 3148792732424313619076650032785631134 key=a0bf0f01485a59addf4f9374e7c2a7b5[/ASM] Дальше - простая криптография, если можно это так назвать, а скорее - теория чисел. Тут вступает в дело метод класса "Simple" Decrypt (). Там была проверка условия: если на диске отсутствует файл ""/sdcard/key.txt"", то возвращаем 0. В противном случае: читаем в массив первые две строки файла. Проверяем условие: Если (LocalArrilst(1).ModPow(e,n) равно LocalArrList(0)), то удаляем файл и возвращаем остаток по модулю, в вычислении которого фигурирует ParamString: [ASM](LocalArrList(0)^Param)/n[/ASM] Я не знаю, прав я или нет, но дальше нужно подобрать значение ParamString, чтобы получить нужный 32-значный остаток в hex-виде? Лично я написал для поиска программу на C++ с использованием "Arageli" для операций с большими числами, но так и не подобрал ключ. Как дальше - кто знает? [ASM]// bigintgr.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "Arageli.hpp" using namespace std; using namespace Arageli; int _tmain(int argc, _TCHAR *argv[ ]) { //Большие числа для сравнения из класса Simple и файла, полученного от сервера: big_int LocalArrList0 = "5890287499022904927250918089905639153507"; big_int LocalArrList1 = "3148792732424313619076650032785631134"; big_int Param = 1; big_int n = "8286006298514071265735892332006920710569"; int length_of_mod=0; string str = ""; while (Param < 10000) { //Перенаправляем вывод в буфер string bf; ostringstream str_buf(bf); streambuf *x = cout.rdbuf(str_buf.rdbuf()); // перенаправляем big_int result = power_mod (LocalArrList0,Param,n); //Считаем и выводим в буфер (в hex-виде) //big_int result = power (LocalArrList0, Param) % n; cout << std::hex<< result; //В строку str копируем результат из буфера str = str_buf.str(); // загоняем содержимое //Возвращаем всё на место cout.rdbuf(x); length_of_mod = str.length (); if (length_of_mod == 32) { cout << str << " [" << std::dec<< str.length()<< "]" << "( param = " << Param <<")"<< endl; } else { //cout << "Param = " <<Param << ", len = " << length_of_mod <<endl; } Param++; } getchar (); return 0; } [/ASM] "Истина внутри" (задача с видео и стеганографией) Её я тоже не решил ![]() Насколько я понял, нужно распаковать видос, что легко делается с ffmpeg примерно так: [ASM]ffmpeg.exe -i C:\contest\video\apple.avi -vcodec rawvideo -an -pix_fmt yuv420p c:\contest\video\yuv.avi[/ASM] В результате получаем yuv-видео, которое до этого было закодировано без потерь кодеком по алгоритму Хаффмана. Но, опять-таки, как я ни бился, ни фига не понял, где конкретно скрыта информация. Таймлайн видео отличается: в нем при распаковке было другое количество кадров, другой фреймрейт, нежели в оригинальном видео с Ютуба. Что, в принципе, и на глаз заметно - есть рассинхронизация со звуковой дорожкой. Для исследований я пользовался RiffPad. Возможно - но только возможно - там использовалось вот это (взято с Cryptowiki.net): [ASM]Изображение представляется в формате YUV, то есть одним каналом яркости Y и двумя каналами цветности U,V. Изображение в канале яркости – это, по существу, черно-белое изображение. Широко известно, что зрительная система человека более чувствительна к изменениям в канале яркости, нежели в каналах цветности. Вследствие этого, компоненты U и V могут быть подвергнуты большему сжатию, чем Y.[/ASM] Дружба и братство Первая часть решается элементарно - там пояснения вообще не нужны. Получил первый ключ - 2b638b6da52bfad2d99dbab4018237df (в exe мало интересного, лучше бы сразу с putty подключился к серверу). Дальше нужно было декомпилировать .so-файл (библиотека, ELF64). Единственное, что я выяснил - что там в несколько проходов нужно получить ключ, основываясь на данных, которые выдает функция backtrace. Пароль вроде был 16-значным. Дальше копать не стал ![]() Масон-connect Открываем дамп Wireshark. Понимаем, что там TLS v1. Получаем вот что: [ASM]1) ClientHello 2) ServerHello: Версия протокола: TLS 1.0 SESSION ID: cbf31107632bd4f7268a1af12022f3b6a0aed0a4d32e60238935e912d14234b5 Случайное число: 13dfd507bff3f666558587decfd0cca33e429cb36a38dc7880ea9d01 Алгоритм шифрования: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f) Алгоритм сжатия: NULL 3) SERVER -> CERTIFICATE: 30820290308201f9a00302010202090093f6aca68de66ab4300d06092a864886f70d01010505003061310b3009060355040613027275310c300a06035504080c03737062310b300906035504070c027370310b3009060355040a0c026e62310b3009060355040b0c026e62310b300906035504030c026e623110300e06092a864886f70d010901160171301e170d3134313231393232333031395a170d3135303131383232333031395a3061310b3009060355040613027275310c300a06035504080c03737062310b300906035504070c027370310b3009060355040a0c026e62310b3009060355040b0c026e62310b300906035504030c026e623110300e06092a864886f70d01090116017130819f300d06092a864886f70d010101050003818d0030818902818100bc8f14f3f9a42328782b97286be863228b4dc8a44bf434e4a41d72487147a8095e29c20f620958b8db05c4eed117b0ce975407011c3120f7442546ee4d716467041f3ec7019f267adbe15353b25d3f8f0bed80cbe88e392d1ac4d3a6f2881b32307d8dc83cb70447f63f9527c67f6b6ebdd1d0eb914f278b38760cffbb0a30a50203010001a350304e301d0603551d0e0416041401a5add7fdbd6f495d3d12cf8b2a2d53896bacc0301f0603551d2304183016801401a5add7fdbd6f495d3d12cf8b2a2d53896bacc0300c0603551d13040530030101ff300d06092a864886f70d010105050003818100608f2f8ae6b7ac7e072d7a3075678aed1bac1919252aa7a6f052144fb8f39cb3bd886ab2b45f7dc27063ec33abcc2e34ff595b8faeab0e3eedb0cce8b97f99525aafcb640c5835f3128cc59d329bea73109778ad8fe7f253210a46f5edaeac367533d04ca4a34e9c6d0560c78e369400bfae5239d50a438a9a3aa1b3804eebae PUBLIC KEY: 30818902818100bc8f14f3f9a42328782b97286be863228b4dc8a44bf434e4a41d72487147a8095e29c20f620958b8db05c4eed117b0ce975407011c3120f7442546ee4d716467041f3ec7019f267adbe15353b25d3f8f0bed80cbe88e392d1ac4d3a6f2881b32307d8dc83cb70447f63f9527c67f6b6ebdd1d0eb914f278b38760cffbb0a30a50203010001 ENCRYPTED: 608f2f8ae6b7ac7e072d7a3075678aed1bac1919252aa7a6f052144fb8f39cb3bd886ab2b45f7dc27063ec33abcc2e34ff595b8faeab0e3eedb0cce8b97f99525aafcb640c5835f3128cc59d329bea73109778ad8fe7f253210a46f5edaeac367533d04ca4a34e9c6d0560c78e369400bfae5239d50a438a9a3aa1b3804eebae 4) ServerHelloDone 5) Клиент->ClientKeyExchange: RSA ENCRYPTED PreMasterSecret (шифруется с помощью открытого ключа сертификата сервера): 02ecc58a10327ad5518b8f73ebe6279fca0dcb3c27cd68e11dcd1732c6c891feadd489e17d3ef817ecc6cedd0c32689a12e5cae5b2ade17fe2083d3cacf86d79f54eeb429ab911df538505e5e5ca77dcb213c0843cb171065383876e5360eb806a040433c43b026d806cfc2915a2a9249c65ab5dfcf560949378d0e3fcf9da34 [[Клиент и сервер, используя ключ PreMasterSecret и случайно сгенерированные числа, вычисляют общий секретный ключ. Вся остальная информация о ключе будет получена из общего секретного ключа (и сгенерированных клиентом и сервером случайных значений);]] 6) Клиент -> ChangeCipherSpec ------------------------Зашифровано 7) Клиент -> ENCRYTPED HANDSHAKE MESSAGE: (содержит хеш и MAC, сгенерированные на основе предыдущих сообщений процедуры подтверждения связи. - - -Сервер пытается расшифровать Finished-сообщение клиента и проверить хеш <> ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 17 марта 2015 14:42 · Личное сообщение · #9 Crawler пишет: Дружба и братство в несколько проходов нужно получить ключ В два прохода выясняется ключ из файла flag2.txt. Первый с фолтом, второй без. Смотреть в сторону расположения строк в памяти. Дальше не разобрался. Mason OS Есть дамп флоппи. Много времени пытался приляпать к ней Bios Parameter Block от FAT и смонтировать, однако, как оказалось, зря. Надо смотреть код бут лодыря. Защищенный режим и адресация это ад для меня. Зато когда докопался до сути, был весьма и весьма доволен. Алгоритм проверки ключа выполняется на очень простом языке, однако сам скрипт нужно изучить весь, т.к. на основе его приделать брутфорс. ![]() |
|
Создано: 17 марта 2015 15:01 · Поправил: Crawler · Личное сообщение · #10 В предыдущем сообщении не прикрепился сертификат - странно. И форматирование сбилось. Может, слишком длинное сообщение. Прикреплю тут. Psalmopoeus Pulcher Я использовал для отладки VMWare+GDB. Настроить вирт. машину можно по описанию на osdev. В принципе, всё хорошо отлаживается. Но остановился в самом начале по той же причине, что и вы) А что за скрипт? ![]() ![]() ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 17 марта 2015 16:15 · Личное сообщение · #11 Crawler, Под скриптом я имел в виду байткод какого то самописного интерпритатора. Что то вроде мини виртуальной машины. Я не стал в итоге делать "декомпиляцию", а просто переписал интерпритатор на вин и отладил в ольге. x16 загрузчик я изучал в ида по статьям с васма. А вообще, я много чего из дампа этого загрузчика протрассил в ольге, по хэшу, например, алгоритм помогло определить внутри x32 загрузчика, распаковать и сдампить x64 загрузчик. Правда тут я крепко словил тупого, не понимая что это x64 ![]() ![]() ![]() |
|
Создано: 17 марта 2015 16:25 · Личное сообщение · #12 В А был ли ключ? Ключ был написан на картинке "Русская живопись\ПЕРЕДВИЖНИКИ\Серов Валентин Александрович (1865-1911) (79)\Петр I на псовой охоте.jpg" Можно было найти листая все или по оттиску времени редактирования который остался в файле 2015:01:30 14:18:54, подобно тому как в key-x осталось 2015:01:29 17:24:20 В РаSSLедование Приложение было собрано на основании http://habrahabr.ru/post/184738/, даже имена остались. Все самое вкусное в libndkNative.so. А именно покриптованные строки -A "Android User-Agent" -d "765=69d7d41f1bc07bb4d101289acb3b048c" -H "Accept-Language: sr" https://db765.ru/138aa49508a4a55dc3d5f274268ac90e.php /data/data/com.ifree.ndkNative/lib/libcurl.so -k на основании которых формировался запрос и поля в заголовке. При запросе возвращалась base64 строка которая декодировалась в архив с картинкой. В общем Code:
Добавлено спустя 5 минут Mason OS Все в конце концов заканчивается виртуальной машиной, под которой проверяется пароль Code:
Брутить всего диапазон 0...0xffff-0x465e Code:
Добавлено спустя 8 минут Дружба и братство 2й и 3й флаги Code:
Добавлено спустя 14 минут Если кому интересно, то код виртуальной машины извлекался скриптом Code:
где файл zzzz4 кусок дампа памяти. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 17 марта 2015 18:27 · Личное сообщение · #13 |
|
Создано: 13 мая 2015 13:04 · Поправил: OKOB · Личное сообщение · #14 Разбор 2х заданий от организаторов: 1. «Истина внутри» — стеганография в видео 2.«А был ли ключ?» — forensic и TrueCrypt http://habrahabr.ru/company/neobit/blog/257737/ 1. «Mystic Square» — «пятнашки» на Android 2. «Масон-connect» — реализуем HeartBleed 3. «raSSLedovanie» — Man-in-the-Middle атака на Android 4. «Дружба и братство» — реверс приложения на C# http://habrahabr.ru/company/neobit/blog/258169/ ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 19 мая 2015 01:30 · Личное сообщение · #15 OKOB, бляяя. И первое, и второе задания я почти решил. Со стеганографией в видео - в принципе, я распаковывал и сравнивал по кадрам, но вот до Piet не добрался. А во втором - вообще не догадался открыть картинки, которые были в криптоконтейнере, и тупо посмотреть глазами ![]() ----- Харе курить веники и нюхать клей, к вам едет из Америки бог Шива, и он еврей. ![]() |
|
Создано: 02 июня 2015 17:57 · Личное сообщение · #16 3-я порция разбора заданий от организаторов http://habrahabr.ru/company/neobit/blog/258893/ задание «Абракадабра», состоящее из двух частей. Обе части — на криптоанализ: первая — на частотный, вторая — на дифференциальный. ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 22 июня 2015 17:15 · Поправил: OKOB · Личное сообщение · #17 |
|
Создано: 23 июня 2015 19:05 · Личное сообщение · #18 |
|
Создано: 01 июля 2015 10:43 · Личное сообщение · #19 |
|
Создано: 03 июля 2015 23:39 · Личное сообщение · #20 |
|
Создано: 04 июля 2015 11:19 · Личное сообщение · #21 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 04 июля 2015 16:13 · Личное сообщение · #22 |
|
Создано: 05 июля 2015 15:58 · Личное сообщение · #23 |
|
Создано: 29 февраля 2016 20:09 · Поправил: Psalmopoeus Pulcher · Личное сообщение · #24 Если кому интересно, пришло на почту: "Открыта регистрация на online-этап ежегодного соревнования по кибербезопасности NeoQUEST-2016, который пройдет с 11 по 21 марта!" Я за мафию создал. ![]() |
![]() |
eXeL@B —› Оффтоп —› Cоревнования специалистов по кибербезопасности NeoQUEST-2015 |