ВЪВЕДЕНИЕ

Защо вече не мога да държа приятелите си? Изглежда, че цялата ми магия на Metasploit е уловена — дори модифицираните ми полезни товари с таен сос. DEP. ASLR. EDRs. Пясъчници. Бели списъци. Вече не е забавно!

И така, мислихте, че сте 1337 h4x0r? Мислехте, че притежавате луди умения за писане на sploit, разбиване на черупки? Първо научихте Python (толкова лесно), след това C (малко по-дълбоко в плевелите), след това асемблиране (надолу в заешката дупка) и накрая направо двоичен (защото езиците за програмиране са за мъгъли). Но сега вашите „sploits“ се отбелязват и вашето объркване Kung Fu не ви спасява от големите лоши EDR там. Какво да правя? Не можете да следвате заека по-нататък в заешката дупка, нали? Може би просто трябва да се върнете, да вземете синьото хапче и да живеете живот на блажено невежество в страната на макросите. Да, нека купонясваме, сякаш е 1999 г. ОБИЧАМ ТЕ, Мелиса! Може би сте си помислили, че макро вирусите са минали по пътя на 56K модемите, но те се върнаха, бебе!

Базираният на макроси злонамерен софтуер беше на мода през 90-те години, но тогава Microsoft поумня и деактивира голяма част от автоматичното изпълнение на скриптове по подразбиране. Това принуди хакерите да започнат надпревара във въоръжаването с надпревара към дъното. Кой би могъл да се гмурне по-дълбоко? Но сега тези по-стари атаки се завръщат. Това обаче не са простите макро атаки от поколението на вашия дядо. Те стават все по-сложни. Те използват криптиране, социално инженерство и злоупотребяват с обекти по начини, които не сме виждали досега. Политиките за сигурност по подразбиране са деактивирали повечето макроси, но е необходим само един потребител, за да бъде убеден да активира макросите, а всички знаем, че потребителите винаги са слабото място. Връщането към тези стари атаки, базирани на макроси, може да осигури полезна алтернатива, когато съвременните мерки за сигурност ви свалят.

VBA

Какви са тези макро неща все пак? Чух баща ми да ги споменава веднъж, когато показваше новомодната си автоматизация на Word и твърдеше, че е гуру на Excel, но след това го игнорирах и се върнах към pwning n00bs.

Е, „макросите“ всъщност са само входната точка в света от вчера… имам предвид света на Visual Basic за приложения (VBA), който е прост език за програмиране. VBA е разклонение на Visual Basic, компютърен език, разработен от Microsoft през 90-те години. Може да сте се сблъсквали с VBScript преди, но въпреки че е смътно познат, той също е разочароващо различен. Този език за програмиране е достъпен за напреднали потребители на Office, за да помогне за автоматизиране на задачи и изпълнение на сложни задачи. Пакетът Office разкрива различни събития, функции и обекти, които могат да се използват за манипулиране на документи, бази данни, формуляри, електронни таблици, презентации и в крайна сметка на самия компютър. VBA наистина позволява на програмиста да извършва почти всяка операция от потребител, като щракване с мишката, натискане на клавиши, отваряне на диалогови прозорци, записване на файлове, въвеждане на данни и т.н. И като допълнителна полза, VBA е вграден в Office. Така че, докато версията и функциите може да са се променили леко, основната функционалност и възможности са били там и чакат да бъдат използвани и злоупотребявани от Office 97 и до и включително Office 365.

VBA може да изглежда като други езици за програмиране, но в същото време може да бъде малко предизвикателство. VBA е в основата си обектно-базиран език, като Python, C++ или други скриптови езици. Приложенията на Microsoft Office разкриват различни обекти, методи, свойства и т.н., които езикът за програмиране може да използва. VBA взаимодейства с приложението, като се възползва от тези обекти и изпраща инструкции или извикващи методи. Този обектен модел не само разкрива обекти на Microsoft Office, но и основни обекти на операционната система, както и други библиотеки и компоненти. Предполагам, че имате основни познания по програмиране, но просто всички сме на една страница: обектите представляват различни части от документа или самото приложение, например текущия документ, страница, работна книга, работен лист, клетка и слайд. Методите са функции, свързани с конкретен обект, например Запазване и Избор. Свойствата са данни или променливи, свързани с конкретни обекти, например Стойност и Съдържание. В допълнение към общия обектен модел има и други общи функции, които могат да приемат аргументи и да връщат стойности. Тези аргументи могат да бъдат обекти или по-прости типове.

МАКРОСИ

Добре, добре, разбирам. VBA е обектно-ориентиран език за програмиране от старата школа, който взаимодейства с приложенията на Microsoft Office чрез открити обекти, методи, свойства и функции. Но какво всъщност представляват макросите?

Сега, след като имате основни познания за VBA, вероятно искате да започнете да извиквате методи и да се забърквате със свойствата. VBA все пак е език за програмиране и вероятно искате да си изцапате ръцете и да започнете да програмирате. Но първо, нека да разгледаме как повечето потребители се възползват от тази мощна скриптова машина чрез макроса. Макросите всъщност са само процедури. Те са група от команди, които изпълняват специфична задача. Можете да ги разглеждате като функции или подпрограми. Те съдържат кода, който повечето потребители използват за автоматизиране на рутинни задачи. Можете да пишете макроси по начин на програмист или можете да направите това, което прави потребителят на joe и да „запишете“ макрос. След като макросът бъде създаден или записан, той може да се изпълнява в текущото приложение.

РАЗДЕЛА РАЗРАБОТЧИК

Първо най-важното. Преди беше много по-лесно за достъп и стартиране на макроси, но след това първите автори на вируси започнаха да се възползват от тях, помните ли? И така, Microsoft направи малко по-трудно достъпа и използването на макроси. Сега трябва да активирате раздела Разработчик, за да имате действителен достъп до функциите на макроси, както и до редактора на Visual Basic (който ще стане ваш приятел).

  1. В раздела Файл изберете Опции, за да отворите диалоговия прозорец Опции.
  2. Изберете Персонализиране на лентата от лявата страна на диалоговия прозорец.
  3. Под Изберете команди от вляво на диалоговия прозорец изберете Популярни команди.
  4. Под Персонализиране на лентата от дясната страна на диалоговия прозорец изберете Основни раздели в полето с падащ списък и след това поставете отметка в квадратчето Разработчик.
  5. Изберете OK.

Страхотно, сега трябва да имате раздела Разработчик в горната част. След като изберете раздела Разработчик, трябва да видите някои забавни нови бутони, включително Visual Basicредактора и Макроси. Трябва също така да имате бутона Запис на макрос и бутоните Сигурност на макрос.

МАКРО СИГУРНОСТ

Освен досадното изскачащо запитване, ако искате да активирате макроси, има няколко други функции за защита на макроси и проблеми. Първо, за да предпазите/предупредите потребителите срещу документи, съдържащи евентуално опасни макроси, не можете да записвате макроси в стандартен документ на Office със стандартното файлово разширение. Документите с активирани макроси имат специално разширение, което обикновено заменя x (за XML) с m (за активирани макроси), например .docm вместо .docx.

Второ, както споменахме по-горе, настройката по подразбиране за Office забранява изпълнението на макроси. Вместо това получавате златната падаща лента с молба да активирате макроси. Има обаче няколко изключения от това правило: надеждни документи, надеждни местоположения и надеждни издатели. Всички те могат да бъдат установени в настройките за защита на макроси. Има няколко надеждни местоположения по подразбиране.

ЗАПИСВАНЕ НА МАКРО

Да, да. И така, какво представлява този макро запис?

Сега, след като разгледахме някои от основите на макросите, нека да разгледаме начина, по който повечето потребители ги създават: запис на макрос. Бутонът Запис на макрос се намира в раздела Програмист. Когато записвате макрос, приложението на Office автоматично генерира VBA кода, за да възпроизведе действията, които записвате. Това е лесен начин да започнете и да видите някои от основния код зад конкретни действия, които искате да извършите. Това е първата и последна стъпка за повечето потребители на Office. Въпреки това, както при повечето генерирани кодове, той може да бъде сложен и неефективен.

  1. Отворете приложение на Office (Word или Excel - очевидно PowerPoint е бил твърде труден) и изберете раздела Разработчик в лентата.
  2. Изберете Записване на макрос и попълнете свойствата в диалоговия прозорец Записване на макрос, включително името на макроса, пряк път, описание и местоположение. Приемането на настройките по подразбиране е чудесно за начало.
  3. След като щракнете върху OK, всички ваши действия ще бъдат записани: всяко щракване, въвеждане на данни, избор, всичко.
  4. Ако сте забелязали, текстът на бутона се променя от Record Macro на Stop Recording. Натиснете този бутон, когато завършите действията, които искате да запишете.
  5. Не е задължително. Сега можете да изберете Макроси в раздела Разработчик и да изберете макроса, който току-що създадохте. След това можете да редактирате макроса, за да видите кода, който е автоматично генериран в редактора на Visual Basic.

Като бърза странична бележка, макро записът може да пропусне някои неща и да улови други (като превъртане и всяко малко щракване), така че определено си струва да прегледате макро кода и да се опитате да оптимизирате и добавите всичко, което е пропуснато.

VISUAL BASIC РЕДАКТОР

Разбира се, мога да създам тези основни автоматизации, но искам да играя с действителния код. Как да си изцапам ръцете и всъщност да си играя с функции и предмети? Какъв е този редактор на Visual Basic, за който говорите?

Записването на макрос може да ви отведе само досега, така че сега нека погледнем под капака. Редакторът на Visual Basic е вашият инструмент за създаване и модифициране на код. Можете да отворите редактора с помощта на бутона Visual Basic в раздела Програмист или с помощта на клавишната комбинация Alt+F11. Редакторът се отваря в напълно отделен прозорец от приложението Office. Всяко приложение на Office има специфичен за приложението редактор с поддръжка за специфично приложение. Редакторът на Visual Basic трябва да изглежда като повечето IDE, които сте използвали преди, като Visual Studio, Eclipse или PyCharm. Той има рамка за Проект, рамка за Свойства, рамка за незабавнорамка, рамка за наблюдения и вашата основна област за писане на код.

Рамката Проект показва дървовидна структура на вашия текущи VBA проект. Това изброява обектите (работни книги, документи и т.н.), формулярите и модулите. Модулите са това, което съдържа вашия макрос и функционален код. Ако не виждате папка с модул, вероятно все още не сте добавили VBA код или макроси към проекта. Можете да направите това с помощта на като изберете Вмъкване, след това Модул.

Рамката Незабавно се използва предимно по време на тестване и отстраняване на грешки. Вероятно ще използвате това най-често като изходен прозорец за вашите изрази Debug.Print. Това може да бъде полезно при отстраняване на грешки във вашия код. Рамката Незабавно е скрита по подразбиране, така че е добре да я активирате в менюто Преглед.

Рамката Watch е подобна на другите прозорци за наблюдение на програмите за отстраняване на грешки. Позволява ви да наблюдавате стойностите на променливите, когато вашият код работи/отстранява грешки. За да наблюдавате променлива, трябва да изберете текста на променливата в кодовата рамка и да щракнете върху бутона Добавяне на наблюдение. След това променливата трябва да се вижда в рамката Watch и трябва да се попълва, докато се изпълнява кодът на VBA.

И накрая, основната кодираща рамка е голямата в центъра, където ще правите по-голямата част от действителното си кодиране. Това е мястото, където пишете и редактирате своя Visual Basic. Ще разгледаме езика за програмиране по-късно, но този редактор е подобен на повечето редактори за кодиране: ключовите думи са маркирани, съществува довършване на раздели за повечето методи, обекти и т.н., а помощта и предложенията са лесно достъпни. Самият език не зависи от малки и големи букви, нито отстъпите са задължителни, но и двете могат да помогнат.

Очаквайте Basic VBA за Script Kiddies...