• Главная
  • Карта сайта
Не найдено

Проникнення через USB

  1. WARNING!

Як правило, більшість пентестов проводяться за досить простою схемою. Спочатку за допомогою соціальної інженерії забезпечується доступ до цільової середовищі або її окремим ланці, а потім проводиться її зараження технічними засобами. Варіації проведення атаки можуть бути різними, однак зазвичай класичний пентест - це сплав технічної частини та соціальної інженерії в самих різних пропорціях. Недолік класичного пентеста полягає в тому, що треба «намацати» того самого співробітника і після цього переходити до наступного етапу. Якби можна було автоматизувати процес пошуку слабкої ланки і його подальшу експлуатацію, то це могло б прискорити процес пентестінга і значно підвищити кінцеві шанси на успіх.

WARNING!

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

Згідно відомої статистикою, наведеною антивірусними компаніями, близько 30% користувачів не користуються антивірусами, просто відключають їх чи не оновлюють бази. Відштовхуючись від цього, можна стверджувати, що в будь-якої середньостатистичної компанії знайдеться певна група людей, яка дуже зневажливо ставиться до інформаційної безпеки, і, в свою чергу, саме цих людей доцільно використовувати для проведення атаки. Крім того, будь-яка функціонуюча система може бути схильна до впливу цілого ряду випадкових факторів, які також можуть тимчасово паралізувати систему безпеки:

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

Досить тільки включити уяву, і можна додати ще десяток варіантів розвитку подій. Резюмуючи сказане, можна стверджувати, що в будь-якої середньостатистичної організації є потенційно ненадійні співробітники і іноді виникають обставини, які можуть порушити звичну роботу і паралізувати захист. Тому якщо вдарити в потрібному місці в потрібний час, то атака буде успішна.

Тому якщо вдарити в потрібному місці в потрібний час, то атака буде успішна

Процентне співвідношення комп'ютерів на наявність real-time захисту

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

Фактично завдання зводиться до того, щоб знайти людину, яка забиває на безпеку, і чому б не використати для цього флешки?

Багато вирусописатели дуже полюбили флеш-носії, так як вони дозволяють легко і швидко заражати комп'ютери і навіть самий елементарний USB-вірус має непогані шанси на успіх. Бум autorun-вірусів, який припав на 2008 рік, через п'ять років не збавляє обертів, більш того, USB-віруси стали ще нахабніше і часом навіть не приховують своєї присутності. І в той же час заражена флешка - це універсальний індикатор грамотності її власника в питанні елементарної ІБ. Наприклад, якщо зібрати десять флешок у різних людей, то напевно у трьох-чотирьох з них будуть на флешках віруси. Якщо через тиждень повторно взяти у цих людей флешки, то у двох-трьох віруси залишаться. Виходячи з цього, можна стверджувати, що на комп'ютерах, з якими працюють з даної флешки, не варто навіть сама елементарна захист або вона з якихось причин відключена або не працює зовсім. Таким чином, навіть якщо поширювати самий пересічний вірус, який успішно детектив усіма антивірусами, тільки серед даної групи людей, то він зможе заразити велику кількість комп'ютерів, перш ніж буде виявлений. А раз ці комп'ютери не мають захисту, то також він довго зможе залишатися працездатним.

Схильність комп'ютерним загрозам виходячи з наявності real-time захисту

На певний комп'ютер, до якого періодично підключають флешки, встановлюємо спеціальну програму, що працює за наступним алгоритмом. При підключенні черговий флешки програма намагається визначити, чи заражена вона. Так як не можна врахувати все різноманіття USB-вірусів, то має сенс використовувати евристичний підхід визначення зараження на основі наступних критеріїв:

  • наявність файлу autorun.inf;
  • атрибути файлів RHS;
  • малий розмір підозрілого файлу;
  • файлова система не NTFS;
  • відсутність папки c ім'ям autorun.inf;
  • наявність файлів ярликів.

Якщо дана флешка заражена, то програма записує її в базу з серійним номером і хешу підозрілого файлу. Якщо через кілька днів флешка повторно підключається до комп'ютера (а таке відбувається майже завжди) і на ній все так же залишаються підозрілі файли, то проводиться її зараження нашим «вірусом»; якщо ж підозрілого файлу не залишилося, то програма видаляє з бази серійний номер цієї флешки. Коли ж заражається новий комп'ютер, вірус запам'ятовує серійний номер материнської флешки і ніколи її не заражає і не аналізує, щоб через деякий час не видати себе, якщо власник флешки «порозумнішає».

