Pull to refresh
101
1.3
Кравец Василий @xi-tauw

Windows Privilege Escalator

Send message

Как я не написал эксплоит

Reading time5 min
Views4.1K
Приветствую всех читателей. В своем блоге я опубликовал много статей о том, как я находил уязвимости в разных продуктах. Но все истории-исследования заканчиваются победой. В этот раз я решил поделиться историей неуспеха. Небольшое исследование, которое заняло у меня где-то 5-6 часов, в ходе которого я был близок к созданию интересного эксплоита, но магия не случилась.

Как легко заметить, я люблю искать уязвимости на повышение привилегий. Обычно такие уязвимости позволяют подняться с уровня прав обычного пользователя, до уровня прав администратора или системы (NT AUTHORITY\SYSTEM). Но в данном случае, я решил рассмотреть другой вариант: поднятие прав с уровня NT AUTHORITY\LOCAL SERVICE до NT AUTHORITY\SYSTEM.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments2

Загадка шифра скульптуры Криптос

Reading time15 min
Views12K

3 ноября 1990 года была открыта скульптура Криптос перед центральным офисом ЦРУ в Лэнгли. Джеймс Санборн, автор, поместил на свой арт-объект шифр, полностью раскодировать который пока не удалось.

Для тех, кому лень читать статью полностью, вот краткая выжимка:

Шифр разделили на 4 части. Первые две части зашифрованы шифром Виженера, третья - методом перестановки, а последнюю до сих пор не удалось разгадать.

Под катом я расскажу подробнее о том, как были расшифрованы первые части, почему не удается расшифровать четвертую и свои мысли о том, как закодирована последняя часть.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments2

Давайте поможем компании Plarium стать безопаснее

Reading time5 min
Views5.9K

Приветствую всех читателей. Довольно внезапно вышло, что это очередная статья о поиске уязвимостей в игровом лаунчере. Прошлыми испытуемыми были Steam (CVE-2019-14743, CVE-2019-15316, CVE-2019-17180), Origin (CVE-2019-19247, CVE-2019-19248) и GOG (я поленился получать CVE для уязвимостей). В этот раз я исследовал Plarium Play, лаунчер игр для Windows компании Plarium. Если вы впервые слышите о таком ПО, то возможно вы слышали о таких играх как Raid: Shadow legends и Vikings: War Of Clans, они часто рекламируются различными блоггерами в ютубе. Собственно, компания Plarium и создала Plarium Play для того, чтобы помогать пользователям Windows играть в свои игры.

Небольшая особенность этой статьи состоит в том, что уязвимости актуальны и работоспособны на данный момент. Собственно в этом-то и проблема, не смотря на то, что я передал информацию об исследовании, компания Plarium ответила мне отпиской вида "Спасибо за информацию, мы примем меры, если это будет необходимо", после чего стала игнорировать мои сообщения.

Нужно больше подробностей
Total votes 37: ↑36 and ↓1+35
Comments16

Старые добрые игры, старые добрые уязвимости

Reading time4 min
Views7.7K
Выходящему Вышедшему Cyberpunk 2077 посвящается.



Приветствую всех читателей. Как можно догадаться из названия, эта статья — очередное описание уязвимостей в игровых лаунчерах, где я потыкал Steam (CVE-2019-14743, CVE-2019-15316, CVE-2019-17180) и Origin (CVE-2019-19247, CVE-2019-19248). Сегодня речь пойдет о лаунчере GOG Galaxy компании CD Project RED.

Я уже почти забыл об этом исследовании, но недавняя новость, что Cyberpunk 2077 доступен для предварительного скачивания в лаунчере и вот-вот будет доступен, напомнила мне, что я так публично и не рассказал о своем исследовании. Это немного странная история, потому что я даже не знаю, чем она кончилась – об этом будет ниже. Я просто расскажу, как все было.
Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments1

От комментария на Хабре к уязвимости в антивирусе Dr. Web

Reading time3 min
Views24K
Относительно недавно на хабре появилась статья «Стилер паролей в антивирусном ПО Avira Free Antivirus» от пользователя Veliant. Автор обнаружил, что в стандартной поставке упомянутого антивируса присутствует компонент, который позволяет простым образом извлечь пароли из хранилища браузера Chrome.

В комментариях произошла дискуссия, можно ли считать это уязвимостью. Но меня зацепил один комментарий автора:
нельзя ли это было реализовать например в виде DLL, которая при вызове её API проверяла бы цифровую подпись вызывающей программы?

Дело в том, что буквально перед этим я исследовал несколько программ, которые точно так же полагались на проверку цифровой подписи. И такую проверку было очень легко обойти.


Цифровая подпись файла соответствует только самому исполняемому файлу, но работающая программа это не только исполняемый файл. Существует несколько способов повлиять на работу программы, не меняя исполняемый файл: можно подменить библиотеки, которые загружаются или сделать инъекцию кода прямо в памяти.

Я посмотрел на профиль автора: «Работает в: Доктор Веб». А что если посмотреть, не используется ли в продуктах этой компании проверка, о которой говорит автор? Я решил посмотреть и, спойлер, нашел уязвимость, которая позволяет повысить свои привилегии до системных пользователю Dr.Web Security Space для Windows.
Читать дальше →
Total votes 103: ↑102 and ↓1+101
Comments42

Распознаем повышение привилегий в ABBYY FineReader

Reading time4 min
Views4.2K
Цикл о том, как я нахожу уязвимости повышений привилегий в Windows приложениях, продолжается. В предыдущих сериях: Steam (CVE-2019-14743, CVE-2019-15316, CVE-2019-17180) и Origin (CVE-2019-19247, CVE-2019-19248). Но сегодня речь пойдет не об игровом лаунчере, а о прикладном программном комплексе ABBYY FinerReader.



Краткое содержание – я расскажу, как благодаря компоненту, проверяющему лицензию, за 10 минут можно поднять свои права с уровня пользователя до NT AUTHORITY\SYSTEM. Данной уязвимости был присвоен идентификатор CVE-2019-20383, ссылка на сайт ABBYY.
Читать дальше →
Total votes 13: ↑13 and ↓0+13
Comments5

Повышение привилегий в Windows клиенте EA Origin (CVE-2019-19247 и CVE-2019-19248)

Reading time6 min
Views6.8K
Приветствую всех, кто решил прочитать мою новую статью с разбором уязвимостей. В прошлый раз небольшим циклом из трех статей я рассказал об уязвимостях в Steam (1, 2 и 3). В данной статье я расскажу об уязвимостях похожего продукта — Origin, который тоже является лаунчером для игр. Обнаруженные уязвимости получили номера CVE-2019-19247 и CVE-2019-19248.



В этот раз не будет никакой дичи с банами-анбанами. История общения с security подразделением компании Electronic Arts Inc изначально шла на профессиональном уровне. При обращении мне выдали регистрационный номер, отчеты тщательно изучили и подтвердили. Ни один мой имейл не был проигнорирован, а для небольшого обсуждения был организован конфколл. Сопровождение этих отчетов было для меня очень простым, за что большое спасибо Adrian Stone, Elise Murphy и другим сотрудникам EA, работавшим с моими отчетами. Запись в security-блоге и advisory.

Теперь к уязвимостям. Я нашел две уязвимости типа «повышение привилегий» (lpe — local privilege escalation или eop — escalation of privileges) в Windows клиенте Origin. Такой тип уязвимостей позволяет любому пользователю ОС Windows получить больше прав, чем изначально выдано администратором. В данном случае речь идет о двух «типовых» повышениях — от любого пользователя до NT AUTHORITY\SYSTEM (учетная запись, обладающая максимальными правами в ОС). Первая уязвимость довольно скучная, поэтому в следующем разделе я вкратце опишу ее. А вот вторая была довольно интересной, в ее разделе я расскажу именно о том, как я ее искал.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments5

Третья уязвимость Steam Windows Client, но не 0day

Reading time5 min
Views11K

В предыдущих сериях


Не так давно я рассказал о двух уязвимостях Стима: CVE-2019-14743 и CVE-2019-15316. Там была целая история о том, как я пытался зарепортить их, у меня не получалось, меня забанили, и только после публичного раскрытия и помощи сообщества удалось достичь результатов. Valve сделали вид, что извинились, и разбанили меня на HackerOne, так что очередную уязвимость я решил передать через этот сервис. На третий раз (здесь должна быть очевидная шутка о Half-Life 3) все прошло более или менее успешно.


Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments11

И ещё один Steam Windows Client Local Privilege Escalation 0day

Reading time7 min
Views21K

В предыдущей серии


Не так давно я опубликовал описание уязвимости для Steam. Я получил много отзывов от читателей. Valve не проронили ни слова, а HackerOne прислал огромное слезливое письмо и, в основном, молчал. В итоге меня забанили Valve на H1 — я не могу участвовать в их программе по отклонению уязвимостей (остальной H1 мне доступен).



Более подробно историю вы можете узнать в предыдущей публикации, здесь же я скажу пару слов об актуальном состоянии.

А оно простое и грустное — Valve все так же терпят фиаско. Последнее обновление, которое было призвано устранить проблему, легко обходится и уязвимость все еще актуальна. Да, я это проверил — прекрасно работает.

Но эта статья не о том, что старая уязвимость все еще присутствует, а о новой. Поскольку Valve еще раз изъявили желание прочитать публичный отчет, вместо частного, не будем лишать их этого удовольствия.
Читать дальше →
Total votes 86: ↑84 and ↓2+82
Comments92

Steam Windows Client Local Privilege Escalation 0day

Reading time7 min
Views47K
Я не первый год занимаюсь поиском уязвимостей, и, казалось бы, многое видел, но есть такая часть работы, к которой не удается привыкнуть и которую не могу понять. Это абсолютное нежелание вендоров принимать информацию об уязвимостях и проблемах. Я понимаю, что очень неприятно, когда тебе прямо показывают, что ты допустил ошибку и, скорее всего, не одну. Неприятно подтверждать в открытых источниках публично, что проблемы были, что сотрудники что-то недоработали. Но я не понимаю почему информацию об уязвимости нужно отвергать.


Итак, герой нашей истории — ПО Steam от компании Valve. И уязвимость повышения привилегий в нем, которая позволяет любому пользователю выполнить команды от имени NT AUTHORITY\SYSTEM.
Читать дальше →
Total votes 162: ↑159 and ↓3+156
Comments127

Разборы задач мини-CTF

Reading time7 min
Views2.9K
Приветствую всех хабрачитателей. Прошло три недели с момента, как я предложил желающим порешать мой CTF и, думаю, что пора опубликовать разборы задач. По своему опыту знаю, что очень обидно быть в ситуации, когда потратил кучу времени на задачу, а решения так и не узнал, поэтому выкладываю разбор задач. Решения разбиты на шаги и скрыты под спойлер, чтобы после любого шага можно было попробовать дорешать задачу самому, преодолев сложный момент.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments0

Пятничный мини-CTF

Reading time1 min
Views3.2K
Приветствую всех хабрачитателей. Я очень люблю поразмять свои мозги разными задачками — это могут быть какие-то математические задачи, интересные головоломки, связанные с программированием, или какие-то ctf-таски.

Для тех, кто хочет разнообразить пятницу головоломками я хочу предложить свой мини-ctf, в котором всего три задачки.

XT_CTF_01

XT_TASK_101

Ссылка на таск: xt_task_101.zip
Формат флага: XTGFLAG{…}
SHA1 флага: 6980D76C3C5246A101820A77031CA0EBE84A4A0E

XT_TASK_102

Ссылка на таск: xt_task_102.zip
Формат флага: XT{…}
SHA1 флага: 16448BF22750DE7E575A5A86E739FA9018ACFE52

XT_QUEST_103

Ссылка на таск: xt_quest_103.zip
Количество уровней: 15 + бонус
Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments8

Создание прокси-dll для проверок эксплуатации dll hijack

Reading time7 min
Views9.6K
Когда я исследую безопасность ПО, то одним из пунктов проверки является работа с динамическими библиотеками. Атаки типа DLL hijack («подмена dll» или «перехват dll») встречаются очень редко. Скорее всего, это связано с тем, что и разработчики Windows добавляют механизмы безопасности для предотвращения атак, и разработчики софта аккуратнее относятся к безопасности. Но тем интереснее ситуации, когда целевое ПО уязвимо.

Если описать атаку коротко, то DLL hijack — это создание ситуации, в которой некоторый исполняемый файл пытается загрузить dll, но атакующий вмешивается в этот процесс, и вместо ожидаемой библиотеки происходит работа со специально подготовленной dll с полезной нагрузкой от атакующего. В результате код из dll будет исполнен с правами запускаемого приложения, поэтому в качестве цели обычно выбираются приложения с более высокими правами.

Чтобы загрузка библиотеки прошла корректно, необходимо выполнить ряд условий: битность исполняемого файла и библиотеки должна совпадать и, если библиотека загружается при старте приложения, то dll должна экспортировать все те функции, которые это приложение ожидает импортировать. Часто одного импорта мало — очень желательно, чтобы приложение продолжило свою работу после загрузки dll. Для этого необходимо, чтобы у подготовленной библиотеки функции работали так же, как и у оригинальной. Реализовать это проще всего, просто передавая вызовы функций из одной библиотеки в другую. Вот именно такие dll называют прокси-dll.



Под катом будет несколько вариантов создания таких библиотек — как в виде кода, так и утилитами.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments21

Как смотреть SDDL и не ломать глаза о точки с запятыми

Reading time4 min
Views19K


Мой путь в ИБ начался с удивительного открытия: «безопасно ≠ зашифровано». Это сейчас такое утверждение выглядит простым и очевидным, а на первом курсе осознание этого факта произвело эффект сравнимый с ментальной атомной бомбой. Информационная безопасность атаковала расширением границ предметной области: оказалось, что криптография — это только один рубеж защиты, а ещё есть юридические, организационные, да и просто физические, в конце концов. Один из теоретических аспектов гласил «Все вопросы безопасности информации описываются доступами субъектов к объектам». Заучил, нарисовал мандатную и дискреционную модели доступов, рассказал, сдал и забыл.

Я специализируюсь на анализе безопасности Windows приложений. Довольно часто изучение именно различных прав доступа занимает существенную долю исследования. Чтобы автоматизировать процесс поиска странных или неправильных прав доступа пришлось разбираться в SDDL (Security Descriptor Definition Language). Кому интересно научиться читать права в форме SDDL (например что-то такое O:SYG:SYD:(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)) и познакомиться с моей утилитой для работы с дескрипторами в таком формате, добро пожаловать под кат.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments17

Возможно ли загрузить непроходимый уровень в Super Mario Maker?

Reading time8 min
Views21K
Данная запись — вольный пересказ видео Is it Possible to Upload an Impossible Level in Super Mario Maker?. В ролике есть отсылка на видео The Impossible Level, поэтому перескажу и его. Мой пересказ не претендует на точность, я просто хочу поделиться интересным материалом.

О чём пойдёт речь


Поиск ошибок в ПО бывает очень разным. Я занимаюсь поиском ошибок в исходных кодах, в бинарных файлах, в больших комплексах программ и даже в каких-то железках. Но есть область, в которой я практически никогда ничем не занимался — поиск ошибок в компьютерных играх.

Люди тратят уйму времени, чтобы найти ошибки в играх. Это могут быть логические, математические и даже программистские ошибки. Кто-то делает это, чтобы посмотреть на игру под новым углом, а кто-то пытается пройти игру хоть на несколько секунд быстрее, чем любой другой игрок. Мне кажется именно сообщество спидранеров (людей, проходящих игры на скорость) внесло огромный вклад в дело поиска игровых глюков и ошибок. Но экономить время при прохождении мы будем в другой раз, сегодня просто рассказ о поиске ошибки в игровой логике.

В сентябре 2015 года компания Нинтендо выпустила Super Mario Maker — платформер про известного сантехника Марио. Одной из ключевых особенностей игры стала возможность пользователям самостоятельно создавать уровни (здесь они называются курсы) и делиться ими с другими игроками. Кто-то уровни создаёт, отслеживает процент успешных прохождений, а кто-то, собственно, проходит эти уровни. Именно в этот момент у игроков-исследователей зачесались руки — а можно ли опубликовать непроходимый уровень?


Рисовать что-то такое нет смысла, уровень хоть и действительно непроходимый, но и опубликовать мы его не сможем.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments7

Баг при работе TextBox.GetLineText в .NET WPF

Reading time7 min
Views4K
Для проведения исследований работы программ и ОС существует очень много различного инструментария. Виртуальные машины, IDE, умные блокноты, IDA, radare, hex-редакторы, pe-редакторы, и даже одних утилит Sysinternals больше сотни — все это сделано для облегчения многих рутинных операций. Но иногда наступает момент, когда ты понимаешь, что среди всего этого многообразия тебе не хватает небольшой утилитки, которая просто сделает банальную и нехитрую работу. Можно написать скрипты на питоне или Powershell на коленке, но нередко на такие поделки без слез не взглянешь и с коллегами не поделишься.

Недавно такая ситуация снова наступила у меня. И я решил, что пора просто взять и написать аккуратную утилиту. О самой утилите я расскажу в одной из ближайших статей, но об одной из проблем во время разработки расскажу сейчас.

Ошибка проявляется так – если в WPF приложении, в стандартный контрол TextBox воткнуть много строк текста, то вызовы функции GetLineText() начиная с некоторого индекса будут возвращать неправильные строки.


Неправильность заключается в том, что хоть строки будут из установленного текста, но расположенные дальше, фактически GetLineText() будет просто пропускать некоторые строки. Ошибка проявляется при очень большом количестве строк. Так я ее и встретил – попытался отобразить в TextBox’е 25 мегабайт текста. Работа с последними строками выявила неожиданный эффект.

Гугл подсказывает, что ошибка существует с 2011 года и Microsoft не особо торопится что-то исправлять.
Посмотрим на пример и найдем проблему
Total votes 24: ↑22 and ↓2+20
Comments9

Иногда ответ не «42»

Reading time3 min
Views19K
Доброй вам пятницы, хабралюди. У меня с друзьями есть такая традиция — мы собираемся и вместе программируем. Раньше у нас такая работа была, а сейчас уже просто традиция — кодобредогенерация. Мы выбрали несложную задачку и нарисовали решений кто во что горазд. Код будет ближе к концу статьи, но не спешите листать вниз, надо же сначала объяснить, что это за код и как мы пришли к нему.

Сама задача — получить число 0x17 самым внезапным образом.


Внимание! Данный пост оскорбляет чувство прекрасного и практики программирования на C. Читайте, воспринимайте и комментируйте на свой страх и риск.

Talk is cheap. Show me the code.
Total votes 42: ↑40 and ↓2+38
Comments38

Клавиатура — устройство вывода?

Reading time9 min
Views11K
Исследования — это неотъемлемая часть моего рабочего процесса. Я исследую ПО, исходные коды, ОС, железки — все, до чего дотянутся руки (ну или руки начальства, тут как повезет). Но не все исследования проводятся по заказу, иногда что-то просто делаешь для души (что, наша компания в общем-то поощряет). Это исследование началось с разговора о шифровании, а закончилось обходом DLP и выносом данных за контролируемый периметр.

Я очень не люблю DLP-системы. Моя неприязнь основана на маркетинговой стратегии продуктов, представляющих свои решения в виде этакой «серебряной пули», которая может предотвратить все утечки данных в любой компании. Не может. По моему мнению, реально DLP помогает в 2 случаях — предотвратить утечку данных из-за кривых рук (типа отправки платежных данных вместо ali@domain.mail на all@domain.mail) и помочь провести расследование, кто же унес данные (постфактум, естественно). Я изначально был уверен, что специалист, владеющий достаточными знаниями о Windows, например, сможет преодолеть почти любые фильтры. А мотивированный инсайдер сможет найти такого специалиста и обучиться нескольким трюкам. Но проверять разные трюки на конкретных комплексах довольно скучно, поэтому надо было придумать, как разом обойти их все.


Читать дальше →
Total votes 31: ↑29 and ↓2+27
Comments18

Умный замок, взгляд параноика

Reading time3 min
Views32K
Привет, GT. Я бы хотел предложить сообществу свой взгляд на умные замки, взгляд со стороны исследователя безопасности и параноика. Эта статья родилась как попытка дать развернутый комментарий в ответ на эту статью Умный замок Dooris. Но в итоге комментарий стал слишком отвлечен от самой статьи, и я решил доработать его и представить независимо.

Я не консерватор в вопросах прогресса. Я считаю, что IoT очень перспективная вещь, жду автомобилей без водителей, верю в носимую электронику и от вживления NFC метки меня останавливает только отсутствие реально интересных дополнительных возможностей, которые я потенциально бы получил. Именно поэтому я рад, когда вещи получают прилагательное «умный». Но умной должна быть не только техника, но и ее разработчик (ну и пользователь, желательно, тоже).

После такого небольшого вступления я сразу выскажу основной тезис – умный замок не должен уметь открывать квартиру. Вот так. Причем принципиально именно механически не должен мочь, а не программным запретом.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments151

UAC Bypass или история о трех эскалациях

Reading time14 min
Views34K
На работе я исследую безопасность ОС или программ. Ниже я расскажу об одном из таких исследований, результатом которого стал полнофункциональный эксплоит типа UAC bypass (да-да, с source-code и гифками).


Ах, да, в Майкрософт сообщили, они сделали вид, что им не интересно.
Алярм! Под катом около 4 мегабайт трафика – картинок и гифок.
Поднять права
Total votes 60: ↑58 and ↓2+56
Comments15

Information

Rating
1,207-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity