Статьи Комментарии к статье "Переполнение стека. Часть 1" by KEZ

Discussion in 'Статьи' started by trancer, 18 Dec 2005.

  1. trancer

    trancer New Member

    Joined:
    18 Dec 2005
    Messages:
    7
    Likes Received:
    2
    Reputations:
    4
    Заранее приношу извинения администрации сайта за выбранный метод комментирования, но
    а) я так и не понял как можно добавить комментарий к статье
    б) данный комментарий слишком длинный

    посему решил создать тему на форуме(надеюсь что раздел правильно выбрал...)

    >>MOV EAX, EBXM
    правильно: MOV EAX, EBX

    >>В интернете я встречал только одну статью, которую друг у друга украли тысячи сайтов.
    можно ссылку? или хотя бы кусок текста из статьи для гугля? Лично я встречал просто море статей про переполнение
    буфера, так что пребываю в состоянии весьма сильного удивления от вышеприведенной фразы...

    >>Win32 - cmd.exe, command.com, Linux - /bin/bash, /bin/sh и др.
    Имхо правильней WinNT - cmd.exe, Win9x - command.com, ибо обычно под Win32 понимают всю линейку Вин

    >>проблема пока отпадает, ведь адрес fl() – 0x00401090, а запишем мы 0x90104000
    Поскольку 0x00401090 и 0x90104000 Совершенно РАЗНЫЕ числа то лучше было бы не вводить никого
    в заблуждение и написать так: проблема пока отпадает, ведь адрес fl() – 0x00401090, а РЕАЛНО ЗАПИШЕТСЯ 90 10 40 00

    >>Открываем сервер отладчиком (я использую OllyDBG) и находим ее адрес.
    имхо тут одно из ... либо обьясняем на пальцах как находили адрес, либо отсылаем на какой-нибудь cracklab.ru за
    доками, либо обьясняем как трейсить прогу, и как обойти start-up код VC++ уповая на то что потом и сами разберуться,
    либо сервак пишем используя только WinApi, отключив библиотечный код и start-up код(впринципе второе входит
    в первое, но не суть важно) чтобы трейсить и находить нужные ф-ции было проще

    >>Эти последнии четыре будут содержать "перевернутый" адрес 00401090.
    >>Почему "перевернутый" - я говорил, что специфика стека такова, что данные должны
    >>записываться наоборот, т.к. они и извлекаются оттуда наоборот. Это просто логика.
    шЫдевр!!! автор браво!!! Это не специфика стека а специфика хранения двордов в памяти присущая IA-32 архитектуре
    процессоров(младший байт хранится по младшему адресу). Со стеком это НИКАК не связано.

    >>Я делаю так - в EIP пишу адрес команды (точнее набора байтов,
    >>т.к. реально эти байты не для выполнения) JMP ESP в какой-нибудь
    >>системной библиотеке. Например, найдем в ntdll.dll.
    А можно рецепт зелья которое помогает посредством мысли находить нужные байты в файле?
    Я это к тому что неплохо бы обьяснить как найти нужные байты... ну например хиевом,
    а то так и предвкушаю поток вопросов как же их все-таки находить...

    >>ESP указывает на 109-байты-нашей строки
    Гы-гы откуда в строке char buffer[100]; 109-й байт?
    правильнее так: ESP указывает на 109 байт от начала нашей строки в стеке

    >>Используется в нем архитектура SEH - завершения.
    >>Существуют ещё PROCESS и THREAD. Код в OllyDBG выглядит так:
    И после этого код для получения второй части шелкода, а где же код
    с "SEH - завершением" ;)

    >>0012FAD6 E8 B55B9671 CALL WS2_32.recv >>>>>>>> ВЫЗОВ <<<<<<<<
    это что, калл по hardcoded адресу ф-ции WS2_32.recv? Ну ну... во первых call address
    зависим от текущего EIP,а пара push address / ret - нет(это к тому что а вдруг в атакуемой системе стек расположится
    совсем по другому адресу - 3.14дец сплоиту! ... в недостатках метода - в стек еще нужно занести верный eip для
    возврата, но это не сложно(hint: google->virii vx delta offset)), во вторых в эксплоите придется таскать помимо
    адреса JMP ESP в ntdll.dll еще и адреса recv в WS2_32.

    для лучшей переносимости лучше call по этому адресу:
    004014C0 $-FF25 34634200 JMP DWORD PTR DS:[<&WSOCK32.#16>] ; WSOCK32.recv
    Т.к. в данном случае адрес для калла зависит не от версии ОС, а от версии проги.
    а нужный адрес система и сама подставит в таблицу импорта(точнее в IAT) при загрузке сервера.

    >>http://int3.net
    Прикол с бывшим в оригинале(см. архив) http://int13.net меня просто доконал %))))))))

    А вообще как долго писалась эта статья? Интересуюсь т.к. int3.net не поднимается по-моему уже не меньше полугода...
    Имхо Для начинающих лучше советовать те же cracklab.ru / xtin.km.ru.

    И еще, не следует путать RE с Cracking'ом которому и был посвящен проэкт int3.net в свои лучшие дни.

    ----
    В общем и целом же статья неплоха, расчитана на уже хоть немного, но подготовленного читателя,
    а также выгодно отличается от кучи статей с тестовыми самописными прогами хотябы наличием кода для bindshell'a

    P.S. надеюсь автор не обидится за столь придирчивое отношение к статье, как уже говорилось все это ИМХО
    P.P.S. к шеллкодам в архиве не приглядывался, смотрел только статью
    P.P.P.S. Надеюсь что все доступно обьяснил, что непонятно - спрашивайте
     
    2 people like this.
  2. ZaCo

    ZaCo Banned

    Joined:
    20 Jun 2005
    Messages:
    737
    Likes Received:
    336
    Reputations:
    215
    комменты и критика это всегда хорошо... но к сожалению в асме не силен))
    ---
    пиши свою статью
     
  3. trancer

    trancer New Member

    Joined:
    18 Dec 2005
    Messages:
    7
    Likes Received:
    2
    Reputations:
    4
    ZaCo
    >>пиши свою статью
    а) хронически нет времени
    б) все уже написано до нас, где-то хуже, где-то лучше, но уже написано... так что имхо, это бесперспективное
    занятие... Лучше писать сами эксплоиты... Ну или статью аля "как я нашел уязвимость в распространенной проге",
    и уже там описывать все подробно... Но для этого эту уязвимость нужно еще и найти ;)

    З.Ы. Как, все-таки, к статьям добавлять комментарии?
     
  4. Zadoxlik

    Zadoxlik рояль с сыром

    Joined:
    28 Feb 2005
    Messages:
    758
    Likes Received:
    216
    Reputations:
    257
    Пока никак
     
  5. Tikson

    Tikson Elder - Старейшина

    Joined:
    9 Oct 2005
    Messages:
    263
    Likes Received:
    42
    Reputations:
    14
    trancer
    дай ссылки на статьи по которым ты обучался........
     
  6. trancer

    trancer New Member

    Joined:
    18 Dec 2005
    Messages:
    7
    Likes Received:
    2
    Reputations:
    4
    Tikson
    >>дай ссылки на статьи по которым ты обучался........

    Хорошая постановка вопроса =)
    Ответ на него: х.з.
    А если составлять список, то времени не останется ни на что, кроме как ползанья по винту / гуглу
    в поисках прочитанный документов / книг / статей, что весьма не радует как перспектива :))))


    Если же вас просто интересует как выучить ассемблер, то я бы посоветовал Купить какую-нибудь
    книгу(Зубков / Юров / etc), а также пройтись по сайтам:
    kalashnikoff.ru - есть архив рассылки по асму
    wasm.ru - просто ЛУЧШИЙ ресурс по асму в рунете
    cracklab.ru - ну куда нам юзать дебугеры, если не в помощь себе, любимым :)

    Для начала, должно хватить.
    А после посещения вышеприведенных ресурсов читать, читать, читать... и еще раз читать :))


    Надеюсь ответил на заданный вопрос, если не так - переформулируй


    P.S. все-таки хотелось бы узнать мнение KEZ насчет комментариев(или он в раб. дни офлайн?).
     
  7. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    trancer, репсект тебе за все высказанные мысли и заме4ания - они имхо действительно дельные! В первой статье-конкурсе было много нето4ностей, надеемся 4то во второй уже не будет (или будет поменьше)

    >>все-таки хотелось бы узнать мнение KEZ насчет >>комментариев(или он в раб. дни офлайн?).
    походу невидно его давно уже =(

    ЗЫ: рад видеть на а4ате реверсера, их у нас немного
    ЗЫЫ: поделись линками на свеЖую музы4ку (я ведь не оШибся, ты тоже слуШаешь trance?)
     
  8. trancer

    trancer New Member

    Joined:
    18 Dec 2005
    Messages:
    7
    Likes Received:
    2
    Reputations:
    4
    >>ЗЫЫ: поделись линками на свеЖую музы4ку (я ведь не оШибся, ты тоже слуШаешь trance?)
    ГЫЫ... Идешь в ближайший магазин торгующий пиратскими дисками и берешь все что приглянулось :)
    Ну или заказываешь в онлайн шопе(сам составляешь плейлист)
    А потом слушаешь, слушаешь, слушаешь... дни напролет ;)

    А насчет транса - бывает психеделик или прогрессив слушаю, а вообще человек с широкими муз взглядами.
    Вот напр. в посл. время группа Пятница нравится(регга на современный лад)

    З.Ы. сейчас вот в миксе слушаю "CRW - I FEEL LOVE" ничего так, нравится.
    Правда не могу определиться что это прогр. транс? этакий ненавязчивый хаус? но вот нотки техно
    начала-середины 90-х прослеживаются эт. точно

    З.З.Ы. Ну и наофтопил я тут (c:
     
  9. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    хехе, в магазинах и на рынке всякое фуфло сродли мелодик-транс и остальной комерЦии ;)

    реального хард-транса и прогрессивы особо и в онлайн-шопах не ска4аешь (да и деньги не охота тратить), плюс ко всему и рин.ру закрылся походу - уж0с! обидно....приходится слушать онлайн-радио и записывать стрим оттуда =(

    ЗЫ: ссори за устроеный оффтоп - мы не хотели ;) если 4то - можно переименовать тему в "обсуждение трасн-музЫки" =)
     
  10. trancer

    trancer New Member

    Joined:
    18 Dec 2005
    Messages:
    7
    Likes Received:
    2
    Reputations:
    4
    Возвращаемся к нашим баранам... точнее к статьям по переполнению буфера...

    вот например хорошая статья:
    "Stack Overflows in Action" by buLLet/UINC, публиковалась в езине "RING0, ISSUE #1" взять можно на вебхаке
    В общем и целом все грамотно и легко читается(мне ;) ) немного неряшливо выглядят цепочки из
    buf[100]=0x3f;
    buf[101]=0x01;
    buf[102]=0xed;
    buf[103]=0xff;
    вместо простого
    buff[] = ".......\x3f\x01\xed\xff.......";
    расположенного вне какой-либо ф-ции

    да и размер кода эксплоита это увеличит(первоначальный вариант то есть), но это кому как приятней и удобней :)

    плюс если сплоит локальный то вместо забитых адресов апи можно их получать с помощью GetProcAddress,
    а потом - в шеллкод. То же самое можно и к "jmp esp" сделать(поиск в пределах промапенного kernel32.dll)

    ну и шеллкод хоть и самим автором писался(а это плюс) расчитан только на запуск локального cmd.exe
    (ну эт понятно - сделано только ради примера)