Aoizora, однако одни наслождаются любовью женщины, рожают детей, сочиняют музыку, поют песни на свадьбах, льют слезы на похоронах, воюют, побеждают и погибают в войнах, осознав цену братства - и это всё тысячилетиями. А другие сверхчеловеки по дуркам сидят
выделяем память (на те же инты), устанавливаем контрольные значения, запускаем ропресс - сверяем контрольные значения чрез энный период.. в общем и целом, осциллограф тут не нужен.
аспирином тут является сброс тактовой частоты железки, однако для датацентров такой аспирин тоже крайне плох
UbIvItS, не знаю, спорим мы или нет, но у меня сложилось впечатление, что вы отстаиваете тезис, что талантливый дерзкий школьник из неблагополучной семьи, гхм, или наоборот, сверхобеспеченной, может выйти на изобретение такой атаки. Откровенно, это маловероятнее чем встреча на улице марсиан. p.s. скажите, а на ваш взгляд, маерск когда снимет с паузы перевозки через красное море?
я говорю о том, что атака очень дешёвая в реализации. да, обычному школьнику положить облака не получится == нужно использовать много ойпи и много разных акков + замаскировать атаку в непохожих друг на друга бинарях, а ещё сильно сложней - ежли облака требуют сорцев на запускаемый код. однако, исследовательский проект в этом направление по силам и школьнику. самое, пожалуй, забавное, что и вполне себе легальные вещи могут вышибать новые железки с физ повреждениями --- Сообщение объединено, 20 дек 2023 --- хз - сейчас везде Ахтунг
Кстати момент загрузки/выгрузки любых DLL можно отследить чз LdrRegisterDllNotification() - она вызывается до динамического связывания, поэтому можно запретить аттач левых либ в свой процесс.
UbIvItS, когда вы говорите "хардварный хак" "хак на железо" первое что приходит в голову, это что-то типа этого, а никак не rawhammer rawpress
сейчас используется что-то более технически сложное ? особенно если речь идёт о Win10 --- Сообщение объединено, 23 дек 2023 --- инжект dll , я так думаю для новичка это неплохое начало
Смысл инжекта - в доставке стороннего кода в процесс с последующим исполнением. Этот код не обязательно доставляется в dll, это может быть даже сырая исполняемая память без пешных заголовков. И доставку, и исполнение можно осуществить множеством разных способов. Доставка: 1. VirtualAllocEx + WriteProcessMemory. 2. NtCreateSection + NtMapViewOfSection. 3. VirtualProtectEx + WriteProcessMemory на уже выделенном в процессе регионе (например, на незанятом пространстве в конце модулей или между функциями). 4. Вариации предыдущих пунктов в ядре, если пишешь драйвер. Выполнение: 1. CreateRemoteThread. 2. QueueUserAPC - доставка Normal User APC для Alertable-потоков (которые ждут на SleepEx/WaitFor***Ex с флажком Alertable == TRUE). 3. QueueUserAPC2 - доставка Special User APC для любых потоков. 4. Угон одного из уже существующих в процессе потоков через SetThreadContext. 5. Угон одного из существующих в процессе потоков через патч-перехват одной из функций, которые он выполняет. 6. Добавление каллбэка в таблицу оконных функций через WriteProcessMemory и вызов его из ядра через KeUserModeCallback. 7. RtlRemoteCall из ntdll (то же самое, что угон потока через SetThreadContext, только в более дружелюбной обёртке). 8. Доставка Special User APC из ядра. Доставка + выполнение: 1. AppInit_DLLs - ключик в реестре, из которого при инициализации user32.dll читает список библиотек, которые нужно загрузить. Либы загружаются через LoadLibrary в контексте главного потока в функции LoadAppInitDlls в kernel32. 2. Установка глобальных оконных хуков через SetWindowsHookEx. Будучи вызванной из дллки, она пошлёт всем оконным процессам в той же сессии оконное сообщение, заставив их подгрузить дллку через LoadLibrary в контексте их потоков, которые обрабатывают оконные сообщения. 3. Модификация таблицы импорта процесса в бинарнике на диске, чтобы тот подгрузил твою либу при запуске. 4. Подмена одной из существующих либ-зависимостей процесса на твою либу, которая форвардит все функции из оригинальной либы, но дополнительно вызывает твой код. В принципе, можно придумать что-то ещё - способы ограничиваются только твоей фантазией. Комбинируя способы доставки и исполнения, можно загрузить не только дллку, но и сырой ассемблерный шелл. Или вместо LoadLibrary вручную развернуть дллку в памяти, заполнив таблицу импортов и поправив релоки (это называется «мануалмаппинг»).
HoShiMin, размещение (затихариться лоадеру, отлжаться) это после инжектов не менее важная вещь. что бы увеличить временнУю дистанцию между доставкой и выполнением. --- Сообщение объединено, 25 дек 2023 --- для хп вроде 13 способов
Все, кроме QueueUserAPC2, актуальны для всей линейки от XP до 11, а Special User APC появился только в Windows 11. Также, начиная с Windows 8, AppInit_DLLs не будет работать при включенном SecureBoot. В остальном ничего не изменилось. А зачем? Инжекты довольно легко детектятся ещё на этапе доставки кода (в процессе появилась страничка, которую никто не выделял, или неожиданно поменялось содержимое ридонли-памяти, которую процесс сам не менял). Откладывать исполнение особого смысла нет: сторонний код ещё не выполнили, а процесс уже о нём знает. Кроме того, если есть задача скрыть свой инжект, чем быстрее выполнишься - тем быстрее поставишь перехваты, уменьшив временное окно, в которое процесс может тебя найти.
на загруженных серваках, где куча пляшет от приплывающих постоянно данных, это либо сама ось должна следить, либо антивирус слишком много накладных расходов даст. Гипотетически да, но на деле - не, не думаю. Процессов которые будут смотреть за своим стэйтом - это не 90% программ точно. Не надо далеко ходить, если бы было так, что log4j не была бы уж такой громкой атакой. опять же о чем мы говорим? если рип под контроллем, то это уже выполнение. правильно? в том смысле, что до этого шага, с хренали пид должен что-то увидеть? лежит обфусцированя хрень и ладно. Сырые байты ведь дело интерпретации. Сперва рип на интерпретатор надо перебросить, и вот ему будет важно что где лежит. Короче, пока не убедили, что "легко детектятся еще на этапе доставки кода".
Нам врут постоянно везде и всегда. Врут даже те, от кого мы это менее всего этого ожидаем(спецы с васма). Хотелось бы в воочию увидеть работающую реализацию, например: Код (Text): Доставка: 1. VirtualAllocEx + WriteProcessMemory. Для загрузки именно дллки на линейке от xp до 11 для 32/64, с выводом MessageBox в DLL_PROCESS_ATTACH Чтобы не было разночтений, чтобы код собирался простым батником с помощью gcc.exe, например -o -static -static-libgcc -static-libstdc++(как старый добрый зеус) Это чтобы не было отмазок, что среда не такая, makefile не торт
Win32Api, я правильно понимаю, что если права на int3 есть то потом будет и " VirtualAllocEx + WriteProcessMemory." ? тут не об этом? https://secarma.com/process-injection-part-2-modern-process-injection/