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

Статья Исследуем и обходим перехваты/хуки функций на уровне пользователя

Пожалуйста, обратите внимание, что пользователь заблокирован
Либо деф проактивно(тут не важно, юзеромод или с под ядра)/сигнатурно в памяти мимик не хавает, что имхо бред
Ну мы в соседней теме обнаружили, что касперский не хавает алгоритм инжекта 15ти летней давности, так что все может быть.

То есть рубит мб по набору правил. Или по балльной системе(обойти можно с другой стороны)
Ну это зависит от конечной реализации, которую так просто, как с перехватами не проанализировать. Вполне возможно, что палится например целая цепочка последовательных апи вызовов, если хоть один из цепочки отсутствует, то палева нет.
 
Ну мы в соседней теме обнаружили, что касперский не хавает алгоритм инжекта 15ти летней давности, так что все может быть.


Ну это зависит от конечной реализации, которую так просто, как с перехватами не проанализировать. Вполне возможно, что палится например целая цепочка последовательных апи вызовов, если хоть один из цепочки отсутствует, то палева нет.
Скрытый контент для пользователей: Octavian.
 
Скрытое содержимое
Видимо много фолзов было и стало быть так часто делает белый софт, так что не хватает признаков малварности для триггера.
Забавен тот факт, что по большой сути инжект в проводник не даёт особо ничего:
1. По-умолчанию у него залочен доступ в инет штатным фаерволом винды, так что скачать пайлоад и запустить увы не выйдет.
2. Проводник, как правило, работает с правами Medium, а это отметает возможность к double stage inject в более высокие процессы.
Видимо норм только для локеров, хотя и тут под вопросом..
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Забавен тот факт, что по большой сути инжект в проводник не даёт особо ничего
В нем можно функционировать на протяжении всего сеанса работы пользователя и из него инжектить в процессы, которые живут не так долго, типа браузеров (доступ в интернет, стилинг паролей/кук) и тд. Канеш для всякой популярной сейчас малвари типа локеров и стилеров это не особо то и нужно, но для всяческих ратников это вполне себе нормальный вариант.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
но для всяческих ратников это вполне себе нормальный вариант.
Смотря по функционалу, как Haunt говорил, можно и на COM ишака выходить в сеть. И не надо будет инжектиться.
Писал когда-то давно ратник по функционалу выкачать файл/запустить процесс/удалить файл и т.д. (простой функционал). Инжектился в ишак (тогда о COM не был в курсах). Все работало из low. И кста, зачем в explorer инжектится? Прост с таким один раз столкнулся, когда нужно было копировать самого себя (не помню, но в какую-то директорию невозможно было скопировать себя, но инжект помог)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
AttachProcess

Функция DetachDebugger
Интересно, почему эти функции работают под настоящим дебагером? Вроде как же не должно, если процесс уже отлаживается второй раз к нему подключится с отладкой (обычные дебаг апи). А тут ошибок нет, СОМ отрабатывает.
 
Некоторые загружали второй образ ntdll.dll в память процесса с помощью собственного загрузчика.
А например это https://www.ired.team/offensive-security/defense-evasion/how-to-unhook-a-dll-using-c++
Анхук всей dll. Мне тут некоторые говорили(давно спрашивал тут), что в теории не сработает. Потому что авер вернёт уже похукананный вариант ntdll при чтении с диска(вроде в этом причина, точно не вспомню щас). А сам что думаешь?
 
А например это https://www.ired.team/offensive-security/defense-evasion/how-to-unhook-a-dll-using-c++
Анхук всей dll. Мне тут некоторые говорили(давно спрашивал тут), что в теории не сработает. Потому что авер вернёт уже похукананный вариант ntdll при чтении с диска(вроде в этом причина, точно не вспомню щас). А сам что думаешь?
В соседней теме я проверял это на авасте, не работает...

Более того пробовал через самописный загрузчик грузить длл, также непомогло, аваст всё-равно хукает апи.:(

Работают сисколы, инжект и то-что написано в этой теме.)))
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А например это https://www.ired.team/offensive-security/defense-evasion/how-to-unhook-a-dll-using-c++
Анхук всей dll. Мне тут некоторые говорили(давно спрашивал тут), что в теории не сработает. Потому что авер вернёт уже похукананный вариант ntdll при чтении с диска(вроде в этом причина, точно не вспомню щас). А сам что думаешь?
Ну загружать и переписывать всю секцию .text более палевно и не факт, что сработает. Во-первых нужно останавливать все другие потоки в процессе на время работы memcpy (та же проблема, что и со сплайсингом, поток может исполнять те инструкции, которые мы переписываем). Во-вторых, зависит от того, как аверский хукер работает (он может периодически проверять наличие хуков и восстанавливать их, если они пропали, и более того он может в этом случае сразу считать текущий процесс вредоносным, тк легитимные процессы вряд ли будут снимать себе хуки). В-третьих, опять же это не будут работать в wow64, тк для каждой функции, делающий системный вызов, надо будет фиксить ссылку на KiFastSystemCall. Честно говоря, я не вижу у этого метода преимуществ в сравнении с описанными мной в статье методами.

А как авер может хукнуть ручной мэппинг проекции нтдлл?
Ну теоретически, если ты это делаешь через создание файловой секции, а не образно VirtualAlloc'ом выделяешь память, то с ней вроде ассоциируется имя маппированного файла, и это наверное можно спалить и прохукать.
 
для чего анхукать, читаешь -> получаешь сискол_намберы, дальше работаешь уже с сискол стабом под специфик версию
тестил на х64 системе под 10 аверами (аваст включно, все зашибись) и на х32 под 2мя (без аваста, все зашибись)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А как авер может хукнуть ручной мэппинг проекции нтдлл?
все равно будет NtCreateFile, вот там и похучит.

для чего анхукать, читаешь -> получаешь сискол_намберы
Чтоб прочитать сискол намберы нужно прочитать нтдлл, которая уже похучена авером.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
все равно будет NtCreateFile, вот там и похучит.
Ну анализатор на динчеке был признан малварью только авером Комодо, а там по сути из палевных действий только чтение ntdll.dll. Чтобы на лету вернуть похученные функции, нужно хукать NtReadFile и на лету подменять данные (то есть парсить и понимать, что грузится PE файл, перечислять экспорты и устанавливать хуки, если файл грузится по частям, то надо как то хранить состояние загрузки и тд), вряд ли кому то надо будет так заморачиваться, когда можно просто залочить NtCreateFile для системных библиотек, но тут могут возникать разные сайд эффекты, которые могут вывести ищ строя и вполне легитимные механизмы.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Спасибо огромное за статью, вы однозначно победили в моем сердечке
 
Последнее редактирование модератором:
Пожалуйста, обратите внимание, что пользователь заблокирован
Если уж заморочиться паранойей , то можно захардкодить NtCreateFile (он мало менялся), и считать NTDLL с диска уж точно в обход юзермодных хуков. Пробовал такое делать , на уровне РоС. Вопрос, поможет ли оно? Я чето скептически отношусь к сисколам, для юзермода да, круто, но есть же ядро.

Haunt от аваста помогает SetProcessMitigation,с опцией включить только дллки от майкрософт, тогда их гуан отваливается. Где-то тут даже был перевод от Яши, хотя там 2 строчки кода.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вопрос, поможет ли оно? Я чето скептически отношусь к сисколам, для юзермода да, круто, но есть же ядро.
Есть не только ядро, есть и гипервизор, но многие аверы таки продолжают ставить хуки в юзер моде, и не только аверы, но и сендбоксы, типа той же кукушки.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
но многие аверы таки продолжают ставить хуки в юзер моде
потому что аверы маглы, которые не могут норм накодить в ринг0 или им выгодно?

Сори за офтоп, но зачем все что выше описано, если сделать на гейте выдачу сисколов по OC разраядности и версии билда винды?
http.s://j00ru.vexillium.org/syscalls/nt/64/
http.s://j00ru.vexillium.org/syscalls/nt/32/

Не думаю, что на каждую функцию будете херачить по сисколам, имхо самые важные надо.
Если уж заморочиться паранойей , то можно захардкодить NtCreateFile (он мало менялся), и считать NTDLL с диска уж точно в обход юзермодных хуков. Пробовал такое делать , на уровне РоС. Вопрос, поможет ли оно? Я чето скептически отношусь к сисколам, для юзермода да, круто, но есть же ядро.
По сути должно помочь, как бы ты ринг3 нагибаешь, а в ядре аверы чет не умные.
Я чето скептически отношусь к сисколам, для юзермода да, круто, но есть же ядро.
А какие еще предложения есть? Я вижу из менее проблемных путей для обхода авера - чистка сорцов на сигнатуру, чтоб в памяти не детектили и сисколы.
Ну для меня это более проще, нежели писать свою ВМку.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
потому что аверы маглы, которые не могут норм накодить в ринг0 или им выгодно?
Ну в ядре есть патч гард и всякие системные защиты, наверное отключать или обходить их такое себе.

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

Ну для меня это более проще, нежели писать свою ВМку.
ВМ никак не спасает от детектов по поведению.
 


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