Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.pdf
Скачиваний:
24
Добавлен:
19.04.2024
Размер:
31.35 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

orthanc.lua в материалах к этой книге или перейдите по адресу https://

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

nostarch.com/practical-iot-hacking/.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Работа с Lua

Lua – это язык сценариев для создания расширяемых модулей или модулей с поддержкой сценариев во многих важных проектах безопасности­ , таких как Nmap, Wireshark и даже коммерческих про- дуктах безопасности­ , таких как NetMon от LogRhythm. Некоторые из продуктов, которые вы используете ежедневно, скорее всего, рабо- тают на Lua. Многие устройства IoT также используют Lua из-за его небольшого двоичного размера и хорошо документированного API, что упрощает использование для расширения проектов на других языках, таких как C, C ++, Erlang и даже Java. Это делает Lua идеаль- ным для встраивания в приложения. Вы узнаете, как представлять данные и работать с ними в Lua, а также как популярные программы наподобие Wireshark и Nmap используют Lua для расширения своих возможностей анализа трафика, исследования сетей и эксплуатации уязвимостей.

Общие сведения о протоколе DICOM

DICOM – непатентованный протокол, разработанный Американским колледжем радиологии и Национальной ассоциацией производите- лейэлектрооборудования.Онсталмеждународнымстандартомпере- дачи, хранения и обработки информации о медицинских изображе- ниях. Хотя DICOM не является проприетарным, это хороший пример сетевого протокола,реализованного во многих медицинских устрой- ствах; притом традиционные инструменты сетевой безопасности­ не очень хорошо его поддерживают.Связь DICOM через TCP/IP является двусторонней:клиентзапрашиваетдействие,асервервыполняетего, но при необходимости они могут меняться местами.В терминологии

DICOM клиент называется пользователем, вызывающим службу (Ser- vice Call User, SCU), а сервер – поставщиком вызываемой службы (Ser- vice Call Provider, SCP). Перед тем как приступить к написанию кода, рассмотрим некоторые важные сообщения DICOM и структуру про- токола.

Сообщения C-ECHO

Сообщения DICOM C-ECHO служат, среди прочего, для обмена ин- формацией о вызывающих и вызываемых приложениях, объектах, версиях, уникальных идентификаторах (UID), именах и ролях. Мы обычно называем эти сообщения DICOM-запросами, поскольку они позволяют определить, находится ли поставщик услуг DICOM в сети. Сообщение C-ECHO использует несколько сообщений типа A,так что мы будем искатьих в этом разделе.Первый пакет,который отправля- ет операция C-ECHO,–это запрос A-ASSOCIATE,которого достаточно

128  Глава 5

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для идентификации поставщика услуг DICOM. Из ответа A-ASSOCI-

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

ATE вы можете получить информацию об услуге.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Блоки данных протокола A-типа (Protocol Data Units,PDU)

Существует семь типов сообщений типа A, используемых в сообще-

ниях C-ECHO:

zzзапрос A-ASSOCIATE (A-ASSOCIATE-RQ): запросы, отправлен-

ные клиентом для установления соединения DICOM;

zzA-ASSOCIATE accept (A-ASSOCIATE-AC):ответы,отправленные сервером для принятия запроса DICOM A-ASSOCIATE;

zzотклонение A-ASSOCIATE (A-ASSOCIATE-RJ): ответы, отправ-

ленные сервером,чтобы отклонитьзапрос DICOMA-ASSOCIATE;

zz(P-DATA-TF): пакеты данных, отправленные сервером и клиен- том;

zzзапрос A-RELEASE (A-RELEASE-RQ): запрос, отправленный клиентом, чтобы закрыть соединение DICOM;

zzответ A-RELEASE (PDU A-RELEASE-RP): ответ, отправленный сервером для подтверждения запроса A-RELEASE;

zzпрерывание A-ASSOCIATE (A-ABORT PDU): ответы, отправ-

ленные сервером для отмены операции A-ASSOCIATE.

Все эти PDU начинаются с аналогичной структуры пакета. Первая часть–это однобайтовое целое число без знака в формате Big Endian, которое указываеттип PDU.Вторая часть–однобайтовый зарезерви- рованный раздел, установленный в 0x0. Третья часть – информация о длине PDU,четырехбайтовое целое число без знака в формате Little Endian. Четвертая часть – это поле данных переменной длины. Эта структура показана на рис. 5.3.

 

Тип PDU

Зарезервировано

Длина PDU

Данные

 

 

 

 

 

 

 

Размер в байтах

1

2

3

4

 

 

 

 

 

Переменная

 

 

 

 

длина

Рис.5.3.Структура PDU DICOM

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

Генерация трафика DICOM

Длядальнейшихдействийнарядусэтимупражнениемвамнеобходи- мо настроить сервер и клиент DICOM.Orthanc–это надежный сервер DICOM с открытым исходным кодом, работающий в Windows, Linux

Анализ сетевых протоколов  129

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

и macOS.Установите его в своей системе,убедитесь,что в файле кон-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

фигурации включен флаг DicomServerEnabled, и запустите двоичный

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

файл Orthanc. Если все сработало правильно, у вас должен появиться сервер DICOM, работающий на TCP-порту 4242 (порт по умолчанию). Введите команду orthanc, чтобы просмотреть следующие журналы с описанием параметров конфигурации:

$ ./Orthanc

<timestamp> main.cpp:1305] Orthanc version: 1.4.2

<timestamp> OrthancInitialization.cpp:216] Using the default Orthanc configuration

<timestamp> OrthancInitialization.cpp:1050] SQLite index directory: "XXX" <timestamp> OrthancInitialization.cpp:1120] Storage directory: "XXX" <timestamp> HttpClient.cpp:739] HTTPS will use the CA certificates from this file: ./orthancAndPluginsOSX.stable

<timestamp> LuaContext.cpp:103] Lua says: Lua toolbox installed <timestamp> LuaContext.cpp:103] Lua says: Lua toolbox installed <timestamp> ServerContext.cpp:299] Disk compression is disabled <timestamp> ServerIndex.cpp:1449] No limit on the number of stored patients <timestamp> ServerIndex.cpp:1466] No limit on the size of the storage area

<timestamp> ServerContext.cpp:164] Reloading the jobs from the last execution of Orthanc

<timestamp> JobsEngine.cpp:281] The jobs engine has started with 2 threads <timestamp> main.cpp:848] DICOM server listening with AET ORTHANC on port: 4242

<timestamp> MongooseServer.cpp:1088] HTTP compression is enabled <timestamp> MongooseServer.cpp:1002] HTTP server listening on port: 8042 (HTTPS encryption is disabled, remote access is not allowed) <timestamp> main.cpp:667] Orthanc has started

Если вы не хотите устанавливать сервер Orthanc,можете найти об- разцы перехваченных пакетов в онлайн-ресурсах для этой книги или настраницеWireshark,гдепредставленыобразцыпакетовдляDICOM.

Включение Lua в Wireshark

Прежде чем переходить к коду, убедитесь, что вы установили Lua и включили его в своих настройках Wireshark. Вы можете проверить, доступен ли он, в окне About Wireshark (О программе Wireshark) –

см. рис. 5.4.

Движок Lua по умолчанию отключен. Чтобы включить его, устано- вите для логической переменной disable_lua значение false в файле init.lua из каталога установки Wireshark:

disable_lua = false

После проверки доступности и включения Lua удостоверьтесь, что поддержка Lua работаетправильно,написавтестовый сценарий и за- пустив его следующим образом:

130  Глава 5

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

$ tshark -X lua_script: <ваш тестовый сценарий Lua>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Рис.5.4.Окно About Wireshark показывает,что Lua поддерживается

Если мы включим простой оператор печати (например, строку print "Hello from Lua") втестовый файл,мыдолжны увидетьрезультат до начала захвата.

$ tshark -X lua_script:test.lua

Hello from Lua Capturing on 'ens33'

В Windows вы можете не увидеть вывод, если используете обыч- ный оператор вывода на печать.Но функция report_failure() откро- ет окно, содержащее ваше сообщение, так что можно обойтись и без оператора печати.

Определение диссектора

Давайте определим наш новый диссектор протокола с помощью функции Proto(имя, описание). Как упоминалось ранее, он будет специально идентифицировать сообщения DICOM A-типа (одно из семи сообщений, перечисленных ранее):

Анализ сетевых протоколов  131