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

EXCEPTION_PRIV_INSTRUCTION after shellcode execution

Jeffs

(L1) cache
Забанен
Регистрация
28.12.2018
Сообщения
611
Реакции
358
Пожалуйста, обратите внимание, что пользователь заблокирован
Тестировал данный метод загрузки кода в процесс: https://github.com/odzhan/injection/blob/master/cmdline/cmd_inject.c
Так же для тестов написал простой шеллкод на Си (проект в аттаче). Шеллкод отрабатывает успешно, но как только шелл отработает - ловлю исключение EXCEPTION_PRIV_INSTRUCTION.
Сам шеллкод при тестах в текущем процессе отрабатывает успешно.
Даже если убрать весь код шелла, заменить на простую затычку:
Код:
__declspec(noinline) int ShellEntry()
{
    int arr[10];
    int i = 0;
    for (i = 0; i < 10; i++) arr[i] = i;
    return i;
}
Так же ловлю это же исключение. Буду благодарен, если кто-нибудь поможет разобраться.
В папке Release есть собранный шеллкод (shell.bin).
Пароль на архив:
Скрытый контент для зарегистрированных пользователей.
xss.pro
 

Вложения

  • env_inj.zip
    384.9 КБ · Просмотры: 9
Подключись отладчиком к блокноту и посмотри где получаешь исключение, как вариант проверить соответствие аргументов в шк, который у тебя выполняется через калбек ну и соглашение вызывов, возможно там не stdcall или что там должно быть.

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

При аттаче дебаггером (блокнот в это время уже запущен, шк так же запущен) попадаем сюда:
image.png

При нажатии "ОК" в месседжбоксе, вызванном шеллкодом - попадаем сюда:
image.png

Ну и собственно всё. Мне, с моим нулевым знание асм, абсолютно ничего не понятно. Собственно именно по этому решил создать тему на форуме, авось подскажет кто.
Я всё грешу на настройки проекта шеллкода:
/permissive- /ifcOutput "Release\" /GS- /GL /analyze- /W3 /Gy /Zc:wchar_t /Zi /Gm- /O1 /sdl /Fd"Release\vc142.pdb" /Zc:inline /fp:precise /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /Gd /Oy- /Oi /MT /FC /Fa"Release\" /nologo /Fo"Release\" /Os /Fp"Release\shellcode.pch" /diagnostics:column
/OUT:"C:\Users\wm_win10_20h2_x64\Desktop\env_inj\Release\shellcode.exe" /MANIFEST /LTCG:incremental /NXCOMPAT /PDB:"C:\Users\wm_win10_20h2_x64\Desktop\env_inj\Release\shellcode.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MACHINE:X86 /OPT:REF /SAFESEH /INCREMENTAL:NO /PGD:"C:\Users\wm_win10_20h2_x64\Desktop\env_inj\Release\shellcode.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Release\shellcode.exe.intermediate.manifest" /OPT:ICF /ERRORREPORT:PROMPT /NOLOGO /ASSEMBLYDEBUG:DISABLE /TLBID:1
Но тут, вроде как, всё норм.
 
Интересно, а если этот RtlExitUserThreat вызвать в шеллкоде, по окончании работы, что будет ?

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


область без флага запуска
section.png
 
Пожалуйста, обратите внимание, что пользователь заблокирован
кажется проблема в крипте шеллкода, после декрипта ret указывает в никуда. мб крипт ломает все
Вот тут более подробно описан "крипт" шеллкода:
https://modexp.wordpress.com/2020/06/26/shellcode-encoding-null-bytes-faster/ Просто кодируются нуллбайты.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А без крипта этого бесполезного вообще работает твой шк?
ну емае Апокс, не работает. Он кодирует нуллбайты, а при передаче аргумента комадной строки шк при запуске того же notepad.exe нуллбайты выпадают по дороге где-то и не срабатывает. По идее с любым шк после крипта должно работать.
И если нуллбайтов дохера, то получается некого рода обуфскация шк, не? Да.
 
Там проблема не в шеллкоде и не в обфускаторе, а скорей-всего в технике инжекта, что-то не учитывается там скорей-всего...)

Ну а что мешает засуспендить поток в шеллкоде, или вызвать его завершение, также в шеллкоде и забить ?)

Думаю Жеввс разрабатывает бизнес приложение в комерс, но будет этот поток в заснувшем состоянии и хрен-бы с ним, либо можно и забить на эту ошибку, так ради интереса только...)))

Ведь это-же бизнес приложение. :D
 


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