Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / практический хакинг.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

 

 

цинских устройствах и клинических системах. Тем не менее почти

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

никакие инструменты безопасности­

 

w

 

df-x chan

 

o

 

не поддерживают DICOM, так

.

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

e

 

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

Проверка сетевых протоколов

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

Сбор информации

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

Перечисление и установка клиентов

Когда у вас появится доступ к документации, найдите все приложе- ния-клиенты,которые могутсвязываться с протоколом,и установите их. Вы можете использовать их для репликации и создания трафика по желанию.Различные клиенты могутреализовыватьпротокол с не- большими вариациями – обратите внимание на эти различия! Так- же проверьте, написали ли программисты реализации протокола на разных языках программирования. Чем больше клиентов и реализа- ций вы найдете,тем выше ваши шансы собрать полную информацию и воспроизвести сетевые сообщения.

Обнаружение зависимых протоколов

Выясните, действительно ли протокол зависит от других протоко- лов.Например,протокол Server Message Block (SMB) обычно работает сNetBiosчерезTCP/IP(NBT).Есливыпишетеновыеинструменты,вам необходимо знать все зависимости протокола, чтобы читать и пони- мать сообщения, а также создавать и отправлять новые. Обязательно выясните, какой транспортный протокол использует ваш протокол. Это TCP или UDP? А может быть, что-то еще – SCTP?

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

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

122  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нарии исследования сети Nmap могут не работать, если мы напишем

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

некорректное правило, а Wireshark может использовать неправильd-f-x chan

.c

 

 

.

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

ный анализатор/дешифратор низкого уровня (диссектор). Хотя есть обходные пути для решения этих проблем, лучше с самого начала иметь надежные правила сканирования.

Поиск дополнительной документации

Дляполучениядополнительнойдокументацииилипримеровзахвата посетите веб-сайт Wireshark. Проект Wireshark часто включает в себя захват пакетов и в целом является отличным источником информа-

ции.В проекте используется wiki (https://gitlab.com/wireshark/wireshark/-/ wikis/home/), что позволяет участникам редактировать каждую стра- ницу.

Также обратите внимание, в каких областях отсутствует докумен- тация.Можете ли вы определить функции,которые недостаточно хо- рошо описаны? Отсутствие документации может натолкнуть вас на интересные открытия.

Тестирование диссекторов Wireshark

Проверьте, все ли диссекторы Wireshark правильно работают с ис- пользуемым протоколом. Может ли Wireshark правильно интерпре- тировать и читать все поля в сообщениях протокола?

Для этого сначала проверьте, есть ли в Wireshark анализатор для протокола и включен ли он: нажмите Analyze > Enabled Protocols (Анализировать > Включенные протоколы) – рис. 5.1.

Рис.5.1.Окно включения поддержки протоколов в Wireshark

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

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

тесь, что все поля указаны правильно. Диссекторы часто допускают

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

ошибки, особенно в том, что касается сложных протоколов. Если вы заметили какие-либо ошибки, обратите на них пристальное внима- ние. Чтобы получить больше идей, просмотрите список Common Vul- nerabilities and Exposures (CVE, известные уязвимости и угрозы), для которого существуют диссекторы Wireshark.

Анализ

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

Получение копии сетевого трафика

В зависимости от типа устройства существуют разные способы полу- чения сетевого трафика, который необходимо анализировать. Неко- торые из них могут поддерживать конфигурации прокси сразу после установки! Определите, нужно ли вам выполнять активный или пас- сивный анализ сетевого трафика. (Вы можете найти несколько при- меровтого,как это сделать,в книге Джеймса Форшоу «Атака сетей на уровне протоколов».) Попробуйте генерировать трафик для каждого доступного варианта использования, причем генерировать как мож- но больше. Наличие разных клиентов поможет вам понять отличия и нюансы в существующих реализациях.

Одним из первых шагов на этапе анализа должны стать отслежи- вание трафика и проверка отправленных и полученных пакетов. Мо- гут возникнуть некоторые очевидные проблемы, поэтому полезно сделать это, прежде чем переходить к активному анализу. Веб-сайт https://gitlab.com/wireshark/wireshark/-/wikis/SampleCaptures/ – отличный ресурс для поиска общедоступных захватов.

Анализ сетевого трафика с помощью Wireshark

ЕсливWiresharkестьдиссектор,которыйможетанализироватьсгене- рированный вамитрафик,включите его,установив флажок напротив его названия в окне Enabled Protocols (Включенные протоколы) –

рис. 5.2.

Теперь попробуйте найти следующее.

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

zzПервоначальное соединение. Это важная функция любого протокола.Обычно на этом этапе вы узнаете о версии протокола и поддерживаемых функциях, включая такие функции безопас­ ности, как шифрование. Повторение этого шага также поможет

124  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вам разработать сканеры, чтобы легко находить эти устройства

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

и службы в сетях.

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

zzЛюбые потоки TCP/UDP и общие структуры данных, ис-

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

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

zzСтруктура сообщений. Определите различные заголовки и структуры сообщений, а также способы инициализации и за- крытия соединения.

Рис.5.2.Отключенный анализатор протокола в окне Enabled Protocols в Wireshark

Создание прототипов и разработка инструментов

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

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

 

 

 

 

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

 

 

Если Wireshark не поддерживает протокол, разработайте анализа-

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

df-x chan

 

o

 

тор для помощи с анализом.Мы обсудим этот процесс ниже,в разде-

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

ле «Разработка диссектора Wireshark для протокола DICOM на языке Lua». Мы также будем использовать Lua для создания прототипа мо- дуля Nmap Scripting Engine для общения со службой.

Проведение оценки безопасности­

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

Проверьте возможность атаки, связанной с аутентификацией сервера и клиента. В идеале клиент и сервер должны аутентифици- роватьдругдруга–этотпроцессизвестен каквзаимная аутентифика- ция. Если они этого не сделают, можно будет выдать себя за клиента илисервер.Такоеповедениеможетиметьсерьезныепоследствия;на- пример, мы однажды выполнили атаку с имитацией клиента, чтобы подделать компонент библиотеки лекарств и внедрить в инфузион- ную помпу мошеннические библиотеки лекарств. Хотя две конечные точкиобменивалисьданнымичерезTransportLayerSecurity(TLS),это не могло предотвратить атаку, потому что не выполнялась взаимная аутентификация.

Выполните преднамеренно ошибочное кодирование протокола и проверьте возможность атак путем флуда. Кроме того,

попытайтесь воспроизвести сбои и выявить ошибки. Фаззинг – это процесс автоматической подачи неверно сформированного ввода в систему с конечной целью поиска ошибок реализации. В большин- стве случаев это вызывает сбой системы. Чем сложнее протокол,тем выше шансы обнаружитьдефекты,связанные с повреждением памя- ти.DICOM (будетобсуждаться чутьниже)–прекрасный пример.Учи- тывая его сложность, в различных реализациях можно обнаружить переполнение буфера и другие проблемы безопасности­ . При атаках путем флуда злоумышленники отправляютсистеме большое количе- ство запросов, чтобы исчерпать ресурсы системы, и в результате она перестает откликаться. Типичный пример – TCP SYN, флуд-атака, вероятность успеха которой можно уменьшить с помощью файлов cookie SYN.

Проверьте шифрование и цифровую подпись. Данные кон-

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

126  Глава 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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

как Transport Layer Security (TLS),который уязвим к атакетипа «чело-

 

 

 

 

 

m

 

w Click

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

век посередине».

 

w

 

df-x chan

 

o

 

 

.

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

e

 

Проверьте возможность атаки на устаревшую версию. Это криптографические атаки на протокол, которые заставляют систему использовать менее качественный и менее безопасный режим ра- боты (например, тот, который отправляет данные в открытом виде).

Примеры включают атаку «болтливого оракула» на устаревшее шиф-

рование (Padding Oracle on Downgraded Legacy Encryption, POODLE)

на уровне TLS/SSL. В этой атаке злоумышленник типа «человек по- середине» вынуждает клиентов использовать SSL 3.0 и использует врожденную уязвимость протокола для кражи файлов cookie или па- ролей.

Проверьте атаку на избыточность.Эти атаки срабатывают,когда протокол имеет функции, ответ которых значительно превышает за- прос,поскольку злоумышленники могутзлоупотреблятьэтими функ- циями, чтобы вызвать отказ в обслуживании. Пример – DDoS-атака с отражением mDNS,когда некоторые реализации mDNS отвечали на одноадресныезапросы,поступавшиеизисточниковзапределамило- кальной сети. Мы рассмотрим mDNS в главе 6.

Разработка диссектора Wireshark для протокола

DICOM на языке Lua

В этом разделе показано,как написатьдиссектор,который можно ис- пользоватьсWireshark.Припроверкесетевыхпротоколов,используе- мых устройствами IoT,очень важно понимать,как происходит обмен данными, как формируются сообщения и что задействованы функ- ции, операции и механизмы безопасности­ . Затем мы можем начать изменять потоки данных, чтобы найти уязвимости. Чтобы написать наш диссектор, будем использовать Lua; это позволит нам быстро анализировать перехваченные сетевые коммуникации с небольшим объемом кода. Мы перейдем от представления массива информации

кчитаемым сообщениям,добавив всего несколько строк кода.

Вэтом упражнении мы сосредоточимся только на подмножестве функций, необходимых для обработки сообщений DICOM A-типа (обсуждаемых в следующем разделе). Еще одна деталь, которую сле- дует учитывать при написании диссекторов Wireshark для TCP на Lua, заключается в том, что пакеты могут быть фрагментированы. Кроме того, в зависимости от таких факторов, как повторная пере- дача пакетов, ошибки нарушения порядка или конфигурации Wire- shark, ограничивающие размер захваченных пакетов (ограничение размера пакета захвата по умолчанию составляет 262 144 байта), мы можем получить меньше или больше одного сообщения в сегменте TCP. Давайте пока проигнорируем это и сосредоточимся на запросах A-ASSOCIATE, которых будет достаточно, чтобы идентифицировать службыDICOMпринаписаниисканера.Есливыхотитеузнатьбольше отом,как бороться с фрагментацией TCP,просмотрите файл примера

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