Технические науки — от теории к практике № 7-8 (44), 2015 г
10. Niehaves B., Koffer S., & Ortbach K. IT consumerization: A theory and practice review — AMCIS 2012 Proceedings, Seattle, WA.
11. Noda T. Solving BYOD issues a must says HP, 2013.
12. Pfleeger C.P., & Shari L. P. Security in computing. Upper Saddle River — NJ: Prentice Hall PTR, 2006.
13. Whitman M.E. & Mattord H.J. Principles of information security — Boston MA: Cengage Learning, 2010.
14. Willis D.A. Gartner publishes «Bring your own device: New opportunities, new challenges» report - Entertainment Close-Up, 2013.
€
СибАК
www. sibac info
РАЗРАБОТКА ПРОСТЕЙШЕЙ СИСТЕМЫ ОБНАРУЖЕНИЯ ВТОРЖЕНИЙ
Кокоулин Андрей Николаевич
канд. техн. наук, доцент Пермского национального исследовательского политехнического университета
РФ, г. Пермь Е-mail: lisa [email protected]
Бадртдинов Артём Сергеевич
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь Е-mail: [email protected]
Поздеев Антон Александрович
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь Е-mail: [email protected]
Тихоненко Михаил Александрович
студент Пермского национального исследовательского политехнического университета
РФ, г. Пермь Е-mail: tikhonenko [email protected]
17
www.sibac.info
Технические науки — от теории к практике № 7-8 (44), 2015 г
DEVELOPING A SIMPLE INTRUSION DETECTION SYSTEM
Andrey Kokoulin
candidate of technical sciences, docent of Perm National Research Polytechnic University
Russia, Perm
Artem Badrtdinov
student of Perm National Research Polytechnic University
Russia, Perm
Anton Pozdeev
student of Perm National Research Polytechnic University
Russia, Perm
Mikhail Tikhonenko
student of Perm National Research Polytechnic University
Russia, Perm
АННОТАЦИЯ
В учебных целях разработана программа, выполняющая функции простейшей системы обнаружения вторжений — определение пакетов, соответствующих установленному фильтру.
ABSTRACT
The program is designed for educational purposes, which serves as a simple intrusion detection system — defining packages corresponding to the filter.
Ключевые слова: система обнаружения вторжений; tcpdump, golang.
Keywords: intrusion detection system; tcpdump, golang.
Обнаружение вторжений и несанкционированных воздействий в сети является актуальной проблемой современного информатизированного общества. Считается, что начало активному исследованию в этой области, было положено в 1980 г. статьей Джеймса Андерсона «Мониторинг угроз компьютерной безопасности». Несколько позже, в 1987 г. это направление было развито публикацией статьи «О модели обнаружения вторжения» Дороти Деннинг. Она обеспечила
18
Технические науки — от теории к практике № 7-8 (44), 2015 г
www. sibac info
методологический подход, вдохновивший многих исследователей и заложивший основу для создания коммерческих продуктов в области обнаружения и предотвращения вторжений [1].
В данной статье представлена разработанная в учебных целях программа-пример элементарной системы обнаружения вторжений, основанная на анализаторе сетевого трафика tcpdump. В качестве языка программирования выбран язык Go, совмещающий в себе производительность, близкую к производительности языка C, и высокую скорость разработки, схожую с, например, языком программирования Python.
Система обнаружения вторжений — программное или аппаратное средство, предназначенное для выявления фактов несанкционированного доступа в информационную систему или сеть либо несанкционированного управления ими в основном через Интернет. Они обеспечивают дополнительный уровень защиты компьютерных систем путем фильтрации поступающих пакетов [3].
Системы обнаружения вторжений используются как для выявления неблагоприятных для компьютерной системы пакетов, так и для проверки работы сети и выявления ошибок и недочетов.
Go — язык общего назначения с широкими возможностями и понятным синтаксисом. Благодаря мультиплатформенности, надежной, хорошо документированной стандартной библиотеке и ориентированности на удобные подходы к самой разработке, Go является идеальным языком для первых шагов в программировании [5].
Tcpdump (от TCP и англ. dump — свалка, сбрасывать) — утилита UNIX, позволяющая перехватывать (capture) и анализировать сетевой трафик, проходящий через компьютер, на котором запущена данная программа [2]. Позволяет фильтровать поступающие пакеты с помощью большого числа встроенных функций.
В программе, листинг которой представлен далее, используется следующая команда запуска утилиты tcpdump: “tcpdump -i eth0 -n -x src not hostname”. Описание команды:
• “tcpdump” — название утилиты;
• “-i eth0” — выбор интерфесйса eth0 для захвата приходящих сетевых пакетов;
• “-n” — отображает IP-адрес вместо имени хоста;
• “-x’ — делает распечатку пакета в шестнадцатеричной системе, полезно для более детального анализа пакета, количество отображаемых данных зависит от параметра -s;
• “src not hostname” — отбрасываются исходящие пакеты от машины, на которой запущена программа.
19
www.sibac.info
Технические науки — от теории к практике № 7-8 (44), 2015 г
package main import (
"bufio"___________________________________________________________________
"fmt"
"os/exec"
"os"
"regexp"
)
func main() {
filters := [2]string{"(ya|yandex)\\.ru", "(fb|facebook)\\.com"} hostname, _ := os.Hostname()
cmd := exec.Command("tcpdump", "-i", "eth0", "-n", "-x", "src", "not", hostname)
out, err := cmd.StdoutPipe()
if err != nil {
panic(err)
}
defer out.Close()
bufOut := bufio.NewReader(out)
if err = cmd.Start(); err != nil {
panic(err)
}
for {
result, _, err := bufOut.ReadLine()
if err != nil {
panic(err)
}
for _, filter := range filters {
match, _ := regexp.MatchString(filter, string(result)) if match {
fmt.Println(" WARNING:", filter)
}
J__________________________________________________________________________
}
}
Алгоритм работы программы заключается в следующем: программа ищет соответствия сетевых пакетов, захваченных утилитой tcpdump, и элементов массива фильтров, содержащего регулярные выражения для поиска.
20
Технические науки — от теории к практике № 7-8 (44), 2015 г
www. sibac info
Результат работы программы представлен на рисунке 1. На этом же рисунке видны и использованные простые тестовые регулярные выражения ('(ya|yandex)\.ru", "(fb|facebook)\.com") [4].
WARNING
WARNING
WARNING
WARNING
WARNING
WARNING
WARNING
WARNING
WARNING
(ya|yandex)Vru (ya|yandex)\.ru (fb|facebook)\. com (fb|facebook)\. com (fb|facebook)\. com (fb|facebook)\. com (fbj facebook)\. com (fbj facebook)\. com (fbj facebook)com
Рисунок 1. Вывод программы
Фрагмент результата выполнения команды, описанной выше, представлен на рисунке 2.
root^HomePC:~# tcpdump -i ethO -n -x src not HomePC
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ethO, link-type EN10MB (Ethernet), capture size 262144 bytes
01:13:05.304132 IP 87, 240.134.101.80 > 192,168.1.2.41167: Flags [M. seq 181545
221:181545552, ack 1377381792, win 47, options [nop, nop,TS val 687242139 ecr 119
76636}, length 331
0x0000: 4528 017f laa8 4000 3706 87a9 57f 0 8665
0x0010: c0a8 0102 0050 aOcf 0ad2 2905 5219 2da0
0x0020: 8018 002f 4d3a 0000 0101 080a 28f6 7b9b
0x0030: 00b6 bfbc 4854 5450 2f 31 2e31 2032 3030
0x0040: 204f 4b0d 0a53 6572 7665 723a 2041 7061
0x0050: 6368 650d 0a44 6174 653a 204d 6f6e 2c20
0x0060: 3232 204a 756e 2032 3031 3520 3230 3a31
0x0070: 333a 3035 2047 4d54 OdOa 436f 6e74 656e
0x0080: 742d 5479 7065 3a20 7465 7874 2f6a 6176
0x0090: 6173 6372 6970 743b 2063 6861 7273 6574
OxOOaO: 3d55 5446 2d38 OdOa 436f 6e74 656e 742d
OxOObO: 4c65 6e67 7468 3a20 3132 350d 0a43 6f6e
OxOOcO: 6e65 6374 696f 6e3a 206b 6565 702d 616c
OxOOdO: 6976 650d 0a50 7261 676d 613a 206e 6f2d
OxOOeO: 6361 6368 650d 0a43 6163 6865 2d43 6f6e
OxOOfO: 7472 6f6c 3a20 6e6f 2d73 746f 7265 OdOa
0x0100: OdOa 5b7b 2274 7322 3a22 3238 3734 3136
0x0110: 3430 3622 2c22 6576 656e 7473 223a 5b5d
0x0120: 7d2c 7b22 7473 223a 2231 3935 3037 3436
0x0130: 3839 3122 2c22 6576 656e 7473 223a 5b5d
0x0140: 7d2c 7b22 7473 223a 2231 3433 3237 3839
0x0150: 3736 3222 2c22 6576 656e 7473 223a 5b22
0x0160: 3233 3c21 3e6f 6666 6c69 6e65 3c21 3e34
0x0170: 3532 3031 3030 333c 213e 3122 5d7d 5d
01:13:05.309139 IP 192.168. 1.2.41167 > 87, 240.134.101.80: Flags [M. seq 1:1009
, ack 331, win 392, options [nop,nop, TS val 11982620 ecr 687242139], length 1008
0x0000: 4500 0424 9712 4000 4006 ffcl c0a8 0102
0x0010: 57f0 8665 aOcf 0050 5219 2da0 0ad2 2a50
0x0020: 8018 0188 a416 0000 0101 080a 00b6 d71c
0x0030: 28f 6 7b9b 504f 5354 2Q2f 696d 3636 3820
0x0040: 4854 5450 2f31 2e31 OdOa 486f 7374 3a20
0x0050: 7134 2e71 7565 7565 7634 2e76 6b2e 636f
0x0060: 6d0d 0a43 6f6e 6e65 6374 696f 6e3a 206b
0x0070: 6565 702d 616c 6976 650d 0a43 6f6e 7465
0x0080: 6e74 2d4c 656e 6774 683a 2032 3339 OdOa
0x0090: 4f 72 6967 696e 3a20 6874 7470 3a2f 2f71
Рисунок 2. Вывод утилиты tcpdump
21
www.sibac.info
Технические науки — от теории к практике № 7-8 (44), 2015 г
Система обнаружения вторжений лишь один из инструментов
защиты важных данных и он не должен рассматриваться как замена
для любого из других защитных механизмов.
Список литературы:
1. Бобров А. Системы обнаружения вторжений / Сайт Института механики
сплошных сред Российской Академии Наук [Электронный ресурс] — Режим доступа. — URL: http://www.icmm.ru/~masich/win/lexion/
ids/ids.html (дата обращения: 02.06.2015).
2. Приступая к работе / Введение в программирование на Go [Электронный ресурс] — Режим доступа. — URL: http://golang-book.ru/chapter-01-gettting-started.html (дата обращения: 02.06.2015).
3. Регулярные выражения / Википедия — свободная энциклопедия [Электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/ wiki/Регулярные_выражения (дата обращения: 02.06.2015).
4. Система обнаружения вторжений / Википедия — свободная энциклопедия
[Электронный ресурс] — Режим доступа. — URL: https://ш.wikipedia.org/wiki/Средство_обнаружения_вторжений (дата
обращения: 02.06.2015).
5. Tcpdump / Википедия — свободная энциклопедия [Электронный ресурс] — Режим доступа. — URL: https://ru.wikipedia.org/wiki/Tcpdump (дата обращения: 04.06.2015).
22