Язык D и аверы

Тема в разделе "WASM.HEAP", создана пользователем M0rg0t, 12 сен 2021.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    https://www.cybertalk.org/2021/07/27/exotic-programming-languages-back-to-malware-101/
    Не то, чтобы примеров малвари на Дэ много, но, видимо, что-то да есть. Наверное, этого достаточно, чтобы тупая аверская автоматика или тупые аверские дятлы добавили в сигнатуры части Дэшного рантайма или чего-то такого.
     
  2. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Если простейший семпл собрать получается бинарь ~500k. Полный какого то ртл, дебаг инфы и тп. DIE не определяет линкер, может в этом причина детектов. Такой пустой модуль палит мс Trojan:Win32/Sabsik.FL.B!ml

    Странно почему win32 для 64 тоже..

    Код генерится отвратительно, пример для core.cpuid:

    D.png

    - использовать строковое сравнение констант, изврат :bad:

    Такой компилер не пригоден для написания малварки.
     

    Вложения:

    • D.7z
      Размер файла:
      287,5 КБ
      Просмотров:
      103
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Ну электрику, который ни разу блекухой не занимается, безусловно лучше знать, что подходит для написания малварки, чем писателям малварки)
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Допустим написан палевный семпл на этом яп, как его чистить ?

    Мало того сигнатура в 1/2Mb, но дальше что, криптовать ?

    Всё равно после депака в памяти будет та же сигна. Обфускатор писать под не популярный яп.. кому это нужно. Преимущества были бы у компилера если бы там были jit/vm, но этого ничего нет.
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Почему нет, это просто. Делаешь "dub fetch dmd" - получаешь весь код компилятора в виде библиотеки, оттуда берешь парсер, трансформируешь ast, выводишь обратно в код, получаешь до какой-то степени уникальный и запутанный семпл. Сигнатуры это позволит обойти, посавокуплять мозги дятлу, который будет его разбирать - тоже, но, конечно, размер экзешника будет еще больше. Но в режиме betterC должно быть поменьше.
     
  6. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    Тащить компилер, ребилдить что то.. это всё не уровень шифровальщиков, они примитивны как правило.

    Где добыть семпл хз. Тут есть ссылка на торрент:

    Может кто это выкачать ?
    --- Сообщение объединено, 23 сен 2021 ---
    Выкачал я торрент, там сам utorrent мод. Отладчиком вытянул модуль, там что то распаковывается, штатная файловая рутина, короче выкидывает скрытый модуль, это накрыто вмп.

    Вот тут в песочнице активность.

    Короче эту фигню нужно инструментами прогонять что бы понять что оно делает, дятловская возня получается. Изначально не детектится родитель и потомок как vovalex.

    pass vx
     

    Вложения:

    • sss.7z
      Размер файла:
      4,7 МБ
      Просмотров:
      98
  7. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    проблема небольших ехе , написанных на чистом Си/Асме в том, что их очень легко реверсить. Там чистый код - никакого мусора, берешь и читаешь в Ида, как листинг. Использование D и подобного позволило бы "размазать" полезный код между разным мусором. С плюсами видел такие примеры, где STL+ Boost, да я считаю это непрофессиональным, но реверсить такое - черт ногу сломит. Во всех этих std::vektor и подобном. Ровно как и Go.
    хотя говорят, последние Иды умеют как-то разбирать все это дело.
     
  8. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    M0rg0t,

    Вот выше я вытянул модуль без реверса, я даже не смотрел в код родителя. Это делается в динамике всё, в данном случае отслеживаются несколько сервисов(NtCreateFile etc). Что там в теле апп значения не имеет, это нужно только если какой то алгоритм понять, шифрование например. Первым делом семпл прогоняется автоматикой, анализ в динамике, нп тот же anyrun. А есчо код не размазывается по модулю, можно тупо собрать пустой шаблон и на основе его исключить мусор, либо даже собрать с дебаг опцией.

    Другое дело вирта, даже если модуль выше и собран на ди, он накрыт вмп и без девирта(у меня нп его нет) статик анализ невозможен. Толку писать было на ди, если он криптован да есчо виртой ?

    Есчо нужно добавить что компилер ди судя по опциям может создавать map файлы. Это значит что можно получить начала всех процедур. Имея эту инфу можно морфить как угодно, но опять же это не уровень шифровальщиков.
     
    Последнее редактирование: 24 сен 2021
    M0rg0t нравится это.
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.241
    Для этого нужно линкер пропатчить, обычно линкеры пихают код из одного модуля в одно место. Если ты в той же Иде откроешь какой-нибудь свой модуль, то увидишь, что твои функции сгруппированы в одном месте, функции стандартной библиотеки сгруппированы в другом. По этому положению можно их разделять при анализе. Но да, допустим можно все все функции пересобирать в один LLVM IR файл, потом функции перемешивать и после этого компилировать его и линковать, тогда стандартная библиотека и твой код действительно будут перемешаны.
     
    M0rg0t нравится это.