
Овај чланак је део серије малвера без датотека. Сви остали делови серије:
- Адвентурес оф тхе Елусиве Малваре, Део ИВ: ДДЕ и Ворд Доцумент Фиелдс (ми смо овде)
У овом чланку, желео сам да зароним у још сложенији сценарио напада без датотека у више фаза са причвршћивањем на систем. Али онда сам наишао на невероватно једноставан напад без кода — нису потребни Ворд или Екцел макрои! И ово много ефикасније доказује моју првобитну хипотезу која лежи у основи ове серије чланака: разбијање спољног периметра било које организације уопште није тежак задатак.
Први напад који ћу описати користи рањивост Мицрософт Ворд-а на којој се заснива застарело (ДДЕ). Већ је била . Други користи општију рањивост у Мицрософт ЦОМ-у и могућностима преноса објеката.
Повратак у будућност са ДДЕ
Да ли се још неко сећа ДДЕ? Вероватно не много. Био је то један од првих међупроцесни комуникациони протоколи који су омогућавали апликацијама и уређајима да преносе податке.
И мени је то мало познато јер сам некада проверавао и тестирао телеком опрему. У то време, ДДЕ је дозволио, на пример, оператерима кол центара да пренесу ИД позиваоца у ЦРМ апликацију, која је на крају отворила корисничку картицу. Да бисте то урадили, морали сте да повежете РС-232 кабл између телефона и рачунара. То су били дани!
Како се испоставило, Мицрософт Ворд је и даље ДДЕ.
Оно што овај напад чини ефикасним без кода је то што можете приступити ДДЕ протоколу директно из аутоматских поља у Ворд документу (капа доле СенсеПост-у за о томе).
Кодови поља је још једна древна МС Ворд функција која вам омогућава да додате динамички текст и мало програмирања у ваш документ. Најочигледнији пример је поље за број странице, које се може уметнути у подножје помоћу вредности {ПАГЕ *МЕРГЕФОРМАТ}. Ово омогућава да се бројеви страница аутоматски генеришу.

Савет: Ставку менија Поље можете пронаћи у оквиру Уметање.
Сећам се да сам био задивљен када сам први пут открио ову функцију у Ворд-у. И док га закрпа није онемогућила, Ворд је и даље подржавао опцију ДДЕ поља. Идеја је била да ДДЕ омогући Ворд-у да комуницира директно са апликацијом, како би потом могао да проследи излаз програма у документ. То је била веома млада технологија у то време – подршка за размену података са спољним апликацијама. Касније је развијена у ЦОМ технологију, коју ћемо такође погледати у наставку.
На крају су хакери схватили да ова ДДЕ апликација може бити командна љуска, што је наравно покренуло ПоверСхелл, а одатле су хакери могли да раде шта год желе.
Снимак екрана испод показује како сам користио ову прикривену технику: мала ПоверСхелл скрипта (у даљем тексту ПС) из ДДЕ поља учитава другу ПС скрипту, која покреће другу фазу напада.

Хвала Виндовс-у на искачућем упозорењу да уграђено ДДЕАУТО поље тајно покушава да покрене љуску
Преферирани метод искоришћавања рањивости је коришћење варијанте са пољем ДДЕАУТО, које аутоматски покреће скрипту при отварању Ворд документ.
Хајде да размислимо шта можемо да урадимо поводом овога.
Као хакер почетник, можете, на пример, да пошаљете пхисхинг емаил, претварајући се да сте из Федералне пореске службе, и да уградите ДДЕАУТО поље са ПС скриптом за прву фазу (у суштини дроппер). И не морате чак ни да радите никакво право кодирање макроа, итд., као што сам ја урадио
Жртва отвара ваш документ, уграђена скрипта се активира, а хакер завршава унутар рачунара. У мом случају, удаљена ПС скрипта само штампа поруку, али може исто тако лако да покрене ПС Емпире клијент, који ће обезбедити даљински приступ љусци.
И пре него што жртва стигне било шта да каже, хакери ће се показати као најбогатији тинејџери у селу.

Шкољка је покренута без и најмањег кода. Чак и дете то може!
ДДЕ и поља
Мицрософт је касније онемогућио ДДЕ у Ворд-у, али не пре него што је компанија изјавила да је ова функција једноставно злоупотребљена. Њихово неспремност да било шта промене је разумљиво. По мом искуству, и сам сам видео пример где је ажурирање поља приликом отварања документа било омогућено, али су Ворд макрои онемогућени од стране ИТ (али приказују обавештење). Успут, одговарајућа подешавања можете пронаћи у одељку Ворд подешавања.
Међутим, чак и ако је ажурирање поља омогућено, Мицрософт Ворд додатно обавештава корисника када поље захтева приступ избрисаним подацима, као што је случај са ДДЕ изнад. Мицрософт вас заиста упозорава.
Али највероватније ће корисници и даље игнорисати ово упозорење и активирати ажурирање поља у Ворд-у. Ово је једна од ретких прилика да се захвалимо Мицрософту што је онемогућио опасну ДДЕ функцију.
Колико је данас тешко пронаћи Виндовс систем без закрпе?
За ово тестирање користио сам АВС Воркспацес за приступ виртуелној радној површини. На овај начин сам добио виртуелну машину МС Оффице без закрпа која ми је омогућила да убацим ДДЕАУТО поље. Не сумњам да на сличан начин можете пронаћи и друге компаније које још нису инсталирале потребне сигурносне закрпе.
Мистерија објеката
Чак и ако сте инсталирали ову закрпу, постоје и друге безбедносне рупе у МС Оффице-у које омогућавају хакерима да ураде нешто веома слично ономе што смо ми урадили са Ворд-ом. У следећем сценарију ћемо научити користите Екцел као мамац за пхисхинг напад без писања било каквог кода.
Да бисмо разумели овај сценарио, хајде да се сетимо Мицрософт Цомпонент Објецт Модел, или укратко ЦОМ (компонентни објектни модел).
ЦОМ постоји од 1990-их и дефинисан је као „језички неутралан, објектно оријентисан компонентни модел“ заснован на позивима удаљених РПЦ процедура. За опште разумевање ЦОМ терминологије, прочитајте на СтацкОверфлов.
У основи, можете замислити ЦОМ апликацију као извршну датотеку Екцел или Ворд или неку другу бинарну датотеку која се покреће.
Испоставило се да се ЦОМ апликација такође може покренути тхе сцрипт — ЈаваСцрипт или ВБСцрипт. Технички се то зове сцриптлет. Можда сте видели екстензију .сцт за датотеке у Виндовс-у – ово је званична екстензија за скриптлете. У суштини, они су код скрипте умотан у КСМЛ омотач:
<?XML version="1.0"?>
<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[
var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");
]]>
</script>
</scriptlet>
Хакери и пентестери су открили да у Виндовс-у постоје одвојени услужни програми и апликације које прихватају ЦОМ објекте и, сходно томе, скриптлете.
Могу да пренесем скриптлет у Виндовс услужни програм написан у ВБС-у познат као пубпрн. Налази се у дубинама Ц:Виндовссистем32Принтинг_Админ_Сцриптс. Иначе, постоје и други Виндовс услужни програми који прихватају објекте као параметре. Хајде да прво погледамо овај пример.

Сасвим је природно да се шкољка може покренути чак и из скрипте за штампање. Иди Мицрософт!
Као тест, направио сам једноставан удаљени скриптлет који покреће љуску и штампа смешну поруку, „Управо сте скриптовани!“ У суштини, пубпрн инстанцира објекат скриптлета, дозвољавајући ВБСцрипт коду да покрене омотач. Овај метод пружа јасну предност хакерима који желе да се ушуњају и сакрију на вашем систему.
У следећем посту, објаснићу како хакери могу да искористе ЦОМ скриптлете користећи Екцел табеле.
За свој домаћи задатак, погледајте из Дербицон-а 2016, који објашњава како су хакери користили скриптлете. И такође читати о скриптлетима и некој врсти надимка.
Извор: ввв.хабр.цом
