Сейчас на форуме: jinoweb, bartolomeo, rmn (+5 невидимых)

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


Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

Создано: 09 июля 2017 01:56
· Личное сообщение · #1

Здрасти.

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

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

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

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

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

-----
vx





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

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

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


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

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

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube


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

Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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



Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

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

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



Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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

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




Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

mak

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

SegFault

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

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

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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




Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

shellstorm

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

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

-----
vx




Ранг: -0.7 (гость), 170thx
Активность: 0.540
Статус: Участник

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

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

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



Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

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

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

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




Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

SegFault

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

shellstorm

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

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

-----
vx




Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

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

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

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




Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

SegFault

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

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

-----
vx




Ранг: 44.8 (посетитель), 19thx
Активность: 0.040
Статус: Участник

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

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

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




Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

SegFault

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

-----
vx




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

Создано: 21 июля 2017 04:11
· Личное сообщение · #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





Ранг: 338.5 (мудрец), 348thx
Активность: 2.112.42
Статус: Участник

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

Zoeken

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

Решение найдено.

-----
vx



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