Visual Basic, .NET, ASP, VBScript
 

   
 
Описание для автора не найдено
 
     
   
 

Intro…

Приветствую всех без исключения! После долгого молчания, связанного с моим призывом в ряды Вооруженных сил Азербайджанской республики, мне наконец-то представилась возможность помучить вас своими умозаключениями. Сегодня я хочу (постараюсь во всяком случае ) ответить на вопрос : Как обойти защиту офисных приложений? И естественно я как автор данной чисто ознакомительной статьи не несу никакой ответственности за последствия, которые могут произойти после ознакомления и претворения в жизнь всего нижеописанного …

Loading…

Итак, начинаем так сказать внедряться. Если бы данный вопрос мне задали лет этак 4-5 назад , то я бы ответил – Дорогие мои , все что вам нужно так это вставить в ваш проект всего лишь три заветных слова :

----------

Application.VirusProtection=False

----------

и все … Да, веселые были времена. Но сейчас такой финт не пройдет , ну ничего всего лишь почесав репу ака голову начинаем судорожно мыслить ака думать …

Dim 1 as variant…

Предположим, что вы наваяли пару строчек кода на VBA и решили испытать его в боевых условиях. Впариваете его своему лучшему подопытному кролику ака ламеру . Запустив он на мониторе видит эту жуткую надпись (хуже когда не видит , но об этом чуть позже ) см.рис.1.Хотя если он ее не видит , то тут два варианта либо у него вообще нет никакой защиты (на панели уровень безопасности галка стоит напротив Низкая рис.2) - в этом случае дальше можете не читать, ваш труд не пропадет даром и все написанные процедуры и функции запустятся сами без спроса. В другом случае (самый неблагоприятный ) уровень безопасности установлен в положение Высокая - и тогда высветиться следующий Message Box (рис.3), который, и дает нам первый ответ на поставленную перед нами задачу.

 

рис.1 Предупреждает...

рис.2 И встречаются же такие...

рис.3 Предположительно первый вариант

Как видно из рис.3 само офисное приложение (в данном случае Excel) нас предупреждает, что мол макросы в книге отключены, но если бы вы их подписали или на худой конец отключили бы защиту, то тогда оно промолчало бы в тряпочку и спокойно все загрузило. А так извините . Подпиши свой конструктивный или деструктивный код и все будет в ажуре. Естественно под подписью не подразумевается размашистая роспись на распечатке исходного кода вашей процедуры. Здесь речь идет о цифровой подписи которую можно добавлять в ваши проекты .Она по идее свидетельствует о том что данный продукт разработан сертифицированным специалистом , которому можно доверять ( ну и так далее в том же духе)…. Более подробно об этом можно узнать вот здесь Microsoft Security Advisor Web site или по F1.

Двигаемся дальше к намеченной цели. Наша с вами задача на сегодня это добавить электронную подпись к вашему творению. Есть несколько путей реализации данного вопроса это получить цифровую подпись у специализированных организаций, таких как VeriSign или Inc. (самый надежный способ), но есть способ лучше. А именно , в состав офисного пакета входит утилита под названием SELFCERT.EXE , обычно она располагается по адресу "С:\Program Files\Microsoft Office\Office10\SELFCERT.EXE" (естественно вместо С:\ нужно указать логический драйв, на котором установлен офисный пакет).

Запускаем данную утилиту и видим простенькое окно (рис.4)

рис 4. Контора по раздаче ключей …

Все что от вас требуется это ввести ваше имя, но можно поступить иначе – давайте введем сюда следующие магические строки Microsoft Product Support services , дальше ОК и ключик у нас в руках рис.5.Теперь дело за малым вставить ключик в файл или в проект и подсунуть его юзверю.

рис.5 Ключи от квартиры…

Procedure Вставляй и властвуй ( )…

Итак, ключ у вас есть – дело за малым вставить его в проект. Делается это следующим способом в меню Tools Visual Basic Editor-a (комбинация клавиш ALT+F11-для тех кто не знает) выбираем пункт Digital Signature , перед нами должно появиться следующее окно (рис.6).

рис.6 Выбор за вами

Теперь жмем выбрать и из следующего окна (рис.7) выбираем созданный вами ранее сертификат под названием Microsoft Product Support services .

 

рис.7 Связка ключей

Вот и все – ваш проект подписан и теперь юзверь запустивший его будет лицезреть следующую картину (рис.8.). Конечно же, вы вправе покопаться в свойствах сертификата (кнопка View Certificate-> вкладка Details -> Edit properties…) , но максимум что можно выжать оттуда это изменить (добавить Friendly Name и Description)хотя на безрыбье и раком постоять не плохо Итак вернемся к нашим подписям – открыв документ подопытный обнаружит следующее

рис .8 Последнее предупреждение …

EXCEL опять предупреждает, но уже по другому – мол данный проект подписан (имеет сертификат такой авторитетной компании как Microsoft corp.-поэтому я и предложил назвать ваш сертификат подобным образом) и хотя само офисное приложение не советует доверять данному источнику, оно все таки предлагает поставить галку напротив надписи Всегда доверять макросам из этого источника. Хорошо бы было если вы в данный момент находились рядом и помогли бы несчастному юзеру в данном выборе .Кстати, предупреждение появиться и в том случае если уровень безопасности установлен в Высокая .Итак если выбор сделан и галка установлена, то вы можете поздравить себя .Юзверь у вас в руках теперь любой проект, подписанный данным сертификатом запуститься на компе у жертвы без лишних вопросов и офисное приложение не будет больше доставать ее своими Предупреждениями системы безопасности …Самое главное, что макросы сработают даже тогда когда уровень безопасности установлен в Высокая. И еще вы можете добавлять эту подпись в любой офисный файл Word, Access, Excel и др… и везде все сработает …

 

Auto_Open( )…

Ну, вот в принципе и все. С первым Федотом вроде разобрались .Напоследок небольшой финт.Чтобы все это выглядело правдоподобно и сработало необходимо произвести небольшие косметические изменения (дополнения).Соберем фейк и преподнесем его юзеру под видом патча офисных приложений. Для этого добавьте в ваш проект (если вы его еще не создали, то создайте – запустите любое офисное приложение нажмите ALT+F11) пустую форму (в меню Insert выберите пункт User Form),я дал ей название patchForm , а также добавьте в проект модуль Insert->Module (name –patchModule). На нашу форму добавим две кнопки ака Button один Frame два Label-a и один ProgressBar (его можно найти на панели Controls рис.10),если его там нет, то тогда необходимо установить его (райтклик на панели Controls -> Additional controls и из списка выберите Microsoft ProgressBar Control 6.0 или Microsoft ProgressBar Control version 5.0, если в списке вы не найдете ничего подобного то тогда поместите файлы comctl32.ocx и MSCOMCTL  в папку Windows\System32 или Windows\System).То что получилось у меня вы можете увидеть на рисунке 9.

рис.9 Фейк форма

рис.10 Установленный ProgressBar

Вы можете собрать другую форму – только не перестарайтесь (это ведь фейк - форма) и она должна выглядеть наиболее правдоподобно. И пожалуйста без грамматических ошибок …

Далее необходимо установить следующие свойства у компонентов:

Label1 – здесь находится надпись “We strongly recommend to apply this security patch to fix and remove bugs in office applications Press OK to apply patch or Cancel if you want to quit . Microsoft corporation © 2002 Y”

Label2 – Caption = Please Wait…, а свойство Visible в false чтобы при загрузке формы его не было видно.

ProgressBar1-свойство Max в 1000000

И все

Теперь открываем patchModule и пишем там следующую процедуру:

Листинг 1

//////////

Sub Auto_Open()

patchForm.Show 'показываем нашу форму

End Sub

* для Word-овских проектов замените Auto_Open на AutoOpen

//////////

В код обработки нажатия кнопок вставляем следующие процедуры:

//////////

Sub CommandButton1_Click()

Label2.Visible = True 'показываем лейб 2

patchForm.Repaint 'перерисовываем форму,чтобы лейбл появился

For i = 0 To 1000000 'запускаем цикл

ProgressBar1.Value = i 'присваиваем значение i ProgressBar-у

'создаем эффект выполнения длительной операции

Next i

Label2.Caption = "Ready" 'пишем Ready в лейбле 2

patchForm.Repaint 'перерисовываем форму,чтобы надпись сменилась

MsgBox "Patch successfully applied", vbOKOnly + vbInformation _

, "Microsoft corporation ©"'выводим сообщение об успешном проведении операции

patchForm.Hide 'прячем форму

ActiveWorkbook.Close (False) 'закрываем наш проект без сохранения изменний

'в рабочей книге

End Sub

Private Sub CommandButton2_Click()

patchForm.Hide 'прячем форму

ActiveWorkbook.Close (False) 'закрываем наш проект без сохранения изменний

'в рабочей книге

End Sub

Private Sub UserForm_Terminate()

CommandButton2_Click 'выполныем процедуру обработки кнопы 2

'на случай если юзверь нажал на крест в заголовке формы

End Sub

//////////

Post FUCKtum( )…

Теперь все, при открытие документа пользователь увидит вашу фейк-форму на которой Microsoft настоятельно рекомендует пропатчить офисные приложения .И нажмет ли пользователь ОК или Cancel вам должно быть глубоко наплевать, так как если он видит эту форму , то значит вы уже внедрились

Исходники как обычно прилагаются .Если что не получается пишите, постараюсь ответить. Все всем здравия желаю!!! До новых надеюсь встреч .

To be continued…

 
     

   
   
     
  VBNet рекомендует