АБСОЛЮТНО НЕВИДИМОЕ сканирование портов с поддельным IP-адресом

Содержание

Слайд 2

Основные вопросы:

Техника TCP ip - хэндшейкинга
Техника традиционных методов сканирования
ID-последовательности и их предсказание
Сканирование

Основные вопросы: Техника TCP ip - хэндшейкинга Техника традиционных методов сканирования ID-последовательности
с подменой IP в теории и на практике
Исходный код и примеры
Демонстрация
Ответы на вопросы

Слайд 3

Техника TCP - хэндшейкинга

Определения
Заголовок Tcp
Традиционная схема 3-х стороннего хэндшейкинга

Техника TCP - хэндшейкинга Определения Заголовок Tcp Традиционная схема 3-х стороннего хэндшейкинга

Слайд 4

Определения

Открытое соединение между двумя компьютерами в протоколе TCP/IP называется сокетом и определяется:
IP-адресом

Определения Открытое соединение между двумя компьютерами в протоколе TCP/IP называется сокетом и
источника
Номером порта источника
IP-адресом приемника
Номером порта приемника
Начальным значением SEQ источника
Начальным значением SEQ приемника
И номером ID который увеличивается с каждым переданным пакетом

2.6.1.1

Слайд 5

Заголовок TCP пакета

16-bit source port number

16-bit destination port number

32-bit sequence number

32-bit acknowledgement

Заголовок TCP пакета 16-bit source port number 16-bit destination port number 32-bit
number

length

unused

flags

16-bit window size

16-bit TCP checksum

16-bit urgent offset

Options (if any)

Data (if any)

Слайд 6

TCP/IP-хэндшейкинг

жертва

атакующий

syn

Src ip,Dst ip
Src prt, Dst Prt
Syn = in seq#
Ack = NULL
Flags =

TCP/IP-хэндшейкинг жертва атакующий syn Src ip,Dst ip Src prt, Dst Prt Syn
S
Src ID = src ID + 1

Слайд 7

TCP/IP - хэндшейкинг

цель

атакующий

syn

Src ip,Dst ip
Src prt, Dst Prt
Syn = src seq#
Ack =

TCP/IP - хэндшейкинг цель атакующий syn Src ip,Dst ip Src prt, Dst
NULL
Flags = S

Syn / Ack

Src ip,Dst ip
Src prt, Dst Prt
Syn = Dst seq#
Ack = src seq# +1
Flags =
Dst ID = Dst ID + 1

Слайд 8

TCP/IP-хэндшейкинг

цель

атакующий

syn

Src ip,Dst ip
Src prt, Dst Prt
Syn = src seq#
Ack = dst seq#

TCP/IP-хэндшейкинг цель атакующий syn Src ip,Dst ip Src prt, Dst Prt Syn
+1
Flags = A
Src ID = src ID + 1

Syn / Ack

Ack

Слайд 9

Установление сокета

A

B

SYN (seqa)

SYN/ACK (seqb/ack= seqa+1)

ACK (ack= seqb+1)

Установление сокета A B SYN (seqa) SYN/ACK (seqb/ack= seqa+1) ACK (ack= seqb+1)

Слайд 10

Традиционное сканирование

цель

атакующий

syn

Syn / Ack

Ack

Традиционное сканирование цель атакующий syn Syn / Ack Ack

Слайд 11

цель

атакующий

syn

Syn / Ack

Невидимое SYN-сканирование

цель атакующий syn Syn / Ack Невидимое SYN-сканирование

Слайд 12

Невидимое SYN-сканирование 2

цель

атакующий

syn

Syn / Ack

Rst

Невидимое SYN-сканирование 2 цель атакующий syn Syn / Ack Rst

Слайд 13

Что такое IPID?

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

Что такое IPID? Специальным образом сгенерированная последовательность, число, характеризующее номер пакета. Используется
упрощения процедуры «сборки» пакетов на стороне приемника после фрагментации.
Увеличивается с каждым посланным пакетом.
Существуют различные схемы увеличения этого номера.

Слайд 14

Что такое ID – флаг ?

Идентифицирует каждую TCP-сессию.
В некоторых случаях используется для

Что такое ID – флаг ? Идентифицирует каждую TCP-сессию. В некоторых случаях
«сборки» пакетов
Счетчик ID увеличивается с каждым посланным пакетом
Его содержат все пакеты, включая RST

Слайд 15

Предсказание значения ID-флага

Большинство UNIX-систем дают случайное или псевдо-случайное приращение этому счетчику.
До сегодняшнего

Предсказание значения ID-флага Большинство UNIX-систем дают случайное или псевдо-случайное приращение этому счетчику.
дня не было случая, чтобы ID-флаг представлял угрозу с точки зрения безопасности.
Windows 95 увеличивает id# на 1
Windows 2000 увеличивает id# на 254
Вот почему в этих ОС применяется обратный порядок бит в id#.

Слайд 16

«Поддельное» сканирование в теории

Постоянно опрашивая ложный хост на предмет увеличения его id

«Поддельное» сканирование в теории Постоянно опрашивая ложный хост на предмет увеличения его
можно увидеть, отправил ли сканируемый хост syn/ack или reset.
Анализируя это можно определить, какой порт открыт, а какой нет
На стороне сканируемого хоста эта операция абсолютно невидима.

Слайд 17

«Поддельное» сканирование в теории

Поскольку известно, что Windows увеличивает значение id# при отправке

«Поддельное» сканирование в теории Поскольку известно, что Windows увеличивает значение id# при
пакета, опрашивая хост, можно определить сколько пакетов он передал между нашими тестами
Это производится путем мониторинга увеличения ID#

Слайд 18

«Поддельное» сканирование в теории

Если порт открыт, хост или сервер ответит пакетом syn/ack
Если

«Поддельное» сканирование в теории Если порт открыт, хост или сервер ответит пакетом
порт закрыт, в ответ придет rst

Слайд 19

«Поддельное» сканирование в теории

Если хост принял syn ack от неизвестного источника, он

«Поддельное» сканирование в теории Если хост принял syn ack от неизвестного источника,
отправляет в ответ rst
Если хост принял rst пакет от неизвестного источника, он НЕ ОТВЕЧАЕТ на пакет.

Слайд 20

«Поддельное» сканирование на практике

Или как все это работает

«Поддельное» сканирование на практике Или как все это работает

Слайд 21

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

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Представляем участников Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1

Слайд 22

Зачем трое?

Цель

Атакующий

Ложный хост

www.anycompany.com:80

unknowing.com

3vil.org

Зачем трое? Цель Атакующий Ложный хост www.anycompany.com:80 unknowing.com 3vil.org

Слайд 23

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

Ложный хост

www.anycompany.com:80

unknowing.com

3vil.org

Syn:80

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий Ложный хост www.anycompany.com:80 unknowing.com 3vil.org Syn:80

Слайд 24

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

Ложный хост

www.anycompany.com:80

unknowing.com

3vil.org

Syn/ack

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий Ложный хост www.anycompany.com:80 unknowing.com 3vil.org Syn/ack

Слайд 25

Зачем это надо?

Теперь атакующему известно начальное значение ID# ложного хоста и характер

Зачем это надо? Теперь атакующему известно начальное значение ID# ложного хоста и характер его изменения
его изменения

Слайд 26

Шаг 2 (подделываем источник)

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Syn src = 172.0.0.1 Dst = 192.0.0.1

Шаг 2 (подделываем источник) Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1 Syn

Слайд 27

Шаг 3 (сброс ответов)

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Syn/Ack src = 192.0.0.1 Dst = 172.0.0.1

Шаг 3 (сброс ответов) Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1 Syn/Ack

Слайд 28

Шаг 3 (сброс ответов)

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Rst src == 172.0.0.1 Dst = 192.0.0.1

Шаг 3 (сброс ответов) Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1 Rst

Слайд 29

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Syn:80

Шаг 4 (тест ID ложного хоста) Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1 Syn:80

Слайд 30

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

Ложный хост

10.0.0.1

192.0.0.1

172.0.0.1

Syn:80

Syn/ack

Шаг 4 (тест ID ложного хоста) Цель Атакующий Ложный хост 10.0.0.1 192.0.0.1 172.0.0.1 Syn:80 Syn/ack

Слайд 31

Если порт открыт:

Значение ID будет увеличено.
Смотрим пример:

Если порт открыт: Значение ID будет увеличено. Смотрим пример:

Слайд 32

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

unknowing.com

3vil.org

Syn:80

Ложный хост ID =0

172.0.0.1

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий unknowing.com 3vil.org Syn:80

Слайд 33

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

unknowing.com

3vil.org

Syn/ack

Ложный хост ID =1

172.0.0.1

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий unknowing.com 3vil.org Syn/ack

Слайд 34

Шаг 2 (подделываем источник)

Цель

Атакующий

Ложный хост ID =1

10.0.0.1

192.0.0.1

172.0.0.1

Syn src = 172.0.0.1 Dst =

Шаг 2 (подделываем источник) Цель Атакующий Ложный хост ID =1 10.0.0.1 192.0.0.1
192.0.0.1

Слайд 35

Шаг 3 (сброс ответов)

Цель

Атакующий

10.0.0.1

192.0.0.1

Syn/Ack src = 192.0.0.1 Dst = 172.0.0.1

Ложный хост ID

Шаг 3 (сброс ответов) Цель Атакующий 10.0.0.1 192.0.0.1 Syn/Ack src = 192.0.0.1
=1

172.0.0.1

Слайд 36

Шаг 3 (сброс ответов)

Цель

Атакующий

10.0.0.1

192.0.0.1

Rst src == 172.0.0.1 Dst = 192.0.0.1

Ложный хост ID

Шаг 3 (сброс ответов) Цель Атакующий 10.0.0.1 192.0.0.1 Rst src == 172.0.0.1
=2

172.0.0.1

Слайд 37

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

10.0.0.1

192.0.0.1

Syn:80

Ложный хост ID =2

172.0.0.1

Шаг 4 (тест ID ложного хоста) Цель Атакующий 10.0.0.1 192.0.0.1 Syn:80 Ложный хост ID =2 172.0.0.1

Слайд 38

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

10.0.0.1

192.0.0.1

Syn:80

Syn/ack

Ложный хост ID =3

172.0.0.1

Шаг 4 (тест ID ложного хоста) Цель Атакующий 10.0.0.1 192.0.0.1 Syn:80 Syn/ack

Слайд 39

Если порт закрыт:

Значение ID не увеличивается.
Смотрим пример:

Если порт закрыт: Значение ID не увеличивается. Смотрим пример:

Слайд 40

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

unknowing.com

3vil.org

Syn:80

Л.Х. ID =0

172.0.0.1

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий unknowing.com 3vil.org Syn:80 Л.Х. ID =0 172.0.0.1

Слайд 41

Первый шаг (синхронизация с id# ложного хоста)

Цель

Атакующий

unknowing.com

3vil.org

Syn/ack

Л.Х. ID =1

172.0.0.1

Первый шаг (синхронизация с id# ложного хоста) Цель Атакующий unknowing.com 3vil.org Syn/ack Л.Х. ID =1 172.0.0.1

Слайд 42

Шаг 2 (подделываем источник)

Цель

Атакующий

Л.Х. ID =1

10.0.0.1

192.0.0.1

172.0.0.1

Syn src = 172.0.0.1 Dst = 192.0.0.1

Шаг 2 (подделываем источник) Цель Атакующий Л.Х. ID =1 10.0.0.1 192.0.0.1 172.0.0.1

Слайд 43

Шаг 3 (сброс ответов)

Цель

Атакующий

10.0.0.1

192.0.0.1

Rst src = 192.0.0.1 Dst = 172.0.0.1

Л.Х. ID =1

172.0.0.1

Шаг 3 (сброс ответов) Цель Атакующий 10.0.0.1 192.0.0.1 Rst src = 192.0.0.1

Слайд 44

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

10.0.0.1

192.0.0.1

Syn:80

Л.Х. ID =1

172.0.0.1

Шаг 4 (тест ID ложного хоста) Цель Атакующий 10.0.0.1 192.0.0.1 Syn:80 Л.Х. ID =1 172.0.0.1

Слайд 45

Шаг 4 (тест ID ложного хоста)

Цель

Атакующий

10.0.0.1

192.0.0.1

Syn:80

Syn/ack

Л.Х. ID =2

172.0.0.1

Шаг 4 (тест ID ложного хоста) Цель Атакующий 10.0.0.1 192.0.0.1 Syn:80 Syn/ack Л.Х. ID =2 172.0.0.1

Слайд 46

Итоги:

Постоянно опрашивая ложный хост на предмет увеличения его id можно увидеть, отправил

Итоги: Постоянно опрашивая ложный хост на предмет увеличения его id можно увидеть,
ли сканируемый хост syn/ack или reset.
Анализируя это можно определить, какой порт сканируемого хоста открыт, а какой нет
На стороне сканируемого хоста эта операция абсолютно невидима.

Слайд 47

Недостатки этой техники

Если ложный хост активен и имеет несколько подключений, значение id#

Недостатки этой техники Если ложный хост активен и имеет несколько подключений, значение
будет увеличиваться для каждого отправляемого пакета.
Это приведет к ложным «открытым» портам.
Этого можно избежать, отправляя несколько тестов на один порт.
Затем вычислить увеличение
Порт будет открыт, если увеличение будет > (#число_отпр_пакетов*255)/2

Слайд 48

Шаг 2 (подделываем источник)

target

attacker

Spoof host ID =1

10.0.0.1

192.0.0.1

172.0.0.1

(Syn src = 172.0.0.1 Dst =

Шаг 2 (подделываем источник) target attacker Spoof host ID =1 10.0.0.1 192.0.0.1
192.0.0.1) * 20

Слайд 49

Шаг 3 (сброс ответов)

target

attacker

10.0.0.1

192.0.0.1

Syn /Ack src = 192.0.0.1 Dst = 172.0.0.1

Spoof host

Шаг 3 (сброс ответов) target attacker 10.0.0.1 192.0.0.1 Syn /Ack src =
ID=1+20

172.0.0.1

Имя файла: АБСОЛЮТНО-НЕВИДИМОЕ-сканирование-портов-с-поддельным-IP-адресом.pptx
Количество просмотров: 152
Количество скачиваний: 0