Системы обнаружения атак
Написание правил в IDS Suricata
Терминология
Правила в Suricata
Действия в Suricata
Протоколы в Suricata
Протоколы в Suricata
Протоколы в Suricata
Протоколы в Suricata
Протоколы в Suricata
Протоколы в Suricata
Источник и пункт назначения в Suricata
Источник и пункт назначения в Suricata
Источник и пункт назначения в Suricata
Порт источника и порт назначения в Suricata
Порт источника и порт назначения в Suricata
Порт источника и порт назначения в Suricata
Порт источника и порт назначения в Suricata
Направление в Suricata
Направление в Suricata
Направление в Suricata
Опции правила в Suricata
Опции правила в Suricata
Нормализованные буферы в Suricata
Категории опций (ключевых слов) Suricata
Ключевое слово msg
Ключевое слово sid
Ключевое слово rev
Ключевое слово gid
Ключевое слово gid
Ключевое слово classtype
Ключевое слово classtype
Ключевое слово priority
Ключевое слово metadata
Ключевое слово target
Ключевое слово reference
Ключевое слово requires
Ключевое слово content
Ключевое слово content
Ключевое слово content
Ключевое слово content
Ключевое слово pcre
Модификаторы для опции content
Ключевое слово pcre
Модификаторы опции content
Модификаторы опции content
Модификаторы опции content
Модификаторы опции content
Модификаторы опции content
Протокол HTTP
Протокол HTTP
Протокол HTTP
Протокол HTTP
Протокол HTTP
Протокол HTTP
Протокол HTTP
Протокол HTTP. file.name
Протокол HTTP. http.accept
Протокол HTTP. http.accept_enc
Протокол HTTP. http.connection
Протокол HTTP. http.host
Протокол HTTP. http.host.raw
Протокол HTTP. http.method
Протокол HTTP. http.referer
Протокол HTTP. http.request_body
Протокол HTTP. Примеры
Протокол HTTP. http.request_body
Протокол IP. ttl
Протокол IP. ipopts
Протокол IP. sameip
Протокол IP. ip_proto
Протокол IP. ipv4.hdr
Протокол IP. ipv6.hdr
Протокол IP. id
Протокол IP. geoip
Протокол ICMP
Протокол ICMP. itype
Протокол ICMP. icode
Протокол ICMP. icmp_id
Протокол ICMP. Примеры
Протокол ICMP. icmp_seq
Протокол ICMP. icmpv4.hdr и icmpv6.hdr
Протокол ICMP. icmpv6.mtu
Протокол TCP. tcp.flags
Протокол TCP.
Протокол TCP. seq
Протокол TCP. ack
Протокол TCP. window
Протокол TCP. Примеры
Протокол TCP. tcp.mss
Протокол TCP. tcp.hdr
Протокол UDP. udp.addr
Протокол SSH. ssh.proto
Протокол SSH. ssh.software
Протокол SSH. ssh.hassh
Протокол SSH. ssh.hassh.string
Протокол SSH. ssh.hassh.server
Протокол SSH. ssh.protoversion
Спасибо за внимание!
3.52M
Category: internetinternet

СОА-10 (Ключевые слова в правилах Suricata)

1. Системы обнаружения атак

Сорокин Александр Владимирович
Системы обнаружения атак, 2025
1

2. Написание правил в IDS Suricata

Системы обнаружения атак, 2025
2

3. Терминология

В рамках данной лекции:
правило = сигнатура
Системы обнаружения атак, 2025
3

4.

1
Формат правил в Suricata
Системы обнаружения атак, 2025
4

5. Правила в Suricata

Правило в Suricata состоит:
<действие><заголовок><опции правила>
● Действие – определяющее, что происходит при выполнении
правила.
● Заголовок – определяющий протокол, IP-адреса, порты и
направление правила.
● Опции правила – определяющие особенности правила.
Системы обнаружения атак, 2025
5

6. Действия в Suricata

● alert - сделать предупреждение.
● pass - прекратить дальнейшую проверку пакета.
● drop - отбросить пакет и сделать предупреждение.
● reject - отправить ошибку RST/ICMP unreach отправителю
соответствующего пакета.
● rejectsrc - то же, что и просто reject.
● rejectdst - отправить пакет с ошибкой RST/ICMP получателю
соответствующего пакета.
● rejectboth - отправить пакеты ошибок RST/ICMP обеим сторонам
разговора.
Системы обнаружения атак, 2025
6

7. Протоколы в Suricata

Протокол – ключевое слово, которое указывает Suricata, к какому
протоколу относится правило.
● tcp (для tcp-трафика)
● udp
● icmp
● ip (ip означает "все" или "любой")
Системы обнаружения атак, 2025
7

8. Протоколы в Suricata

Системы обнаружения атак, 2025
8

9. Протоколы в Suricata

Есть несколько дополнительных опций, связанных с протоколом
TCP:
● tcp-pkt (для поиска содержимого в отдельных tcp-пакетах)
● tcp-stream (для поиска содержимого только в собранном потоке
tcp)
Системы обнаружения атак, 2025
9

10. Протоколы в Suricata

Существует также несколько протоколов прикладного уровня или
протоколов 7-го уровня. К ним относятся:
● http (либо HTTP1, либо HTTP2), http1, http2
● ftp
● tls (включает ssl)
● smb
● dns
● dcerpc
● dhcp
● ssh
Системы обнаружения атак, 2025
10

11. Протоколы в Suricata

Существует также несколько протоколов прикладного уровня или
протоколов 7-го уровня. К ним относятся:
● smtp
● imap
● modbus (отключен по умолчанию)
● dnp3 (отключено по умолчанию)
● enip (отключено по умолчанию)
● nfs
● ike
● krb5
Системы обнаружения атак, 2025
11

12. Протоколы в Suricata

Существует также несколько протоколов прикладного уровня или
протоколов 7-го уровня. К ним относятся:
● bittorrent-dht
● ntp
● dhcp
● rfb
● rdp
● snmp
● tftp
● sip
Системы обнаружения атак, 2025
12

13. Источник и пункт назначения в Suricata

● Первая выделенная часть - источник трафика;
● Вторая - пункт назначения трафика;
● Направление указывается оператором направления (стрелкой).
Системы обнаружения атак, 2025
13

14. Источник и пункт назначения в Suricata

● Можно назначать IP-адреса;
● Поддерживаются IPv4 и IPv6;
● Можно назначать диапазоны IP-адресов.
● Их можно использовать операторы:
○ ../.. – IP-диапазоны
○ ! – исключение или отрицание
○ [...,...] – списки
Системы обнаружения атак, 2025
14

15. Источник и пункт назначения в Suricata

Пример
Значение
!1.1.1.1
Все IP-адреса, кроме 1.1.1.1
![1.1.1.1,1.1.1.2]
Все IP-адреса, кроме 1.1.1.1 и 1.1.1.2
$HOME_NET
Значение HOME_NET, заданное в yaml
[10.0.0.0/24,!10.0.0.5]
10.0.0.0/24, кроме 10.0.0.5
[$EXTERNAL_NET,!$HOME_NET]
Значение EXTERNAL_NET с
исключением HOME_NET
Системы обнаружения атак, 2025
15

16. Порт источника и порт назначения в Suricata

● Первый – порт источника;
● Второй – порт назначения;
Системы обнаружения атак, 2025
16

17. Порт источника и порт назначения в Suricata

● В заголовках пакетов помимо адресов указываются порты;
● Разные протоколы имеют разные номера портов;
○ Порт по умолчанию для HTTP – 80;
○ Порт по умолчанию для HTTPS – 443.
● Порт не определяет, какой протокол используется при обмене
данными.
Системы обнаружения атак, 2025
17

18. Порт источника и порт назначения в Suricata

При настройке портов можно использовать и специальные
операторы:
Оператор
Значение
:
Диапазон портов
!
Отрицание или исключение
[..,...]
Список
Системы обнаружения атак, 2025
18

19. Порт источника и порт назначения в Suricata

Примеры использования правил с портами:
Пример
Значение
[80,81,82]
Порты 80, 81 и 82
[80:82]
Диапазон портов 80-82
[1024:]
От 1024 до наибольшего номера порта
!80
Любой порт кроме 80
[80:100,!99]
Диапазон портов 80-100, кроме 99
[1:80,![2,4]]
Диапазон портов 1-80, кроме 2 и 4
Системы обнаружения атак, 2025
19

20. Направление в Suricata

Оператор направления указывает, соответствующие какому
направлению между отправителем и получаетелем пакеты будут
просматриваться.
Системы обнаружения атак, 2025
20

21. Направление в Suricata

Системы обнаружения атак, 2025
21

22. Направление в Suricata

В большинстве правил используется стрелка вправо «->»;
Рассматриваются пакеты с указанным направлением;
Правило может работать в обоих направлениях «<>».
○ source -> destination
○ source <> destination
Значение оператора «<-» не предусмотрено
Системы обнаружения атак, 2025
22

23. Опции правила в Suricata

Остальная часть правила состоит из опций;
Опции заключаются в круглые скобки и разделяются точками с
запятой.
● Некоторые имеют настройки (например, msg):
○ Задаются ключевым словом опции,
○ Двоеточие;
○ Настройки.
● Другие опции не имеют настроек;
○ Ключевое слово (например, nocase):
Системы обнаружения атак, 2025
23

24. Опции правила в Suricata

Символы «;» и «"» должны быть экранированы при использовании
в значении опции правила.
msg: "Message with semicolon\;";
Системы обнаружения атак, 2025
24

25. Нормализованные буферы в Suricata

● Пакет состоит из
необработанных
данных.
● HTTP и пересборка
делают копию
данных из таких
пакетов.
● Остается так
называемый
"нормализованный
буфер":
Системы обнаружения атак, 2025
25

26.

2
Ключевые слова в Suricata
Системы обнаружения атак, 2025
26

27. Категории опций (ключевых слов) Suricata

• Meta
• Payload
• Категории, относящиеся к
конкретным протоколам,
поведению правил и др.
Системы обнаружения атак, 2025
27

28.

2
Ключевые слова категории Meta
Системы обнаружения атак, 2025
28

29. Ключевое слово msg

Ключевое слово msg позволяет задать текст, выводимый при
срабатывании правила
msg:"ET MALWARE Win32/RecordBreaker CnC Checkin";
msg:"ET EXPLOIT SMB-DS DCERPC PnP bind attempt";
Системы обнаружения атак, 2025
29

30. Ключевое слово sid

Ключевое слово sid присваивает каждой сигнатуре
собственный идентификатор.
Этот идентификатор указывается числом, большим нуля.
○ sid:123;
Системы обнаружения атак, 2025
свой
30

31. Ключевое слово rev

Ключевое слово sid обычно сопровождается ключевым словом rev.
Rev представляет собой версию сигнатуры.
Если сигнатура изменяется, то число rev будет увеличено.
○ rev:123;
Системы обнаружения атак, 2025
31

32. Ключевое слово gid

● Ключевое слово gid можно использовать для присвоения
различным группам сигнатур отдельного идентификатора (как
в sid).
● По умолчанию gid 1.
● Значение по умолчанию можно изменить.
● Значение отмечается в данных оповещений.
Системы обнаружения атак, 2025
32

33. Ключевое слово gid

● Пример значения gid в записи предупреждения в файле fast.log.
● В части [1:123] первая 1 - это gid (123 - это sid, а 1 - rev).
Системы обнаружения атак, 2025
33

34. Ключевое слово classtype

● Ключевое слово classtype предоставляет информацию
классификации правил и оповещений.
● Cостоит из:
○ Короткое имя;
○ Длинное имя;
○ Приоритет.
● Определяет, информационное ли или относится к CVE.
● Для каждого classtype в classification.config указан приоритет.
Системы обнаружения атак, 2025
о
34

35. Ключевое слово classtype

Примеры classtype:
● web-application-attack, приоритет 1
● not-suspicious, приоритет 3
Системы обнаружения атак, 2025
35

36. Ключевое слово priority

● Ключевое слово priority имеет обязательное числовое значение;
● Может варьироваться от 1 до 255.
● Обычно используются значения от 1 до 4.
● Наивысший приоритет:1.
○ priority:1;
Системы обнаружения атак, 2025
36

37. Ключевое слово metadata

● Ключевое слово metadata позволяет добавить к сигнатуре
дополнительную информацию.
● Формат может быть произвольным, однако рекомендуется
придерживаться пар [ключ, значение].
○ metadata: key value;
○ metadata: key value, key value;
Системы обнаружения атак, 2025
37

38. Ключевое слово target

● Ключевое слово target позволяет указать, какая сторона
оповещения является целью атаки.
● Если оно указано, событие оповещения будет содержать
информацию об источнике и цели.
○ target:[src_ ip|dest_ ip]
Системы обнаружения атак, 2025
38

39. Ключевое слово reference

● Ключевое слово reference используется для того, чтобы указать,
где можно найти информацию о сигнатуре.
● Ключевое слово reference может встречаться в сигнатуре
несколько раз.
○ reference:type,reference
○ reference:url,www.info.com
○ reference:cve,CVE-2014-1234
Системы обнаружения атак, 2025
39

40. Ключевое слово requires

● Ключевое слово requires позволяет правилу требовать:
○ Определенные функции Suricata были включены
○ Версия Suricata соответствовала выражению.
● Правила,
не
игнорироваться.
соответствующие
Системы обнаружения атак, 2025
требованиям,
будут
40

41.

3
Ключевые слова категории Payload
Системы обнаружения атак, 2025
41

42. Ключевое слово content

● Ключевое слово content позволяет правилу позволяет искать в
пакетах вхождения строки или последовательности байт
● content: "............";
● Можно задавать текст в виде печатных символов (256
символов, соответствующих значениям байт) или значения
байт в шестнадцатеричном виде
Системы обнаружения атак, 2025
42

43. Ключевое слово content

Пример:
Зарезервированные символы можно
задавать только в шестнадцатеричном
виде:
|61| a
|61 61| aa
|41| A
|21| !
"
;
:
|
|22|
|3B|
|3A|
|7C|
Системы обнаружения атак, 2025
43

44. Ключевое слово content

По умолчанию поиск учитывает регистр. Например:
Системы обнаружения атак, 2025
44

45. Ключевое слово content

Может использоваться с отрицанием – правило сработает для
пакетов, в которых совпадения не произойдет.
Пример:
content:!"Firefox/3.6.13";
Правило не будет срабатывать для пакетов с указанной версией
браузера
Системы обнаружения атак, 2025
45

46. Ключевое слово pcre

Используется для задания регулярного
используется аналогично опции content
выражения,
которое
pcre:"/<regex>/opts";
Пример: pcre:"/[0-9]{6}/";
Системы обнаружения атак, 2025
46

47. Модификаторы для опции content

Suricata поддерживает механизмы модификации опций, доступные в Snort:
● пост-модификаторы* (для опции content):
content:“текст, который ищется в пакете”; nocase
● “sticky buffers”
http_response_line; content:"текст, который ищется в пакете“
*обозначены так в лекции из-за того, что влияют на предшествующую
опцию, то есть пишутся после опции, на которую влияют
Системы обнаружения атак, 2025
47

48. Ключевое слово pcre

Системы обнаружения атак, 2025
48

49. Модификаторы опции content

Nocase – content не учитывает регистр заданного текста
content: "abc"; nocase;
Системы обнаружения атак, 2025
49

50. Модификаторы опции content

startswith – опция content применяется только к началу содержимого пакета
content:"GET|20|"; startswith;
Endswith – опция content применяется только к концу содержимого пакета
content:".php"; endswith;
Системы обнаружения атак, 2025
50

51. Модификаторы опции content

depth – определяет, какое число байт от начала содержимого (payload) пакета проверяется
опцией content
content: "abc"; depth:12;
Системы обнаружения атак, 2025
51

52. Модификаторы опции content

offset – определяет, какое число байт от начала содержимого (payload) пакета игнорируется
перед проверкой опцией content
content: "abc"; depth:12;
Системы обнаружения атак, 2025
52

53. Модификаторы опции content

offset + depth
content:"def"; offset:3; depth:3;
Системы обнаружения атак, 2025
53

54.

4
Протокол HTTP. Ключевые слова
Системы обнаружения атак, 2025
54

55. Протокол HTTP

● Использование sticky buffer, специфичных для HTTP, позволяет
эффективно проверять специфические поля сообщений протокола
HTTP.
● После указания sticky buffer в правиле за ним должны следовать
один или несколько Payload Keywords или использование pcre (Perl
Compatible Regular Expressions).
Системы обнаружения атак, 2025
55

56. Протокол HTTP

● HTTP считается клиент-серверным протоколом или протоколом
"запрос-ответ". Клиент запрашивает ресурсы у сервера, а сервер
отвечает на запрос.
● В версиях HTTP, предшествующих версии 2, запрос клиента мог
выглядеть следующим образом:
● Пример HTTP-запроса:
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
Host: suricata.io
Системы обнаружения атак, 2025
56

57. Протокол HTTP

Пример сигнатуры, которая оповещает о вышеуказанном запросе.
Системы обнаружения атак, 2025
57

58. Протокол HTTP

● В версиях HTTP, предшествующих версии 2, ответ сервера мог
выглядеть следующим образом:
● Пример HTTP-ответа:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 258
Date: Thu, 14 Dec 2023
20:22:41 GMT
Server: nginx/0.8.54
Connection: Close
Системы обнаружения атак, 2025
58

59. Протокол HTTP

Пример сигнатуры, предупреждающей о приведенном выше ответе.
Системы обнаружения атак, 2025
59

60. Протокол HTTP

Ключевые слова запросов:
● file.name
● http.accept
● http.accept_ enc
● http.accept_ lang
● http.host
● http.host.raw
● http.method
● http.referer
● http.request_ body
● http.request_ header
● http.request_ line
● http.uri
● http.uri.raw
● http.user_ agent
● urilen
Системы обнаружения атак, 2025
60

61. Протокол HTTP

Ключевые слова ответов:
● http.location
● http.response_ body
● http.response_ header
● http.response_ line
● http.server
● http.stat_ code
● http.stat_ msg
Ключевые слова запросов или
ответов:
● file.data
● http.content_ len
● http.content_ type
● http.cookie
● http.header
● http.header.raw
● http.header_ names
● http.protocol
● http.start
Системы обнаружения атак, 2025
61

62. Протокол HTTP. file.name

● Ключевое слово file.name может использоваться в HTTP-запросах.
● С ключевым словом file.name можно использовать любое из
ключевых слов полезной нагрузки.
● Пример правила:
Системы обнаружения атак, 2025
62

63. Протокол HTTP. http.accept

● Ключевое слово http.accept используется для соответствия полю
Accept, которое может присутствовать в заголовках HTTPзапросов.
● С ключевым словом http.accept можно использовать любое из
ключевых слов полезной нагрузки.
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
Accept: */*
Host: suricata.io
Системы обнаружения атак, 2025
63

64. Протокол HTTP. http.accept_enc

● Ключевое слово http.accept_enc используется для соответствия
полю Accept-Encoding, которое может присутствовать в заголовках
HTTP-запросов.
● С ключевым словом http.accept_enc можно использовать любое из
ключевых слов полезной нагрузки.
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
● Пример HTTP-запроса:
Accept-Encoding: gzip, deflate
Host: suricata.io
Системы обнаружения атак, 2025
64

65. Протокол HTTP. http.connection

● Ключевое слово http.connection используется для соответствия
полю Connection, которое может присутствовать в заголовках
HTTP-запросов.
● С ключевым словом http.connection можно использовать любое из
ключевых слов полезной нагрузки.
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
● Пример HTTP-запроса:
Accept-Language: en-US
Host: suricata.io
Connection: Keep-Alive
Системы обнаружения атак, 2025
65

66. Протокол HTTP. http.host

● В Suricata есть два варианта сопоставления по имени хоста HTTP:
http.host и http.host.raw sticky buffers.
● Можно использовать любое из ключевых слов полезной нагрузки
с обоими ключевыми словами http.host.
Системы обнаружения атак, 2025
66

67. Протокол HTTP. http.host.raw

● Буфер http.host.raw соответствует содержимому HTTP-хоста, но не
имеет никакой нормализации содержимого буфера (см. http.host).
● Пример HTTP-запроса:
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
Host: SuRiCaTa.Io:8445
Системы обнаружения атак, 2025
67

68. Протокол HTTP. http.method

● Ключевое слово http.method указывает на метод/глагол,
используемый в HTTP-запросе. Методы HTTP-запросов могут быть
любыми из следующих:
● GET, POST
GET /index.html HTTP/1.1
● HEAD, OPTIONS
User-Agent: Mozilla/5.0
Host: suricata.io
● PUT, DELETE
● TRACE, CONNECT
● PATCH
● С ключевым словом http.method можно использовать любой из
ключевых слов Payload.
Системы обнаружения атак, 2025
68

69. Протокол HTTP. http.referer

● Ключевое слово http.referer используется для соответствия полю
Referer, которое может присутствовать в заголовках HTTPзапросов.
● С ключевым словом http.referer можно использовать любое из
ключевых слов полезной нагрузки.
GET / HTTP/1.1
Host: suricata.io
● Пример HTTP-запроса:
Referer: https://suricata.io
Системы обнаружения атак, 2025
69

70. Протокол HTTP. http.request_body

● Ключевое слово http.request_body используется для соответствия
телу HTTP-запроса, которое может присутствовать в HTTP-запросе.
● С ключевым словом http.request_body можно использовать любое
из ключевых слов полезной нагрузки.
● Пример HTTP-запроса:
POST /suricata.php HTTP/1.1
Content-Type: application/x-wwwform-urlencoded
Host: suricata.io
Content-Length: 23
Connection: Keep-Alive
Suricata request body
Системы обнаружения атак, 2025
70

71. Протокол HTTP. Примеры

Системы обнаружения атак, 2025
71

72. Протокол HTTP. http.request_body

● Ключевое слово http.connection используется для соответствия
полю Connection, которое может присутствовать в заголовках
HTTP-запросов.
● С ключевым словом http.connection можно использовать любое из
ключевых слов полезной нагрузки.
GET /index.html HTTP/1.1
User-Agent: Mozilla/5.0
● Пример HTTP-запроса:
Accept-Encoding: gzip, deflate
Host: suricata.io
Системы обнаружения атак, 2025
72

73.

5
Протоколы IP и ICMP. Ключевые слова
Системы обнаружения атак, 2025
73

74. Протокол IP. ttl

● Ключевое слово ttl используется для проверки наличия
определенного значения времени жизни IP в заголовке пакета.
● Формат следующий:
ttl:<число>;
ttl:10;
● ttl использует беззнаковое 8-битное целое число.
Системы обнаружения атак, 2025
74

75. Протокол IP. ipopts

● С помощью ключевого слова ipopts
проверяется,
установлен
ли
определенный IP-параметр.
● Ipopts необходимо использовать в начале
правила.
● В одном правиле можно проверять
только одну опцию.
● Существует несколько опций, которые
можно сопоставить. К ним относятся:
ipopts: <name>;
Системы обнаружения атак, 2025
75

76. Протокол IP. sameip

● Каждый пакет имеет IP-адрес источника и IP-адрес назначения.
● С помощью ключевого слова sameip можно проверить, совпадает
ли IP-адрес источника с IP-адресом назначения.
● Ключевое слово sameip имеет следующий формат:
sameip;
Системы обнаружения атак, 2025
76

77. Протокол IP. ip_proto

● С помощью ключевого слова ip_proto можно выполнить поиск по
IP-протоколу в заголовке пакета.
ip_ proto:ICMP;
1
6
17
47
50
51
58
ICMP
Internet Control Message
TCP
Transmission Control Protocol
UDP
User Datagram
GRE
General Routing Encapsulation
ESP
Encap Security Payload for IPv6
AH
Authentication Header for Ipv6
IPv6-ICMP ICMP for Ipv6
Системы обнаружения атак, 2025
77

78. Протокол IP. ipv4.hdr

● Sticky buffer для соответствия содержимому, содержащемуся в
заголовке IPv4.
● Пример правила:
Системы обнаружения атак, 2025
78

79. Протокол IP. ipv6.hdr

● Sticky buffer для соответствия содержимому, содержащемуся в
заголовке IPv6.
● Пример правила:
Системы обнаружения атак, 2025
79

80. Протокол IP. id

● С помощью ключевого слова id можно выполнить поиск по
определенному значению IP Id.
● Id идентифицирует каждый пакет, отправляемый хостом, и
обычно увеличивается на единицу с каждым отправляемым
пакетом.
● IP Id используется в качестве идентификационного номера
фрагмента.
● Формат идентификатора:
id:<число>;
Системы обнаружения атак, 2025
80

81. Протокол IP. geoip

● Ключевое слово geoip позволяет сопоставить IPv4-адреса
источника, назначения или источника и назначения сетевого
трафика, а также узнать, к какой стране он относится.
● Для этого Suricata использует GeoIP2 API от MaxMind.
● Синтаксис geoip:
geoip: src,RU;
geoip: both,CN,RU;
geoip: dst,CN,RU,IR;
geoip: both,US,CA,UK;
geoip: any,CN,IR;
Системы обнаружения атак, 2025
81

82. Протокол ICMP

● Протокол ICMP (Internet Control Message Protocol) является частью
IP.
● IP сам по себе ненадежен, когда речь идет о доставке данных
(дейтаграмм).
● ICMP обеспечивает обратную связь в случае возникновения
проблем.
● Не предотвращает возникновение проблем, но помогает понять,
что и где пошло не так.
Системы обнаружения атак, 2025
82

83. Протокол ICMP. itype

● Ключевое слово itype предназначено для поиска определенного
типа (номера) ICMP.
● itype использует беззнаковое 8-битное целое число.
● Формат ключевого слова itype:
itype:min<>max;
itype:[<|>]<число>;
● Пример:
itype:>10;
Системы обнаружения атак, 2025
83

84. Протокол ICMP. icode

● С помощью ключевого слова icode можно выполнить поиск по
определенному коду ICMP.
● Для каждого ICMP-типа код имеет свое назначение.
● icode использует беззнаковое 8-битное целое число.
● Формат ключевого слова icode:
icode:min<>max;
icode:[<|>]<число>;
icode:>5;
Системы обнаружения атак, 2025
84

85. Протокол ICMP. icmp_id

● С помощью ключевого слова icmp_id вы можете выполнять поиск
по определенным значениям ICMP id.
● Формат ключевого слова icmp_ id:
icmp_id:<число>;
● Пример: В этом примере ICMP-идентификатор равен 0:
icmp_ id:0;
Системы обнаружения атак, 2025
85

86. Протокол ICMP. Примеры

Системы обнаружения атак, 2025
86

87. Протокол ICMP. icmp_seq

● Используется ключевое слово icmp_seq для проверки номера
последовательности ICMP.
● Все ICMP-сообщения имеют порядковый номер.
● Формат ключевого слова icmp_ seq:
icmp_seq:<число>;
● Пример: Этот пример ищет ICMP-последовательность 0:
icmp_ seq:0;
Системы обнаружения атак, 2025
87

88. Протокол ICMP. icmpv4.hdr и icmpv6.hdr

● icmpv4.hdr
Sticky buffer для соответствия всему заголовку ICMPv4.
● icmpv6.hdr
Sticky buffer для соответствия всему заголовку ICMPv6.
Системы обнаружения атак, 2025
88

89. Протокол ICMP. icmpv6.mtu

● Соответствие необязательному значению ICMPv6 MTU.
● icmpv6.mtu использует беззнаковое 32-битное целое число.
● Формат ключевого слова:
icmpv6.mtu:<min>-<max>;
icmpv6.mtu:[<|>]<число>;
icmpv6.mtu:<значение>;
Системы обнаружения атак, 2025
89

90.

6
Протоколы TCP и UDP. Ключевые слова
Системы обнаружения атак, 2025
90

91. Протокол TCP. tcp.flags

● Ключевое слово tcp.flags
проверяет наличие
определенных битов
флага TCP.
● Могут проверяться
следующие биты флагов:
Системы обнаружения атак, 2025
91

92. Протокол TCP.

● Формат tcp.flags:
tcp.flags:[modifier]<test flags>[,<ignore flags>];
tcp.flags:[!|*|+]<FSRPAUCE0>[,<FSRPAUCE>];
● Пример правила:
alert tcp $EXTERNAL_NET any -> $HOME_NET any (msg:"Example tcp.flags sig"; \
:example-rule-emphasis:`tcp.flags:FPU,CE;` classtype:misc-activity; sid:1; rev:1;)
Системы обнаружения атак, 2025
92

93. Протокол TCP. seq

● Ключевое слово seq может быть использовано в сигнатуре для
проверки наличия определенного номера последовательности
TCP.
● Порядковый номер - это число, которое генерируется
практически случайным образом обеими конечными точками
TCP-соединения.
● Пример:
seq:0;
Системы обнаружения атак, 2025
93

94. Протокол TCP. ack

● Ack - это подтверждение получения всех предыдущих байтов
(данных), отправленных другой стороной TCP-соединения.
● В большинстве случаев каждый пакет TCP-соединения имеет флаг
ACK после первого SYN и ACK-номер, который увеличивается с
получением каждого нового байта данных.
● Ключевое слово ack может быть использовано в сигнатуре для
проверки определенного номера подтверждения TCP.
● Формат ack:
ack:1;
Системы обнаружения атак, 2025
94

95. Протокол TCP. window

● Ключевое
слово
window
используется
для
проверки
определенного размера окна TCP.
● Размер окна TCP - это механизм, который контролирует поток
данных.
● Этот механизм используется для предотвращения переполнения
приемника данными.
● Размер окна ограничен и может составлять от 2 до 65,535 байт.
● Формат ключевого слова window:
window:[!]<number>;
Системы обнаружения атак, 2025
95

96. Протокол TCP. Примеры

Системы обнаружения атак, 2025
96

97. Протокол TCP. tcp.mss

● Соответствие значению опции TCP MSS.
● В tcp.mss используется 16-битное целое число без знака.
● Формат ключевого слова:
tcp.mss:<min>-<max>;
tcp.mss:[<|>]<число>;
tcp.mss:<значение>;
Системы обнаружения атак, 2025
97

98. Протокол TCP. tcp.hdr

● Sticky buffer для сопоставления со всем заголовком TCP.
● Этот пример начинает поиск после фиксированной части
заголовка, а затем переходит к опциям переменного размера.
● Опция tcp.mss будет более эффективной, поэтому это ключевое
слово следует использовать в тех случаях, когда нет специального
ключевого слова.
Системы обнаружения атак, 2025
98

99. Протокол UDP. udp.addr

● Sticky buffer для соответствия всему заголовку UDP.
● Пример правила:
● В данном случае длина 8 означает, что полезная нагрузка
отсутствует. Это также можно проверить с помощью dsize:0;.
Системы обнаружения атак, 2025
99

100.

7
Протокол SSH. Ключевые слова
Системы обнаружения атак, 2025
100

101. Протокол SSH. ssh.proto

● Определяет версию используемого протокола SSH.
● ssh.proto - это sticky buffer, который можно использовать
в качестве быстрого шаблона.
● ssh.proto заменяет предыдущее имя буфера: ssh_ proto.
● Формат:
ssh.proto;
Системы обнаружения атак, 2025
101

102. Протокол SSH. ssh.software

● Определяет строку программного обеспечения из
баннера SSH.
● ssh.software является sticky buffer и может быть
использован как быстрый шаблон.
● ssh.software заменяет предыдущие названия ключевых
слов: ssh_software и ssh.softwareversion.
● Формат:
ssh.software;
Системы обнаружения атак, 2025
102

103. Протокол SSH. ssh.hassh

● Соответствие по hassh (md5 алгоритмов hassh клиента).
● Пример:
alert ssh any any -> any any (msg:"match hassh"; \
ssh.hassh; content:"ec7378c1a92f5a8dde7e8b7a1ddf33d1";\
sid:1000010;)
Системы обнаружения атак, 2025
103

104. Протокол SSH. ssh.hassh.string

● Соответствие
клиента).
● Пример:
по
Hassh-строке
(hassh-алгоритмы
alert ssh any any -> any any (msg:"match hassh-string"; \
ssh.hassh.string; content:"none,zlib@openssh.com,zlib"; \
sid:1000030;)
Системы обнаружения атак, 2025
104

105. Протокол SSH. ssh.hassh.server

● Соответствие по hassh (md5 алгоритмов hassh сервера).
● Пример:
alert ssh any any -> any any (msg:"match SSH hash-server"; \
ssh.hassh.server; content:"b12d2871a1189eff20364cf5333619ee"; \
sid:1000020;)
Системы обнаружения атак, 2025
105

106. Протокол SSH. ssh.protoversion

● Сопоставляет по версии используемого протокола SSH.
Значение 2_compat включает версию SSH 1.99.
● Формат:
ssh.protoversion:[0-9](\ .[0-9])?|2_ compat;
Системы обнаружения атак, 2025
106

107. Спасибо за внимание!

Сорокин Александр Владимирович
Старший преподаватель кафедры «Компьютерная безопасность»
МИЭМ НИУ ВШЭ
asorokin@hse.ru
Присутственные часы указаны на персональной странице:
Системы обнаружения атак, 2025
107
English     Русский Rules