Сейчас на форуме: tyns777 (+5 невидимых) |
eXeL@B —› Программирование —› Нулевой байт-ASM |
Посл.ответ | Сообщение |
|
Создано: 18 марта 2010 23:32 · Поправил: TheNozza · Личное сообщение · #1 Уважаемые специалисты асма, подскажите пожалуйста по следующему вопросу. Самому сообразить не удалось. Тут нужен опыт и закалка. Которые,надеюсь преобрету с годами. Вообщем к делу! Исследуется уязвимость переполнения буфера,расположенного в стековом кадре. Hight addr EIP EBP С Т Е К О В Ы Й К А Д Р ......аргументы функции2 EIP EBP .................. Low addr ...................................\buf before overflow \---------------------->-\ buf after overflow \ Функция2 так красиво копирует локальную переменную стекового кадра функции1(В реале конечно всё намного сложнее,так устроен мир,но схемка отражает суть вопроса) . Кому интересно скажу намёком функция1 является правнучкой печальной и на весь мир известной функции NetpwPathCanonicalize.( Всё молчу,кому надо те поняли о чём идёт речь.) Сам вопрос: 1)DEP влючен(код шеллкода на данном этапе в стеке не исполняется). Я осуществляю переполнение буфера по данной схеме перезаписывая адрес возврата функции2,и указатель базы стекового кадра функции2(база переписывается по любому-она в середине строки). База должна быть равна 0006FAE4 +- 10-14h байт. Это необходимо для последующего отключения DEPa(разрешения выполнения кода в стеке). Символы E4,FA,06 строкой передаю без проблем. А нулевой байт- засада! В середине строки его ясно передавать нельзя. Условия 1) DEP включен пока. (Можно только вызывать функции (с любого адреса из дллок)). 2) Мне достаточно даже чтобы просто EBP стал равным ESP и всё ок. Какие-то инструкции нужны из дллок выполнить типа 1 mov EBP,ESP;retn; (но тут засада перед retn в функции будет торчать драное pop EBP -которое всю малину...)) 2 Просто хотя бы MOV EBP,ESP;...CALL DWORD PTR SS:[EBP+-несколько десятков байт];(Туда адрес я шелкодом положу. все адреса нормальные без нулевых байтов - только стек такой); (Такой последовательности инструкций не нашёл) Какие варианты? И последнее если кто-то знает хотя бы примерный адрес расположения инструкции (JMP ESP или CALL ESP в дллках SP2 или хотя бы название библиотеки напишите расцелую). Жду ответа от добрых людей! Есть же программеры с опытом, со специализацией - агрессивное программирование:переполнение буфера,использование уязвимостей стек,куча,захват нити(Thread'а), отточка шеллкодов,написание эксплойтов. (По моему мнению - существенная разница между написанием программы и шеллкода, шеллкод скорее не пишется, а точится [синоним - подгоняется к своему идеалу методом бесконечных проб и ошибок,доводится до совершенства!]Отточенный шеллкод-это красота, совершенство,которое не встретишь реальном мире,предмет гордости,сокровище,заключённое в объёме каких-то нескольких сотен байт.Как раз тот случай когда поражает не объём, а глубина.) Подскажите молодёжи! |
|
Создано: 19 марта 2010 09:18 · Поправил: Rockphorr · Личное сообщение · #2 |
|
Создано: 19 марта 2010 13:14 · Личное сообщение · #3 |
|
Создано: 19 марта 2010 14:46 · Личное сообщение · #4 по поводу нулевых байт в шеллкоде: создаёшь битовую карту (bit map) нулей в шеллкоде, добавляешь (можешь применять и другую операцию) к ним (нулям) определённое значение, а в шеллкоде всё возвращаешь, в общем есть варианты а jmp esp в системных либах найти... скорее уж как часть другой инструкции или данных (что неприемлемо) ----- EnJoy! |
|
Создано: 19 марта 2010 16:57 · Личное сообщение · #5 |
|
Создано: 19 марта 2010 17:56 · Поправил: TheNozza · Личное сообщение · #6 Ждём профессионалов асма! www.insidepro.com/kk/063/063r.shtml - Красивая статья по обходу DEP'а. Цитата: "Главное, чтобы shell-код получил управление, и он его получит!Оторвать мыщъх'у хвост, если это не так!" LPVOID VirtualAlloc ( LPVOID lpAddress, SIZE_T dwSize, WORD flAllocationType, DWORD flProtect ); lpAddress Указатель на передаваемый регион памяти dwSize Размер передаваемого региона flAllocationType Тип запроса, MEM_COMMIT (1000h) - передача памяти flProtect Атрибуты защиты, PAGE_EXECUTE_READWRITE (40h) - rwx Что же великий и всемогущий Мыщъх недоговаривает или преднамеренно скрывает как положить шеллкодом напрмер четвёртый параметр функции VirtualAlloc flProtect (40h значение) в переполненный буфер при вкл. DEPe! (00000040h) Та же тема получится, только байтов нулевых поболее будет. Я просто другую функцию юзаю, тема та же - размещение шеллкодом в буфере нулевых байтов(байта) при включенном DEPe Не ради критики, а ради божественного света знаний! |
|
Создано: 19 марта 2010 19:48 · Поправил: _ruzmaz_ · Личное сообщение · #7 TheNozza пишет: Что же великий и всемогущий Мыщъх недоговаривает или преднамеренно скрывает как положить шеллкодом напрмер четвёртый параметр функции VirtualAlloc flProtect (40h значение) в переполненный буфер при вкл. DEPe! (00000040h) Та же тема получится, только байтов нулевых поболее будет. судя по // проверил чуть позже, не так))) -> GetLastError = 87 так или иначе, там можно толкнуть как 6A 40 не совсем та же тема) Jupiter пишет: ... (что неприемлемо) почему)? TheNozza пишет: И последнее если кто-то знает хотя бы примерный адрес расположения инструкции (JMP ESP или CALL ESP в дллках SP2 или хотя бы название библиотеки напишите ... ) ну в кернел32 в сп2 и сп3 в MoveFileWithProgressW есть джамп на cmp edi, 0C00000D4h которая содержит в себе FF D4 (call esp) |
|
Создано: 19 марта 2010 20:22 · Поправил: Модератор · Личное сообщение · #8 Вопрос по теме нулевых байтов!И поиска достойного варианта решения проблемы! Не надо писать сколько битов учитывается,а сколько нет. Суть в другом. Зрите в корень мужики! От модератора: сначала сам достойно задавай вопросы! Если считаешь, что тут все лохи, а ты один умный, так что ты здесь забыл? Бан на 3 дня. |
|
Создано: 19 марта 2010 20:35 · Личное сообщение · #9 |
|
Создано: 19 марта 2010 21:33 · Личное сообщение · #10 |
|
Создано: 19 марта 2010 21:36 · Личное сообщение · #11 |
eXeL@B —› Программирование —› Нулевой байт-ASM |
Эта тема закрыта. Ответы больше не принимаются. |