Anonymous
надо написать гдето в сети что делать а то толковой инфы нету
Anonymous
на гитхабе сделаю очерк
Anonymous
думаю сойдет
Anonymous
?
ⰿⰰⰾⱏ
Обж какого формату?
Anonymous
как же я люблю сервеные оси
Anonymous
на вин 10 код отрабатывает норм а на 2012 без совметимости не катит
Anonymous
👍👍👍
South Port
👍👍👍
Что вова хотел?
Anonymous
никто не писал мне
Anonymous
ну ты сам знаешь что он хочет
Lev
система: Windows (от XP до 10, решение должно быть универсальным), битность - в данном случае x86 (для x64 тоже нужно будет, но впоследствии). суть задачи: есть процесс, у него есть alertable поток. есть метод, позволяющий, избегая VirtualAllocEx и WriteProcessMemory, записать в другой процесс в RW память некоторые данные. почему RW? да потому что RWX вы не найдете в только что загруженном экзешнике по дефолту, а RW дофига (в данном случае используется кусочек выравнивания в конце секции .data в kernelbase.dll). само собой, мы не можем исполнять тот код, который копируем туда. поэтому идея заключается в генерации цепочки ROP и записи этой цепочки в другой процесс. если кто не знает что такое ROP, поясняю - в коде (например в коде той же ntdll или kernelbase.dll) ищутся небольшие кусочки кода типа (1) "mov eax, 1 / ret", (2) "add ebx, 2 / ret" - ну, наподобие этого. затем формируется стек, в котором лежит адрес инструкции (1), потом адрес инструкции (2). при исполнении ret произойдет прыжок на инструкцию 1, выполнится mov eax, 1, потом произойдет прыжок на инструкцию 2, выполнится add ebx, 2 - снова ret, снова прыжок, ну, суть понятна, можно исполнить какой-то код кусочками. идея заключается в том, чтобы, после того, как цепочка ROP записана в ту RW память, передать в процессе управление на какой-нибудь ret, при этом в esp подставить адрес этой ROP цепочки. тогда всё получится. в данном случае речь идет о новой технике Atom Bombing, кто интересуется - может погуглить и почитать. суть в том, что там, для того, чтобы заставить исполняться ROP цепочку, esp устанавливается SetThreadContext'ом (туда тупо пишется адрес этой цепочки), а eip - на какой-нибудь ret в коде. моя задача: мне кажется решение с SetThreadContext'ом некрасивым (само использование этой функции уже жёсткое палево), я хочу сделать по-другому. идеально было бы так: я делаю QueueUserAPC, первым аргументом передаю адрес ROP-цепочки, а сама APC-функция - это код, найденный в чужом процессе, примерно такой: mov esp, [esp+4] / ret. или xchg esp, [esp + 4] / ret. то есть понимаете? он берет значение для esp из первого аргумента, и вызывает ret (первый адрес с ROP цепочки выталкивается, исполнение началось). НО! я нихуя не нашёл в коде (искал в kernelbase.dll, ntdll.dll, kernel32.dll) ни mov esp, [esp+4] / ret ни xchg esp, [esp + 4] / ret. также я не нашел что-нибудь тоже подходящее типа pop eax ; pop esp ; ret. да что там - даже два байтика инструкций pop esp ; ret - встречаются только в ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ. и то в Windows 10. а в Windows 7 не встречаются. задача остаётся прежней: я делаю QueueUserAPC на чужой процесс, могу установить любой адрес. в качестве параметра для APC - адрес ROP-цепочки. мне нужно этот адрес запихнуть в esp и исполнить инструкцию ret. или же может как-то можно обойти иначе, но в голову пока ничего не пришло.
а для чего это нужно? Современные системы безопасности наверняка уже это учитывают
Anonymous
а ты проверь
Lev
начинается всё с того, что исполняемый файл каким-то образом попадает на компьютер и запускается. И ключ тут наверное в доверии к источнику загрузки
Anonymous
да легко
Anonymous
0 дай сплоиты под браузер
Anonymous
чекай эксплоит паки
Lev
чтобы попасть на эксплойт, надо зайти на непонятный сайт. Если персонаж ходит только по доверенным сайтам, то не подцепит
Anonymous
а также ссылка на почту
Anonymous
или даже взломанный сайт
Lev
наверное только безумцы ходят по непонятным ссылкам на почту, а доверенные сайты (крупные порталы) не так то просто взломать
Anonymous
ладно.. хорошо
Anonymous
модель
Anonymous
типичный юзер сидить на 3х сайта которые подписаны сертом доверенным и т.д. фулл набор..
Anonymous
что ты будешь делать если тебе надо его выманить к себе на сплоит ?
Anonymous
юзать соц инженерию
Anonymous
к нам на работу недавно приходило письмо...
Anonymous
одмен мне переслал, так как я его просил весь шлак который будет идти мне кидац
Anonymous
в общем... типичный .js загрузчик довольно таки норм написан... правда статично обфусцирован.. даже детект виртуалки простой был
Anonymous
ну вот.. к чему я, приходит бухгалтеру на почту письмо... мол бла бла вот вам счет... смотрите
Anonymous
а данного типа загрузчик довольно таки норм, оходит ав из за полиморфного кода...
Anonymous
и без труда грузи тот самый ехе к ей на комп.. и она даже не подозревает об этом
Lev
а в система же понимает что в ней появился exe, и должно ведь появиться окно на согласие запуска
Anonymous
это загрузчик делает
Anonymous
в том варианте который переслали мне
Anonymous
там было сделано по умному
Anonymous
грузился не ехе а длл
Anonymous
и уже работало из под него
Anonymous
на момент загрузки стоял каспер 10 с фулл обновами...
Anonymous
даже не вякнул
Anonymous
😉😉
Lev
если следовать пути windows, то система должна быть windows 10 с последними обновлениями безопасности
Anonymous
имеено
Anonymous
стояла 10 х64 с послденими обновлениями
Anonymous
10 про
Lev
* достал с пыльной полки asus eee pc 2g surf и поставил на него slitaz
Anonymous
да я за опен сорс.. но софт для бухгалтерии написан под вин
Anonymous
и софт прописан на законадательном уровне
Anonymous
так что..
Anonymous
у нас в отдел два раза присылал криптор файлов... одмен отмазался что мол из за света файлы слетели...
Anonymous
и надо там бабок выделить на покупку внешних жестких для бекапа
Lev
так что, вирус пробрался?
Anonymous
*присылали
Anonymous
ну да
Lev
возомжно это был фронт-вирус, заточенный под именно новые версии
Anonymous
да видел я его
Anonymous
код его видел
Lev
а может вирус старый, а загрузчик новый
Lev
можно в майкрософт его отослать
Anonymous
ключи на сервере
Anonymous
хоть в нод32 шли
Anonymous
я кидал его на гибрид анализ
Lev
на моём eee pc даже батарея ещё живая, пару лет назад нашёл вполне живой экземпляр на радио-рынке. Корпус у него очень крепкий, его можно брать с собой туда, куда не хочется брать ультра-бук (который такой тонкий что его надо осторожно носить)
Anonymous
😂😂
Anonymous
вот я рукожоп...
Anonymous
😕😕😕
Anonymous
забыл про обработку отсутсвия папки..
Anonymous
а грешил все на винду
Anonymous
😕😕😕
Lev
система: Windows (от XP до 10, решение должно быть универсальным), битность - в данном случае x86 (для x64 тоже нужно будет, но впоследствии). суть задачи: есть процесс, у него есть alertable поток. есть метод, позволяющий, избегая VirtualAllocEx и WriteProcessMemory, записать в другой процесс в RW память некоторые данные. почему RW? да потому что RWX вы не найдете в только что загруженном экзешнике по дефолту, а RW дофига (в данном случае используется кусочек выравнивания в конце секции .data в kernelbase.dll). само собой, мы не можем исполнять тот код, который копируем туда. поэтому идея заключается в генерации цепочки ROP и записи этой цепочки в другой процесс. если кто не знает что такое ROP, поясняю - в коде (например в коде той же ntdll или kernelbase.dll) ищутся небольшие кусочки кода типа (1) "mov eax, 1 / ret", (2) "add ebx, 2 / ret" - ну, наподобие этого. затем формируется стек, в котором лежит адрес инструкции (1), потом адрес инструкции (2). при исполнении ret произойдет прыжок на инструкцию 1, выполнится mov eax, 1, потом произойдет прыжок на инструкцию 2, выполнится add ebx, 2 - снова ret, снова прыжок, ну, суть понятна, можно исполнить какой-то код кусочками. идея заключается в том, чтобы, после того, как цепочка ROP записана в ту RW память, передать в процессе управление на какой-нибудь ret, при этом в esp подставить адрес этой ROP цепочки. тогда всё получится. в данном случае речь идет о новой технике Atom Bombing, кто интересуется - может погуглить и почитать. суть в том, что там, для того, чтобы заставить исполняться ROP цепочку, esp устанавливается SetThreadContext'ом (туда тупо пишется адрес этой цепочки), а eip - на какой-нибудь ret в коде. моя задача: мне кажется решение с SetThreadContext'ом некрасивым (само использование этой функции уже жёсткое палево), я хочу сделать по-другому. идеально было бы так: я делаю QueueUserAPC, первым аргументом передаю адрес ROP-цепочки, а сама APC-функция - это код, найденный в чужом процессе, примерно такой: mov esp, [esp+4] / ret. или xchg esp, [esp + 4] / ret. то есть понимаете? он берет значение для esp из первого аргумента, и вызывает ret (первый адрес с ROP цепочки выталкивается, исполнение началось). НО! я нихуя не нашёл в коде (искал в kernelbase.dll, ntdll.dll, kernel32.dll) ни mov esp, [esp+4] / ret ни xchg esp, [esp + 4] / ret. также я не нашел что-нибудь тоже подходящее типа pop eax ; pop esp ; ret. да что там - даже два байтика инструкций pop esp ; ret - встречаются только в ЕДИНСТВЕННОМ ЭКЗЕМПЛЯРЕ. и то в Windows 10. а в Windows 7 не встречаются. задача остаётся прежней: я делаю QueueUserAPC на чужой процесс, могу установить любой адрес. в качестве параметра для APC - адрес ROP-цепочки. мне нужно этот адрес запихнуть в esp и исполнить инструкцию ret. или же может как-то можно обойти иначе, но в голову пока ничего не пришло.
а вдруг кто-то так уже делал?
Lev
и ты не изобретаешь велосипед, а этот велосипед был уже изобретён раньше? А может быть даже для этой задачи более эффективное (или эффектное) решение есть?
Anonymous
если кто-то и делал то явно не для паблика
Lev
от xp до 10 - смелое заявление
Lev
а кто пробовал на ассемблере писать для ускорения баз данных?
Anonymous
😁😁😁
Dmitry
блин, ну вы тут нафлудили
Dmitry
я про что, собственно
Dmitry
решение есть, оно было не так давно опубликовано, и оно было с SetThreadContext'ом.
Dmitry
я решил что SetThreadContext это перебор, и решил обойтись одним NtQueueApcThread