информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsСетевые кракеры и правда о деле Левина
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / hacking
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Классный алгоритм 30.07.03 15:24  Число просмотров: 1693
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> А на тему поиска в пямяти:
> http://www.lsd-pl.net/documents/winasm-1.0.1.pdf
Чего то я не подумал, что можно по TEB-у искать.
<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-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach