информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Портрет посетителяГде водятся OGRыSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / hacking
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
в 56 байт не влезет однако 30.07.03 09:42  Число просмотров: 1713
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
<hacking>
Нужны адреса входа в kernel32.dll 29.07.03 23:56  
Автор: DgtlScrm Статус: Member
Отредактировано 30.07.03 01:09  Количество правок: 3
<"чистая" ссылка>
Нужны адреса входа в kernel32.dll? для максимального количества ОС Windows к разным серв. пакам.

Воспользуйтесь LoadLibrary() и напишите в форум, вашу ОС,серв. пак.,язык, билд и адрес естественно =)

Да и по возможности в CreateProcessA, хотя это уже не так важно...

И вообще пришлите максимальное колличство адресов к системным DLL, может небольшей справочник выпустим. Как FAQ ;)
--------------------------------------------------------------------------------------------------
А задача собственно следующая
Вот код:
...
xor ebx, ebx
mov edx, esp
add dh, 0xFF
mov dword ptr[edx-4], 0x01646D63 ("cmd\x01")
mov byte ptr[edx-1], bl
lea eax, [edx-4]
mov esi, ebp
push esi; push edx
push ebx
push eax; push ebx
mov eax, 0xBFF77741 //CreateProcessA
call eax
mov eax, 0xBFF8D4F8 //ExitProcess
call eax
int 3
...

---
это шеллкод запускающий 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
<"чистая" ссылка>
Дык тебе на сколько надо: 56 килобайт или 56 байт? 30.07.03 14:25  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
Сорри, на 56 байт 30.07.03 15:02  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
Я видел, и 56k - слишком много 30.07.03 13:45  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Весь шеллкод так навскидку может поместиться в полкило. Ну максимум - килобайт-полтора. Я где-то видел реализацию, но точно не скажу этих всяких разных хакерских журналов - завались. Вот в одном из них и видел.

Чем искать - проще написать самому. Если нужна инфа по работе с PE-файлами - могу подкинуть. Код загрузчика (в смысле PE-loader-а) тоже есть: один пример, лучше, чем туча документации.

Если надо - могу поискать. Но в осталоном помочь ничем не могу - придется писать самому. Тем более, что там не так уж много и остается.
Есть идея! 30.07.03 15:10  
Автор: DgtlScrm Статус: Member
Отредактировано 30.07.03 15:16  Количество правок: 1
<"чистая" ссылка>
Слушайте, а у меня есть идея! Поскольку это HTML, я напишу шеллкод, который ищет свое реальное тело в памяти и запускает! А реально тело, можно закинуть в HTML... вот и снимится ограничение на 56b. Все буду писать о результатак сообщу =)

Новсетаки, не ленитесь киньте адрес входа в kernel... Оно и так пригодится когда то!

А на тему поиска в пямяти: http://www.lsd-pl.net/documents/winasm-1.0.1.pdf

DigitalScream resident 'SecurityLevel5'
Все готово 26.08.03 11:22  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
Спасибо всем, кто помогал.
А тем, кто не захотел... фиг с вами :Р

DigitalScream resident Security Level 5
Из такого эксплойта получится неплохой html вирь. Если еще организовать поиск по диску других htmlек при открытии этой... 30.07.03 16:51  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Классный алгоритм 30.07.03 15:24  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> А на тему поиска в пямяти:
> http://www.lsd-pl.net/documents/winasm-1.0.1.pdf
Чего то я не подумал, что можно по TEB-у искать.
в 56 байт не влезет однако 30.07.03 09:42  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Слушай, а ты где собтраешься версию OS узнавать — в шелкоде? 30.07.03 06:51  
Автор: HandleX <Александр М.> Статус: The Elderman
<"чистая" ссылка>
Удаленно вероятно 30.07.03 08:07  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 30.07.03 08:11  Количество правок: 1
<"чистая" ссылка>
есть такая вещ - os fingerprinting зовется, а если экплоит локальный будет то просто в эбауте винды Ж)
Удаленно вероятно 30.07.03 10:53  
Автор: DgtlScrm Статус: Member
<"чистая" ссылка>
> есть такая вещ - os fingerprinting зовется, а если экплоит
> локальный будет то просто в эбауте винды Ж)

в принципе если на то пошло, то fingerprint не единственный выход
поскольку все идет через интернет экспролер, я могу открыть несколько окон с разными адресами...
А еще есть JavaScript, а он может дать некоторое представление о удаленной ОС...

Давайте адреса =)
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach