Атака на браузер: противостояние брони и снаряда

В современном мире трудно найти человек использующего интернет, но не устанавливающего дополнительных расширений для своего браузера. Такие расширения как Flash установлены у подавляющего большинства пользователей. А ведь именно появление таких плагинов повлияло на изменение ландшафта в современном эксплойтостроении. Теперь безопасность на стороне пользователя не может контролироваться только со стороны разработчиков браузера. Не менее важна и безопасность каждого из установленных плагинов, ведь злоумышленники могут использовать его для внедрения в систему вредоносного кода. К примеру, появление уязвимостей в продуктах небезызвестной компании Adobe влечет за собой рост количества эксплойтов, нацеленных именно на эти уязвимости.
Сколько дыр в кафтане Adobe? (CVE-2010-2883)
Ломаем банк в стиле smash the stack!
Не только XSS…
Последнее время многие обращают внимание на уязвимости ПО, используемого в банковском секторе: в частности, недавно прошумела новость об уязвимостях класса XSS на веб-сайтах различных банков. Общественность негодует, и СМИ шумят. Но ведь банки богаты не только веб-составляющей. Начиная с конца 2000-х я собирал уязвимости в модулях ActiveX, которые банки гордо раздают своим пользователям, а именно клиентам системы дистанционного банковского обслуживания (ДБО). Раз в год я брал одну или две системы и ковырял их. Начиная просто так, любопытства ради (начал это дело, еще будучи сотрудником банка) и продолжая уже из исследовательского интереса. В итоге за 3–4 года я выявил уязвимости в системах от таких производителей, как BSS, Inist, R-Style, ЦФТ. Под катом находится информация об одной такой уязвимости. Большая часть описания уделена созданию простенького эксплойта для выполнения произвольного кода на стороне клиента (Windows7, IE +DEP/ASLR). Возможно, это будет полезно тем, кто хотел бы понять принципы эксплуатации старых ‘strcpy’ багов и создания ROP-эксплойтов.

Return oriented programming. Собираем exploit по кусочкам
В этой статье мы попробуем разобраться как работает Return Oriented эксплоит. Тема, в принципе, так себе заезженная, и в инете валяется немало публикаций, но я постараюсь писать так, чтобы эта статья не была их простой компиляцией. По ходу нам придется разбираться с некоторыми системными особенностями Linux и архитектуры x86-64 (все нижеописанные эксперименты были проведены на Ubuntu 14.04). Основной целью будет эксплуатирование тривиальной уязвимости gets с помощью ROP (Return oriented programming).
Как устроены дыры в безопасности: переполнение буфера
Прим. переводчика: Это перевод статьи Питера Брайта (Peter Bright) «How security flaws work: The buffer overflow» о том, как работает переполнение буфера и как развивались уязвимости и методы защиты.
Беря своё начало с Червя Морриса (Morris Worm) 1988 года, эта проблема поразила всех, и Linux, и Windows.

Переполнение буфера (buffer overflow) давно известно в области компьютерной безопасности. Даже первый само-распространяющийся Интернет-червь — Червь Морриса 1988 года — использовал переполнение буфера в Unix-демоне finger для распространения между машинами. Двадцать семь лет спустя, переполнение буфера остаётся источником проблем. Разработчики Windows изменили свой подход к безопасности после двух основанных на переполнении буфера эксплойтов в начале двухтысячных. А обнаруженное в мае сего года переполнение буфера в Linux драйвере (потенциально) подставляет под удар миллионы домашних и SMB маршрутизаторов.
По своей сути, переполнение буфера является невероятно простым багом, происходящим из распространённой практики. Компьютерные программы часто работают с блоками данных, читаемых с диска, из сети, или даже с клавиатуры. Для размещения этих данных, программы выделяют блоки памяти конечного размера — буферы. Переполнение буфера происходит, когда происходит запись или чтение объёма данных большего, чем вмещает буфер.
На поверхности, это выглядит как весьма глупая ошибка. В конце концов, программа знает размер буфера, а значит, должно быть несложно удостоверится, что программа никогда не попытается положить в буфер больше, чем известный размер. И вы были бы правы, рассуждая таким образом. Однако переполнения буфера продолжают происходить, а результаты часто представляют собой катастрофу для безопасности.
VulnHub: Реверсим всё что можно в DC416 Baffle

Всем доброго времени суток, этой статьёй хотелось бы завершить серию DC416, CTF с конференции DefCon Toronto's. Оставив на десерт DC416 Baffle, на мой взгляд, самый интересный и хардкорный квест, предоставленный командой VulnHub.
Внимание! Впереди будет много реверса и бинарной эксплуатации!
Если вы к этому не готовы, то рекомендую для начала ознакомиться с предыдущими райтапами:
Exploit Exercises: Введение в эксплуатацию бинарных уязвимостей на примере Protostar

Всем доброго времени суток. Продолжаем разбор заданий с сайта Exploit Exercises, и сегодня будут рассмотрены основные типы бинарных уязвимостей. Сами задания доступны по ссылке. На этот раз нам доступны 24 уровня, по следующим направлениям:
- Network programming
- Byte order
- Handling sockets
- Stack overflows
- Format strings
- Heap overflows
Железнодорожно-ориентированное программирование. Обработка ошибок в функциональном стиле

Как пользователь я хочу изменить ФИО и email в системе.
Для реализации этой простой пользовательской истории мы должны получить запрос, провести валидацию, обновить существующую запись в БД, отправить подтверждение на email пользователю и вернуть ответ браузеру. Код будет выглядеть примерно одинаково на C#:
string ExecuteUseCase()
{
var request = receiveRequest();
validateRequest(request);
canonicalizeEmail(request);
db.updateDbFromRequest(request);
smtpServer.sendEmail(request.Email);
return "Success";
}
и F#:
let executeUseCase =
receiveRequest
>> validateRequest
>> canonicalizeEmail
>> updateDbFromRequest
>> sendEmail
>> returnMessage
Решение задания с pwnable.kr 21 — horcuxes. Возвратно-ориентированное программирование и ROP-цепочки

В данной статье решим 21-е задание с сайта pwnable.kr, направленное на составление ROP-цепочки.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Решение задания с pwnable.kr 26 — ascii_easy. Разбираемся с ROP-гаджетами с нуля раз и навсегда

В данной статье решим 26-е задание с сайта pwnable.kr и разберемся с тем, что же такое ROP, как это работает, почему это так опасно и составим ROP-цепочеку с дополнительными усложняющими файторами.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Введение в аппаратную защиту стека (Windows 10)
Под катом представлен перевод статьи "Understanding Hardware-enforced Stack Protection".
Авторы: Kernel protection team — Jin Lin, Jason Lin, Niraj Majmudar, Greg Colombo
Это первая (обзорная) публикация задуманной серии из двух переводов о внедрении Intel'овской Control-flow Enforcement Technology (CET) в Windows 10.
Бурим быстрее или оптимизация параметров бурения с помощью ML
Бурение скважин всегда было и будет дорогостоящим занятием, а бурение в таких местах планеты как пустыня Сахара тем более. В объеме капитальных затрат на обустройство месторождений, затраты на бурение добычных скважин могут составлять более 50%, и оптимизация стоимости скважин является одним из основных способов улучшить экономику проекта. Стоимость услуг бурового подрядчика рассчитывается исходя из продолжительности бурения (daily rate). Иными слова – чем быстрее мы бурим, т.е. чем меньший период времени мы арендуем станок с бригадой, тем дешевле скважина. Имея в распоряжении результаты бурения 5 скважин, я решил оценить возможность оптимизации буровых параметров т.е. увеличить скорость бурения. Вот что получилось.