Обсуждение статьи Marylin "Заметки о программировании шелл-кодов"

Тема в разделе "WASM.BLOGS", создана пользователем Ahimov, 26 авг 2026 в 23:28.

  1. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Никакого отношения к реальному шеллу не имеет, автор не понимает что шелл - последовательность гаджетов, а не просто блок релоцируемого кода(отвязанный от базы).
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.439
    Вообще не обязательно, в первом же предложении автор дает вполне жизнеспособное определение, а разложен позиционно независимый код (или пейлоуд) в гаждеты, или нет, это уже дело десятое.
     
    Mikl___ нравится это.
  3. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Rel,

    Реального шелла сборка сложна, любой пример еще еще взять. Это передача управления нарушающая связность(cfg/cfi/dfg), баян" дикий. Релоцируемый блок кода не нарушает ничего(минимальный баланс call-ret), более того отвязка от базы это расширение IA как адресация rip, в манах подробности. На 86 применялась релокация смещений.
     
  4. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    Под определение шелла попадает не только баян по линкам (который если и будет работать, то только на тестмашине, и упадёт при первом-же портировании), но и всё остальное, что решает проблему. Реализация может быть какая угодно, т.к. жёсткие правила нигде не прописаны. Хочешь использовать ропгаджеты - никто не запрещает, только не нужно выдавать это за единственно возможный вариант, чтобы удовлетворить своё чсв. Я вовсе не утверждаю, что пример является супер-шеллом - это обычный примитив, который можно/нужно расширять. Главное, что он будет работать на всей линейке Win x64.
     
    Mikl___ нравится это.
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.439
    Зачем? Что за бред? Термин шеллкод буквально означал код, открывающий шелл (/bin/sh, например) на системе при эксплуатации уязвимости, какое нарушение связности?
     
    Последнее редактирование: 27 авг 2026 в 06:16
  6. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Rel,

    Затем, что перезаписываются указатели, при переполнении например, кода нет готового в памяти.

    Marylin,

    Баян это rip-адресация. lea r,[rip+disp]. Работает на всей линейке x64.
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.439
    Шеллкод существует только в контексте переполнения буффера?
     
  8. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Rel,

    А какой еще ?
    Всякая кодовая секция на 64 отвязана от базы, это никакой не шелл.
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.439
    Ну, во-первых, не любая, компиляторы Цэ/Плюсов то и дело любят пихнуть релок, с хода не знаю точно, для каких случаев это нужно, но вангую, что для таблиц виртуальных методов, или для jump-таблицы при оптимизации switch-ей, может, еще где-то. Во-вторых, шелл (помимо "отвязки" от базы) должен еще быть отвязан от загрузчика системы, то есть сам находить способ общения с системой, будь то поиск адресов API-функций на Венде через TEB/PEB, или вызов сисколов на Линуксах.

    Ты сам же в 2013 году на вирустеке находил уязвимость в Проводнике Венды, которая позволяла дернуть произвольный COM-объект по IUnknown-интерфейсу внутри Проводника, а следовательно и любой шелл, и которая совершенно не связанно с тобой оказалась в PowerLoader. Сколько буфферов в этой уязвимости переполнялось?
     
  10. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Так ведь сабж не про загрузчики; о чем там я до конца не понял. Вот это:
    Код (Text):
    1. shell:  push    rbp                    ;// выравним стек треда на 16-байт (общее правило для х64)
    2.         call    @f
    3.         db      'cmd.exe /k whoami /priv',0
    4. @@:     pop     rcx                    ;// RCX = адрес строки (первый аргумент WinExec)
    5.         push    5
    6.         pop     rdx                    ;// RDX = второй аргумент = SHOW_NORMAL
    7.         sub     rsp,20h
    8.         call    qword[WinExecAddr]
    - используется 64 rip-адресная кодировка к данным и при этом костыль 86 в виде call--data{}, вместо lea. Зачем ?
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.439
    Я в общем-то оппонирую мнению о том, что любой шелл - цепочка гаджетов, которая дергается переполнением буффера, безотносительно тому, что автор делает call-pop для получения адреса строки, возможно, это - просто привычный для него паттерн из x86. Да и как бы в отношении шелла так ли это важно? Костыль там будет или нет?
     
  12. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Rel,

    Так и я про это, нет в сабже никаких гаджетов. Там элементарный пример отвязанного от базы кода, релоцируемого короче. Для ознакомления с ассемблером, автор просто не понимает адресацию, поэтому и влепил call-load + rip-fetch

    IA, Instruction Set Reference:
    RIP-Relative Addressing :rtfm:


    Загрузка кода из данных для малых стабов собирается вручную, для большого кода - загрузка из памяти. Тогда лодер настраивает образ из дампа. Но к шеллкодам никоим образом это не относится. Когда буфер разворачивается по гаджетам это шелл.
     
  13. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    ну поставь туда lea, если она тебе так нравится - чё такой беспомощный-то?
    если сделаю это я, ты скажешь "почему не call/pop".
    в общем в треш этот топик, т.к. ничё путного из себя ты всё-равно не сможешь выдавить.
     
  14. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    827
    Marylin,

    Мне эта детская фигня не нужна. А посмотрел я потому, что ты назвал ее шеллкодом. Короче ссылки на codeby.net можно не читать, там сплошной треш.

    > удовлетворить своё чсв.
    > такой беспомощный-то?

    Откуда вы беретесь, д. малолетние :bad:
     
  15. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    377
    Ну конечно, ты же здесь один (убежавший в форточку из псих) наполеон. Все твои посты от имени пациента, которому даже интенсивное лечение уже не поможет. Не понимаю, как можно нести такой бред, а затем учить ещё кого-то жизни? Это-же реально записки сумашедшего. Хотя после ядерной зимы и мы наверное так мутируем, но ты нас всех намного опередил. Ещё чёто пукаешь там.. :stink: