Сейчас на форуме: tyns777, cppasm, dutyfree, asfa (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Различие у ZwAllocateVirtualMemory на 7 и хп.
. 1 . 2 . >>
Посл.ответ Сообщение

Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 13 января 2017 23:37 · Поправил: mazaxaker
· Личное сообщение · #1

Пробую выделить память по нулевым адресам, на хп выделяет, а на 7 возвращает 0xC00000F0=STATUS_INVALID_PARAMETER_2
Пробую так:
Code:
  1.          LPVOID addr = ( LPVOID )0x1;
  2.          SIZE_T size = 0x1000;
  3.          int ercod=(int)ZwAllocateVirtualMemory( ( HANDLE ) -1,&addr, 0, &size, MEM_COMMIT | MEM_RESERVE , PAGE_EXECUTE_READWRITE );

Почему-то если адрес меньше 10000 (подсмотрел в virtualalloc), то на 7 отказывает в памяти там. Отключил DEP, думал он тут мешает, но и с отключенным не выдает так память.
Как бы узнать, почему на 7 отказывает по нулевому адресу выдать память, пробовал windbg, но он почему-то проскакивает sysenter.
Кстати исходников нету этих ntdll ?)




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 14 января 2017 01:17
· Личное сообщение · #2

Гугл null page mitigation. В 8 запретили выделять память по 0 адресу. Возможно на 7 это тоже каким-то патчем портировали.



Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 01:31
· Личное сообщение · #3

Archer пишет:
В 8 запретили выделять память по 0 адресу.

А я правильно понял, что у эксплоитов этих фишка именно выделять в null page себе память ? А то я переделал прогу, чтобы она выделяла память по произвольному адресу, но после этого в бсод стало кидать)




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

Создано: 14 января 2017 01:42
· Личное сообщение · #4

mazaxaker

Вы думаете что мс разрабы так глупы что дадут вашему сплойту механизм отключения защиты

> что у эксплоитов этих фишка именно выделять в null page себе память ?

Нет вы поняли не правильно. Аллокация в нулях нужна была дл LPE, которые использовали не инициализированные указетели, через них передавалось управление по нулевому смещению. Это выпилено.

> переделал прогу, чтобы она выделяла память по произвольному адресу

Хелловорды из ядра и прочий изврат из за отсутствия знаний - это ваша проблема, а не аллокация в нулях.

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 01:54
· Личное сообщение · #5

difexacaw пишет:
Хелловорды из ядра и прочий изврат

Я код основной не менял, тока хотел сделать совместимость того эксплоита с вин7 тоже. Он на хп работает, а на 7 уже облом с null page.




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

Создано: 14 января 2017 02:37
· Личное сообщение · #6

mazaxaker

А в 10-ке вы удивитесь сколько защиты появилось и она апдейтится каждые несколько недель фундаментально.

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 04:58 · Поправил: mazaxaker
· Личное сообщение · #7

difexacaw, а не подскажешь как через ядровый отладчик syser добраться до кода в ядре этой функции ZwAllocateVirtualMemory, а то там когда попадаю в ядро, там ведь сначала идет поиск этой функции, а хочется попасть сразу уже в ее код, как бы сделать, чтобы долго не трасировать ядро.
Кстати у меня часто мышь обездвиживается в syser на хп, не знаешь как это пофиксить, приходится его много раз перезапускать, а то клавиатура работает, трассировать могу, а мышью ничего не могу сделать.

Windbg вроде удобнее, но он почему-то не попадает в ядро, просто как по f8 проходит sysenter, как бы его настроить, он хотя бы без глюков таких с мышью.




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

Создано: 14 января 2017 13:12
· Личное сообщение · #8

В WinDbg можно бряк поставить на целевой функции для нужного процесса

-----
IZ.RU




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 16:32
· Личное сообщение · #9

DenCoder, пробую так bp nt!NtAllocateVirtualMemory, но выдает could not resolved, addaing deferred bp.
Как правильно бряк поставить в нем.




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

Создано: 14 января 2017 16:35 · Поправил: DenCoder
· Личное сообщение · #10

Очень вероятно, символы нужны. Есть здесь на форуме тема, поищите

-----
IZ.RU




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 17:13
· Личное сообщение · #11

DenCoder, получилось так бряк поставить bp ntdll!NtAllocateVirtualMemory
Сейчас удаленно пробую отлаживать. Но он бряк ставит не в ядре, а в этом переходнике перед sysenter.
А как чтобы в ядре поймать то.




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

Создано: 14 января 2017 20:02
· Личное сообщение · #12

mazaxaker пишет:
А как чтобы в ядре поймать то.


DenCoder пишет:
символы нужны


-----
IZ.RU




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 20:22
· Личное сообщение · #13

DenCoder пишет:
символы нужны

Добавил так SRV*С:\Symbols*http://msdl.microsoft.com/download/symbols
По этой инструкции http://www.oszone.net/27732/WinDBG-Install-Configure
Но все равно проскакивает sysenter.

Добавлено спустя 7 минут
Кстати на скринах вижу часто в windbg внизу стоит kd>, а у меня просто 000>. Я так понимаю нужно, чтобы kd там в командой строке стояло, не знаете как kd там в windbg чтобы включилось ?




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 14 января 2017 21:32 · Поправил: plutos
· Личное сообщение · #14

mazaxaker пишет:
Кстати на скринах вижу часто в windbg внизу стоит kd>, а у меня просто 000>. Я так понимаю нужно, чтобы kd там в командой строке стояло, не знаете как kd там в windbg чтобы включилось ?


In user mode:
0:000> - the processor and thread numbers.
In this example the current processor number is 0, and the current thread number is 00.
So we are looking at the stack trace for thread 00 (which happens to be running on processor 0).

In kernel mode:
After breaking into kernel: 0:kd> - first CPU on target machine, kd - kernel debugger.

А вообще настоятельно советую почитать мануалы по теме. Windbg штука хитрая и за каждой мелочью на форум не набегаешься. Если вы планируете серьезно использовать его в будущем, то не пожалейте времени и постарайтесь разобраться. Очень облегчит жизнь.

-----
Give me a HANDLE and I will move the Earth.




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 21:48
· Личное сообщение · #15

plutos, гуглю, но с материалами по нему туго, пока вот просто хочу попасть на функцию NtCreateFileA в ядре. Вот в режим кернел зашел в локалке, там появилось kd> и стали работать команды вроде x*nt!Nt*File, удалось глянуть код ее, но вот как теперь сам экзешник подцепить, в режиме kd> не доступен пункт открыть экзешник, бряки в kd> тоже не дает ставить, пишет not supported.
Подскажи что не так делаю.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 14 января 2017 22:54 · Поправил: plutos
· Личное сообщение · #16

mazaxaker пишет:
вот как теперь сам экзешник подцепить, в режиме kd> не доступен пункт открыть экзешник


Похоже, что вы не понимаете самых основ и будете задавать вопросы до посинения.
Мой совет: разберитесь с основами. RTFM!

mazaxaker пишет:
гуглю, но с материалами по нему туго

не смеши...

-----
Give me a HANDLE and I will move the Earth.




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 14 января 2017 23:05
· Личное сообщение · #17

plutos пишет:
Похоже, что вы не понимаете самых основ и будете задавать вопросы до посинения.

А можешь подкинуть материалов хороших.
Еще вопрос можно ли обойтись без удаленной отладки в вин хп ? Хочу просто поотлаживать нативные апи в ядре.




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 14 января 2017 23:36 · Поправил: plutos
· Личное сообщение · #18

mazaxaker пишет:
А можешь подкинуть материалов хороших.


Да в самом DebiggingToolsForWindows есть туториал "kernel_debugging_tutorial.doc", я бы с него и начал, а потом
https://msdn.microsoft.com/en-us/library/windows/hardware/dn745911(v=vs.85).aspx
и тд. и тп. Материалов море, нужно только поискать.


Еще вопрос можно ли обойтись без удаленной отладки в вин хп ?


VMware + WRK ?

-----
Give me a HANDLE and I will move the Earth.




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 00:34 · Поправил: mazaxaker
· Личное сообщение · #19

plutos пишет:
VMware + WRK ?

Ага.

Добавлено спустя 21 минуту
plutos, а можешь тут подсказать, не получается приаттачиться к проге.
Пробую отсюда команды http://www.windbg.info/doc/1-common-cmds.html
http://screenshot.ru/upload/image/zZYn




Ранг: 622.6 (!), 521thx
Активность: 0.330.89
Статус: Участник
_Вечный_Студент_

Создано: 15 января 2017 01:22
· Личное сообщение · #20

глянь эту статью, должно помочь:
http://www.osronline.com/article.cfm?article=576

-----
Give me a HANDLE and I will move the Earth.




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 01:38
· Личное сообщение · #21

plutos, пробовал, но не пойму, вот у меня в режиме kd
kd> .process /i 863c22f0
kd> bp ntdll!ntcreatefile
Эти команды не работают, выдает operation not supported.
Еще что заметил, у них эта команда kd> !process -1 0 выдает текущий процесс idle, а у меня windbg.



Ранг: 12.0 (новичок), 17thx
Активность: 0.060
Статус: Участник

Создано: 15 января 2017 01:48
· Личное сообщение · #22

windbg.info




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

Создано: 15 января 2017 01:59 · Поправил: difexacaw
· Личное сообщение · #23

mazaxaker

> не подскажешь как через ядровый отладчик syser добраться до кода

Раньше я часто юзал виндбг/сиську но это было давно - сейчас мне обычно ничего отлаживать не нужно, цель исследуется аналитически, а не отладкой, дизасм. Последний раз я юзал виндбг очень давно, для дебага своего руткита, но это был крайний случай, там техника интегрировалась в шедулер памяти в самое его дно и для отладки юзался виндебаг. Обычно это крайний случай что бы его заюзать. Это очень мощный инструмент с фундаментальным багом - что бы его заюзать нужно месяца вкуривать кривейшую командную систему при кривой реализации его.

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 02:05 · Поправил: mazaxaker
· Личное сообщение · #24

difexacaw пишет:
что бы его заюзать нужно месяца вкуривать кривейшую командну систему при кривой реализации его.

Это да, но я хоть разобрался как выдергивать из него код nt функций из ядра. Еще бы не плохо это в иде посмотреть с ее графами и прочими удобствами.

Добавлено спустя 9 минут
Все-таки я ее вкурил, получилось наконец по pipe соединиться с виртуалкой как тут https://xakep.ru/2009/06/23/48628/
Теперь все идет как в статье plutos

Добавлено спустя 30 минут
neshta, я сейчас опытным путем заметил, что эта прога crashme и помогает подцепиться по pipe. Когда я просто писал windbg -b -k com:pipe,port=\.\pipe\com_1 в своей host машине, чтобы подцепить vmware win xp машину, то он просто висел с надписью wait to reconnect. Как только нажал в той проге break int 3, то сразу подхватывает. Не понял только это баг, что он не цепляет систему, пока ее эта прога не заморозит.




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

Создано: 15 января 2017 03:22 · Поправил: difexacaw
· Личное сообщение · #25

mazaxaker

А в чём вообще суть задачи ?

Маловеротно что у вас задача которая требует дебаг загрузчика ос и прочих лл вещей, судя по уровню знаний. По мойму это как говорится стрелять по воробьям пушкой.

Опишите лучше проблему вашу.

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 03:26
· Личное сообщение · #26

difexacaw пишет:
Опишите лучше проблему вашу.

Мне собственно было интересно посмотреть как работает ZwAllocateVirtualMemory, чтобы понять почему она не выделяла память в null page на семерке. Поэтому и захотел глянуть ее реализацию.
difexacaw пишет:
дебаг загрузчика ос

Так я ось и не дебажу. Я переключал windbg в контекст моего процесса и уже на него конкретно ставил бряки, чтобы все остальное не срабатывало)




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

Создано: 15 января 2017 03:38
· Личное сообщение · #27

mazaxaker

Так а зачем для этого отлаживать ?

Посмотрите дизасмом, найдёте проверку из нескольких инструкций среди множества валидаций, зачем и что дальше не ясно. Я не помню точно, но вроде как аллокация в нулях была доступна только csrss. Но всё равно туда вы не впрыснитесь, это защищённый процесс.

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 04:52 · Поправил: mazaxaker
· Личное сообщение · #28

difexacaw пишет:
Но всё равно туда вы не впрыснитесь, это защищённый процесс.

Да, это понятно, он с правами системы.

difexacaw пишет:
Так а зачем для этого отлаживать ?

А вот кстати возникла такая идея, чтобы это отлаживать в ollydbg.
Они ведь хранятся все в ntkrnlpa.exe, ща в ида отдизасмил их.
Вот идея, можно напрямую вызвать, то есть так:
Code:
  1. FARRPROC ntalloc=GetProcAddress(LoadLibraryA("ntkrnlpa.exe"),"NtAllocateVirtualMemory");

То есть подгрузить ядро к себе и вызвать прям оттуда, а не из ntdll.dll как обычно.
Типа такой финт, чтобы в ollydbg со всеми удобствами или даже в ида с графами отлаживать.




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

Создано: 15 января 2017 07:09
· Личное сообщение · #29

mazaxaker

Попробуйте, интересно что получится

-----
vx




Ранг: 82.5 (постоянный), 1thx
Активность: 0.130.04
Статус: Участник

Создано: 15 января 2017 16:52
· Личное сообщение · #30

difexacaw, чет попытка вызвать обламывается исключением. Адрес ее getprocaddress нормально выдает, а вызвать Nt* и Zw* оттуда в юзермоде не получается.


. 1 . 2 . >>
 eXeL@B —› Вопросы новичков —› Различие у ZwAllocateVirtualMemory на 7 и хп.
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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