Сейчас на форуме: Rio, YDS (+10 невидимых)

 eXeL@B —› Основной форум —› Когда отладка невозможна?
Посл.ответ Сообщение

Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 23 апреля 2006 07:33
· Личное сообщение · #1

Цитата из SDK: "in the Win32 API for Windows NT, DebugActiveProcess can fail if the target process was created with a security descriptor that denies the debugger appropriate access." (в Win32API семейства Windows NT, вызов DebugActiveProcess может быть не успешен, если целевой процесс имеет дескриптор безопасности, запрещающий доступ отладчика). Я пробовал запретить администраторам делать с процессом любые действия, но OllyDbg аттачится. Как же надо правильно создать security descriptor?
p.s. дескриптор безопасности я менял с помощью программы SetPrAcl, а не с помощью своего кода. А эта программа использует стандартный интерфейс Windows NT для установки прав доступа, то есть внутри самой программы никакой работы с ACL с помощью сложных API-функций нет.



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

Создано: 23 апреля 2006 08:22
· Личное сообщение · #2

В МС есть псевдо-юзер System, который может все. Чтобы хоть как-то защитить систему, критические данные доступны только System, а Администратор должен выполнять переход в режим System для выполнения "запрещенных" действий. Поэтому любая защита бесполезна, если известен пароль админа или имеется "лазейка" в режим админа.
Насчет запретов администратору еще смешнее : да можно, например, запретить админу любой доступ, но админ перейдя в System может вернуть все назад.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 23 апреля 2006 10:27
· Личное сообщение · #3

tundra37
Админ и так является владельцем моего процесса. И не надо ему системных прав получать, владелец может сменить разрешения. А админ по умолчанию и так может сменить владельца. Однако пока разрешения не изменены, админ доступа иметь не должен. А OllyDbg каким-то образом читает память, не меняя разрешений. Спрашивается: а на кой хрен они тогда? И какой должен быть securitydescriptor ЦЕЛЕВОГО процесса, чтобы его не могли отлаживать? По умолчанию и так только админы отлаживать могут. Да, и SYSTEM не всё может, где-то помню была такая хрень, которую может выполнить любой админ, но не может SYSTEM. Да и права SYSTEM по сравнению с ring-0 приложениями мизерные, критическая информация не доступна и ей тоже.




Ранг: 120.6 (ветеран)
Активность: 0.090
Статус: Участник
rootkit developer

Создано: 23 апреля 2006 10:38
· Личное сообщение · #4

Изменение прав на процесс - это все фигня. Невозможна только трассировка внутри обработчика int 1 и бряки внутри int 3. А из юзермоды айсу никак не запретить отлаживать программу.

-----
Скажем дружно - нафиг нужно.




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

Создано: 23 апреля 2006 11:43
· Личное сообщение · #5

NullSession пишет:
А OllyDbg каким-то образом читает память, не меняя разрешений.

Ты еще скажи, что он аппаратные точки ставит, не используя переход в System.
Секция кода тоже закрыта на запись, тоже скажешь что olly - маг и чародей.
Открыл доступ, сделал свое дело и вернул все назад - только и делов.



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 23 апреля 2006 11:56
· Личное сообщение · #6

tundra37
В ring-0 он переходит, а не в System. Причём не надо быть админом. Просто там, в ring-0, проверяются права вызывающего потока, и тут почему-то вдруг на них забили. То есть если пользователь вызывает WriteProcessMemory, то переход в режим ядра должен быть, но если прав не хватает, его должны послать. Почему отладчик не посылается, непонятно.
Ms-Rem
Айсу и не надо, цель - юзер-mode отладчики.



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 23 апреля 2006 22:43
· Личное сообщение · #7

Olly в рингнуль переходит? =)

-----
Я медленно снимаю с неё UPX... *FF_User*





Ранг: 120.6 (ветеран)
Активность: 0.090
Статус: Участник
rootkit developer

Создано: 23 апреля 2006 23:21
· Личное сообщение · #8

AlexZ пишет:
Olly в рингнуль переходит? =)

Нет конечно, где ты такую глупость услышал?
Хардварные бряки ставятся с помощью SetThreadContext

-----
Скажем дружно - нафиг нужно.




Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 05:28
· Личное сообщение · #9

Кстати, если WriteProcessMemory на UnhandledExceptionFilter вызову, то свою копию kernel32.dll получит каждый, или у всех будет общая, а у меня личная? А то ведь можно всё-таки руки отрубить отладчику user-mode по крайней мере. Да и айсу в какой-то мере.




Ранг: 218.9 (наставник), 42thx
Активность: 0.160
Статус: Участник
dotnet

Создано: 24 апреля 2006 07:20
· Личное сообщение · #10

он наверно имел введу что после вызова WriteProcessMemory поток переходит в r0 вызывая сервис ядра через sysenter.

-----
have a nice day




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

Создано: 24 апреля 2006 12:58
· Личное сообщение · #11

Ms-Rem пишет:
Хардварные бряки ставятся с помощью SetThreadContext

Тогда параллельный вопрос. Ломаю программу и если ставлю хардваре бряк на исполнение,
то он не ловится, ни на точке входа(ловит только не нужные), ни на самом call.
А если ставлю хардваре бряк по доступу, то все прекрасно ловится ?!
И олли говорит : был доступ на выполнение



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 14:30
· Личное сообщение · #12

Nimnul пишет:
он наверно имел введу что после вызова WriteProcessMemory поток переходит в r0 вызывая сервис ядра через sysenter

Именно это и имел ввиду. А то пошли тут про права SYSTEM говорить, которые к ядру отношения никакого не имееют.
tundra37
Ничего не понял. По-моему ты с пунктуацией что-то намутил.



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

Создано: 24 апреля 2006 14:44
· Личное сообщение · #13

NullSession пишет:
По-моему ты с пунктуацией что-то намутил

Да нет. По памяти наврал: имелся ввиду бряк по доступу к памяти. Я думал, что это аналог софтайсовского
bpx RW. А Олли наверное всю секцию закрывает и проверяет тот адрес или не тот ?



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 24 апреля 2006 18:50
· Личное сообщение · #14

Ms-Rem, я так понял что tundra37 и NullSession об Олли говорили, вот из этого и решил что это бо Олли:
NullSession пишет:
А OllyDbg каким-то образом читает память, не меняя разрешений.

tundra37 пишет:
Ты еще скажи, что он аппаратные точки ставит, не используя переход в System.
Секция кода тоже закрыта на запись, тоже скажешь что olly - маг и чародей.
Открыл доступ, сделал свое дело и вернул все назад - только и делов.

NullSession пишет:
В ring-0 он переходит, а не в System.

Я ычера-то это трезвый читал - запутался, а тут ещё сегодня ничерта непонатяно

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 19:13
· Личное сообщение · #15

AlexZ пишет:
Я ычера-то это трезвый читал - запутался, а тут ещё сегодня ничерта непонатяно

Протрезвись и напиши, что ты хотел сказать! Ибо твой пост тоже как-то непонятен.
И вообще я тут с вами свихнусь. Пойду лучше службы изучать. Или к Ане приставать. А то башка балит от программирования.



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 24 апреля 2006 20:46
· Личное сообщение · #16

Короче я вот о чем: ринг3 дебугер отлаживает через дебаг АПИ, и ессно ставит бряки изменяя контекст или банально записав в код инт3 на нужное место, и я не думаю что ринг3 дебугер может уйти в рингнуль, потому мне непонятны некоторые фразы, пояснения которых я хотел бы знать.
tundra37 пишет:
NullSession пишет:
А OllyDbg каким-то образом читает память, не меняя разрешений.
Ты еще скажи, что он аппаратные точки ставит, не используя переход в System.
Секция кода тоже закрыта на запись, тоже скажешь что olly - маг и чародей.
Открыл доступ, сделал свое дело и вернул все назад - только и делов.

Да, VirtualProtect/Ex может изменить атрибуты памяти, ринг-3 отладчики так и делают. Или я что-то снова не понял? =) И никуда олли не переходит, а если апям надо выполнятся в рингнуле, то они туда нырнут и спрашивать никого не будут.
Уложился

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 24 апреля 2006 21:39
· Личное сообщение · #17

AlexZ
см. пост Nimnul:
Nimnul пишет:
он наверно имел введу что после вызова WriteProcessMemory поток переходит в r0 вызывая сервис ядра через sysenter.

Ну или int 2Eh для доXP-ишных версий Windows. SetThreadContext - аналогично. Но Олька может вытворять что хочет только с user mode кодом, остальное ей неподвластно, что там Microsoft написала, то в режиме ядра и выполнится. Странно, что это не все помнят.



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

Создано: 25 апреля 2006 10:42
· Личное сообщение · #18

Ms-Rem пишет:
Хардварные бряки ставятся с помощью SetThreadContext

Спрошу еще раз:
В олли есть следующие бряки :
hardware on execution, memory on access и memory on write.
В софтайсе есть BPM aaaa X , BPM aaaa R, BPM aaaa RW.
Софтайсовские бряки делаются через аппаратные регистры, в том смысле, что по
BL выдается адрес, номер используемого регистра и тип бряка.
В олли в регистры попадает лишь hardware on execution.
Так вот, существуют программы, которые могут уходить от бряка hardware on execution,
при чем избирательно, а бряк memory on access они не отключают.
Все это естественно к олли относится, на софтайсе не проверял.
+++++++++++++++++++++++++++++++
Будучи администратором, ничто не мешает зарегистрировать и запустить драйвер -
вот вам и ринг0 ?!



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 25 апреля 2006 16:40
· Личное сообщение · #19

Кстати, а что если сделать сплайсинг на системный callback-обработчик исключений, который отвечает за обработку этих исключений? Он же что делает:
1) проверяет, есть ли отладчик. Если Да, посылает ему
2) затем идёт куча медитаций с SEH, VEH и т.п. и отладчиком тоже.
Слыхал, что SoftIce на него ставит int 3.
Но вроде бы он разный на 98 и NT. Это либо kernel32!UnhandledExceptionFilter либо ntdll!KiUserExceptionDispatcher. Но если воспользоваться сплайсингом, то каждая программа получит свою копию системных dll, или все они будут совместно пользовать одну, а наша получит отдельную? Я уже спрашивал это выше, но не учёл особенностей nt. UnhandledExceptionFilter там совсем другое вроде бы делает.
В общем, какие идеи?



Ранг: 62.8 (постоянный)
Активность: 0.040
Статус: Участник

Создано: 28 апреля 2006 18:56
· Личное сообщение · #20

Ну чё подохли? Три дня уже прошло!


 eXeL@B —› Основной форум —› Когда отладка невозможна?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати