20.01.2016

Обход ASLR в Microsoft Office при помощи элементов ActiveX

image

В этой небольшой заметке будет рассказано о том, насколько просто обходить защиту ASLR, создавая экземпляры элементов ActiveX в Microsoft Office при помощи определенных классов (classid).

Автор: Parvez

В этой небольшой заметке будет рассказано о том, насколько просто обходить защиту ASLR, создавая экземпляры элементов ActiveX в Microsoft Office при помощи определенных классов (classid). Тестирование проводилось в MS Word в Office 2010 на машине с установленной Windows 7 32bit со всеми обновлениями, однако в других приложениях, таких как Excel и PowerPoint, должно работать тоже.

Все перечисленные ниже classid показывают предупреждение, но библиотека все равно загружается перед тем, как будут предприняты какие-либо действия.

http://www.greyhathacker.net/images/activexwarning.png

Рисунок 1: Сообщение о том, что Active X отключен

Библиотека sqlceca35.dll идет в составе Microsoft SQL Server Compact, который используется в качестве базы данных, устанавливаемой Microsoft Office. В некоторых системах установлена библиотека sqlceca40.dll, которая имеет динамический набор битов, и, следовательно, использует защиту ASLR.

C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\sqlceca35.dll

{20347534-760B-464D-B572-285E6B618257}

SSCE.Error.3.5

{3018609E-CDBC-47E8-A255-809D46BAA319}

SSCE.DropTableListner.3.5

{455C3E04-BFE9-4089-8622-F2464EC3FDDB}

SSCE Active Sync Engine.3.5

{7C7E6C99-BB8D-4718-AAA9-70C4320010DE}

SSCE.Params.3.5

{8CD1B98D-D8D5-4B51-9564-48B12A98698F}

SSCE.RemoteDataAccess.3.5

{9E7E2CCE-3F1F-4891-892C-AC8B486D03B2}

SSCE.Params.3.5

{9FD542D2-61C4-4E9F-A8E2-E6B8C7F64CBF}

SSCE.Errors.3.5

{A9D3060D-3526-4538-B13A-1913568DAA0D}

SSCE.Engine.3.5

{EA91E968-EF93-4FF1-86F3-75CC93416DF2}

SSCE.Replication.3.5

C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\sqlceoledb35.dll

{90A1998A-EB21-4F61-872F-F4DFDE1065D6}

Microsoft.SQLSERVER.CE.OLEDB.
ErrorLookup.3.5

C:\Program Files\Common Files\System\Ole DB\XMLRW.dll
C:\Program Files\Common Files\System\Ole DB\XMLRWBIN.dll

{10154F28-4979-4166-B114-3E7A7926C747}

MSOLAP.4

{867CD778-80D7-4f93-989E-B3E76A92FB42}

MSOLAP100ErrorLookup.1

C:\Windows\system32\msvbvm60.dll

{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}

C:\Program Files\Common Files\Microsoft Shared\Help\msitss55.dll
C:\Program Files\Common Files\Microsoft Shared\TRANSLAT\FREN\MSB1FREN.DLL
C:\Program Files\Common Files\Microsoft Shared\Help\ITIRCL55.DLL
C:\Program Files\Common Files\Microsoft Shared\TRANSLAT\ESEN\MSB1ESEN.DLL

{5591379C-B467-4BCA-B647-A438712504B0}

LR.LexRefTfFunctionProvider.1.0.1

C:\Program Files\Microsoft Sync Framework\v1.0\Runtime\x86\Synchronization.dll

{A7B3B4EE-925C-4D6C-B007-A4A6A0B09143}

C:\Program Files\Microsoft Sync Framework\v1.0\Runtime\x86\FeedSync.dll

{BC0CD90A-2C24-41BE-B6EC-87C15D919418}

C:\Program Files\Common Files\Microsoft Shared\VSTA\8.0\x86\VSTARemotingServer.dll

{60A896CA-1649-45BF-B63F-2E7312A968F0}

C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Applications.Blueprints\
8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Tools.Applications.Blueprints.dll

{65C52C10-2286-420A-B35C-15CF7F9B5876}

Microsoft.VisualStudio.Tools.Applications.
Blueprints.HostControl

C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Tools.Applications.DesignTime\
8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Tools.Applications.DesignTime.dll

{9DA65B6A-813C-4592-9E8A-412C40BBC4B7}

Microsoft.VisualStudio.Tools.Applications.
DesignTime.HostAdapter

Если загрузить сразу все библиотеки, у некоторых базовый адрес будет изменен. Однако если загружать по отдельности, адрес меняться не должен.

http://www.greyhathacker.net/images/activexalsrbypass.png


Рисунок 2: Некоторые библиотеки в Office 2010 32bit находятся под защитой ASLR

В Office 2010 64bit та же самая картина, и некоторые библиотеки загружаются с неизменным адресом.

http://www.greyhathacker.net/images/activexaslrbypass64.png

Рисунок 3: Перечень загруженных библиотек в Office 2010 64bit, где также некоторые находятся под защитой ASLR

Отключение ActiveX в Microsoft Office

Отключить элементы ActiveX можно через Trust Center.

File — Options — Trust Center — Trust Center Settings — ActiveX Settings

Если выставить настройки, показанные ниже, будут отключены все элементы Active, что, возможно, не будет подходящим решением в вашем случае.

http://www.greyhathacker.net/images/activexdisable.png

Рисунок 4: Отключение загрузки всех элементов Active X

Отключение некоторых элементов ActiveX при помощи kill bit

Чтобы использовать Office COM kill bit для блокирования определенных элементов, необходимо добавить ключ в реестре с указанием CLSID того элемента, а затем добавить значение 0x00000400 (тип DWORD) в параметр Compatibility Flags.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Common\COM Compatibility

Microsoft EMET

Используя EMET, мы видим, что все библиотеки используют защиту ASLR.


http://www.greyhathacker.net/images/activexalsremet.png

Рисунок 5: Состояние библиотек при использовании Microsoft EMET

Microsoft Office 2013

В Office 2013 все существующие classids и загружаемые библиотеки уже имеют динамический набор битов и находятся под защитой ASLR.

http://www.greyhathacker.net/images/activexbypassaslr64off2013.png

Рисунок 6: Состояние библиотек в Office 2013

Все документы с classid, перечисленные выше, можно загрузить отсюда.