CC’09 завершен, Hack Quest продолжается!

Организаторы фестиваля Chaos Constructions и портал Securitylab предоставляют возможность проверить свои навыки "хакерства" всем желающим и пройти отдельные этапы Hack Quest, который был представлен на фестивале CC2009. Для подключения к конкурсу необходимо загрузить образы двух виртуальных машин (vmware) по следующим ссылкам:

http://download.securitylab.ru/cc09.part01.rar
http://download.securitylab.ru/cc09.part02.rar
http://download.securitylab.ru/cc09.part03.rar
http://download.securitylab.ru/cc09.part04.rar


Загруженные образы запускаются с использованием VMWare Player. На обоих узлах настроены IP-адреса из подсети 192.168.192.0/24. В этой подсети, выполняя задания, связанные с информационной безопасностью, можно отыскать восемь ключей в формате CC09словоCC09. После того, как все ключи будут найдены, сложив их в правильном порядке, можно найти заветный "мега бонус", который так и не был представлен ни одним участником конкурса Hack Quest на CC2009.

Программа crackme (которую легко отыскать) представлена в двух вариантах:
crackme_hard – желающим проверить свои способности по реверсингу не тривиальных защит;
crackme_med – побей рекорд, взломай ее менее, чем за четыре часа!

Have fun!

И немного курьезов. Задержка на пару дней с публикацией VM Hack Quest связана с забавной ситуацией:


Архив cc09.part03.rar при копировании с внешнего диска становился битым (очень странно), что не сразу было замечено.

MD5-контрольные суммы архивов:
1608c5c05a4da3f27b7d2d4d44deadf6 *cc09.part01.rar
f77b9db25e7e7eb8fb9e2e0e322ffacc *cc09.part02.rar
342b9b99e9ec38f1aaffbecdfa2dc54a *cc09.part03.rar
d7352bbb280822e01cb93c77f2f172ff *cc09.part04.rar

39 комментариев :

  1. ага, и waf тоже до сих пор еще ломают (причем как 8.0.9 так и 8.0.10)... свежо придание ;)

    ОтветитьУдалить
  2. >> и waf тоже до сих пор еще ломают
    и я даже догадываюсь, кто его ломает:))

    ОтветитьУдалить
  3. не только paranoidchaos :)
    думаю, человек 10 еще точно, потому что некоторые их них мне писали какие-то странные письма на эту тему.

    ОтветитьУдалить
  4. Первонах ;)
    Есть XSS для текущей 8.0.10 версии.
    Есть вариант для старой 8.0.9 который не нашли на СС09.
    Разработчику выслал, ты в копии. Пофиксят - запощу.
    Всем удачи, я выхожу из "игры" ;)

    ОтветитьУдалить
  5. :) молодец!
    сразу несколько вопросов:
    1. "106 мне известных событий"
    поделишься линком?
    2. ты говорил, что Cheat Sheet с ha.ckers содержит не полный список реализаций XSS. убедил:) какими ресурсами ты руководствуешься?
    3. не копал SQL Inj, LFI в bitrix waf?

    ОтветитьУдалить
  6. 1. Нету прямого линка. Собирал по крупицам. Работаю над собственным сканером XSS по работающем технологии смартнах ;)
    2. Никакими не руководствуюсь просто думаю и ищу атрибуты и тэги которые забыли, читаю коды других фильтров и проч. Часто в гугле можно что-то найти, только на в виде XSS, а в виде <spectag onTVOYUMAT='myFunc(myVal)'/>, что ничего не меняет.
    3. Или я не выспался, или там тривиальная SQLinj...

    ОтветитьУдалить
  7. ну в общем это я был, с чужого компа...
    А можно аналог сайта WAF hack с CC получить? Лениво писать разные там функции... Тем более так что будем знать, что сломал именно то, что было на конкурсе..Вышли почтой на @onsec.ru

    ОтветитьУдалить
  8. >> 3. Или я не выспался, или там тривиальная SQLinj...
    оч. интересно:) под какую СУБД?

    >> А можно аналог сайта WAF hack с CC получить?
    Марселю напиши...

    ОтветитьУдалить
  9. Я забыл, там по условиям слепые не принимались, да?

    ОтветитьУдалить
  10. слепые принимались... условие было, чтобы при (blind) sql-injection можно было:
    - либо прочитать таблицу (одну колонку)
    - либо прочитать/записать файл

    конструкции типа: or 1=1 не годятся

    ОтветитьУдалить
  11. какие пароли на виртуалки-то?

    ОтветитьУдалить
  12. так это:)... локальный доступ к виртуалкам не требуется для прохождения квеста...

    ОтветитьУдалить
  13. Да мне не проходить интересно - благо на CC мы всё-таки решили достаточно. Я, во-первых, хочу посмотреть как всё это было реализовано, а во-вторых, может оно конечно и не требуется, но у меня работать просто так без доп настроек виртуалки (разумеется, как всегда) не собираются. Заниматься всякой фигнёй типа сброса пароля в мои планы не входит. Не хотите - ну и фиг с ним.

    ОтветитьУдалить
  14. >> но у меня работать просто так без доп настроек виртуалки (разумеется, как всегда) не собираются

    странно...

    на, держи:

    login: administrator
    pass(в латинице): @@неБрутабельныйпассАдминаВС

    login: root
    pass: %ghj,henfqVtyz tckb cvj;tim!

    ОтветитьУдалить
  15. да не за что ;)

    в тему и возможно будут также интересны виртуалки с ctf:
    http://ftp.hackerdom.ru/ctf-images/2009-04-26-RuCTF2009Final/
    описание:
    http://ructf.org/2009/documentation/final/

    ОтветитьУдалить
  16. так-с. решил поковырять крякми. тот, сложный.
    ну в общем-то это что-то смешное, именно xor строчки с паролем со смешными сдвигами. Может, стоило бы хотя бы начало фразы выложить?

    Или вы утверждаете, что вот это вот можно оптиально и быстро сбрутить?

    #define word unsigned short int
    #define byte unsigned char
    byte get_smth(unsigned char* buf, word h){
    word i = h/8;
    word c2 = buf[i%0x10] + 256*buf[(i+1)%0x10];
    h &= 7;
    c2 >>= h;
    return c2 & 0xFF;
    }
    unsigned char buf[16] =
    {
    0x78, 0x48, 0x63, 0x25, 0x39, 0x76, 0x40, 0x6A, 0x5E, 0x2E, 0x65, 0x5A, 0x69, 0x57, 0x75, 0x23
    } ;
    char us[16] = {0};
    unsigned char cmds[56]=
    {
    0xB6, 0x62, 0xB2, 0x82, 0xB5, 0xD3, 0xC4, 0x16, 0xEE, 0x9C, 0x7F, 0x66, 0x58, 0xF9, 0x6A, 0x4A,
    0xF5, 0xEB, 0xA8, 0x23, 0xCA, 0x8A, 0xC5, 0x32, 0xAD, 0xDA, 0xE2, 0x0D, 0x02, 0x48, 0x63, 0x1C,
    0x39, 0x76, 0xA2, 0x6A, 0x5E, 0x03, 0x14, 0x5A, 0x69, 0x98, 0x75, 0xEE, 0xC4, 0x79, 0xC5, 0x1A,
    0x7C, 0xBE, 0x56, 0x69, 0xDE, 0x2C, 0xD6, 0xC8
    } ;

    char rbuf[100]={0};

    int main(){
    word h=0x37;
    byte t5=0;
    for (int i=0; i < 0x37; i++){
    t5 = get_smth(buf, h);
    rbuf[i] = cmds[i] ^ t5;
    h = i+t5;
    }
    printf("%s\n", rbuf);
    }

    ОтветитьУдалить
  17. а никто и не утверждает, что сбрутить можно быстро:)) по секрету - это один из облегченных и сильно урезанных механизмов защиты, встроенных в MaxPatrol... поэтому решение задачи не лежит за приемлемое количество времени.
    кстати, я так понимаю простенький крякми отреверсить удалось?

    ОтветитьУдалить
  18. Простенький не смотрел :) А стоит?
    Но нерешабельный это плохо )) И если б мы его на CC таки нашли (почему мы его не нашли, кстати?:)) что бы считалось решением?

    А скажите, что ли, всё-таки, начало фразы, вдруг выйдет что.
    Вот этот кодес http://pastebin.com/d982db29 умеет по первым буквам что-то восстанавливать.

    ОтветитьУдалить
  19. Да, а вообще - COM-файлы - это плохо :)

    ОтветитьУдалить
  20. >> Простенький не смотрел :) А стоит?
    если удалось расковырять сложный вариант, значит с простым проблем возникнуть не должно...

    >> Но нерешабельный это плохо )) И если б мы его на CC таки нашли (почему мы его не нашли, кстати?:))
    вот именно потому на CC его и не нашли т.к. решение не возможно за допустимое время:) его просто не выкладывали...

    >> что бы считалось решением?
    он также, как и простой вариант содержит в себе ключ в формате СС09словоСС09

    >> А скажите, что ли, всё-таки, начало фразы
    ключ CC09... видимо

    >> Да, а вообще - COM-файлы - это плохо :)
    да?:) а мы думали что-нибудь поинтереснее замутить.... под амигу, например;)) ...так сказать в духе СС...

    ОтветитьУдалить
  21. под амигу вас бы сразу послали. ещё прошивку там для дисковода бы выложили))

    Однако, начало CC09 - этого мало:) кодес умеет генерить пароль, после работы которого первые несколько символов равны наперёд заданным, если это возможно. Ну и если повезёт с каким-нибудь циклом...

    А код генератора, ммм, что тут генерить можно-то, ммм, массивов, что ли :) потрогать можно?

    ОтветитьУдалить
  22. ломается крякми. завтра допишу )

    ОтветитьУдалить
  23. Немного "разъехались" термины в процессе обсуждения :)

    Я бы сказал, что начало фразы (да и вся фраза целиком) такое же, как и в более простом варианте (том, что был на СС). То есть "Positive...". А вот сам ключик, конечно, надо сбрутить. Но и тут уже есть подсказка. Известно, что все ключи в рамках квеста были в формате СС09словоСС09.

    А так - отличный реверс получился. Мне нравится :) Многовато констант, конечно, но... Для того "исходника", что был предоставлен - отличный реверс!

    ОтветитьУдалить
  24. Расшифровал строчку:
    Positive Technologies welcome your on CC09 hack-quest!

    И пароль:
    _Blank

    Ура!! )
    Да, ваш алгоритм ломается достаточно быстро, а слова Positive хватило для моментального:)
    //маленький крякми до сих пор не смотрел!

    >>А так - отличный реверс получился. Мне нравится :) Многовато констант, конечно, но...

    реверс - унылый, имхо ) сразу бы чистый CPP код дали и не парились

    А констант там нет никаких, только один массивчик и куча мусора: [bp+si+0a] - это ж надо было додуматься, я чуть было не испугался, что совсем дос не знаю.

    ОтветитьУдалить
  25. Вот, глянь этот, если еще не видел. Крякьи с СС07. http://crackmes.de/users/neon/virt/ Мусорная вирт-машинка.

    Товарищи! Кто на CC09 Битрикс WAF смотрел SQL инъекции, пожскажите, там такое работало:

    &id=1;Another+query--

    ??? Если предположить, что Another query не фильтруется.

    ОтветитьУдалить
  26. to 73ru5:
    молодец!! не думал о работе в Positive Technologies?:)

    если интересно, пиши на мейл devteev@ptsecurity.ru

    to D0znp:
    сам по себе, запрос "&id=1;что-то" не блокируется Bitrix WAF. а вот, например, подобные запросы "&id=1;insert...", "&id=1;select..." и т.д. уже блокируются
    в контексте CC09 подобные запросы отработать не могли т.к. использовалась СУБД MySQL.

    ОтветитьУдалить
  27. to D.E.:
    я хотел узнать именно возможности базы, а не WAF. Второе как раз я теперь хорошо вижу перед собой ;) Нигде не нашел подсказки, что там мускуль был...
    Найти запрос, который не фильтруется и выполняет поставленную задачу - не проблема.
    Прицепить его именно к тому контексту, который был на СС09, не зная контекста, - игра вслепую ;)
    Запросил образ - не ответили ;)
    Вроде там были варианты кроме банального where id=$_GET['id'], их и хотелось бы получить.

    ОтветитьУдалить
  28. >> я хотел узнать именно возможности базы, а не WAF.
    не совсем понял... возможности какой базы?

    >> Найти запрос, который не фильтруется и выполняет поставленную задачу - не проблема.
    тоже не понял. выполняет какую задачу? эксплуатация SQL Injection? под какую СУБД? на перед. Битрикс поддерживает только MySQL и MSSQL.

    >> Прицепить его именно к тому контексту, который был на СС09, не зная контекста, - игра вслепую ;)
    Владимир, да чтож ты все пытаешься к тому контексту привязать баги?:) Любой контекст интересен, когда речь идет о возможности чтения данных из соседней таблицы и чтения/записи файлов в обход waf...

    вот примерный запрос к базе, который был на CC:

    select id,name from contact where (param = 8 or (param2 = 'test' and id = $_GET['id']))

    параметр $_GET['id'] попадает в SQL запрос без какой-либо проверки. в качестве СУБД использовался MySQL.

    ОтветитьУдалить
  29. Зайдем с другого боку ;)
    Я нашел SQL которые проходят через фильтр и выполняют действия из этого списка:

    - либо прочитать таблицу (одну колонку)
    - либо прочитать/записать файл

    При этом прикрутить их к выражению вида where id=$_REQUEST['id'] нельзя, так как ты уже сказал, что там была MySQL и финт с мульти-запросом не проходит ;) Поэтому я спрашиваю уже в какой раз, там еще что-нибудь было кроме такого варианта? Если мне дать инпут из которого квери проходит через ВАФ, а потом идет в mysql_query($_GET['query']), то условия будут выполнены ;))) но это не совсем инъекция %)

    Кстати, на MSSQL вроде .. where 1;anoter query должно сработать....

    ОтветитьУдалить
  30. Дим, а ты уверен, что Битрикс Oracle не подерживает? Судя по исходникам, что-то там по крайней мере присутствует...

    ОтветитьУдалить
  31. >> Дим, а ты уверен, что Битрикс Oracle не подерживает?
    мда... не знал о том, что они и его поддерживают...))
    http://www.1c-bitrix.ru/products/cms/requirements.php
    признаю ошибся;)

    >> Я нашел SQL которые проходят через фильтр и выполняют действия из этого списка:
    под ораклятину?:)

    >> Поэтому я спрашиваю уже в какой раз, там еще что-нибудь было кроме такого варианта?
    нет

    >> но это не совсем инъекция %)
    показывай, что ты там нарыл... хватит ходить вокруг да около:))

    ОтветитьУдалить
  32. >>не думал о работе в Positive Technologies?:)

    Честно говоря, я вообще ещё о работе не думал:)) хотя... может и стоит. подумать :)
    Только ничего, что я, например, на 2ом курсе?)

    >>Вот, глянь этот
    спасибо за ссылку, может и посмотрю, хотя не уверен. хватит уже фигнёй страдать :)

    ОтветитьУдалить
  33. Да, кстати. теперь хак-квест завершён :)

    ОтветитьУдалить
  34. to 73ru5:
    >> Только ничего, что я, например, на 2ом курсе?)
    а какая разница?:) работать полезно уже со школьной скамьи%)))

    >> Да, кстати. теперь хак-квест завершён :)
    ))

    ОтветитьУдалить
  35. Хм... А можно только файлик для реверсинга получить? Который сложный. Я боюсь, не выкачаю все части образа, потому что место закончилось...

    ОтветитьУдалить
  36. никак не выходит скачать вторую часть архива. нельзя ли поправить?
    есть желание попробывать свои силы, и если выйдет развиватся в этой области.

    ОтветитьУдалить
  37. >> никак не выходит скачать вторую часть архива. нельзя ли поправить?

    ммм.... проверил, качает...а в чем проблема то со скачиванием?

    ОтветитьУдалить