• XSS.stack #1 – первый литературный журнал от юзеров форума

Сисколлы.

Haunt

PWSH
Эксперт
Регистрация
07.11.2019
Сообщения
948
Решения
1
Реакции
1 266
Вопрос такой назрел, собственно, почему используют сисколлы для обхода юм хуков, если можно выполнить анхук всей dll.
Например ntdll.dll
1) маппим копию с диска ntdll в память
2) находим VA .text секции похученной dll
3) находим VA .text секции смапленной чистой копии
4) получаем mem protect .text секции похученной dll
5) копируем «чистую» .text секцию по VA похученной, тем самым пропатчивая аверские хуки до состояния оригинала. Т.е анхук.
6) восстанавливаем mem protect свежесмапленной секции, чтобы было как у похученной.
7)???profit

В чем преимущества сисколлов? Или я чего то не знаю? Если объективно проще и универсальнее этот способ.


UPD. При таком подходе
1) функции для анхука можно сисколлить, а уже после анхука использовать остальные апи в привычной манере.
2) если условная ntdll юзает импорты, то их патчить тоже.
 
Последнее редактирование:
Ну ты хуки можеш и не увидеть просто. Ничто не мешает драйверу АВ мониторить доступ к памяти и "подбросить" кусок не патченого кода в нужный момент.
 
Ничто не мешает драйверу АВ мониторить доступ к памяти и "подбросить" кусок не патченого кода в нужный момент.
1) функции для анхука можно сисколлить, а уже после анхука использовать остальные апи в привычной манере.
 
Не, ты не понял видимо.
Простой вопрос, как ты хук определяеш?
По сути, если все упростить, то сравнением байтов той ntdll что уже подгружена и той, что лежит на диске. Очевидно, что байты будут отличаться, за счёт того что в похученных функциях изменено тело функции на прыжок по адресу авера.
———
Ты имеешь ввиду что любая попытка чтения вроде бы чистого ntdll с диска вернёт уже похученный вариант, ещё на этапе простого чтения, из-за аверского драйвера?
 
Последнее редактирование:
Немного наоборот, при чтении хукнутой функ из памяти, получиш не хукнутый варик.
Понял. Вопрос такой, это предположения или проверенная инфа?
UPD. А если все равно перезаписать чистой копией? Даже если признаков хука нет? Подумал кстати и нашёл вторую причину так не делать. В теории авер может выпалить такой анхук и тупо пропатчить обратно, но это в теории, а как на практике? Делает ли так? Не проверял?
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Может проще просто чекать пролог функций, т.е. дизасмить его и определять наличие перехода.

Так в целом то идея интересная, но юзермоде хуки это такое, сисколы ничего не решают против кернел хуков.

Или взять какой-то аваст / авг, подгружающий в процесс дллку, которую фиг удалишь.
 
.
Все это "продукто зависимо"
Интересует вообще ваши мнения касательно создания малвари чисто на сисколлах. Насколько вообще оно того стоит или это уже просто проеб времени за счёт того, что кернел хуки везде где только можно?
 
Интересует вообще ваши мнения касательно создания малвари чисто на сисколлах. Насколько вообще оно того стоит или это уже просто проеб времени за счёт того, что кернел хуки везде где только можно?
В контексте всего топика я честно говоря не понимаю вообще смысла попытки сбросить хуки с ntdll.
Никто не мешает из своего бинаря сделать syscall ))) без ntdll
 
В контексте всего топика я честно говоря не понимаю вообще смысла попытки сбросить хуки с ntdll.
Никто не мешает из своего бинаря сделать syscall ))) без ntdll
Чтобы анхукнуть юм хуки и делать тоже самое, но без ебли с сисколлами)
Но вопрос последний мой не об этом.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
. Насколько вообще оно того стоит или это уже просто проеб времени за счёт того, что кернел хуки везде где только можно?
Имхо, не стоит:
- это сложно (одно дело, какие-то CreateFile перевести, другое - более сложные апи, которые в native требует неск. апи для 1 обычного винапи).
- аверы давным давно умеют такое ловить, это упоминалось в аверской книжке еще за 2005 год (что через сискол можно обойти юм хук).
 
Хуки можно определять по таймингам чтения. Подсунуть чистый код, типа хука небыло это очень не быстро.
 
1. Нет надежного способа восстановить всю секцию кода целиком после инициализации процесса. (Много нюансов, учитывая которые, легче полностью перейти на сисколы)
2. Защита сверяет хэши своих патчей периодически/во время срабатывания ловушки/события или вовсе блокирует доступ к защищаемой памяти.
3. Извращаться так смысла нет, стоит остановиться на пункте 1) маппим копию с диска ntdll в память. Остается скопировать содержимое секции в исполняемую память и вычислить оффсеты функций.
4. Факт использования сисколов может быть обнаружен даже в режиме пользователя.
5. У современных IDS/IPS есть доступ к апи, который логирует подозрительные апи на уровне ядра. Гуглить ETW threat-intel, kernel-audit, и др эвенты, также см. Sysmon.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну ты хуки можеш и не увидеть просто. Ничто не мешает драйверу АВ мониторить доступ к памяти и "подбросить" кусок не патченого кода в нужный момент.

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


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх