19.10.2014

Сканирование и создание скриншотов различных сетевых служб

image

Во время конференции Defcon 22, @ErrataRob, @paulm и @Viss массово просканировали интернет и доложили о результатах своей работы. Многие были весьма недовольны тем, что @Viss выложил несколько скриншотов, касаемых VNC-сервисов, в своем микроблоге. После этого он опубликовал статью, в которой также обобщались результаты сканирования интернета, после чего Кашмир Хилл написал заметку о незащищенных VNC-сервисах.

Автор: Bernardo Rodrigues

Во время конференции Defcon 22, @ErrataRob, @paulm и @Viss массово просканировали интернет и доложили о результатах своей работы. Многие были весьма недовольны тем, что @Viss выложил несколько скриншотов, касаемых VNC-сервисов, в своем микроблоге. После этого он опубликовал статью, в которой также обобщались результаты сканирования интернета, после чего Кашмир Хилл написал заметку о незащищенных VNC-сервисах.

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

VNC

Самый простой способ сделать скриншот VNC-службы – использовать уже существующие утилиты и скрипты, адаптируя их под ваши нужды. В случае с VNC-сервисами я использовал noVNC (HTML5 VNC client) и утилиту, работающую из командной строки, для захвата рендеров движка WebKit.

Весь процесс довольно незатейлив:

1. Клонируем проект noVNC: git clone git://github.com/kanaka/noVNC.

2. Запускаем мини веб-сервер и указываем местонахождение VNC-сервера, у которого мы хотим сделать скриншот: ./noVNC/utils/launch.sh --vnc 192.168.1.142:5900.

Рисунок 1: Клонирование проекта и запуск веб-сервера

3. Делаем скриншот веб-страницы из командной строки при помощи CutyCapt, например так:

cutycapt --url="http://127.0.0.1:6080/vnc_auto.html" --javascript=on --out=vnc.png --delay=3000

Рисунок 2: Пример скриншота веб-страницы, сделанного из командной строки при помощи CutyCapt

4. Получаем результаты.

Теперь, все что вам нужно, - массово просканировать хосты на использование портов 5900-5910 (используемые VNC-службами), сохранить результаты в текстовый файл и написать простой скрипт для создания скриншотов. Вы можете попробовать vncsnapshot, которым пользовался @paulm во время Toorcon 2013 talk.

RDP

Для создания скриншотов RDP-сервисов я использую Spark View. Существует версия под HTML5, а весь процесс создания скриншотов также прост и незатейлив, как и в случае с VNC:

1. Загружаем и устанавливаем Spark View под Windows или Linux. Следуйте процедуре из Admin Manual, установите J2SE JDK и настройте переменную окружения JAVA_HOME. Затем распакуйте, сконфигурируйте и скомпилируйте утилиты из архива commons-daemon-native.tar.gz. В Debian, возможно, вам понадобиться отредактировать SparkGateway.sh и поменять source function library на "/lib/lsb/init-functions".

2. Запускаем службу (./SparkGateway.sh start) и тестируем ее, подключаясь к локальному IP и 80-му порту. На сайте Remote Spark есть демо версия.

Рисунок 3: Служба готова к работе

3. Указываем настройки RDP сервера в параметре querystring и делаем скриншот веб-страницы при помощи утилиты, работающей из командной строки. Я буду использовать phantomjs + url-to-image.js:

phantomjs url-to-image.js "http://127.0.0.1/rdpdirect.html?gateway=127.0.0.1&server=192.168.1.189&width=800&height=600&color=16" rdp.png 800 600

Рисунок 4: Скриншот RDP сервиса

4. Получаем результат.

Некоторые коммерческие продукты (например, Nessus) также умеют подключаться к RDP сервисам и делать скриншоты. Скриншоты RDP-служб очень полезны для определения версии операционной системы (fingerprint operating system), идентификации доменов и пользователей, работающих в сети. Полученные скриншоты я обрабатываю утилитами наподобие tesseract и gocr для генерации словарей и другой полезной информации.

Рисунок 5: Результат работы gocr

Рисунок 6: Результат работы tesseract

HTTP

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

- Using Nmap to Screenshot Web Service (http-screenshot.nse)
- PaulDotCom Security Weekly 295 - Tech Segment

Рисунок 7: Как делаются скриншоты при помощи Nmap

- EyeWitness - A Web Application Triage and Info-Gathering Tool

Рисунок 8: Как делаются скриншоты при помощи EyeWitness

Заключение

Мне кажется, это советы окажутся полезными и помогут лучше понять, как работают сетевые службы. Теперь, когда репортеры все больше узнают о методах работы злоумышленников, у вас нет оправданий для того, чтобы оставлять свое «нижнее белье» незащищенным (то есть, например, делать доступной VNC и не устанавливать пароль). Также необходимо использовать стойкие пароли и разрешить Network Level Authentication в RDP-сервисах.

comments powered by Disqus