Принтер-шоу творимо хардкор своїми руками

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

З незрозумілих для мене причин багато принтерні вендори організували механізм оновлення прошивки так, що для його проведення навіть не потрібно знати системний пароль принтера. Більш того, для цього не потрібно завантажувати спеціальний менеджер виробника: будь-хто може виконати цю відносно нескладну процедуру віддалено, як через web-панель, так і через звичайний netcat, тоді як ініціювати її можна і зовсім через інтернет - посилкою «магічного» завдання для друку .

Трюк # 5. Робимо своє хмарне сховище

Отже, підсумуємо: мережевий принтер можна використовувати як велику віддалену «флешку» (або ftp-сервер, так як більшість з них підтримує цей протокол), на якому, як правило, відсутня пароль, тому для багатьох хакерів друкують устрою - ідеальне місце для створення прихованих від сторонніх очей «файлопомоек», які перебувають до того ж глибоко в тилу ворога і далеко позаду лінії фронту (всіх граничних офісних брандмауерів). Розмір вбудованого вінчестера на більшості сучасних моделей офісних принтерів коливається в діапазоні від 5 до 50Gb, що більш ніж достатньо для подібного спеціалізованого хостингу.

Принтер-шоу творимо хардкор своїми руками
Advanced printer storage

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

Трюк # 6. Прошитий в особливо збоченій формі

Але ми ж не друкувати зібралися на іншому краю світу? Тут видно (я обвів червоним) дуже важливе зауваження про можливість інтерпретації .rfu-файлів (навіть якщо його і немає в підписі на інший моделі принтера в цьому меню, rfu-команди все одно будуть майже напевно виконуватися) - тобто файлів-прошивки і спеціальних команд для управління принтером. Інакше кажучи, увагу: для того щоб перепрошити чуже пристрій через інтернет, при цьому як завгодно змінивши його функціональність, не потрібно знати навіть пароля - кожен принтер відкритий до своєї модифікації будь-якими сторонніми людьми. Наприклад, як вам така витівка: нешкідлива посилка будь-яких завідомо підтримуються (неіснуючих) команд до принтера призведе до його міцної блокування.

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

PJL (HP Printer Job Language) - це мова, який реалізує рівень контролю завдань і розширеного управління принтером. Так, наприклад, він забезпечує перемикання між мовами для документів, виведення повідомлень на контрольну панель, настройку конфігурації, команди з управління файловою системою принтера і багато-багато іншого. Відома хакерська утиліта Phenoelit's Hijetter дозволяє через мережу використовувати будь-які PJL-функції принтерів, в тому числі недокументовані, а також примонтировать його файлову систему до своєї локальної ФС. Незважаючи на запевнення виробників в безпечної реалізації PJL, досить зробити запит в Google по словосполученню "PJL exploits" щоб переконатися, що тут не все так гладко. Наприклад, часто офіційно заперечується можливість віддаленої перепрошивки принтерів, і в той же самий час в мові PJL все-таки міститься недокументированная функція remote firmware update (RFU). І, хоча деякі діалекти PJL дійсно не підтримують RFU, в процентному обчисленні це швидше виняток з правил.

Принтер-шоу творимо хардкор своїми руками

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

Насправді все дуже просто, повторюся: це єдиний цикл з єдиною командою на найпростішому до межі бейсікоподобном мовою PJL. Як чергового домашнього завдання, ви можете написати свій скрипт знаходить через мережу і прошивають ці мільйони мережевих принтерів, цим викликавши масові офісні пожежі на нашій прекрасній блакитній планеті. Хороша новина: ви можете стати частиною історії, легендою, у вас буде своя іменна сторінка у Вікіпедії. Погана новина: можна загриміти за цілою списку статей кримінального кодексу, тому я закликаю вас не робити цього, і в свою чергу я навмисно не наводжу останній лістинг «щоб уникнути». Цілі дослідницькі команди американських суперуніверстітетов витратили роки на те, про що я зараз так щедро ділюся з вами, тому вибачте, останній крок для Proof-of-Concept вам доведеться зробити самостійно.

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

Трюк # 7. Нам все по дефолту

Коли в останній раз ви міняли свій пароль доступу на принтері? За замовчуванням на більшості принтерів пароль відсутній (або стоїть заводський - один для всієї серії), знайти який можна вільно в Інтернеті, причому для принтерів самих різних серій і виробників (наприклад, тут або тут).

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

довгоочікуване закінчення

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