Конин А.В., аспирант кафедры «Менеджмента и права

advertisement
Конин А.В., аспирант кафедры «Менеджмента и права»
Ижевская Государственная Сельскохозяйственная Академия;
Коробейников А.В., к.т.н., доцент кафедры «Программное обеспечение»
Ижевский государственный технический университет.
СИСТЕМА АНАЛИЗА АНОМАЛИЙ
КОРПОРАТИВНОГО СЕТЕВОГО ТРАФИКА
Разработана система захвата входящего и исходящего сетевого трафика для ОС
Windows и Linux на основе низкоуровневой библиотеки pcap. Рассмотрен механизм
кластеризации полученных данных с помощью инструментов программы Weka.
Введение. Глобальная информатизация общества, повсеместное использование сети
интернет для расчетов, покупок, перевода денежных средств и развлечений ведет к
увеличению числа угроз и уязвимостей, исходящих от нарушителей информационной
безопасности, как вне, так и внутри любой сети. Число пакетов данных и различных
протоколов, проходящих через сетевую карту, растет вместе с увеличением скорости
соединений, предоставляемых провайдерами. Для анализа каждого пакета системе
обнаружения вторжений требуется большое количество времени, в случае высокой
скорости соединения, следовательно, скорость загрузки страниц и проведения важных
операций увеличивается многократно.
Работа систем обнаружения вторжений основана на мониторинге, перехвате сетевого
трафика посредством анализатора трафика. Во время работы сетевого анализатора сетевой
интерфейс переключается в «режим прослушивания» (Promiscuous mode), что и позволяет
ему получать пакеты. Работая напрямую с сетевой картой появляется возможность
записать все входящие и исходящие пакеты зашифрованного и незашифрованного
сетевого трафика.
Библиотека Pcap. Для работы с сетевым трафиком используется библиотека pcap [1],
реализованная для всех Windows-платформ (95, 98, ME, NT, 2000, XP, Vista, 7) и для
большинства UNIX-систем. Объединяющие интерфейсы, libpcap и WinPCap, различаются,
но, с помощью pcap возможно создать сетевой анализатор, переносимый на уровне
исходных текстов на любую систему с поддержкой pcap.
Рис. 1. Работа библиотеки pcap напрямую с сетевой картой
Библиотека pcap позволяет создавать программы мониторинга и перехвата сетевого
трафика компьютера. Примером программного обеспечения (ПО), использующего
библиотеку Pcap, служит ПО Wireshark. Pcap создана для C-подобных языков
программирования, и языки программирования Java, .NET и другие, используют её. Для
UNIX систем используется libpcap библиотека, а для MS Windows NT – WinPcap. ПО
сетевого мониторинга использует pcap (рис. 1) для захвата пакетов сети, а также и для
передачи пакетов в сеть. Pcap также поддерживает сохранение захваченных пакетов в
файл и чтение таких файлов.
ОС Windows и Linux. Для работы с функциями библиотеки pcap в обязательном
порядке необходимо наличие файлов wpcap.dll (реализация pcap для системы Windows),
packet.dll (сервис-провайдер для wpcap.dll) и необходимые NIDS-драйверы уровня удра,
include-файлы и скомпилированные экспортные файлы для wpcap.dll и packet.dll (для
системы Линукс используется библиотека libpcap).
Для сбора информации о доступных интерфейсах используется функция:
int pcap_findalldevs(pcap_if_t **alldevs, char *errbuf).
Помимо сетевых адаптеров, в список попадают инфракрасные устройства,
параллельные порты и другие устройства (рис. 2).
Параметр pcap_if_t **alldevs – односвязный список.
Проход по списку можно осуществлять следующим образом:
pcap_if_t *devlist;
pcap_if_t *d;
if(pcap_findalldevs(&devlist,errbuf) == -1)
{ handling error here; }
for(d=devlist;d;d=d->next)
{ some code here; }
Что касается имен интерфейсов, то в Windows их названия соответствуют кодам
устройств, их типам и другим параметрам, в UNIX отображаются названия
производителей сетевых устройств. Например, для Windows XP Prof. сетевой адаптер
называется так: \Device\NPF_{SE1DB_B4F6-D8F6BDC0E7B8} (рис.2). Для выбора в
диалоговом окне используются специальные функции определения названия
производителя сетевого утройства (на рис.3 показано определение сетевого адаптера для
Linux – названия any и eth1 обусловлены использованием виртуальной машины с системой
Ubuntu 9.04).
Также библиотека pcap позволяет воспользоваться детализированной фильтрацией
входящих пакетов (кадров) данных на аппаратном уровне, в данном случае, на уровне
сетевого адаптера. Всякий раз при получении кадра данных в буфер, сетевое устройство
генерирует прерывание. Фильтрация просто необходима, т.к. сетевой анализатор без
фильтра в сети с высокой пропускной способностью (выше 10Mbit/c), с графическим
выводом, способен затруднить работу любого ПО и увеличить угрозу для ПК.
Рис. 2. Доступные интерфейсы в Windows
Рис. 3. Имена доступных интерфейсов для Linux Ubuntu
Библиотека pcap предоставляет простой интерфейс к BPF-фильтрации,
сосредоточенный в двух основных функциях:
1) int pcap_compile(pcap_t *p, struct bpf_program *fp, char *str, int optimize, bpf_u_int32
netmask);
2) int pcap_setfilter(pcap_t *p, struct bpf_program *fp);
Первая функция "компилирует" строку char *str, состоящую из набора regular
expressions для фильтра в BPF-псевдокод и помещает его в список struct bpf_program *fp,
применяя фильтр к сетевой маске bpf_u_int32 netmask и "сжимая" его, отбрасывая
избыточные данные, в случае позитивного значения int optimize. Вторая функция
применяет полученный псевдокод к указанному дескриптору устройства. Память под
bpf_program * выделяется автоматически.
Рис. 4. Захват и обработка пакетов в обычном режиме (Linux)
Рис. 5. Захват и обработка в режиме совместимости с Weka
Существует множество способов чтения пакетов данных с открытого или интерфейса с
использованием фильтра. Наиболее подходящий, с точки зрения сбережения ресурсов, это
функция с обработчиком, вызываемым при появлении нового пакета (или группы
пакетов).
int pcap_loop(pcap_t *p, int cnt, pcap_handler callback, u_char *user). pcap_t *p – это
функция-дескриптор открытого интерфейса, где int cnt – количество кадров данных,
которое нужно записать перед передачей управления; pcap_handler callback – ссылка на
обработчик, куда передается управление при получении следующего пакета данных;
u_char *user – буфер обмена между pcap_loop() и обработчиком.
Обработчик выглядит следующим образом:
void (*pcap_handler)(u_char *user, const struct pcap_pkthdr *pkt_header, const u_char
*pkt_data).
В *pkt_header содержатся реквизиты входящего пакета данных (время поступления,
размер, etc). u_char *pkt_data – это сам пакет, начиная с заголовка локального уровня.
Реализация данного подхода выглядит следующим образом:
while(!enough) {
rc = pcap_dispatch(iface,number,packet_handler,NULL);
if(rc == -1) {
printf("pcap_dispatch() failed!\n");
return 1;
}}
Для организации анализа сетевых пакетов используются функции разбиения этих
пакетов на 2 типа: 1) получение наиболее полной информации из пакета (IP отправителя,
IP получаетля, номера порта отправителя, номер порта получателя, MAC адрес
отправителя, MAC адрес получателя, страну отправителя, страну получателя, времени
получения пакета, интервала между пакетами, длина данных пакета, длина заголовка
пакета, данные самого пакета, порядковый номер пакета и др.), и ее вывод в обычном
режиме для просмотра пользователем (рис.4); 2) режим совместимости с ПО Weka (рис.5).
Программа Weka. Weka представляет собой набор средств визуализации и алгоритмов
для анализа данных и решения задач прогнозирования, вместе с графической
пользовательской оболочкой для доступа к ним [3][4]. Weka позволяет решать задачи
анализа данных: подготовку данных, отбор признаков, кластеризацию, классификацию,
регрессионный анализ и визуализацию результатов.
Кластеризация данных о пакетах используется для обнаружения потенциально
опасного или вредоносного трафика. Использование этого инструмента призвано помочь
разработчикам СОВ [5,6,7].
Предварительно необходимо выполнить конвертацию данных в формат *.arff (рис.6). В
заголовке файла приводится краткая информации об элементах, которые последуют далее.
На рис. 7 приводится пример использования Weka для кластеризации полученных
данных анализатора трафика алгоритмом COBWEB.
Выводы. Использование анализаторов сетевого трафика совместно с алгоритмами
искусственного алгоритма, снижение уровня ложных срабатываний, разработка
алгоритмов машинного обучения для этих систем призвано повысить уровень
информационной безопасности корпоративных и домашних сетей.
Рис. 6. Формат файлов для Weka
Рис. 7. Кластеризации пакетов данных алгоритмом COBWEB
Список литературы
1. W. Richard Stevens, Bill Fenner, Andrew M. Rudoff, UNIX Network Programming: The
sockets networking API, Addison-Wesley Professional, 2004.
2. Angela Orebaugh, Greg Morris, Ed Warnicke, Gilbert Ramírez, Ethereal packet sniffing,
Syngress Media, Inc, 2004.
3. Geoffrey I. Webb, Xing Huo Yui, AI 2004: advances in artificial intelligence, Springer,
2004.
4. Douglas H. Fisher, Knowledge acquisition via incremental conceptual clustering, Springer
Netherlands, 2004.
5. Istvan Jonyer, Graph-based hierarchical conceptual clustering, The Journal of Machine
Learning Research, 2002.
6. Матросов A.A., Архитектура систем обнаружения сетевых вторжений, Безопасность
информационных технологий, 2005.
7. Аграновский А.В., Хади Р.А., Балакин А.В., Обучаемые системы обнаружения и
защиты от вторжений, Искусственный интеллект, 2001.
Download