Русский / Russian English / Английский

Сейчас на форуме: r0lka, strannyi (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

 eXeL@B —› Программирование —› ROP inj.
Посл.ответ Сообщение


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 9 июля 2017 01:56 New!
Цитата · Личное сообщение · #1

Здрасти.

Задача - обнаружить исполнение ROP последовательности.

Те способы что существуют, не пригодны. К примеру i-CET не позволяет работать любому приложению, которое использует пакеры/протекторы/системную_обработку.

Нужен способ для обнаружения последовательности ROP для приложений с защитой пе(протекторы/сис_код).

Эффективный способ - тот, что реализован как куки в прологах функций(перезапись адреса возврата при условии что она происходит после записи предыдущего (esp-4) значения. Но этого не достаточно.

Так как при ROP происходит извлечение GRP регистров, то видимо как то можно это использовать, к примеру создать битмапу для стека и в ней помечать регистры, но конкретного решения не видно


Ранг: 667.6 (! !)
Статус: Участник
CyberMonk

Создано: 10 июля 2017 12:19 New!
Цитата · Личное сообщение · #2

difexacaw пишет:
Эффективный способ - тот, что реализован как куки в прологах функций(перезапись адреса возврата при условии что она происходит после записи предыдущего (esp-4) значения. Но этого не достаточно.


У тебя есть пример для этого способа?!

Control-Flow Enforcement Technology Preview - Intel® Software - если кому интересно
--> Link <--

| Сообщение посчитали полезным: plutos


Ранг: 0.0 (гость)
Статус: Участник

Создано: 10 июля 2017 15:27 New!
Цитата · Личное сообщение · #3

после прошлой темы прям лес рук с предложениями вариантов.

Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 10 июля 2017 15:41 New!
Цитата · Личное сообщение · #4

хардварный шадоу стек от интел решает все проблемы с rop, никакие другие кривые велосипеды не нужны.
и никакие пакеры протекторы rop не юзают

Ранг: 0.0 (гость)
Статус: Участник

Создано: 10 июля 2017 16:35 New!
Цитата · Личное сообщение · #5

SegFault пишет: и никакие пакеры протекторы rop не юзают

не юзают, но костыли с треском ломаются, бггг. ситуация такая же, как и с dep, говнософт отваливается.


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 10 июля 2017 20:58 · Поправил: difexacaw New!
Цитата · Личное сообщение · #6

mak

А какой пример, запись значения ниже адреса возврата и адреса возврата, при этом нужны некоторые спец критерии - возврат из процедуры не происходит етц.

SegFault

Если бы ты понимал как это работает, то такую чушь бы не говорил. CET не совместимо ни с чем, обычный софт под ним запущен не может быть. Пакеры протекторы не юзают ROP, я это не говорил мисье не читает, он пишет; манипуляции стеком не совместимы с CET, а значит и никакой выше описанный софт.

Ни одно приложение накрытое защитой, ни один плаг или какой то хук не может работать под CET. Но не смотря на это, эта техника не является годной защитой, помимо ROP есть есчо множество способов обойти CET - COP etc.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 11 июля 2017 04:07 New!
Цитата · Личное сообщение · #7

что то совсем уныло зашел тред. индей, а что тебе мешает запилить свой теневой стек? насколько я понял тебе это нужно для твоего "мотора", можешь подсмотреть у pin или drio, инструменты так и называются shadow stack, реализация говно, но для общего понимания достаточно, а так, еще в каком то году была нормальная дока на bh. самому лень искать, а после прошлого треда еще и желания нет. cet рассчитан на rop\jop, естественно это не серебряная пуля и не предлагает универсальное решение для всех векторов атак, но это лучше чем ничего, особенно в критических системах.


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 11 июля 2017 04:51 New!
Цитата · Личное сообщение · #8

shellstorm

Теневой стек это просто проверка что адрес возврата сформирован именно через call и серия таких адресов в стеке соответствует последовательности исполнения call. Можно и по другому без стека это проверить, отследив последовательность ветвлений, это не принципиальные детали конкретной реализации.
Что бы была возможность работы произвольного приложения проверка такой цепочки call-ret не годится, к примеру какой то хук или например win-seh нарушит эту последовательность, хотя это не будет исполнением rop. Нужен другой критерий.

Например извлечение регистров из стека без их загрузки как вариант. Или есчо как то можно обнаружить.

Ранг: 0.0 (гость)
Статус: Участник

Создано: 11 июля 2017 15:01 New!
Цитата · Личное сообщение · #9

difexacaw пишет: Например извлечение регистров из стека без их загрузки как вариант.

так реализация теневого стека у pin проверяет не только call\ret но и контекст анализирует, загугли доки за 2014\2015 год, там уже с учетом регистров, а рядом лежат доки с описанием захвата атомов, тоже придется учитывать.

Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 11 июля 2017 15:24 New!
Цитата · Личное сообщение · #10

difexacaw пишет:
Если бы ты понимал как это работает, то такую чушь бы не говорил. CET не совместимо ни с чем, обычный софт под ним запущен не может быть.

ты бредишь? ты сам не понимаешь, что говнопакеры всякие и прочие костыли типа твоих моторов это и есть негодный софт, и правильно што ето будет блочиться новыми процами интел с шадоу стеком.
Пили лучше тему про обход шадоу стека от интел!


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 11 июля 2017 17:28 · Поправил: difexacaw New!
Цитата · Личное сообщение · #11

SegFault

Обычные приложения запускаться не будут, а это никому такое не нужно - механизм просто не будут использовать(отключат).

shellstorm

А что именно искать, дайте пруф. То что находит гугл по первым ссылкам не содержит никакой важной инфы:

--> Link <--
--> Link <--
--> Link <--
--> Link <--

Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 11 июля 2017 17:32 New!
Цитата · Личное сообщение · #12

difexacaw пишет:
Обычные приложения запускаться не будут, а это никому такое не нужно - механизм просто не будут использовать(отключат).

бля что за наркомания


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 12 июля 2017 21:37 · Поправил: difexacaw New!
Цитата · Личное сообщение · #13

SegFault

Смотри --> Link <--

Затем пойми общий принцип и разницу между COP/JOP vs ROP.
Метод типо валидации call-ret не годится в случае выше, это не общее решение. Я ведь сказал что мне не нужна данная валидация(push X/ret - это никак не исполнение шелла!, хотя CET это блокирует). Тема про поиск общего решения.

Ранг: 44.8 (посетитель)
Статус: Участник

Создано: 13 июля 2017 14:31 New!
Цитата · Личное сообщение · #14

difexacaw пишет:
Обычные приложения запускаться не будут, а это никому такое не нужно - механизм просто не будут использовать(отключат).

херню не неси, rfg уже прекрасно работает, говнософт отвалится если - это гоже, это нам подходит


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 13 июля 2017 18:48 New!
Цитата · Личное сообщение · #15

SegFault

Перечитайте моё сообщение выше, вы не улавливаете смысл.

Ранг: 1.0 (гость)
Статус: Участник

Создано: 21 июля 2017 04:11 New!
Цитата · Личное сообщение · #16

difexacaw
наслышан про твои делишки.

Code:
  1.  test edi, 7        ; f7 c7 07 00 00 00
  2. setnz byte[ebp-61] ; 0f 95 45 c3


при начале декодирования на один байт позже, даёт
Code:
  1. mov dword[edi], 0f000000h ; c7 07 00 00 00 0f
  2. xchg ebp, eax             ; 95
  3. inc ebp                   ; 45
  4. ret                       ; c3


Ранг: 331.0 (мудрец)
Статус: Участник

Создано: 1 августа 2017 18:45 New!
Цитата · Личное сообщение · #17

Zoeken

Не знаю что вы имели ввиду, впрочем не важно.

Решение найдено.
 eXeL@B —› Программирование —› ROP inj.
Эта тема закрыта. Ответы больше не принимаются.

Видеокурс ВЗЛОМ