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

Статья Криптор исполняемых файлов. РЭволюция =).

Очевидно нужно снять эвристические признаки, самое базовое это правильная таблица импорта, ресурсы, соотношение физ и вирт размеров секций и энтропию нормализовать.
 
Очевидно нужно снять эвристические признаки, самое базовое это правильная таблица импорта, ресурсы, соотношение физ и вирт размеров секций и энтропию нормализовать.
там чето data секция барахлит
 
а что значит правильная таблица?
Очевидно нужно снять эвристические признаки, самое базовое это правильная таблица импорта, ресурсы, соотношение физ и вирт размеров секций и энтропию нормализовать.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
правильная таблица?
Не знаю, что вкладывает в это понятие Октавиан, но в моем понимании это связки апи. Т.е. CreateFile+Writefile+CloseHandle, или там GdiPStartup + другие апи графики, и так далее. Логическая связь, а не тупой рендом.
 
Написал плагин для иды который с функции, которая открыта в лог выводит перечень WinApi.
Выглядит это дело так:

1671309832328.png



Python:
import idautils
from idc import *
import idaapi
from idautils import *


class ExtractHandler(idaapi.action_handler_t):

    def __init__(self):
        idaapi.action_handler_t.__init__(self)

    def activate(self, ctx):
        print('-------------------------------<<< WinApi Extractor >>>-------------------------------')
        ea = idaapi.get_screen_ea()

        start = idc.get_func_attr(ea, FUNCATTR_START)
        end_d = idc.get_func_attr(ea, FUNCATTR_END)

        end = end_d - 1

        for function_item in idautils.Functions():
            function_flags = idc.get_func_attr(function_item, FUNCATTR_FLAGS)
            if function_flags & FUNC_LIB or function_flags & FUNC_THUNK:
                continue

            myaddr = list(idautils.FuncItems(function_item))
            for addr in myaddr:

                if start <= addr <= end:
                    if 'call    ds:' in idc.generate_disasm_line(addr, 0):
                        print(idc.generate_disasm_line(addr, 0).lstrip('call    ds:'))

        return True

    def update(self, ctx):
        return idaapi.AST_ENABLE_ALWAYS


class ExtractWinApiPlugin(idaapi.plugin_t):
    exctract_action_name = "ExtractWinApi:extract"

    explain_menu_path = "Edit/ExtractWinApi/Extract"

    explain_action = idaapi.action_desc_t(exctract_action_name,
                                          'Extract WinApi functions',
                                          ExtractHandler(),
                                          "Ctrl+Alt+E",
                                          '',
                                          199)

    idaapi.register_action(explain_action)

    idaapi.attach_action_to_menu(explain_menu_path, exctract_action_name, idaapi.SETMENU_APP)


def PLUGIN_ENTRY():
    ExtractWinApiPlugin()
 
Очевидно нужно снять эвристические признаки, самое базовое это правильная таблица импорта, ресурсы, соотношение физ и вирт размеров секций и энтропию нормализовать.
За тему и статью спасибо, очень понравилась. Про мою статью могу сказать что она не является 100% отлажена и там всего лишь примеры направления куда есть смысл двигаться, я в той статье находил баги, но обновлять лень. Кстати те методы до сих пор актуальны и работают если поправить баги и часть кода чтобы не палилось.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вообще все надо делать на чистом нативе т.е. искать через PEB базу ntdll и просто распаковвывать все в памяти, причем пейлоад размазывать по секциям .text, .data,
юзать TLS колбэки и не в коем случае не юзать "хвост", т.е. оверлей
//Avast & AVG - слияние секций палят
//Bitdef и Ko не любят Debug директорию
 
Последнее редактирование:
это ирония братюнь
Ну мало ли, просто кто-то уже тоже писал и удивлялся что работает, но чему удивляться непонятно, достаточно полноценный загрузчик, правда обработка TLS кривая и не поддерживает статичные локальные переменные потока, а так криптор нормально сделан
 
Ну мало ли, просто кто-то уже тоже писал и удивлялся что работает, но чему удивляться непонятно, достаточно полноценный загрузчик, правда обработка TLS кривая и не поддерживает статичные локальные переменные потока, а так криптор нормально сделан
ты допилил?
 
ты допилил?
Нет не допиливал конкретно эти сорцы, у меня своя реализация и LoadPE, другая, кода кстати раза в 3 меньше, а полнота охвата поддерживаемых файлов шире, просто есть некоторые хитрости которые позволяют не обрабатывать некоторые вещи, просто нужно создать некоторые условия для этого, и все работает должным образом, но это баловство, а второй вариант интересен поболее - загрузка через абуз системного загрузчика, самый полный из всех возможных загрузчиков существующих в мире без всяких преувеличений, потому что использует все силы оригинального виндового загрузчика PE файлов (андок функции и структурки, ресеч был интересным, всем советую, занимательно и залипательно на несколько дней, но того стоит), грузит абсолютно любые файлы которые в принципе может загрузить винда в штатном режиме при двойном клике по файлу, такого нет ни в одном крипторе на данный момент, похожую идею вкидывал клерк в свое время, но у него не было даже PoC, просто теоретические выкладки и рассуждения, а у меня полноценный рабочий PoC, который можно заморфить и использовать в крипторах. Возможно даже продаем его потом, когда отлажу досканально, технология по истине уникальная, повторюсь, такого нет ни в одном крипт сервисе в данный момент и не будет в ближайшее время, в приватах возможно кто-то уже додумался, но огласке это все-равно не скоро придет даже если так, людям лень ресечить код, лень искать что-то новое, вроде LoadPE работает и все заебись, все юзают LoadPE классические и кастомные, даже обходят большинство ав, но это уже прошлый век, технологии из консервной банки

А представь что загрузка происходит средствами винды, только ты вмешиваешься в этот процесс, причем совсем незначительно, это совсем легитимно для любого АВ, отрабатывает штатный загрузчик, который ты слегка меняешь, это совершенный подход

Ps. Я не привык допиливать чужой код и использовать (хоть это и не смертный грех у программистов, стаковерфлоу форевер), я на чужой код смотрю как на справку, делаю какие-то выводы если увидел что-то новое, потом пишу свой код с учетом новых знаний
 
Последнее редактирование:
Нет не допиливал конкретно эти сорцы, у меня своя реализация и LoadPE, другая, кода кстати раза в 3 меньше, а полнота охвата поддерживаемых файлов шире, просто есть некоторые хитрости которые позволяют не обрабатывать некоторые вещи, просто нужно создать некоторые условия для этого, и все работает должным образом, но это баловство, а второй вариант интересен поболее - загрузка через абуз системного загрузчика, самый полный из всех возможных загрузчиков существующих в мире без всяких преувеличений, потому что использует все силы оригинального виндового загрузчика PE файлов (андок функции и структурки, ресеч был интересным, всем советую, занимательно и залипательно на несколько дней, но того стоит), грузит абсолютно любые файлы которые в принципе может загрузить винда в штатном режиме при двойном клике по файлу, такого нет ни в одном крипторе на данный момент, похожую идею вкидывал клерк в свое время, но у него не было даже PoC, просто теоретические выкладки и рассуждения, а у меня полноценный рабочий PoC, который можно заморфить и использовать в крипторах. Возможно даже продаем его потом, когда отлажу досканально, технология по истине уникальная, повторюсь, такого нет ни в одном крипт сервисе в данный момент и не будет в ближайшее время, в приватах возможно кто-то уже додумался, но огласке это все-равно не скоро придет даже если так, людям лень ресечить код, лень искать что-то новое, вроде LoadPE работает и все заебись, все юзают LoadPE классические и кастомные, даже обходят большинство ав, но это уже прошлый век, технологии из консервной банки

А представь что загрузка происходит средствами винды, только ты вмешиваешься в этот процесс, причем совсем незначительно, это совсем легитимно для любого АВ, отрабатывает штатный загрузчик, который ты слегка меняешь, это совершенный подход

Ps. Я не привык допиливать чужой код и использовать (хоть это и не смертный грех у программистов, стаковерфлоу форевер), я на чужой код смотрю как на справку, делаю какие-то выводы если увидел что-то новое, потом пишу свой код с учетом новых знаний

Тему не читал, только этот пост. Интриговать ты умеешь =) Речь случайно не идет о хуке MapViewOfFile и подмене содержимого? (Мог с api напутать, но вроде про это шла речь у клерка)
 
Тему не читал, только этот пост. Интриговать ты умеешь =) Речь случайно не идет о хуке MapViewOfFile и подмене содержимого? (Мог с api напутать, но вроде про это шла речь у клерка)
У клерка немного иной механизм нежели у меня, но если исходить из способа клерка, то там мало будет просто подменить содержимое, не забываем про релоки, и прочие вещи, нужно специально возвращать правильные коды ошибок, которые загрузчик будет узнавать, и понимать что ему еще нужно настроить, если вернуть успех, он ничего не настроит (конечно если нет TLS, SafeSEH таблиц и релоков и тд можно вернуть 0, но разве нас интересуют простые бинарики ?)
 
Пожалуйста, обратите внимание, что пользователь заблокирован
maybe i am just blind but where is password ?
 


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