Понял, спасибо. Опять же повторюсь, вы тут все очень отзывчивые)
Re[13]: Создание поведенческого блокиратора
От:
Аноним
Дата:
04.08.11 08:25
Оценка:
А>>Это мощный механизм, позволяющий безгеморно обслуживать множество клиентов. 1>Да. Но недокументированость ставит его использование под сомнение.
Это всё опенсурсное, врк официально открытый код.
1>Кстати, вы наверное правы по отношению к LPC в данной ситуации. Если человек делает под хр — то недокументированость становиться делом десятым. Вот в отношении скорости передачи, я с вами не согласен — через общею память (проэцируемые файлы) оно быстрей будет.
Готов поспорить на ящик пива что в W8 LPC не изменится.
А>Готов поспорить на ящик пива что в W8 LPC не изменится.
Да, подобные технологии типа LPC/APC, которые тесно интегрированы в ядро, вряд ли когда-нибудь будут переписаны.
Re[15]: Создание поведенческого блокиратора
От:
Аноним
Дата:
04.08.11 19:40
Оценка:
Здравствуйте, x64, Вы писали:
А>>Готов поспорить на ящик пива что в W8 LPC не изменится.
x64>Да, подобные технологии типа LPC/APC, которые тесно интегрированы в ядро, вряд ли когда-нибудь будут переписаны.
Тогда что значит "не документировано", если механизмы не изменяются, ядро опенсурсное официально(рку) ?
А>Тогда что значит "не документировано", если механизмы не изменяются, ядро опенсурсное официально(рку) ?
Слова "не документировано" значат ровно то, что они значат, ничего более. Нет гарантий, вот и всё, это очевидно. А исходники открыты только для Windows Server 2003 SP1, но даже если бы они были открыты и для всех последующих систем, один хрен — нет гарантий. Но если это кого-то устраивает, т.е. на будущие версии закладываться не требуется, — то разумеется, почему нет? Да, и "рку" это Rootkit Unhooker (RkU), а исходники Windows называются WRK, не путаем.
Re[17]: Создание поведенческого блокиратора
От:
Аноним
Дата:
05.08.11 07:06
Оценка:
Здравствуйте, x64, Вы писали:
А>>Тогда что значит "не документировано", если механизмы не изменяются, ядро опенсурсное официально(рку) ?
x64>Слова "не документировано" значат ровно то, что они значат, ничего более. Нет гарантий, вот и всё, это очевидно. А исходники открыты только для Windows Server 2003 SP1, но даже если бы они были открыты и для всех последующих систем, один хрен — нет гарантий. Но если это кого-то устраивает, т.е. на будущие версии закладываться не требуется, — то разумеется, почему нет? Да, и "рку" это Rootkit Unhooker (RkU), а исходники Windows называются WRK, не путаем.
Да вы правы. Это опечатка была(думал про одно, писал другое).
И снова здравствуйте! Я ленив и мечтателен, посему за это время толком ничего не сделал. Ладно, терь к делу. Я читал о драйверах режима ядра, васм читал, шрайбера читал, по боьшей части по верхам. Созрели вопросы...
1. Касательно варианта замены таблицы сервисов. Шрайбер описал способ перехвата API с подтасовкой SDT, которая круто всё делает. Но тут же пишет, что не работает эта тема для некоторых функций того же ntdll и ntoskrnl.
2. Касательно варианта с отловом IRP. К какому устройству я должен подключаться? Какую инфу я могу извлечь таким способом? Обращение на зап/чт/пер/уд?
3. Я так понял, это максимум того, что можно выжать? Я понимамаю, что далеко не познал дзен, почитав пару статеек и книжку 10летней давности...
4. Если п.3==труе, на чем все-таки остановиться?(в контексте повед анализатора). Мне кажется, 1ый вар привлекателен тем, что можно будет легко обучить его, скормив строчку на овер 600 бит.
Оч жду ответов. Спс.
Re: Создание поведенческого блокиратора
От:
Аноним
Дата:
02.10.11 21:39
Оценка:
Здравствуйте, qweas.
На мой взляд хуки не совсем то, что нужно. Я бы на вашем месте писал драйвер уровня ядра, который поставил бы jmp с начала каждой API функции (конечно же native API, поскольку обычные API — лишь оболочка для native). Драйверу уровня ядра невозможно помешать работать, у него абсолютная власть в системе.
И в дополнение, Ваш драйвер может следить, чтобы никакая другая программа не устанавливала jmp на начало системной функции. Если устанавливает — 95% гарантия, что это руткит.
Re[2]: Создание поведенческого блокиратора
От:
Аноним
Дата:
03.10.11 03:53
Оценка:
> Ваш драйвер может следить, чтобы никакая другая программа не устанавливала jmp на начало системной функции. Если устанавливает — 95% гарантия, что это руткит.
Как бы руткитом не может называться прога, которая разрушает целостность системных модулей. Руткит скрытно действует по определению, если патчит то это не руткит.
Здравствуйте, qweas, Вы писали:
Q>И снова здравствуйте! Я ленив и мечтателен, посему за это время толком ничего не сделал. Ладно, терь к делу. Я читал о драйверах режима ядра, васм читал, шрайбера читал, по боьшей части по верхам. Созрели вопросы... Q> 1. Касательно варианта замены таблицы сервисов. Шрайбер описал способ перехвата API с подтасовкой SDT, которая круто всё делает. Но тут же пишет, что не работает эта тема для некоторых функций того же ntdll и ntoskrnl.
Этот вариант работает для абсолютно всех функций вызываемых всеми программами, кроме драйверов. Не помню/нечитал этот фрагмент, но подразумеваеться, что заменой в этой таблице можно перехватывать ограничены перечень из нескольких сотен api функций, через которые все приложения общаются с ядром и дровами. Для поведенческого блокиратора способ самый простой (+ не задеваете работу kernel mode и имеете меньший геморой связанный с перехватом вызовов идущих от драйверов).
Q> 2. Касательно варианта с отловом IRP. К какому устройству я должен подключаться? Какую инфу я могу извлечь таким способом? Обращение на зап/чт/пер/уд?
)) В том тот и соль и сложность этого метода — разобраться к чему и как подключаться. Вариантов довольно много и в конечном счете все зависит от решаемых задач.
Q> 3. Я так понял, это максимум того, что можно выжать? Я понимамаю, что далеко не познал дзен, почитав пару статеек и книжку 10летней давности...
Для чего выжать? можно делать нелегальные перехваты через смену обработчика 2eh/sysenter, правку sdt, спайсинг функций, переопределение irp обработчиков, патчинг образа ядра/дров на диске...
Можно выжимать легальные возможности через драйверы фильтры всех калибров + стандартное api для антивирей и файверловов..
Можно полулегально взять исходники ядра из WRK, дописать все что нужно и просто "обновить" его на целевой машине...
И это навскидку — вспомнил пока писал.
Q> 4. Если п.3==труе, на чем все-таки остановиться?(в контексте повед анализатора). Мне кажется, 1ый вар привлекателен тем, что можно будет легко обучить его, скормив строчку на овер 600 бит.
1. Если целевая ос WinXP и переноса на более новые версии не планируется — пользуйтесь sdt. Для хрюшки чуть ли не документированый метод реализации проактивок — версии каспера тех времен к примеру именно так и работали.
2. Если пункт 1 и хорошо понимаете что да как — допишите свой код в исходники ядра из WRK и откомпилируйте))
3. Если есть планы когда нибудь перенести дальше хп — драйверы фильтры очевидный выбор. А уж на какое именно устройство — когда изучите достаточно для написания такого драйвера без сильных глюков поймете.
Q>В голове мешанина и + к этому не совсем понимаю токостей переключения контектов процессов, связи этого с IRQL и взаимных блокировок. Вроде во всех 3 источниках есть по немногу, но блин всеравно непонятно)
Рекомендую ознакомиться с работой защитного режима процессора для понимания тонкостей переключения контекстов (хорошая книга "Защищенный режим процессоров Intel 80286/80386/80486"). Там расписано более чем подробно.
О irql вам в принципе достаточно знать — что оно есть и если текущий уровень выше PASIV (или как он там) — то можно использовать ограниченный перечень апи и как можно скорей возвращать управление.
Взаимные блокировки — это взаимные блокировки, что в обычных программах, что в ядре разницы особо нет.
О каждом из этих трех аспектов можно лекции читать)) Поэтому сформулируйте более конкретные вопросы.
Q>Сейчас буду WDKшный FileSpy потрошить
В сети есть ещё исходники filemon — с неплохими комментариями.
И самое главное. Ваши вопросы и "по боьшей части по верхам" говорит о поверхностном ознакомлении с предметом. По отношению к низкоуровневому программированию такой подход неприменим. Лучше один раз внимательно прочесть имеющеюся литературу и разобраться с тем, что в ней написано, чем потом днями напролет пытаться отладит программный код низкого качества. Это сэкономит время.
Курил ассемблерную реализацию Шрайбера, решил еще поискать, нашел утилиту Strace http://wasm.ru/baixado.php?mode=tool&id=241. Принцип понял, не пойму как устанавливаются хуки в структурах syscall_map(поля fn и hook). Кто знает — хелп плз, нужно понять и <s>простить</s>...пожалуй еще раз понять)) Что за адовые нагромождения из MagicFoo??
И снова здравствуйте! На данном этапе у меня получилось успешно поменять адреса в SDT. Сам факт перехвата обнаруживаю пока DbgPrint'ом и сладострастным наблюдением сего в DebugView. Теперь мне эти данные нужно собирать, вот вопрос как это делать. DeviceIOControl'ом? Или сделать какой-нибудь Tracelist?