Атака фрагментации IP
![]() | В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Атаки фрагментации IP — это своего рода атака на компьютерную безопасность, основанная на том, как Интернет-протокол (IP) требует передачи и обработки данных. В частности, он вызывает фрагментацию IP — процесс, используемый для разделения сообщений ( блока служебных данных (SDU); обычно пакета ) с одного уровня сети на несколько более мелких полезных данных (PDU) нижнего уровня , которые могут поместиться в блок данных протокола . Каждое сетевое соединение имеет максимальный размер сообщений передаваемых , называемый максимальной единицей передачи (MTU). Если SDU плюс метаданные, добавленные на канальном уровне, превышают MTU, SDU должен быть фрагментирован. Атаки фрагментации IP используют этот процесс в качестве вектора атаки .
Частью пакета TCP/IP является Интернет-протокол (IP), который находится на уровне Интернета этой модели. IP отвечает за передачу пакетов между конечными точками сети. IP включает в себя некоторые функции, которые обеспечивают базовые меры отказоустойчивости (время жизни, контрольная сумма), определение приоритетов трафика (тип услуги) и поддержку фрагментации больших пакетов на несколько меньших пакетов (поле идентификатора, смещение фрагмента). Поддержка фрагментации больших пакетов обеспечивает протокол, позволяющий маршрутизаторам фрагментировать пакет на более мелкие пакеты, когда исходный пакет слишком велик для поддерживающих кадров канала передачи данных. Эксплойты фрагментации IP (атаки) используют протокол фрагментации IP в качестве вектора атаки.
Согласно [Kurose 2013], при одном типе атаки фрагментации IP «злоумышленник отправляет на целевой хост поток небольших фрагментов, ни один из которых не имеет смещения, равного нулю. Цель может разрушиться при попытке восстановить датаграммы из вырожденные пакеты». [1] Другая атака включает отправку перекрывающихся фрагментов с невыровненными смещениями, что может привести к тому, что уязвимые операционные системы не будут знать, что делать, что приведет к сбою некоторых из них. [1]
Процесс
[ редактировать ]
IP-пакеты инкапсулируются в кадры канала передачи данных, и, следовательно, MTU канала влияет на более крупные IP- пакеты и заставляет их разделяться на части, равные или меньшие, чем размер MTU.
Этого можно добиться несколькими подходами:
- Установить размер IP- пакета равным или меньшим размера непосредственно подключенного носителя и делегировать всю дальнейшую фрагментацию пакетов маршрутизаторам. Это означает, что маршрутизаторы решают, следует ли повторно фрагментировать текущий пакет или нет. Это перекладывает большую часть работы на маршрутизаторы, а также может привести к сегментации пакетов несколькими IP-маршрутизаторами один за другим, что приводит к очень своеобразной фрагментации.
- Чтобы просмотреть все ссылки между источником и пунктом назначения и выбрать наименьший MTU на этом маршруте, при условии, что маршрут уникальный. Таким образом, мы гарантируем, что фрагментация выполняется отправителем с использованием размера пакета, меньшего, чем выбранный MTU, и что дальнейшая фрагментация на маршруте отсутствует. Это решение, получившее название Path MTU Discovery , позволяет отправителю фрагментировать/сегментировать длинный интернет- пакет , вместо того, чтобы полагаться на маршрутизаторы для выполнения фрагментации на уровне IP. Это более эффективно и масштабируемо. Поэтому в настоящее время в Интернете это рекомендуемый метод. Проблема этого подхода в том, что каждый пакет маршрутизируется независимо; они могут обычно следовать по одному и тому же маршруту, но могут и не следовать, и поэтому пробный пакет для определения фрагментации может следовать по пути, отличному от путей, используемых более поздними пакетами.
Три поля в заголовке IP используются для реализации фрагментации и повторной сборки. Поля «Идентификация», «Флаги» и «Смещение фрагмента».
Смещения | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Кусочек | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
0 | 0 | Версия | МГП | ДСКП | ECN | Общая длина | |||||||||||||||||||||||||||
4 | 32 | Идентификация | Флаги | Смещение фрагмента | |||||||||||||||||||||||||||||
8 | 64 | Время жить | Протокол | Контрольная сумма заголовка | |||||||||||||||||||||||||||||
12 | 96 | Исходный IP-адрес | |||||||||||||||||||||||||||||||
16 | 128 | IP-адрес назначения | |||||||||||||||||||||||||||||||
20 | 160 | Варианты (если МГП > 5) | |||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 |
Флаги:
- 3-битное поле, которое сообщает, является ли пакет частью фрагментированного кадра данных или нет.
- Бит 0: зарезервирован, должен быть равен нулю (если пакет не соответствует RFC 3514).
- Бит 1: (AF) 0 = можно фрагментировать, 1 = не фрагментировать.
- Бит 2: (AF) 0 = последний фрагмент, 1 = больше фрагментов.
Кусочек | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Поле | 0 | ДФ | МФ | Смещение фрагмента |
Смещение фрагмента определяет положение фрагмента в исходном пакете, измеряемое в 8-байтовых единицах.
Соответственно, каждый фрагмент, кроме последнего, должен содержать данные, кратные 8 байтам. Очевидно, что смещение фрагмента может содержать 8192 (2 ^ 13) единиц, но пакет не может содержать 8192 * 8 = 65 536 байт данных, поскольку поле «Общая длина» IP -заголовка записывает общий размер, включая заголовок и данные. Длина IP-заголовка составляет не менее 20 байт, поэтому максимальное значение «Смещение фрагмента» ограничено значением 8189, что оставляет место для 3 байтов в последнем фрагменте.
Поскольку IP-Интернет может работать без установления соединения, фрагменты одного пакета могут чередоваться с фрагментами другого пакета в пункте назначения. «Поле идентификации» однозначно идентифицирует фрагменты конкретного пакета .
Исходная система устанавливает в поле «Идентификация» в каждом пакете уникальное значение для всех пакетов , которые используют один и тот же IP-адрес источника, IP-адрес назначения и значения «Протокол» на протяжении всего времени существования пакета в Интернете. Таким образом, пункт назначения может различать, какие входящие фрагменты принадлежат уникальному пакету , и помещать их все в буфер до тех пор, пока не будет получен последний фрагмент. Последний фрагмент устанавливает бит «Больше фрагментов» в 0, и это сообщает принимающей станции начать повторную сборку данных, если все фрагменты были получены.
Ниже приведен реальный пример фрагментации:
Следующее было получено с помощью анализатора протоколов Ethereal для захвата ICMP пакетов эхо-запросов . Чтобы смоделировать это, откройте терминал и введите ping ip_dest -n 1 -l 65000.
Результаты следующие:
No. Time Source Destination Protocol Info
1 0.000000 87.247.163.96 66.94.234.13 ICMP Echo (ping) request
2 0.000000 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=1480)
3 0.002929 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=2960)
4 6.111328 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=4440)
5 6.123046 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=5920)
6 6.130859 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=7400)
7 6.170898 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=8880)
8 6.214843 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=10360)
9 6.239257 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=11840)
10 6.287109 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=13320)
11 6.302734 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=14800)
12 6.327148 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=16280)
13 6.371093 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=17760)
14 6.395507 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=19240)
15 6.434570 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=20720)
16 6.455078 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=22200)
17 6.531250 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=23680)
18 6.550781 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=25160)
19 6.575195 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=26640)
20 6.615234 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=28120)
21 6.634765 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=29600)
22 6.659179 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=31080)
23 6.682617 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=32560)
24 6.699218 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=34040)
25 6.743164 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=35520)
26 6.766601 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=37000)
27 6.783203 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=38480)
28 6.806640 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=39960)
29 6.831054 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=41440)
30 6.850586 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=42920)
31 6.899414 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=44400)
32 6.915039 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=45880)
33 6.939453 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=47360)
34 6.958984 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=48840)
35 6.983398 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=50320)
36 7.023437 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=51800)
37 7.046875 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=53280)
38 7.067382 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=54760)
39 7.090820 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=56240)
40 7.130859 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=57720)
41 7.151367 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=59200)
42 7.174804 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=60680)
43 7.199218 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=62160)
44 7.214843 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=63640)
45 7.258789 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=65120)
The first packet details:
No.Time Source Destination Protocol Info
1 0.000000 87.247.163.96 66.94.234.13 ICMP Echo (ping) request
Frame 1 (1514 bytes on wire, 1514 bytes captured)
Ethernet II, Src: OmronTat_00:00:00 (00:00:0a:00:00:00), Dst: 40:0f:20:00:0c:00 (40:0f:20:00:0c:00)
Internet Protocol, Src: 87.247.163.96 (87.247.163.96), Dst: 66.94.234.13 (66.94.234.13)
Internet Control Message Protocol
Type: 8 (Echo (ping) request)
Code: 0
Checksum: 0x6b7d
Identifier: 0x0600
Sequence number: 0x0200
Data (1472 bytes)
The second packet details:
No. Time Source Destination Protocol Info
2 0.000000 87.247.163.96 66.94.234.13 IP Fragmented IP protocol (proto=ICMP 0x01, off=1480)
Frame 2 (1514 bytes on wire, 1514 bytes captured)
Ethernet II, Src: OmronTat_00:00:00 (00:00:0a:00:00:00), Dst: 40:0f:20:00:0c:00 (40:0f:20:00:0c:00)
Internet Protocol, Src: 87.247.163.96 (87.247.163.96), Dst: 66.94.234.13 (66.94.234.13)
Data (1480 bytes)
Обратите внимание, что только первый фрагмент содержит заголовок ICMP, а все остальные фрагменты генерируются без заголовка ICMP.
Здесь два важных момента:
- В некоторых протоколах передачи данных, таких как Ethernet, только первый фрагмент содержит полный заголовок верхнего уровня, а это означает, что другие фрагменты выглядят как обезглавленные пакеты .
- Дополнительные издержки, налагаемые на сеть, поскольку все фрагменты содержат собственный IP-заголовок. Дополнительные издержки = (number_of_fragments - 1) * (ip_header_len);
Эксплойты
[ редактировать ]- Фрагмент IP перекрылся
- перекрытия IP-фрагментов Эксплойт возникает, когда два фрагмента, содержащиеся в одном IP- пакете, имеют смещения, которые указывают на то, что они перекрывают друг друга в позиционировании внутри пакета . Это может означать, что либо фрагмент A полностью перезаписывается фрагментом B, либо фрагмент A частично перезаписывается фрагментом B. Некоторые операционные системы неправильно обрабатывают фрагменты, которые перекрываются таким образом, и могут вызывать исключения или вести себя другим нежелательным образом. при получении перекрывающихся фрагментов. Это основа каплевидной атаки . Перекрывающиеся фрагменты также могут использоваться в попытке обойти системы обнаружения вторжений. В этом эксплойте часть атаки отправляется фрагментами вместе с дополнительными случайными данными; будущие фрагменты могут перезаписать случайные данные остатком атаки. Если готовый пакет не будет правильно собран в IDS, атака останется незамеченной.
- Буфер фрагментации IP заполнен
- Эксплойт переполнения буфера IP-фрагментации возникает, когда в защищенной сети обнаруживается чрезмерное количество неполно фрагментированного трафика. Это может быть связано с чрезмерным количеством неполных фрагментированных пакетов , большим количеством фрагментов для отдельных пакетов или сочетанием количества неполных пакетов и размера/количества фрагментов в каждом пакете . Этот тип трафика, скорее всего, является попыткой обойти меры безопасности или системы обнаружения вторжений путем преднамеренной фрагментации атакующей активности.
- Переполнение IP-фрагмента
- Эксплойт переполнения IP-фрагмента возникает, когда повторно собранный фрагментированный пакет превышает заявленную длину IP-данных или максимальную длину пакета . По определению ни один IP-пакет не должен превышать 65 535 байт. Системы, которые пытаются обработать эти большие пакеты , могут выйти из строя, что может указывать на попытку отказа в обслуживании.
- IP фрагментирует слишком много пакетов
- Эксплойт «Слишком много пакетов» идентифицируется по чрезмерному количеству неполных фрагментированных пакетов , обнаруженных в сети. Обычно это либо атака типа «отказ в обслуживании», либо попытка обойти меры безопасности. Примером «Слишком много пакетов», «Неполный пакет» и «Слишком маленький фрагмент» является атака розы. [2]
- IP-фрагмент неполный пакет
- Этот эксплойт возникает, когда пакет не может быть полностью собран из-за отсутствия данных. Это может указывать на атаку типа «отказ в обслуживании» или попытку обойти политики безопасности фильтров пакетов.
- IP-фрагмент слишком мал
- Если IP-фрагмент слишком мал, это указывает на то, что этот фрагмент, вероятно, создан намеренно. Любой фрагмент, кроме последнего, размером менее 400 байт может считаться слишком маленьким. Небольшие фрагменты могут использоваться для атак типа «отказ в обслуживании» или в попытке обойти меры безопасности или обнаружения.
Фрагментация для уклонения
[ редактировать ]Оборудование сетевой инфраструктуры, такое как маршрутизаторы , балансировщики нагрузки , межсетевые экраны и IDS, имеет непостоянную видимость фрагментированных пакетов. Например, устройство может подвергнуть первоначальный фрагмент тщательной проверке и аудиту, но может позволить всем дополнительным фрагментам пройти без проверки. Некоторые атаки могут использовать этот факт, чтобы избежать обнаружения, помещая компрометирующие полезные данные во фрагменты. Устройства, работающие в «полном» режиме прокси, обычно не подвержены этой уловке.
Ссылки
[ редактировать ]- ^ Jump up to: а б Куросе, Джеймс Ф. (2013). Компьютерные сети: нисходящий подход . Росс, Кейт В., 1956- (6-е изд.). Бостон: Пирсон. п. 338. ИСБН 9780132856201 . OCLC 769141382 .
- ^ Холлис, Кен. «Объяснение атаки фрагментации розы» . Архивировано из оригинала 24 февраля 2012 г. Проверено 25 ноября 2013 г.