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

Вызов сисколов из-под 32 битного приложения на 64 битной ос

IPirateS6

(L3) cache
Пользователь
Регистрация
02.06.2020
Сообщения
211
Реакции
107
Здравствуйте. Пишу инжектор и возникла необходимость в сисколах. Нужно вызвать хотя бы NtCreateThreadEx сисколами, но проблема в том, что все существующие решения на данный момент работают только на х64 приложениях. Вопрос: можно ли вызвать на 64 битной ос сискол из-под 32 битного приложения? И если можно, то как? Я пытался делать следующим образом:
Код:
syscall_procedure proc
mov eax, код_сискола
mov edx, esp
sysenter
ret
syscall_procedure endp

И вызываю сискол по определению функции:
C++:
extern "C" NTSTATUS syscall_procedure(TYPE param1..);
NTSTATUS(*syscall_nt_procedure)(
    TYPE param1..
    );
   
syscall_nt_procedure = &syscall_procedure;
Но такой способ не работает. Также пробовал райскую калитку, но инжект с х64 NtCreateThreadEx не воркает.
Заранее благодарю за ваши ответы.
 
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
Либо пили heavens gate
либо используй шлюз fs:[0C0h]

Но фиг знает, как оно там будет с потоками.
 
Либо пили heavens gate
либо используй шлюз fs:[0C0h]

Но фиг знает, как оно там будет с потоками.
Так я же написал, что 64битный CreateThreadEx не работает для инжекта в 32битный процес. Или ты имеешь в виду переписывать чтобы инжектило в 64 битный? Если так, то как тогда быть с инжектом на 32 битной машине?
 
Так я же написал, что 64битный CreateThreadEx не работает для инжекта в 32битный процес. Или ты имеешь в виду переписывать чтобы инжектило в 64 битный? Если так, то как тогда быть с инжектом на 32 битной машине?
Это если что о вопросе по heaven's gate.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Что значит "не работает"? Как именно не работает? Что (какой битности) инжектится куда (какая битность), какие ошибки?

Если так, то как тогда быть с инжектом на 32 битной машине?
Я не знаю твоей задачи, но я бы делал 2 нативных шеллкода, один для 32 бит, второй для 64.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Насколько я помню у них были 32битные сисколы.
на 64 битной ОС нет 32 битных сисколов.
 
Вот читал статьи о сисколах в TrickBot и Floki. Насколько я помню у них были 32битные сисколы. Никто не рыл в этом направлении?
Если кому интересно, то вот ссылки:
 
Интересно. Что тогда делают NT функции в 32 битном приложении на 64 битной ОС (они работают)?
Какие сисколы используют NT функции в 32 битном приложении на 64 битной ОС, если конкретнее
 
Что значит "не работает"? Как именно не работает? Что (какой битности) инжектится куда (какая битность), какие ошибки?


Я не знаю твоей задачи, но я бы делал 2 нативных шеллкода, один для 32 бит, второй для 64.
Ну, кстати, за идею с шелкодами спасибо, сейчас буду копать в эту сторону.

Если у кого-то есть ещё какие-либо идеи, буду благодарен почитать их.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Что тогда делают NT функции в 32 битном приложении на 64 битной ОС (они работают)?
Они по сути делают heaven's gate через Wow64SystemServiceCall, если мне память не изменяет.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
NT функции в 32 битном приложении на 64 битной ОС (они работают)?
Они по сути делают heaven's gate через Wow64SystemServiceCall, если мне память не изменяет.
Именно так. Писал выше про шлюз fs:[0C0h]

Подробнее где-то у Руссиновича мб надо читать.
 

Вложения

  • 1.PNG
    1.PNG
    25.2 КБ · Просмотры: 31
Пожалуйста, обратите внимание, что пользователь заблокирован
Из документации Intel:
The SYSCALL/SYSRET instructions are similar to SYSENTER/SYSEXIT but are designed to operate within the
context of a 64-bit flat code segment. They are available only in 64-bit mode and only when the SCE bit of the
IA32_EFER MSR is set. SYSCALL/SYSRET invocations can occur from either 32-bit compatibility mode application
code or from 64-bit application code
.

Т.е., как уже указали справедливо выше, используется переход через Wow64 и свитч через jmp 0x33.

Был проект еще https://github.com/rwfpl/rewolf-wow64ext. Может быть это то, что тебе нужно.

There is also possibility to call any x64 function from 64-bits version of NTDLL through a special function called X64Call()

Интересно. Что тогда делают NT функции в 32 битном приложении на 64 битной ОС (они работают)?

Такую еще нашел картинку.

jumping-into-heavens-gate-12-1024.jpg


Источник: https://www.slideshare.net/YardenShafir/jumping-into-heavens-gate
 


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