Для отримання серійного номера напишемо наступну функцію на основі API GetVolumeInformation:

String GetFlashSerial (AnsiString DriveLetter) {DWORD NotUsed; DWORD VolumeFlags; char VolumeInfo [MAX_PATH]; DWORD VolumeSerialNumber; GetVolumeInformation (AnsiString (DriveLetter + ": \\"). C_str (), NULL, sizeof (VolumeInfo), & VolumeSerialNumber, & NotUsed, & VolumeFlags, NULL, 0); String S; return S.sprintf ( "% X", VolumeSerialNumber); }

Треба відзначити, що функція GetFlashSerial отримує не статичний унікальний кодифікатор пристрою, а лише серійний номер тому. Цей номер задається випадковим числом і, як правило, змінюється кожен раз при форматуванні пристрою. У наших же цілях досить тільки серійного номера флешки, так як завдання жорсткої прив'язки не варто, а форматування має на увазі повне знищення інформації, фактично прирівнюючи отформатированную флешку до нової.

Тепер приступимо до реалізації самої евристики.

bool IsItABadFlash (AnsiString DriveLetter) {DWORD NotUsed; char drive_fat [30]; DWORD VolumeFlags; char VolumeInfo [MAX_PATH]; DWORD VolumeSerialNumber; GetVolumeInformation (AnsiString (DriveLetter + ": \\"). C_str (), NULL, sizeof (VolumeInfo), & VolumeSerialNumber, & NotUsed, & VolumeFlags, drive_fat, sizeof (drive_fat)); bool badflash = false; if ((String (drive_fat)! = "NTFS") && (FileExists (DriveLetter + ": \\ autorun.inf"))) {DWORD dwAttrs; dwAttrs = GetFileAttributes (AnsiString (DriveLetter + ": \ \ autorun.inf"). c_str ()); if ((dwAttrs & FILE_ATTRIBUTE_SYSTEM) && (dwAttrs & FILE_ATTRIBUTE_HIDDEN) && (dwAttrs & FILE_ATTRIBUTE_READONLY)) {badflash = true; }} If (! Badflash) {TSearchRec sr; FindFirst (DriveLetter + ": \\ *. Lnk", faAnyFile, sr); int filep = sr.Name.LastDelimiter ( "."); AnsiString filebez = sr.Name.SubString (1, filep-1); if (DirectoryExists (DriveLetter + ": \\" + filebez)) {DWORD dwAttrs = GetFileAttributes (AnsiString (DriveLetter + ": \\" + filebez) .c_str ()); if ((dwAttrs & FILE_ATTRIBUTE_SYSTEM) && (dwAttrs & FILE_ATTRIBUTE_HIDDEN)) {badflash = true; }}} Return badflash; }

Алгоритм евристичної функції досить простий. Спочатку ми відсіюємо всі пристрої з файловою системою NTFS і ті, які не містять файл autorun.inf. Як правило, всі флешки за замовчуванням йдуть з файлової системою FAT32 (рідше FAT і ще рідше exFAT), проте іноді системні адміністратори або інші співробітники IT-відділу форматують їх в систему NTFS для своїх потреб. «Розумники» нам не потрібні, їх ми відразу виключаємо. Наступним етапом перевіряємо файл autorun.inf на атрибути «прихований» і «системний». Файл autorun.inf може належати і абсолютно законною програмі, але якщо в ньому присутні дані атрибути, то можна з дуже великою ймовірністю стверджувати, що флешка заражена вірусом.

Зараз багато вирусописатели стали рідше використовувати файл autorun.inf для зараження машин. Причин одразу кілька: по-перше, майже всі антивіруси або користувачі відключають опцію автозапуску; по-друге, на комп'ютері може бути кілька вірусів, що використовують однаковий спосіб поширення, і кожен з них перезаписує файл на свій лад. Тому все частіше почав використовуватися спосіб зараження через створення ярликів і приховування оригінальних папок. Щоб не залишити і ці флешки без уваги, ми перевіряємо наявність файлу ярлика і наявність папки з таким же ім'ям в корені томи. Якщо при цьому папка також має атрибути «прихований» і «системний», то помічаємо цю флешку як заражену.

Звичайно, евристика має свої похибки і нюанси, тому є сенс її ретельно опрацювати до конкретного завдання, проте в нашому випадку можна з 100% -й вірогідністю стверджувати її коректність.

Якщо з магічними аналізом флешки все в цілому ясно, то з «зараженням» можливі нюанси. Наприклад, можна просто перезаписати старий вірус нашим без будь-яких поправок в файл autorun.inf, файли, ярлики та інше. Таким чином, наш «вірус» отримає управління на новому комп'ютері, але попередньо краще також зробити стару копію вірусу і зберегти в тому ж каталозі з трохи відрізняється ім'ям. Якщо з якихось причин на іншому комп'ютері буде працювати антивірус, то він виявить старий вірус, видалить його, видасть користувачеві попередження про успішне знищення загрози - і тим самим забезпечить помилкове відчуття безпеки у користувача, а наш «вірус» залишиться непоміченим.

Крім цього, в грудневому випуску «Хакера» ми також писали про уразливість DLL hijacking в різному ПО і про його ефективному застосуванні. Тому якщо передбачається, що на флешках можуть перебувати такі програми, як менеджери паролів або портативні версії різного ПО, то має сенс використовувати дану уразливість і тим самим розширити спектр уражених машин і цінність отриманих даних для пентеста.

До речі, не завжди має сенс вдаватися до зараження флешок. Наприклад, якщо у ІБ-відділу стоїть завдання просто періодичного моніторингу співробітників на наявність «ненадійних людей», то розумніше встановити дану програму на кілька машин і просто записувати серійні номери флешок і час створення шкідливого файлу для збору статистики. Тим самим не потрібно буквальним чином обшукувати всіх співробітників, і при цьому зберігається конфіденційність даних на флешках, а на основі отриманих даних можна судити також про можливе зараження домашніх комп'ютерів користувачів і стану ІБ в цілому. Адже, як ми вже писали раніше, будь-яка система схильна до випадкових факторів і не виключений ризик появи загроз.

Значення найпопулярніших загроз

Розгорнувши програму у відносно середньої за масштабом мережі, вже через тиждень ми отримали досить красномовні дані. Більше 20% всіх підключених флешок були інфіковані яким-небудь вірусом або трояном, і більше 15% як і раніше залишалися інфікованими під час наступного з'єднання через пару днів. Треба також зазначити, що на багатьох комп'ютерах стояла антивірусний захист, яка періодично виконувала свої обов'язки. Однак то звичне байдужість до вискакує попередження антивіруса, до якого вже давно звикли користувачі при підключенні флешки, не дозволяла їм припустити, що вони мають справу із зовсім іншою загрозою. Помилкове відчуття безпеки дозволяло користувачам без збентеження підключати флешку до різних комп'ютерів, а нашій програмі успішно робити свою справу.

Графічне порівняння найпопулярніших загроз

  • Встановлюємо нашу програму на комп'ютери в компанії.
  • Скануємо підключаються флешки на наявність ознак зараженості.
  • «Заражати» флешки користувачів нашим тестовим «вірусом» або переписуємо їх номери для статистики.
  • Доповідаємо начальству, караємо користувачів-раздолбаев, тримаємо, нє пущать і забороняємо.

Підводячи риску, можна сказати, що головний недолік цього методу - його невизначеність. Ніхто не знає, коли саме до комп'ютера буде підключена та сама «підходяща» флешка, оскільки це сильно залежить від середовища, в якій розгорнута програма. Однак цей недолік не применшує головної переваги методу. Можна дуже довго залишатися непоміченими і, розчиняючись серед інших загроз, вражати все нові і нові машини повністю в автоматичному режимі. Нескладно помітити, що така методика має певний ефект масштабу. Чим більше співробітників працює в організації і чим різноманітніше внутрішні комунікації, тим більший буде результат. Хоча цей підхід буде відмінно працювати в структурі абсолютно будь-якого масштабу, адже його основне завдання зводиться до масового ураження системи, а до цільового удару по самому слабкій ланці - людині. ] [

Фактично завдання зводиться до того, щоб знайти людину, яка забиває на безпеку, і чому б не використати для цього флешки?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью