Я увидел другой мир.., и восторгся!!
Преподобный K4Y0T, 2013
Автор: Саша Кайот
Очередная конференция прошла 21 февраля 2013 года в Петербургском офисе Yandex’а, в период с 19:00 по 22:10 часов. Интересные, с дизайнерской точки зрения, помещения компании Yandex расположились на 2-х этажах центральной части современного бизнес – центра “Бенуа”, находящегося на Пискаревском проспекте.
Местом проведения мероприятия явился конференц-зал, оборудованный мультимедийной электроникой и компьютерной техникой, в который докладчики и гости добирались на 4-х стеклянных лифтах (достаточно вместительных).
На встречу пришло много увлеченных и заинтересованных людей из мира информационной безопасности. Ожидались выступления сотрудников Yandex, а так же гостей из Москвы и Берлина.
Вместе с тем, до 17 февраля 2013 года можно было прислать на согласование заявку о выступлении с докладом (адрес электронной почты и шаблон презентации опубликованы на официальном сайте Defcon Russia Group – http://www.defcon-russia.ru).
С целью поддержания выбранного курса, были введены следующие правила по оформлению презентаций для выступлений:
Кроме того, предварительная регистрация на 14 встречу осуществлялась посредством отправки имени и фамилии на электронную почту (defconrussia@gmail.com). Выдача электронных отмычек для прохода в сердце бизнес-центра, проводилась по паспорту.
Далее по теме, в порядке выступления докладчиков:
Воркшоп-Семинар: Use-After-Free for everyone
Алексей Синцов (d00kie)
… for Dummies by @asintsov. С рассуждения о пользователях буржунета начал Алексей семинар с практическими опытами на тему эксплуатации Use-After-Free в Win32 (использование памяти после освобождения). На примере собственного эксплоита и популярного браузера IE9 под управлением ОС Win7.
Первый слайд презентации раскрывал тайные планы выступающего (Agenda, как выразился Алексей): триггер, утечка памяти, ROP и другое…
При наличии желания и ноутбука (приветствовался опыт участия в предыдущем воркшопе), участникам встречи предоставлялась возможность, параллельно с d00kie, на практике отрабатывать рассматриваемые действия с применением следующего софта: Windows 7, IE9, Immunity Debuger, calc.exe.
Слайды презентации сопровождались позитивной gif-анимацией, модной в последнее время среди докладчиков, оказывающей положительное когнитивное воздействие на слушателей.
Алексей рассказал об одной из возможностей внедрения shell-кода в браузер IE9, посредством технологии heap-спреинга. Суть которой заключается во внедрении в определенный интервал адресного пространства памяти, используемой браузером (который закреплен в библиотеке kernel32.dll) специально подготовленных данных, с указателями на необходимый shell-код (ячейка памяти помечается как свободная и исполняемая, но реально не освобождается). При этом основными проблемами являются отсутствие точных сведений о нахождении необходимого блока данных (определенной странички браузера) в памяти, а также различный (изменяющийся) размер ее ячеек.
Все это было представлено на слайдах с объектно-ориентированными заголовками: theory.getHeap(‘IE9’), theory.getUAF(J[0]) и др. Хотя, как пояснил d00kie, он не является программистом. Остановимся подробнее на некоторых слайдах:
workshop.getUAF()… Здесь, было предложено скачать с сайта исполняемый файл с ”вирусами” (part2/bin/uaf.bat), который внедряет ActiveX элемент, в виде dll-библиотеки (для регистрации методов и функций) в htm-страничку. На ZeroNights, докладчик уже говорил об этом. Далее, Алексей показал работоспособность данного способа, и браузер открыл специально подготовленную htm-страничку, с внедренной ссылкой – Click Me, активирование которой, привело к появлению alert-окошка с текстом – 31337 (на самом же деле запустились процедуры для работы с памятью).
В тоже время, в зале шла дискуссия об успехах практической ИБ (подполья) и отставании академической (бумажной) информационной безопасности. Синцов отвлекся и отметил что, подобные комментарии не ценны.
Продолжил он, рассуждая о пользователях, использующих IE, а не Yandex-браузер. После чего был запущен дебаггер для проведения bin-анализа и осуществления фаззинга (модификации данных в памяти). С помощью одной из функций Immunity Debuger, Алексей осуществил быстрый аттач (поиск и присоединение к процессу) на IE.
Хакер показывал презентацию на специально установленном проецируемом экране, однако показ практических приемов затруднялся неактивным экраном ноутбука (после нескольких итераций, Алексею удавалось включать или экран ноутбука или проектор). Он попросил встать товарищей из технической поддержки и покинуть зал от стыда ;)
Далее, исполнялась (аттачилась к найденному участку) ROP-программа (некий shell-код), в результате чего память делалась исполняемой. Точнее вызывалась процедура VirtualProtect и спреила адреса в памяти из kernel32.dll, отведенные для использования IE.
Переходя от слайда к слайду, Синцов лукаво отметил, что не силен в FotoShop’е, в отличии от PowerPoint.
theory.getLeak()[0]… Данные в памяти перезаписываются, указатель сохраняется. В настоящее время, таких эксплоитов достаточно много под IE. d00kie отметил, что подобные техники очень популярны среди Марокканцев, Французов и Алжирцев.
Не забыли отметить и положительные стороны дебаггера IDA Pro, широко использующегося для реверс-инжиниринга, но в свою очередь достаточно дорогого. Куда проще использовать бесплатный аналог Immunity Debuger, доставляющий, правда, ряд неудобств (приходится постоянно настраивать размер рабочих окон). Сообщество, присутствующее на конференции, тут же предложило с десяток вариантов поражающих своей нестандартностью, вплоть до дизассемблирования самого дебаггера ;)
И так, вернемся к браузеру и загруженной страничке. При нажатии на ссылку ClickMe, стали появляться непонятные числа (шестнадцатеричные значения из ячеек памяти), а совсем не заданные значения – 31337, и даже не – 31338. Что позволило сделать вывод о спреинге не тех адресов памяти (непопадании подготовленных блоков данных), которые использует IE.
Открыв фреймворк Регистратор в Immunity Debuger, Алексей расставил брейкпоинты и перешел к активному участку кода, разгребать “кучу” (офсет/адрес), в поисках необходимой переменной (31337 в шестнадцатеричном виде). Анализ дебаггером, раз мовок, два мовок, ксорит значение и получает указатель (переводя при этом значение в адрес на шестнадцатеричном калькуляторе). Существовала возможность создать маленький скрипт для автоматизированного решения данной задачи, но Синцов заметил, что Питон для халявщиков, калькулятор для мужиков.
Постоянство офсета памяти и его доступность, при соотношении с адресом ячейки хранящей необходимое значение (31337), позволили штатно отработать нашпигованной html-страничке (с цветным текстом) и запустить исполняемое приложение (калькулятор). После чего Алексей довольно подчеркнул, что он учил html, а также напомнил о возможности скачать все пять эксплоитов с ресурса Defcon_Russia.
С похожими докладами Алексея Синцова можно ознакомиться на сайте международной конференции ZeroNights (http://2012.zeronights.ru/materials), посвященной техническим аспектам информационной безопасности – презентация Advanced Exploit Development (x32). Browser Edition (http://2012.zeronights.ru/includes/docs/Sintsov%20-%20Advanced%20exploitation%20in%20Win32.pdf), а также на проекте SlideShare – презентация Adv.Exploitation in win32 (http://www.slideshare.net/DefconRussia/sintsov-advanced-exploitation-in-win32).
Подытожить выступление коллеги, вызвался Никита Тараканов (мастер PowerPoint, как он сам выразился). Который заявил, что не верит в защиту и безопасность браузеров, поскольку есть такие уязвимости и множество других, а также человеческий фактор.
К примеру ASLR в Win 8 (Address Space Layout Randomization, рандомизация адресного пространства. Механизм обеспечения безопасности, который включает в себя рандомизацию виртуальных адресов памяти различных структур данных, чувствительных к атакам. Расположение в памяти целевой структуры сложно предугадать, поэтому шансы атакующего на успех малы). Тем не менее, программируя “странную машину” (Weird Machines) обходятся любые системы защиты (Exploit Programming From Buffer Overflows to “Weird Machines” and Theory of Computation - http://www.cs.dartmouth.edu/~sergey/langsec/papers/Bratus.pdf). К тому же не устранены до настоящего времени уязвимости в Java, а также TrueType шрифтах (после триггирования). Антивирусы бесполезны при профессиональной атаке, подходят лишь для защиты от вирусов создаваемых школьниками. Никита отметил, что сегодня, средства нападения на информационные системы обгоняют средства защиты минимум на 10 лет. Кроме того, если на машине исполняется какой-либо код – она уязвима. По мнению Тараканова, SandBox и другие механизмы для безопасного исполнения программ уязвимы. Ядро Unix-подобных операционных систем подвержено эксплуатации программируемой странной машиной (доказали на практике двое Итальянских исследователей). Google-браузер при обработке виртуальных таблиц подвержен уязвимостям (кроссплатформенный эксплоит должен представить китайский специалист по информационной безопасности на конференции SecVest, 6-8 марта 2013 года).
Охота за ошибками 1.1
Сергей Бобров, Алексей Осипов
Владимир Воронцов (d0znpp)
Предварительно настроив показ презентации, гости из Москвы начали рассказывать про самые интересные уязвимости, найденные в рамках программы по поиску уязвимостей компании Яндекс (Yandex bugbounty party).
В качестве введения, был поставлен вопрос, а что же искать? Основные уязвимости (как отметил докладчик, Top 10 по версии Avast! ;) OWASP, конечно же) И так, специалистами были найдены следующие виды уязвимостей и/или реализованы атаки:
- ICMP Redirect (навязывание атакуемому хосту ложного маршрутизатора);
- MitM-атака (Man in the middle, подвержены Яндекс.Диск, Яндекс.Мобильный, Яндекс-WiFi);
- URL Access (доступ к данным без авторизации);
- Небезопасное хранение данных (в том числе и слабая криптографическая защита, подвержены Яндекс.Почта, Яндекс.Диск, позволяющие получить доступ к уже удаленным данным);
- Security Misconfiguration;
- CSRF-атака (Cross Site Request Forgery, подделка межсайтовых запросов, позволяющая осуществлять накрутку, просматривать заголовки писем, а также удалять их);
- Insecure communications (Properly encrypt all authenticated and sensitive communications, некорректное шифрование аутентификационных и конфиденциальных данных);
- Broken authentication and management (Properly authenticate users and protect account credentials and session tokens, в случае атаки - неправильная аутентификация пользователей и защита учетных данных и сессии пользователя);
- XSS (Cross-site scripting, межсайтовый скриптинг, данный тип уязвимостей нашел сам поисковик Яндекс);
- Injection flaws (SQL, SSI и др.)
После чего, участник Yandex bugbounty Сергей Бобров, рассказал об уязвимостях, найденных им в рамках конкурса. Выступление сопровождалось показом слайдов с хорошо систематизированной информацией, а также с упоминанием сумм, полученных от компании Яндекс. Сергей отметил, что анализируя только критические сервисы, без труда смог заработать порядка 200-300 тыр.
Он также рассказал об одном интересном случае, произошедшем при поиске XSS-уязвимостей. Однажды, он составил специальный запрос (конечно, используя proxy-сервер) в браузере и отлучился из комнаты, где находился домашний компьютер. Его девушка, не подозревая о происходящих на машине процессах, увидела открытый браузер с открытой вкладкой поисковой системы и выполнила необходимый ей поисковый запрос. Вернувшись в комнату, Сергей был сильно удивлен и восторжен тем, что случайные действия его девушки помогли найти уязвимость. По словам Сергея Боброва, найденная XSS-уязвимость не была устранена в течении 3-х месяцев, не смотря на тот факт, что он своевременно проинформировал специалистов компании Яндекс.
Продолжил рассуждения о безопасности сервисов Яндекс, Алексей Осипов. За происходящим, в режиме видеоконференции наблюдал сотрудник компании Яндекс, Тоха. Он также участвовал в дискуссиях и пояснял спорные моменты.
Алексей порекомендовал специалистам по безопасности, при настройке и конфигурировании nginx-серверов, не следовать мануалам, а также избегать стандартных настроек безопасности. Кроме того, он отметил, что и на момент доклада на Хабре доступен код эксплоита для использования уязвимостей nginx.
Алексей Осипов представил анализ найденных XML Injection, по степени риска относящихся к критическим, и заметил, что в сервисах Яндекс существует еще много недостатков. Администраторы безопасности думают что устраняют их, участники конкурса Yandex bugbounty party находят новые. Вместе с тем, Алексей отметил что Mongo (документо-ориентированная NoSQL СУБД, не требующая описания схемы таблиц) в Яндексе много, что подтвердил Тоха, с экрана расположенного справа. Алексей так же пояснил что существующие уязвимости на серверах компании, дают возможность злоумышленнику слить БД и создать свой Yandex.
Отдуваться за весь ONsec пришлось Владимиру Воронцову (by @onsec.ru). Он рассказал, что в октябре 2011 года специалисты компании, занимающейся оценкой защищенности, уже участвовали в подобном конкурсе. Тогда, в сервисах Яндекса было найдено не мало ошибок.
Владимир поведал о трех основных уязвимостях, наиболее часто детектируемых специалистами по безопасности web-сервисов. Отметил положительную тенденцию, программа по поиску уязвимостей Yandex bugbounty стала постоянной. В зависимости от категории и серьезности найденных уязвимостей, вознаграждение варьируется от 100 $ до 1000 $. Ознакомиться с правилами программы и принять участие можно по адресу http://company.yandex.com/security/.
Воронцов показал также аналитические материалы в виде слайдов с таблицами, в которых были представлены сведения о количестве найденных уязвимостей по категориям и полученные суммы вознаграждений. Исходя из представленных материалов, средняя цена 1-го найденного бага составила 715 $.
Вместе с тем, d0znpp вспомнил о своем товарище, который не так давно, всего за пару дней (суббота и воскресение) заработал порядка 400 тысяч рублей, полученных в качестве вознаграждения за поиск уязвимостей.
В заключение, Владимир Воронцов упомянул о возможности реализации SSRF-атак (Server-Side Request Forgery), основанных на злоупотреблении отношением доверия между внутренними сервисами. Такие атаки становятся возможными по причине небезопасной конфигурации или даже некорректного проектирования взаимодействия систем.
После чего Владимир вскользь упомянул об использовании Zabbix (свободной системы мониторинга и отслеживания статусов разнообразных сервисов компьютерной сети, серверов и сетевого оборудования, написанной Алексеем Владышевым). Отметил также, что вновь тестируемый сплоит к сожалению не заработал. Однако, пообещал устранить недостатки и представить его на ближайшей конференции в Амстердаме, куда и пригласил присутствующих.
В момент написания данного отчета с конференции, видеоролик выступления Владимира Воронцова от 21 февраля 2013 года уже был доступен для просмотра на YouTube.
Yandex bug bounty party
Тарас Иващенко
Свое выступление, администратор безопасности Яндекс, начал с общих и наболевших вопросов программы (информация от организаторов программы). Тарас Иващенко рассказал о том, что вознаграждение зависит от уровня критичности найденной уязвимости. Стоимость определяется специальной комиссией. Также возможно изменение стоимости найденной уязвимости по принципу – чем больше будет рапортов по багу, тем меньше будет ее ценность.
Так же, Тарас пояснил, что все заработанные деньги будут выплачены участникам в максимально короткие сроки (задержка связана с началом финансового периода).
Далее, он обратился к сообществу с рекомендациями присылать описание одной найденной уязвимости (скрипт, ссылка и т.д.) в одном письме. Тарас отметил, что не надо прикреплять .txt, .doc, .pdf – файлы с описанием уязвимостей. Еще заявил, что ошибки в критичных сервисах и формах устраняются ими в течение не более 3 месяцев.
Приятно отметить, что «Зал славы» Yandex bug bounty party не перестает пополняться иностранными специалистами из Ирана, Индии, и даже представителями компании Nokia.
Повествуя об успехах сотрудничества администрации безопасности Яндекса с участниками программы, Тарас Иващенко сообщил о существующей вакансии в отделе продуктов безопасности, и предложил заинтересовавшимся обращаться по телефону в г. Санкт-Петербург: 739-70-00, или писать на oxdef@yandex-team.ru.
Помимо прочего, Тарас попросил участников программы не присылать письма в темное время суток, поскольку в ночное время специалисты осуществляют работу по устранению выявленных уязвимостей в сервисах (элита блажной безопасности, как отметил голос из зала).
Distributed computing as a client-side attack
Владимир Воронцов
В докладе Владимир рассмотрел известные и новые механизмы использования клиентских ресурсов для создания распределенной вычислительной сети и хранилища информации на основе браузеров пользователей. Он сделал акцент на возможности использования такого подхода, как клиентской атаки, с целью получения контроля над вычислительными ресурсами и дисковым пространством компьютера пользователя через браузер. Были продемонстрированы концепции и примеры атак и приведены оценки целесообразности таких изысканий.
Теперь по порядку… Специалист рассказал о возможности осуществления распределенной атаки на браузеры. С его слов, создание сайта доступно в CPU, GPU – утилизированием, а также в RAM (локальной или сторонней).
Вместе с тем в зале разгорелась бурная дискуссия о недостатках и достоинствах академической информационной безопасности (классической, преподаваемой в учебных заведениях). Докладчик подытожил, что академическая безопасность – бумажная сука, но не dl.acm.org.
Продолжая выступление, Владимир напомнил об использовании XSS, CSRF, SWF-малвари, а также размер-линков и Cache-poisoning. Для ускорения работы, он порекомендовал использовать CDN hack, и добавил, что дельной защиты в браузерах не существует (максимальное время для загрузки страницы, фриз-таймаут, проблемы пользователю – позволяющие «любить» его).
В свете вышесказанного, Владимир рассказал о своих экспериментах с пользователями. Так, необходимо медленно отдавать страничку, но не тормозить ее сильно. Storage был непосредственно реализован в информации для cookies, файле API, перезаписи flash-куки. Майкрософт, к примеру, запирает cookies в связке домен-поддомен, что достаточно надежно.
Размышлением о том, как дать пользователю дополнительное место для хранения информации, продолжил доклад Владимир Воронцов. Используя рассматриваемую технологию, не создавая больших проблем пользователям, можно хранить 2,5 Гб полезной информации (на машинах 50 пользователей), по 50 Мб на браузер.
Владимир рассказал и о том, что нет хорошего софта на GPU для работы со словарями. Из своих тестов он сделал вывод, что 1 GPU равен 50 000 ноутбуков как у него (1,7 ГГц).
В завершении доклада, Владимир предложил попробовать подготовить флеш-cookies (для отвоевывания 5 Мб) и зарегистрировать порядка 100 000 доменов. В результате чего получится отличное хранилище данных (свои клиенты, облако). Обращаясь к представителям компании Яндекс, d0znpp проанализировав лишь один файл Yac.host, предложил провести аналогичный эксперимент. Много клиентов – много памяти, как отметил Владимир. Можно хранить шифрованную информацию на машинах пользователей, намайнить биткоины, или организовать распределенную DDoS-атаку. Указанная технология чем-то напоминает пиринговые сети, и строиться по схеме: администратор – DNS-клиент – торрент.
Итоги конференции
Более 2-х часов, в режиме видеоконференции, наблюдал за происходящим и участвовал в дискуссиях товарищ Toxa. Завершая мероприятие, он поблагодарил собравшихся в зале участников Yandex bug bounty party и гостей, прибывших на встречу. Выразил удовлетворение работой единомышленников.
Еще раз повторился о том, что если даже у пользователей установлен антивирусный продукт, который постоянно обновляется, это не является безусловной защитой. Упомянул так же о незащищенности современных браузеров и не обошел стороной свежий продукт MS Office 365 (для Windows 8), который синкает хэши браузеров.
В конференц-зале рассчитанном на 90 чел. присутствовало порядка 60-70 чел. Toxa рассказал о ближайших планах по развитию программы по поиску уязвимостей и пригласил участников встречи в московский офис Яндекс 7 марта 2013 года в 19:00 принять участие в научно-техническом семинаре по безопасности мобильных приложений.
Живой, мертвый или в суперпозиции? Узнайте в нашем канале