Просмотров: 6947

Принтер, как источник угрозы. Часть 1


Продолжение материала — начинаем практические копания, начало вот тута.

Оглядываемся вокруг

Перед нашим принтерным исследованием хорошо бы сначала определить список доступных для чужака в вашей локальной сети принтеров. Я предпочитаю пользоваться Nmap, но для любителей графических оболочек, часть работы специально проделаю в программе CAIN. Последняя, будучи запущена с указанным диапазоном с легкостью находит все подключенные принтеры, добывая информацию методом прямого сканирования.

CAIN принтеры угрозы взлом компрометация уязвимость перепрошивка PJL HP Canon Samsung МФУ MFU атака сетевые принтеры безопасность защита угрозы секьюрити

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

Далее я применяю Nmap для уточнения деталей работы каждого конкретного устройства из полученного списка:

$: nmap -A 192.168.1.1 -T insane
Starting nmap 3.89 ( http://www.insecure.org/nmap/ ) at 2011-12-19 11:39 EDT
Interesting ports on 192.168.1.1:
(The 1656 ports scanned but not shown below are in state: closed)
PORT STATE SERVICE VERSION
23/tcp open telnet?
80/tcp open http?
515/tcp open printer lpd (error: Illegal service request)
631/tcp open ipp?
9100/tcp open jetdirect?
Nmap finished: 1 IP address (1 host up) scanned in 44.690 seconds

Здесь видно, что принтер находится на стандартном для него порту — 9100. Другим простым способом нахождения принтеров может служить сканер SNMP-сервисов. Как пример подобной простой и бесплатной утилиты могу привести SNScan.

SNScan принтеры угрозы взлом компрометация уязвимость перепрошивка PJL HP Canon Samsung МФУ MFU атака сетевые принтеры безопасность защита угрозы секьюрити

И, наконец, поскольку живем-то мы в век глобализации и стирания (в том числе и межофисных) границ, давайте выйдем за пределы конкретной локальной сети и поищем подключенные к сети принтеры глобально по всему миру, для чего воспользуемся доступным всем Google.

Вот пример поискового запроса в Google для поиска некоторых принтеров фирмы HP:

inurl:hp/device/this.LCDispatcher

Точно таким же образом можно легко найти принтеры других фирм, например от Ricoh (три разных варианта поисковых запросов на каждой отдельной строчке):

intitle:"web image monitor"
"/web/user/en/websys/webArch/mainFrame.cgi"
inurl:"/en/sts_index.cgi"

Я намеренно в этих запросах сужаю условия поиска, чтобы не шокировать вас десятками тысяч доступных для внешнего управления принтеров, но щелкая даже по выбранными здесь принтерам и выборочно отменяя/запуская задания через их web-панели управления, каждому стоит основательно задуматься над вопросом: сделал ли я как администратор всё, чтобы защитить свою сеть от вторжений?

Что касается web-поиска, то наиболее эффективно искать конкретные модели принтеров, адаптируя поисковые запросы индивидуально к «видовым особенностям» каждого отдельного принтера (путь это будет первым домашним заданием — найти через Google не менее 10 000 открытых для удаленного доступа принтера, что, кстати говоря, довольно плёвое дело)

Итак, в примерах выше нами было найдено множество сетевых принтеров по всему миру, и все они — к вашим услугам. Далее в статье мы покажем простые примеры того, как можно послать «Привет!» их администраторам.

Простейшие операции

Будем считать, что в прошлом примере мы наглядно показали, как злоумышленники находят принтеры-жертвы, а теперь, давайте рассмотрим простейшие операции, которые доступны для удаленного исполнения.

На рисунке ниже можно увидеть типичный вид веб-панели управления принтера доступную через браузер. В качестве самого простого начального упражнения посмотрим, как те же самые данные можно получить и изменить через обычный telnet . У всех моделей принтеров все операции более-менее похожи, важно знать лишь две отправные команды, с помощью которых можно узнать все остальные. Это, во-первых, знак «?», который выводит список всех доступных команд с краткими пояснениями к ним, и, во-вторых, «\» — выводящий все текущие настройки принтера (с названиями соответствующих переменных), как отправную точку для начала всех модификаций.

авторизация панель принтеры угрозы взлом компрометация уязвимость перепрошивка PJL HP Canon Samsung МФУ MFU атака сетевые принтеры безопасность защита угрозы секьюрити

И последнее на чем стоит акцентировать внимание, что по умолчанию на большинстве принтеров пароль отсутствует (или стоит заводской — один для всей серии; кстати, стандартные пароли для принтеров разных серий и производителей можно найти в этих списках), поэтому первым делом следует «закрыть за собой дверь на замок» с помощью принтерной команды passwd .

А теперь — демонстрация простейшего сеанса связи с сетевым принтером через интернет, который физически находится от меня на другом конце земного шара:

Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
HP JetDirect
> /
===JetDirect Telnet Configuration===
Firmware Rev. : 22.18.2
MAC Address  : 01:01:e1:28:13:e0
Config By  : USER SPECIFIED 
IP Address  : 192.168.1.1
Subnet Mask  : 255.255.255.0
Default Gateway : 192.168.1.12
Syslog Server : Not Specified
Idle Timeout : 70 Seconds
Set Cmnty Name : Not Specified
Host Name  : Not Specified
DHCP Config  : Disabled 
Passwd   : Disabled 
IPX/SPX   : Disabled 
DLC/LLC   : Disabled 
Banner page  : Enabled 
> host-name:PLAYGROUND
> ip: 192.168.100.1
> subnet-mask: 255.255.255.0
> default-gw: 192.168.2.99
> quit

Я использовал уже описанную команду «\» для вывода текущих настроек принтера, после чего переопределил некоторые из них.

Удаленная печать на принтере

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

Я уже показал пример работы через telnet выше (более подробно про это можно почитать вот тут), и для развития наших навыков поднимаю планку — теперь мы напишем простейшим Perl-скрипт:

#!/usr/bin/perl -w 
#File name: prnmsg.pl 
use IO::Socket; 
$iphost = $ARGV[0]; 
$textprn = $ARGV[1]; 
my $mysock = new IO::Socket::INET ( 
 PeerAddr => $iphost, 
 PeerPort => '9100', 
 Proto => 'tcp', ); 
die "NETWORK ERROR: Could not create socket! $!\n" stuff $mysock;
print $mysock $textprn; 
close($mysock);

После запуска этого скрипта укажите в командной строке в качестве первого аргумента ip-адрес целевого принтера, а вторым аргументом — сообщение, которое вы хотите удаленно распечатать.

Здесь мы молча предполагаем, что управляющий канал принтера находится на порту 9100 (что в большинстве случаев так и будет). Для определенности подчеркну, что здесь и далее все эти скрипты были протестированы мною на нескольких моделях HP JetDirect, хотя с большой вероятностью будут также работать и на других принтерах.

В качестве очередного домашнего задания я предлагаю написать легкую вариацию этого скрипта, который работал бы в более глобальных масштабах, для чего принимал в своем первом аргументе диапазон адресов в виде 192.168.1.* , — теперь при его запуске все принтеры в вашем офисе будут заняты работой.

~

Читать этот материал дальше. Оглавление и начало этой серии статей — здесь.

Игорь Савчук ©  Системный Администратор, 2012
twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , ,
Эта запись опубликована: Четверг, 2 августа 2012 в рубрике Обзоры.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз