Нужны адреса входа в kernel32.dll? для максимального количества ОС Windows к разным серв. пакам.
Воспользуйтесь LoadLibrary() и напишите в форум, вашу ОС,серв. пак.,язык, билд и адрес естественно =)
Да и по возможности в CreateProcessA, хотя это уже не так важно...
И вообще пришлите максимальное колличство адресов к системным DLL, может небольшей справочник выпустим. Как FAQ ;)
--------------------------------------------------------------------------------------------------
А задача собственно следующая
Вот код:
---
это шеллкод запускающий cmd. Чтобы он работал везде, надо сами знаете что, адреса. Если есть какието другие варианты(поиск адреса в памяти) предлагайте, не стесняйтесь =)
Одна проблема шеллкод не должен привышать 56 байт...
Вообщето целевая задача - закачать и запустить.
Эксплуатируется Internet Explorer.
Жду советов... и все-таки "Нужны адреса входа в kernel32.dll" =)
не слишком ли много для одного поста? =)
DigitalScream resident 'SecurityLevel5'
Вообще привязываться к конкретным адресам, если можно сделать иначе - не есть хорошо30.07.03 09:34 Автор: amirul <Serge> Статус: The Elderman
Вводная:
1) Любой процесс под NT-ями так или иначе импортирует kernel32.dll
2) Образ любого модуля впечатывается по границе страницы, если даже придется просмотреть ВСЕ страницы (а такого делать не придется, но все же), то всего в пользовательском адресном пространстве (0x00000000 - 0x80000000) есть всего 500000 страниц. То есть нужно проверить всего 500 тысяч коротких слов (сигнатуру для сравнения можно хранить в регистре и сравнивать сразу с памятью, указатель на которую хранить в другом). Причем делать это в коротком цикле, который полностью поместится в кеш-строку - задача не из самых сложных.
3) Образ любого модуля начинается с сигнатуры MZ (и кроме того там еще есть смещение к сигнатуре PE)
4) Формат PE-файла хорошо задокументирован и хранит в себе название модуля.
5) Образ большинства dll-ок (по крайней мере всех системных, так как они сделаны в VC, а его линкер собирает все именно так) имеет не одну, а две таблицы импорта. Одна заменяется при динамическом связывании, а одна остается оригинальной.
Если еще не понятно к чему я веду, то вот примерный алгоритм:
1) Начинаем постранично просматривать память на предмет сигнатуры MZ (лучше с конца и назад - там всегда много системных dll-ок)
2) Если найдена, проверяем еще и синатуру PE
3) Если и она присутствует, проверяем имя модуля. Если это kernel32.dll - находим адреса GetModuleHandle (адрес на имя kernel32.dll у нас уже есть :-) ) и getprocaddress (в принципе этого делать не обязательно - просто для облегчения дальнейшей жизни). Для этого нужно идти не по основной (измененной таблице импортов), а по второй - неизменной.
4) Если не kernel32 - возможны варианты. Либо продолжать планомерную проверку страниц с того места, где мы нашли этот модуль, либо использовать вторую таблицу импортов (большинство dll-ок тоже импортирует kernel32), либо (если dll-ка собрана в билдере и второй IAT нет) проверять в тех адресах, которые импортируются и искать назад. Или использовать комбинацию: если это VC-шная dll-ка со второй IAT - искать сразу по адресам модулей, если BC-шная - по адресам импортов можно быстро найти адреса модулей.
В общем успехов. Можешь конечно и не делать такого, но зато этот шеллкод будет универсальным.
А у тебя есть рабочий вариант в 56k?30.07.03 10:57 Автор: DgtlScrm Статус: Member
Весь шеллкод так навскидку может поместиться в полкило. Ну максимум - килобайт-полтора. Я где-то видел реализацию, но точно не скажу этих всяких разных хакерских журналов - завались. Вот в одном из них и видел.
Чем искать - проще написать самому. Если нужна инфа по работе с PE-файлами - могу подкинуть. Код загрузчика (в смысле PE-loader-а) тоже есть: один пример, лучше, чем туча документации.
Если надо - могу поискать. Но в осталоном помочь ничем не могу - придется писать самому. Тем более, что там не так уж много и остается.
Есть идея!30.07.03 15:10 Автор: DgtlScrm Статус: Member Отредактировано 30.07.03 15:16 Количество правок: 1
Слушайте, а у меня есть идея! Поскольку это HTML, я напишу шеллкод, который ищет свое реальное тело в памяти и запускает! А реально тело, можно закинуть в HTML... вот и снимится ограничение на 56b. Все буду писать о результатак сообщу =)
Новсетаки, не ленитесь киньте адрес входа в kernel... Оно и так пригодится когда то!
Спасибо всем, кто помогал.
А тем, кто не захотел... фиг с вами :Р
DigitalScream resident Security Level 5
Из такого эксплойта получится неплохой html вирь. Если еще организовать поиск по диску других htmlек при открытии этой...30.07.03 16:51 Автор: Killer{R} <Dmitry> Статус: Elderman
> есть такая вещ - os fingerprinting зовется, а если экплоит > локальный будет то просто в эбауте винды Ж)
в принципе если на то пошло, то fingerprint не единственный выход
поскольку все идет через интернет экспролер, я могу открыть несколько окон с разными адресами...
А еще есть JavaScript, а он может дать некоторое представление о удаленной ОС...