Kpi.ua



НАЦ?ОНАЛЬНИЙ ТЕХН?ЧНИЙ УН?ВЕРСИТЕТ УКРА?НИ?КИ?ВСЬКИЙ ПОЛ?ТЕХН?ЧНИЙ ?НСТИТУТ ?МЕН? ?ГОРЯ С?КОРСЬКОГО??НСТИТУТ ПРИКЛАДНОГО СИСТЕМНОГО АНАЛ?ЗУКАФЕДРА МАТЕМАТИЧНИХ МЕТОД?В СИСТЕМНОГО АНАЛ?ЗУНа правах рукописуДо захисту допущеноУДК 519.688В. о. зав?дувача кафедри ММСАО.Л.Тимощук?___? ____________ 2019 р.Маг?стерська дисертац?яна здобуття ступеня маг?стра за спец?альн?стю 124 Системний анал?зна тему: ?Виявлення аномалiй роботи операц?йно? системи Windows методами машинного навчання та лог-аналiтики?Виконав: студент ?? курсу, групи КА-82 мпЧабан?вський Артем Тарасович____________Кер?вник: доцент кафедри ММСАк.ф.-м.н., доц. Кан?овська ?.Ю.____________Рецензент:доцент кафедри математичного анал?зу та теор?? ймов?рностей? КП? ?м. ?. С?корського,к. ф.-м.н., доц. Буценко Ю. П. ______________Засв?дчую, що у ц?й маг?стерськ?й дисертац??нема? запозичень з праць ?нших автор?вбез в?дпов?дних посиланьСтудент ____________Ки?в2019 НАЦ?ОНАЛЬНИЙ ТЕХН?ЧНИЙ УН?ВЕРСИТЕТ УКРА?НИ?КИ?ВСЬКИЙ ПОЛ?ТЕХН?ЧНИЙ ?НСТИТУТ ?МЕН? ?ГОРЯ С?КОРСЬКОГО??НСТИТУТ ПРИКЛАДНОГО СИСТЕМНОГО АНАЛ?ЗУКАФЕДРА МАТЕМАТИЧНИХ МЕТОД?В СИСТЕМНОГО АНАЛ?ЗУР?вень вищо? осв?ти— другий (маг?стерський)Спец?альн?сть— 124 ?Системний анал?з? ЗАТВЕРДЖУЮВ. о. зав?дувача кафедри ММСАО.Л.Тимощук?___? ____________ 2019 р.ЗАВДАННЯна маг?стерську дисертац?ю студенту Чабан?вському Артему Тарасовичу1. Тема дисертац??: ?Виявлення аномал?й роботи операц?йно? системи Windows методами машинного навчання та лог-аналiтики?, науковий кер?вник дисертац?? Кан?овська ?рина Юр??вна, к.ф.-м.н., доцент, затверджен? наказом по ун?верситету в?д ?___? _________ № ______2. Терм?н подання студентом дисертац??: 13 грудня 2019 р.3. Об’?кт досл?дження: Аномал?? роботи операц?йно? системи Windows, ?х природа, методи виявлення.4. Предмет досл?дження: Лог-дан? операц?йно? системи, методи машинного навчання та лог-анал?тика.5. Перел?к завдань, як? потр?бно розробити:1) досл?дити сучасний стан та особливост? застосування лог-анал?тики та машинного навчання у вир?шенн? проблеми виявлення аномал?й роботи операц?йно? системи;2) розробити математичну модель нейронно? мереж? для виявлення аномал?й на основ? самоорган?зуючих карт Кохонена;3) на основ? нейронно? мереж? створити програмний продукт для виявлення аномал?й робото операц?йно? системи;4) пошук даних для застосування в програм?;5) нормал?зац?я та ?нтерпретац?я даних методами лог-анал?тики;6) розробити стартап-проект виведення на ринок результат?в досл?дження;7) розробити концептуальн? висновки за результатами наукового досл?дження6. Ор??нтовний перел?к граф?чного (?люстративного) матер?алу:1). Огляд ?снуючих систем лог аналал?зу операц?йно? системи Windows (рис.1.2 – рис.1.4);2). ?нтерфейс та робота створеного програмного продукту (рис.4.3, рис.4.4);3). Таблиц? у розд?л? стартап-проекту7. Ор??нтовний перел?к публ?кац?й: 8. Дата видач? завдання: 05 вересня 2019 р.Календарний план№ з/пНазва етап?в виконання маг?стерсько? дисертац??Терм?н виконання етап?в маг?стерсько? дисертац??1.Концептуальний вступ дисертац??. Формулювання об’?кта, предмета, ц?л?, завдань, новизни, практично? значущост? результат?в18.09.2019—20.09.20192.Перший розд?л. Огляд л?тературно-?нформац?йних джерел. Понят?йно-категор?альний апарат. Характеристика об’?кта21.09.2019—25.09.20193.Другий розд?л. Детальний огляд журналу под?й операц?йно? системи Windows.25.09.2019—30.09.20194.Трет?й розд?л. Опис самоорган?зовуюючих карт Кохонена, ?х застосування для виявлення аномал?й.30.09.2019—05.10.20195.Четвертий розд?л. ?мплементац?я отриманих результат?в у програмний продукт. Тестування програми05.10.2019—10.10.20196.П’ятий розд?л. Стартап-проект10.10.2019—20.10.20197.Концептуальн? висновки. Перспективи розвитку отриманих р?шень20.10.2019—25.10.2019Студент А.Т.Чабан?вськийНауковий кер?вник дисертац???.Ю. Кан?овськаРЕФЕРАТМаг?стерська дисертац?я: 97с., 15 рис., 25 табл., 1 додаток, 20 джерел. Об’?ктом досл?дження ? аномал?? роботи операц?йно? системи. Предметом досл?дження ? логи операц?йно? системи Windows.Мета досл?дження : розробити необх?дний ?нструментар?й методами лог-анал?тики для перетворення лог?в операц?йно? системи в наб?р даних для тренування нейронно? мереж?;досл?дження вид?в та метод?в навчання нейронних мереж для виявлення аномал?й роботи операц?йних систем;розробка ПЗ, яке реал?зу? самоорган?зуючу мережу Кохонена;розробка ПЗ, яке реал?зу? виявлення аномал?й у робот? операц?йно? системи Windows.Теоретичною та методолог?чною основою досл?дження ? прац? закордонних вчених в галуз? анал?зу даних, к?бербезпеки, програмування, математичного моделювання та серверного адм?н?стрування.В ход? розробки маг?стерсько? дисертац?? створено програмний продукт що за набором лог даних визнача? логи, як? ? аномальними по в?дношенню до ?нших.Програмний продукт реал?зовано за допомогою мови програмування C#, фреймворку .NET Core та середовища розробки Micrososft Visual Studio 2019. Надано рекомендац?? до подальших досл?джень.АНАЛ?З ДАНИХ, ОПЕРАЦ?ЙНА СИСТЕМА, ЛОГИ, НЕЙРОНН? МЕРЕЖ?, WINDOWS, ЛОГ АНАЛIТИКА.ABSTRACTMaster’s thesis work: 97 pp., 15 fig., 25 tabl., 1 application, 20 sources.The object of the research is anomalies of the work of operating system. The subject of the study is the operating systems’ logs.The aim of the study:1) develop the necessary tools by log analytics methods for converting server logs into a data set for training neural network;2) studying the types and methods of teaching neural networks to detect anomalies of web servers;3) develop software that implements a recurrent neural network4) develop software that implements the detection of anomalies in the web server’s work by the time window of the data log.The theoretical and methodological basis of the research is the work of foreign scientists in the field of data analysis, cybersecurity, mathematical modeling and server administrating.During the creation of the master thesis software product was created that defines logs that are anomalous to others by the set of log data.The software is implemented using C#, .NET Core framework, and Microsoft Visual Studio 2019 IDE. Recommendations for further research are given.DATA ANALYSIS, OPERATING SYSTEM, LOGS, NEURAL NETWORKS, WINE, LOG ANALYTICS.ЗМ?СТ TOC \o "1-3" \h \z \u ВСТУП PAGEREF _Toc26815758 \h 8ПЕРЕЛ?К СКОРОЧЕНЬ PAGEREF _Toc26815759 \h 9ТЕОРЕТИЧНИ ПОНЯТТЯ PAGEREF _Toc26815760 \h 10РОЗД?Л 1 ЛОГ АНАЛ?ТИКА ТА ?? ЗАСТОСУВАННЯ У ВИЯВЛЕНН? АНОМАЛ?Й PAGEREF _Toc26815761 \h 111.1 Види лог?в PAGEREF _Toc26815762 \h 111.2 Складов? лог-анал?тики PAGEREF _Toc26815763 \h 121.2.1 Ф?льтрац?я та зб?р та лог-даних PAGEREF _Toc26815764 \h 121.2.2 Структурування даних PAGEREF _Toc26815765 \h 131.2.3 Анал?з даних PAGEREF _Toc26815766 \h 131.3 Огляд ?снуючих систем анал?зу лог даних операц?йно? системи Windows PAGEREF _Toc26815767 \h 131.4 Аномал?? та методики ?х виявлення PAGEREF _Toc26815768 \h 171.4.1 Режими виявлення аномал?й PAGEREF _Toc26815769 \h 191.4.2 Методи розп?знавання аномал?й PAGEREF _Toc26815770 \h 201.5 Висновки до розд?лу PAGEREF _Toc26815771 \h 24РОЗД?Л 2. ЖУРНАЛ ПОД?Й WINDOWS PAGEREF _Toc26815772 \h 252.1. Означення PAGEREF _Toc26815773 \h 252.2 Елементи журналу под?й Windows PAGEREF _Toc26815774 \h 252.3 Под?? PAGEREF _Toc26815775 \h 262.3 Журнал под?й безпеки Windows PAGEREF _Toc26815776 \h 292.4 Висновки до розд?лу PAGEREF _Toc26815777 \h 31РОЗД?Л 3 ОПИС ОБРАНО? ТЕХНОЛОГ?? PAGEREF _Toc26815778 \h 323.1 Самоорган?зац?я PAGEREF _Toc26815779 \h 323.2 Д?аграма вх?дного простору PAGEREF _Toc26815780 \h 323.3 Модель Кохонена PAGEREF _Toc26815781 \h 333.3.1 Алгоритм навчання PAGEREF _Toc26815782 \h 343.4 Особливост? мереж? PAGEREF _Toc26815783 \h 363.5 Висновки за розд?лом PAGEREF _Toc26815784 \h 37РОЗД?Л 4 РОЗРОБКА ПРОГРАМНОГО ПРОДУКТУ ДЛЯ ВИЯВЛЕННЯ АНОМАЛ?Й РОБОТИ ОС WINDOWS PAGEREF _Toc26815785 \h 384.1 Дан? для роботи PAGEREF _Toc26815786 \h 384.2 Обробка даних PAGEREF _Toc26815787 \h 394.2.1 Сб?р даних PAGEREF _Toc26815788 \h 394.2.2 Ф?льтрац?я даних PAGEREF _Toc26815789 \h 404.2.4 Нормал?зац?я даних PAGEREF _Toc26815790 \h 414.3 Опис програмного продукту PAGEREF _Toc26815791 \h 424.3.1 Опис ?нтерфейсу користувача PAGEREF _Toc26815792 \h 444.4 Результати роботи програми PAGEREF _Toc26815793 \h 454.5 Висновки за розд?лом PAGEREF _Toc26815794 \h 45РОЗД?Л 5 РОЗРОБКА СТАРТАП-ПРОЕКТУ PAGEREF _Toc26815795 \h 475.2 Технолог?чний аудит ?де? стартап-проекту PAGEREF _Toc26815796 \h 495.3 Анал?з ринкових можливостей запуску стартап-проекту PAGEREF _Toc26815797 \h 505.4 Розроблення ринково? стратег?? проекту PAGEREF _Toc26815798 \h 605.5 Розроблення маркетингово? програми стартап-проекту PAGEREF _Toc26815799 \h 655.6 Висновки до розд?лу PAGEREF _Toc26815800 \h 70ВИСНОВКИ ПО РОБОТ? ТА ПЕРСПЕКТИВИ ПОДАЛЬШИХ ДОСЛ?ДЖЕНЬ PAGEREF _Toc26815801 \h 71ПЕРЕЛ?К ПОСИЛАНЬ PAGEREF _Toc26815802 \h 73ДОДАТОК А Л?СТИНГ ПРОГРАМИ PAGEREF _Toc26815803 \h 75ВСТУПНа сьогодн?шн?й день операц?йна система Windows ? найпопулярн?шою операц?йною системою. П?д не? розроблюються нов?тн? програми, комп’ютерн? ?гри, тощо. Майже кожен ?з нас мав досв?д роботи ?з нею.Усп?шна робота вс?х програм та застосунк?в на дан?й операц?йн?й систем? напряму залежить в?д ?? стаб?льно? роботи. Також в?д цього залежить ? б?льш важлива р?ч – збережен?сть та ц?л?сн?сть персональних даних.Сво?часне виявлення аномал?й роботи операц?йно? системи в?д?гра? неперес?чну роль у коректн?й робот? системи, збереженн? ?? ц?л?сност? та неушкодженост? персональних даних. Також пошук аномал?й у робот? системи ? дуже корисним п?д час розробки та тестуванн? програмного продукту, що розроблю?ться саме п?д цю операц?йну систему.?нструментом для виявлення некоректно? роботи системи можуть слугувати лог-дан? – дан?, що збер?гають ?нформац?ю (службову, статистичну) про д?? у операц?йн?й систем?. На даний момент б?льш?сть розробник?в та прац?вники команди п?дтримки, при виявленн? некоректно? роботи програми, перев?ряють записи системи вручну, що займа? дуже великий пром?жок часу (так як системн? логи можуть мати дуже великий обсяг), а також да? шанс припустити помилку через ?людський фактор?. Через це нараз? сто?ть питання, як уникнути людського втручання та перев?ряти операц?йну систему на аномальн?сть програмно.ПЕРЕЛ?К СКОРОЧЕНЬОС – Операц?йна системаRDP (англ. Remote Desktop Connection) – в?ддалене п?дключення до робочого столуVS (англ. Visual Studio) – середовище розробки програмного забезпечення, що забезпечу?ться компан??ю MicrosoftТЕОРЕТИЧНИ ПОНЯТТЯОзначення. Операц?йна система – це базовий комплекс програм, що викону? управл?ння апаратною складовою комп'ютера або в?ртуально? машини; забезпечу? керування обчислювальним процесом ? орган?зову? вза?мод?ю з користувачем. Зазвичай склада?ться з ядра операц?йно? системи та базового набору прикладних програм..Означення. Windows – узагальнююча назва операц?йних систем для комп'ютер?в, розроблених корпорац??ю Microsoft.Означення. Логи (лог-файли) – це файли, як? м?стять системну ?нформац?ю роботи сервера чи комп’ютера, в котр? заносяться певн? д?? користувача чи програми[5]. ?нод? використову?ться укра?нськомовний аналог поняття – журнал.Означення. Лог-анал?тика (лог-анал?з) – розд?л комп. науки, що вивча? та анал?зу? записи, згенерован? сервером або системою сервер?в (логи).Означення. Машинне навчання - це п?дгалузь штучного ?нтелекту в галуз? ?нформатики, яка часто застосову? статистичн? прийоми для надання комп'ютерам здатност? ?навчатися? (тобто, поступово покращувати продуктивн?сть у певн?й задач?) з даних, без того, щоби бути програмованими явно.РОЗД?Л 1 ЛОГ АНАЛ?ТИКА ТА ?? ЗАСТОСУВАННЯ У ВИЯВЛЕНН? АНОМАЛ?Й1.1 Види лог?вФормат лог файлу: таблиця або файл. Зазвичай у файл? логу, або у в?дпов?дн?й таблиц?, записи в?дсортован? за часом. Лог дан? ? ун?кальними для б?льшост? програмних забезпечень. Найв?дом?ш? типи лог?в наведен? у табл. 1.1.Таблиця 1.1 – Види лог даних [1]ЛогПрограмне забезпеченняТранзац?йний логСистема управл?ння БДЛог пов?домленьIRC та IMСистемний логМережев? пристро?Лог веб сервераВеб сервер1.2 Складов? лог-анал?тики Зб?р лог-данихФ?льтрац?я лог-данихСтруктурування лог-данихАнал?з лог-данихСхематично дан? складов? про?люстровано на рис. 1.1.Рисунок 1.1 –Лог-анал?з1.2.1 Ф?льтрац?я та зб?р та лог-данихП?д час етапу №1 в?дбува?ться пошук даних (в даному випадку – лог даних) з в?дпов?дних джерел. Велике значення ма? репрезентативн?сть ?нформац??, оск?льки на цих даних буде оснований результат. Зважаючи на цей фактор велике значення ма? реальн?сть та непошкоджен?сть ?нформац??[2].З?бранн? дан? мають бути пом?щенн? у деяке сховище (наприклад – база даних) та в?дф?льтрован? за в?дпов?дними критер?ями використовуючи застосунки[6]. Ф?льтрац?я даних ма? велике значення так як це вплива? на репрезентативн?сть даних.1.2.2 Структурування данихДан? лог?в можуть мати великий об'?м а також складну структуру. Для полегшення розум?ння ?х сл?д структурувати у зручному для користувача вигляд?. Сл?д зважати на те, що логи можуть мати зв'язок з даними, що були отриман? з ?нших джерел. 1.2.3 Анал?з даних Завершаючим етапом ? анал?з оброблених даних. На цьому етап? можуть бути залученн? р?зн? в?дом? методи анал?зу даних[3, 4]. Виб?р методу напряму залежить в?д типу задач? а також навик?в розробника.1.3 Огляд ?снуючих систем анал?зу лог даних операц?йно? системи WindowsПерший застосунок у цьому розд?л? - Windows Event Log Viewer (рис 1.2). Багато користувач?в Windows покладаються на цей вбудований ?нструмент для перев?рки под?й, що в?дбуваються на ?хн?х комп’ютерах. Цей ?нструмент ма? дв? основн? переваги: в?н уже встановлений на комп’ютер? та ма? дуже ?нту?тивний ?нтерфейс. Ви можете запустити програму перегляду журналу под?й Windows, вв?вши “event viewer” (англ. переглядач под?й) на панел? пошуку.Екран ?нструменту розд?лений на три частини: категор?? под?й розм?щен? на л?в?й б?чн?й панел?, детальну ?нформац?ю про под?? журналу можна знайти в середньому розд?л? в?кна, а доступн? д?? вказан? на прав?й б?чн?й панел?.Windows Event Log Viewer пропону? зв?ти про п'ять под?й:?Под??? програм (англ. Application events): зв?ти про переб?г виконання програми;?Под??? безпеки (англ. Security events): зв?ти про результати д?й безпеки;?Под??? налаштування (англ. Setup events): в основному стосуються контролер?в домену;170370560007500Перенесен? под?? (англ. Forwarded events:): це зв?ти, що надсилаються ?ншими комп’ютерами. Рисунок 1.2 - Windows Event Log ViewerНаступний ?нструмент - Event Log Explorer (рис 1.3). Цей переглядач журналу под?й дозволя? користувачам переглядати, анал?зувати та контролювати под??, записан? в журналах под?й Windows. - Event Log Explorer ? кращим, н?ж власний переглядач журнал?в под?й Майкрософт, так як забезпечу? б?льшу функц?ональ?нсть таблиц?. Завдяки цьому ?нструменту користувач? можуть анал?зувати р?зн? журнали под?й: безпеку, додаток, систему, налаштування, службу каталог?в, DNS та ?нше. ?нш? функц?? включають:Митт?вий доступ до журнал?в под?й - Пров?дник журнал?в под?й працю? як з локальними, так ? з в?ддаленими журналами под?й, а також з файлами журналу под?й у формат? EVT та EVTX;Ефективна ф?льтрац?я - ф?льтрац?я за описами под?й за допомогою регулярних вираз?в, ф?льтрац?я за параметрами под?? безпеки, ф?льтрац?я за допомогою ф?льтр?в користувача;147066068643500Експортувати под?? та генератор зв?т?в - експортувати та друкувати под??;Рисунок 1.3 – Event Log ExplorerОстанн?й ?нструмент у цьому огляд? – MyEventViewer. Цей ?нструмент дозволя? переглядати к?лька журнал?в под?й в одному списку, а також опис под?й та дан?. Для запуску цього програмного забезпечення не потр?бен процес установки або додатков? файли DLL. Все, що вам потр?бно зробити, це запустити виконуваний файл.?нш? функц??:Спрощений ?нтерфейс, дуже зручний для користувач?в;Можлив?сть перегляду под?й з в?ддаленого комп'ютера;Певн? под?? можна приховати в?д конкретних користувач?в;left46101000Под?? можна в?дф?льтрувати, використовуючи низку критер??в;Рисунок 1.4 - MyEventViewer1.4 Аномал?? та методики ?х виявленняВиявлення аномал?й в?дноситься до пошуку непередбачених значень (патерн?в) в потоках даних [5]. Аномал?я (викид, помилка, в?дхилення або виключення) - це в?дхилення повед?нки системи в?д стандартного (оч?куваного) [7].Аномал?? под?ляються на три наступн? категор?? : center1253490001) Точков? аномал?? (рис 1.5) - виникають в ситуац??, коли окремий екземпляр даних може розглядатися як аномальний по в?дношенню до решти даних. Даний вид аномал?й ? найб?льш легко розп?знаваним, б?льш?сть ?снуючих метод?в створено для розп?знавання точкових аномал?й [8];Рисунок 1.5 – Приклад точково? аномал??2) Контекстн? аномал?? (рис 1.6.) (також в?дом? як ?умовн? аномал??? [3]) – спостер?гаються, якщо екземпляр даних ? аномальним лише в певному контекст? [8]. Аномальна повед?нка визнача?ться за допомогою значень повед?нкових атрибут?в виходячи з конкретного контексту. Таким чином, екземпляр даних може бути контекстуально? аномал??ю за даних умов, але при таких же повед?нкових атрибутах вважатися нормальним в ?ншому контекст?;left11197100Рисунок 1.6 – Приклад контекстно? аномал??5535081648671003) Колективн? аномал?? (рис 1.7.) – виникають, коли посл?довн?сть пов'язаних прим?рник?в даних (наприклад, д?лянка часового ряду) ? аномальною по в?дношенню до ц?лого набору даних [8]. Окремий екземпляр даних в так?й посл?довност? може не бути в?дхиленням, проте сп?льна поява таких екземпляр?в ? колективною аномал??ю.Рисунок 1.7 – приклад колективно? аномал??1.4.1 Режими виявлення аномал?й Часто для вир?шення завдання пошуку аномал?й потребу?ться наб?р даних, що описують систему [9]. Кожен екземпляр в ньому опису?ться м?ткою, яка вказу?, чи ? в?н нормальним або аномальним. Таким чином, безл?ч екземпляр?в з однаковими тегами формують в?дпов?дний клас.Створення под?бно? промаркованно? виб?рки зазвичай проводиться вручну ? ? трудом?стким ? дорогим процесом [9]. У деяких випадках отримати екземпляри аномального класу неможливо в силу в?дсутност? даних про можлив? в?дхилення в систем?, в ?нших можуть бути в?дсутн? м?тки обох клас?в. Залежно в?д того, як? класи даних використовуються для реал?зац?? алгоритму, методи пошуку аномал?й можуть виконуватися в одному з трьох перерахованих нижче режим?в:Supervised anomaly detection (режим розп?знавання з учителем). Дана методика вимага? наявност? навчально? виб?рки, що повноц?нно представля? систему ? включа? екземпляри даних нормального ? аномального клас?в. Робота алгоритму в?дбува?ться в два етапи: навчання та розп?знавання. На першому етап? буду?ться модель, з якою будуть пор?внюються екземпляри, як? не мають м?тки. У б?льшост? випадк?в поклада?ться, що дан? не зм?нюють сво? статистичн? характеристики, ?накше виника? необх?дн?сть зм?нювати класиф?катор. Основною складн?стю алгоритм?в, що працюють в режим? розп?знавання з учителем, ? формування даних для навчання. Часто аномальний клас представлений значно меншою к?льк?стю прим?рник?в, н?ж нормальний, що може призводити до неточностей в отриман?й модел?. У таких випадках застосову?ться штучна генерац?я аномал?й [10];Semi-Supervised anomaly detection (режим розп?знавання частково з учителем). Вих?дн? дан? при цьому п?дход? представляють т?льки нормальний клас. Навчившись на одному клас?, система може визначати приналежн?сть нових даних до нього, таким чином, визначаючи протилежний. Алгоритми, що працюють в режим? розп?знавання частково з учителем, не вимагають ?нформац?? про аномальний клас прим?рник?в, внасл?док чого вони ширше застосовуються й дозволяють розп?знавати в?дхилення за в?дсутност? заздалег?дь певно? ?нформац?? про них [10];Unsupervised anomaly detection (режим розп?знавання без учителя). Застосову?ться при в?дсутност? апр?орно? ?нформац?? про дан?. Алгоритми розп?знавання в режим? без вчителя базуються на припущенн? про те, що аномальн? екземпляри зустр?чаються набагато р?дше нормальних. Дан? обробляються, найб?льш в?ддален? визначаються як аномал??. Для застосування ц??? методики ма? бути доступний весь наб?р даних, тобто вона не може застосовуватися в режим? реального часу [10].1.4.2 Методи розп?знавання аномал?йКласиф?кац?я. Реал?зац?я даного методу заснована на припущенн? про те, що нормальна повед?нка системи може визначатися одним або дек?лькома класами [11]. Таким чином, екземпляр, що не належить до жодного з клас?в, ? в?дхиленням. Пошук аномал?й в?дбува?ться в два етапи: навчання та розп?знавання. Класиф?катор навча?ться на масив? маркованих даних, дал? визнача?ться приналежн?сть до одного з в?домих клас?в. В ?ншому випадку екземпляр познача?ться, як аномал?я. Найб?льш широко вживаними механ?змами реал?зац?? розп?знавання аномал?й за допомогою класиф?кац?? ?: нейронн? мереж?, Байесови мереж?, метод опорних вектор?в ? метод на основ? правил.Метод виявлення аномал?й на основ? нейронних мереж включа? два етапи. Перший: нейронна мережа навча?ться розп?знаванню клас?в нормального повед?нки на тренувальн?й виб?рц?. Другий: кожен екземпляр надходить в якост? вх?дного сигналу нейронно? мереж?. Система, заснована на нейронних мережах, може розп?знавати як один, так ? к?лька клас?в нормального повед?нки. Для знаходження аномал?й за допомогою розп?знавання т?льки одного класу використовуються репл?кативн? нейронн? мереж?. Технолог?я нейронних мереж глибинного навчання (Deep Learning) також усп?шно застосову?ться для вир?шення даного завдання [12].Бай?с?всько? мережею ? граф?чна модель, що в?добража? ?мов?рн?сн? залежност? безл?ч? зм?нних ? дозволя? проводити ?мов?рн?сний висновок за допомогою цих зм?нних. Вона склада?ться з двох основних частин: граф?чна структура, яка визнача? наб?р залежностей ? незалежностей в безл?ч? випадкових величин, що представляють суб'?кти предметно? област?, ? наб?р ?мов?рн?сних розпод?л?в, що визначають силу в?дносин залежност?, закодованих в граф?чн?й структур?. Таким чином, застосування Бай?сова мереж? при ?дентиф?кац?? аномал?й поляга? в оц?нц? ймов?рност? спостереження одного з нормальних або аномальних клас?в. Найб?льш простий реал?зац??ю даного п?дходу ? ?На?вний байесовский п?дх?д? (Naive Bayes Approach) [12].Метод опорних вектор?в (Support Vector Machine) застосову?ться для пошуку аномал?й в системах, де нормальна повед?нка вида?ться т?льки одним класом. Даний метод визнача? межу рег?ону, в якому знаходяться екземпляри нормальних даних. Для кожного досл?джуваного екземпляра визнача?ться, чи знаходиться в?н в певному рег?он? [12]. Якщо екземпляр виявля?ться поза рег?оном, в?н визнача?ться як аномальнийОстанн?й метод ?рунту?ться на генерац?? правил, як? в?дпов?дають нормально? повед?нки системи [12]. Прим?рник, який не в?дпов?да? цим правилам, розп?зна?ться як аномальний. Алгоритм склада?ться з двох крок?в. Перший: навчання правил з виб?рки за допомогою одного з алгоритм?в, таких як RIPPER [13], Decision Trees ? т.д. Кожному правилу привласню?ться сво? значення, яке пропорц?йно сп?вв?дношенню м?ж числом навчальних прим?рник?в, що класиф?куються, ? загальним числом навчальних прим?рник?в, що покриваються цим правилом. Другий крок: пошук для кожного тестового екземпляра правила, яке найкращим чином п?дходить до даного екземпляру. Система може розп?знавати як один, так ? к?лька клас?в повед?нки Одним з п?двид?в систем на основ? правил ? системи неч?тко? лог?ки. Вони застосову?ться, коли межа м?ж нормальним ? аномальним повед?нкою системи ? розмитою. Кожен екземпляр ? аномал??ю в деяк?й м?р? в?ддаленост? в?д центру мас нормального ?нтервалу [12].Статистичний анал?з. При використанн? цього п?дходу досл?джу?ться процес, буду?ться його проф?ль (модель), який пот?м пор?вню?ться з реальною повед?нкою [14]. Якщо р?зниця в реальн?й ? припуска?м?й повед?нц? системи, що визнача?ться заданою функц??ю аномальност?, вище встановленого порогу, робиться висновок про наявн?сть в?дхилень. Застосову?ться припущення про те, що нормальна повед?нка системи буде знаходитися в зон? високо? ймов?рност?, в той час як викиди - в зон? низько?. Даний клас метод?в зручний тим, що не вимага? заздалег?дь певних знань про вид аномал??. Проте складнощ? можуть виникати у визначенн? точного статистичного розпод?лу ? порога. Методи статистичного анал?зу п?дрозд?ляються на так? основн? групи:Параметричн? методи. Припускають, що нормальн? дан? генеруються параметричних розпод?лом з параметрами θ ? функц??ю щ?льност? ймов?рност? P (x, θ), де x - спостереження. Аномал?я ? зворотною функц??ю розпод?лу. Ц? методи часто ?рунтуються на гауссов?й або регрес?йн?й модел?, а також ?х комб?нац?ях [15];Непараметричн? методи. Передбача?ться, що структура модел? не визначена апр?орно, зам?сть цього вона визнача?ться з наданих даних. Включа? методи на основ? г?стограм або функц?й ядра. Базовий алгоритм пошуку аномал?й ?з застосуванням г?стограм включа? два етапи. На першому етап? в?дбува?ться побудова г?стограми на основ? р?зних значень обрано? характеристики для прим?рник?в тренувальних даних. На другому етап? для кожного з досл?джуваних прим?рник?в визнача?ться приналежн?сть до одного з стовпц?в г?стограми. Екземпляри, що не належать до жодного з стовпц?в, позначаються як аномальн?. Розп?знавання аномал?й на основ? функц?? ядра в?дбува?ться аналог?чно параметричних метод?в за винятком способу оц?нки щ?льност? ймов?рност? [15].Алгоритм найближчого сус?да. Для використання дано? методики необх?дно визначити поняття в?дстан? (заходи схожост?) м?ж об'?ктами. Прикладом може бути Евкл?дова в?дстань. Два основн? п?дходи ?рунтуються на наступних припущеннях [15]: В?дстань до k-го найближчого сус?да. Для реал?зац?? цього п?дходу в?дстань до найближчого об'?кта визнача?ться для кожного тестового екземпляра класу. Прим?рник, який ? викидом, найб?льш в?ддалений в?д найближчого сус?да;Використання в?дносно? щ?льност? засноване на оц?нц? щ?льност? околиц? кожного прим?рника даних. Прим?рник, який знаходиться в оточенн? з низькою щ?льн?стю, оц?ню?ться як аномальний, в той час як екземпляр в околиц? з високою щ?льн?стю оц?ню?ться як нормальний. Для цього прим?рника даних в?дстань до його k-го найближчого сус?да екв?валентно рад?усу г?персфери з центром в даному екземпляр? ? м?стить k ?нших прим?рник?в.Спектральний анал?з. Спектральн? методи знаходять апроксимац?ю даних, використовуючи комб?нац?ю атрибут?в, як? передають б?льшу частину вар?ативност? в даних. Ця методика заснована на наступному припущенн?: дан? можуть бути вкладен? в п?дпрост?р меншо? розм?рност?, в якому нормальний стан ? аномал?? проявляються ?накше. Спектральн? методи часто застосовуються сп?льно з ?ншими алгоритмами для предобробки даних;Г?бридн? методи. Г?бридн? методики розп?знавання аномал?й, дозволяють по?днувати переваги р?зних п?дход?в. При цьому р?зн? техн?ки можуть застосовуватися як посл?довно, так ? паралельно для досягнення усереднених результат?в;Нейронн? мереж?. Нейронн? мереж? та глибоке навчання в даний час пропонують найкращ? р?шення багатьох проблем у розп?знаванн? зображень, розп?знаванн? мови та природн?й обробц? мови. Специф?кою ? те, що нейронн? мереж? можуть навчатися як з? вчителем, так ? без нього. Нейронн? мереж? можуть бути використан? для розп?знавання аномал?й так як можуть вид?ляти непом?тн? паттерни а також можуть запам’ятовувати повед?нку. Так як вид?в нейронних мереж дуже багато, сл?д прид?лити багато уваги у вибор? саме необх?дно? нейронно? мереж?.1.5 Висновки до розд?луУ даному розд?л? було розглянуто такий розд?л анал?зу, як лог-анал?з, типи лог?в та дано обширне означення. Детально описано програмн? продукти, проведено ?х анал?з а також розглянуто ?х сильн? так слабк? сторони. У даному розд?л? було дано детальний опис та розглянуто види аномал?й з характерними ознаками для кожного типу. Наприк?нц? розд?лу було дано детальний огляд ?снуючих методик розп?знавання аномал?й.РОЗД?Л 2. ЖУРНАЛ ПОД?Й WINDOWS2.1. ОзначенняЖурнал под?й Windows (англ. Windows Event log) - це детальний запис системних пов?домлень, пов?домлень в?д систем безпеки та прикладних пов?домлень, що збер?гаються в операц?йн?й систем? Windows, який використову?ться адм?н?страторами для д?агностики системних проблем та прогнозування майбутн?х проблем [16].Програми та операц?йна система (ОС) використовують ц? журнали под?й для запису важливих апаратних та програмних д?й, як? адм?н?стратор може використовувати для усунення проблем з операц?йною системою. Операц?йна система Windows в?дсл?дкову? конкретн? под?? у сво?х файлах журналу, так? як встановлення додатк?в, управл?ння безпекою, операц?? з налаштування системи при першому запуску, а також проблеми чи помилки.2.2 Елементи журналу под?й WindowsКожна под?я у запис? журналу м?стить наступну ?нформац?ю:Журнал под?й : м?стить ?м’я журналу под?й, у якому виникла под?я;Джерело под?? : програма або процес, що генерував под?ю. Наприклад, ус? под?? входу та виходу з системи походять ?з джерела безпеки. У цьому випадку ? журнал под?й, ? джерело под?й мають одне ?м’я, але ? окремими полями;?дентиф?катор под?? : ун?кальний ?дентиф?катор под??, на основ? якого джерело генерувало под?ю. ?дентиф?катори под?й не ? ун?кальними м?ж джерелами, але завжди ун?кальн? в межах власного джерела. ?дентиф?катор под?? не ? специф?чним для кожно? под??, а лише для кожно? под?? певного тип. Наприклад, ус? под?? блокування обл?кових запис?в Windows розм?щуються в журнал? безпеки ?з джерелом захисту та ?дентиф?катором под?? 644;Тип под?? : це поле опису? тип под??, що сталася, ? може бути корисним для визначення того, який тип д?яльност? породжував под?ю;Категор?я под?? : класиф?ку? под?? на конкретн? групи залежно в?д типу под??. Наприклад, под?? категор?? Logon / Logoff м?стять к?лька ?дентиф?катор?в под?й, як? в?дносяться до категор??;Час/Дата: час ? дата под?? використовуються для обчислення к?лькост? конкретно? под?? в будь-який момент часу протягом дня в будь-який конкретний день тижня. День тижня використову?ться через те, що ви можете мати б?льше запит?в на вх?д у визначений час у середу, н?ж у нед?лю;?дентиф?катор сервера : ун?кальний ?дентиф?катор для кожного сервера. Це корисно, щоб допомогти адм?н?стратору зв’язати спов?щення з певним сервером, щоб визначити, де виникла проблема;?дентиф?катор користувача : лог?н користувача.2.3 Под??Записи журналу под?й збер?гаються в ключ? ре?стру: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog [17].Даний ключ м?стить п?дключ?, зван? файлами журналу. За замовчуванням присутн?:файл журналу додатк?в — для застосунк?в ? служб;файл журналу безпеки — для под?й системи аудиту;файл системного журналу — для под?й драйвер?в пристро?в.? можлив?сть створювати додатков? журнали. Для кожного джерела под?й в журнал? створю?ться окремий п?дключ. Под?? в?д кожного джерела можуть включатися в окрему для кожного джерела категор?ю. Под?? повинн? належати до одного з п'яти визначених тип?в (табл. 2.1).Таблиця 2.1 - Типи под?йТипОпис?нформац?яПод?? вказують на р?дк?сн? ? важлив? усп?шн? операц??.ПопередженняПод?? вказують на проблеми, як? не вимагають негайного втручання, але можуть призвести до помилок у майбутньому. Прикладом такого роду под?й може служити вичерпання ресурс?в.ПомилкаПод?? вказують на ?стотн? проблеми, як? зазвичай призводять до втрати функц?ональност? або даних. Прикладом може служити неможлив?сть запуску служби при завантаженн?.Усп?шний аудитПод?? безпеки, як? в?дбуваються при усп?шному зверненн? до ресурс?в, як? проходять аудит. Прикладом може служити усп?шний вх?д в систему.Не усп?шний аудитПод?? безпеки, як? в?дбуваються при неусп?шному зверненн? до ресурс?в, як? проходять аудит. Прикладом може служити спроба в?дкрити файл, не маючи в?дпов?дних прав доступу.Запис про под?ю включа? в себе: ?дентиф?катор под??, тип под??, категор?ю под??, масив рядк?в ? додатков?, специф?чн? для под??, дв?йков? дан?. Кожне джерело под?й повинне заре?струвати св?й файл-пов?домлення, в якому збер?гаються рядок опису ?дентиф?катор?в пов?домлень, категор?й ? параметр?в. Рядок опису може м?стити м?сце для вставки рядк?в з масиву, зазначеного при запису под??. Додатков? дан? н?як не ?нтерпретуються програмою перегляду под?й ? в?дображаються в ш?стнадцятковому ? текстовому формат?.2.3 Журнал под?й безпеки WindowsУ цьому розд?л? описано журнал под?й безпеки Windows [18]. Для кращого розум?ння контексту спочатку описано доменн? служби Active Directory, як? пропонують послуги адм?н?страторам збер?гати та налаштовувати користувач?в та ресурси в домен? Windows. Комп'ютери в орган?зац?? п?дписан? на мережу, а обл?ков? записи користувач?в надаються прац?вникам для входу на ц? комп’ютери. У випадку Windows, ця мережа назива?ться доменом Windows. Active Directory (AD) - служба каталог?в, пропонована Microsoft, яка нада? способи збер?гання та розповсюдження вс?х даних, пов’язаних ?з управл?нням доменом [19]. Контроль доступу на основ? рол? реал?зу?ться через групи, як? визначають прив?ле?, надан? обл?ков?й частин? ц??? групи. В AD збер?га?ться ?нформац?я про аккаунти та групи (рис 2.1). У домен? Windows ?снують два основн? типи обл?кових запис?в: обл?ков? записи користувач?в, що дозволяють людям ув?йти в домен ? комп'ютерн? акаунти для управл?ння ресурсами. Обл?ков? записи користувач?в та комп'ютерн? акаунти адм?н?струються однаково ? ? частиною груп для управл?ння ?хн?ми прив?леями. Контролер домену знаходиться там же, де ? Active Directory. Контролери домену - це сервери, в?дпов?дальн? за надання ?нформац?? про каталог у всьому домен?, а отже, також перев?ряють -15049574295000обл?ков? дан?.Рисунок 2.1 - Active DirectoryЩоб в?дсл?дковувати використання прив?ле?в та д??, виконан? користувачами, операц?йна система Windows пропону? журнал под?й, який м?стить три стандартних типи журнал?в под?й: 1) журнал програми; 2) системний журнал;3) журнал безпеки.Записи под?й програми м?стять ?нформац?ю д?агностичного журналу про встановлен? програми, а пов?домлення та структура журналу залежать в?д джерела програми. У системному журнал? також ре?струються д?агностичн? под??, однак ц? записи под?й пов'язан? з машиною. Оч?куються под??, що стосуються мережевих та ?нших протокол?в зв’язку, а також ведення журнал?в щодо машинно? пол?тики. ? под?? програми, ? система м?стять в основному текстовий опис д?агностичного запису под?й. Журнал под?й безпеки Windows, збира? под??, пов’язан? з безпекою щодо лог?н?в обл?кових запис?в, створення та використання прив?ле?в, ре?страц?? процес?в, пов’язаних ?з безпекою, а також перезавантаження системи [20]. Под??, заф?ксован? Windows, визначен? в пол?тиц? аудиту, яку можна застосувати глобально в межах доменно? мереж? Windows шляхом визначення пол?тики аудиту для р?зних груп машин. Ц? под?? мають передбачуван? ознаки на основ? типу под?? та залежно в?д активно? пол?тики аудиту. Б?льше того, б?льш?сть атрибут?в ? категоричними м?тками, наприклад, що визначають конкретний тип входу або прив?лей, який використову?ться процесом. У решт? цього розд?лу розглядаються методи, що використовують под?? безпеки Windows для виявлення загрози.2.4 Висновки до розд?луУ даному розд?л? було дано означення журналу под?й операц?йно? системи Windows, детально розглянуто його елементи та под??.Детальну увагу було прид?лено журналу под?й безпеки Windows, адже саме цей тип журналу буде детально проанал?зований у дан?й робот?.РОЗД?Л 3 ОПИС ОБРАНО? ТЕХНОЛОГ??3.1 Самоорган?зац?яУ ц?й глав? ми розглянемо самоорган?зуюч? мереж?. Основна в?дм?нн?сть м?ж ними та звичайними моделями поляга? в тому, що правильний вих?д не можна визначити апр?ор?, ? тому числову м?ру величини помилки в?дображення не можна використовувати. Однак процес навчання призводить, як ? ран?ше, до визначення ч?тко визначених мережевих параметр?в для дано? програми.3.2 Д?аграма вх?дного просторуМереж? з одним шаром також ? прикладом самоорган?зуючо? системи, оск?льки правильний вих?д не визначений заздалег?дь, а в?дображення вагових вектор?в до кластерних центро?д?в ? автоматичним процесом [14]. Коли використову?ться самоорган?зуюча мереж, на кожному кроц? пода?ться вектор введення. Ц? вектори становлять "середовище" мереж?. Кожен новий вх?д виробля? адаптац?ю параметр?в. Якщо так? модиф?кац?? правильно керуються, мережа може побудувати сво?р?дне внутр?шн? представлення середовища. Оск?льки в цих мережах фази навчання та ?виробнич?” фази можуть перекриватися, представлення може пост?йно оновлюватися. Найв?дом?шою та найпопулярн?шою моделлю самоорган?зуючих мереж ? карта збереження тополог??, запропонована Тево Кохоненом [15]. Так зван? мереж? Кохонена ? вт?ленням деяких ?дей, розроблених Розенблатом, фон дер Мальсбургом та ?ншими досл?дниками. Якщо вх?дний прост?р повинен оброблятися нейронною мережею, перше питання важливе значення ма? структура цього простору. Нейронна мережа з реальними входами обчислю? функц?ю f, визначену з вх?дного простору A, на вих?дний прост?р B. Область, де визначено f, може бути охоплена мережею Кохонена таким чином, що, наприклад, коли обраний вектор входу з област? a1 (рис 3.1), в мереж? загоря?ться лише один блок. Таку плитку, в як?й вх?дний прост?р класиф?ковано в субрег?они, також називають д?аграмою або картою вх?дного простору. Мереж? Кохонена навчаються створювати карти вх?дного простору самоорган?зуючись.Рисунок 3.1 - Функц?я f :A →B3.3 Модель КохоненаУ цьому розд?л? ми розглянемо деяк? приклади упорядкованих структур, в?домих як мереж? Кохонена [16]. С?тка обчислювальних елемент?в дозволя? нам ?дентиф?кувати безпосередн?х сус?д?в п?дрозд?лу. Це дуже важливо, оск?льки п?д час навчання ваги обчислювальних одиниць та ?х сус?д?в оновлюються. Мета такого п?дходу до навчання поляга? в тому, щоб сус?дн? п?дрозд?ли навчились реагувати на т?сно пов'язан? сигнали.3.3.1 Алгоритм навчанняРозглянемо задачу побудови граф?к?в n-м?рного простору за допомогою одновим?рного ланцюга одиниць Кохона. Ус? одиниц? розташован? посл?довно ? нумеруються в?д 1 до m (рис.3.1). Кожна одиниця ста? пом?рним входом x ? обчислю? в?дпов?дне збудження. N-вим?рн? вагов? вектори w1, w2,. . . , wm використовуються для обчислення. Мета процесу складання граф?к?в поляга? в тому, щоб кожен п?дрозд?л навчився спец?ал?зуватися на р?зних областях вх?дного простору. Коли вх?д з тако? област? пода?ться в мережу, в?дпов?дний блок повинен обчислити максимальне збудження. Алгоритм навчання Кохонена використову?ться для гарантування досягнення цього ефекту.Рисунок 3.2 - Одновим?рна реш?тка обчислювальних одиницьОдиниця Кохонена обчислю? евкл?дову в?дстань м?ж вх?дним x та його вектором ваги w. Це нове визначення збудження ? б?льш п?дходящим для певних застосувань, а також прост?ше для в?зуал?зац??. В одновим?рн?й мереж? Кохонена сус?дство рад?уса 1 одиниц? на k-му положенн? склада?ться з одиниць у положеннях k - 1 ? k + 1.Агрегати на обох к?нцях ланцюга мають асиметричн? сус?дства. Район рад?усу r одиниц? k склада?ться з ус?х одиниць, розташованих до r позиц?й в?д k л?воруч або праворуч ланцюга. У навчанн? Кохона використову?ться функц?я сус?дства φ, значення φ (i, k) явля? собою силу зв'язку м?ж одиницею i та одиницею k у процес? навчання. Простим вибором ? визначення φ (i, k) = 1 для вс?х одиниць i в район? рад?уса r одиниц? k ? φ (i, k) = 0 для вс?х ?нших одиниць. Алгоритм навчання мереж? Кохонена наступний:Початок: Вектори n-м?рних ваг w1, w2,. . . , wm m обчислювальних одиниць вибираються випадковим чином. Вибираються початковий рад?ус r, константа навчання η ? функц?я сус?дства φ;Крок 1: Виб?р вх?дного вектору ξ, використовуючи бажаний розпод?л ймов?рностей по вх?дному простору;Крок 2: Вибира?ться одиниця k з максимальним збудженням (тобто для яко? в?дстань м?ж wi ? ξ м?н?мальна, i = 1,., m);Крок 3: Вагов? вектори оновлюються за допомогою функц?? сус?дства та правила оновлення : wi ← wi + ηφ(i, k)(ξ - wi), for i = 1, . . .,m;Крок 4: Стоп, якщо досягнуто максимально? к?лькост? повторень; в ?ншому випадку зам?на η ? φ як було заплановано ? на крок.Модиф?кац?я вагових вектор?в (крок 3) притягу? ?х у напрямку входу ξ. Повторивши цей простий процес к?лька раз?в, ми оч?ку?мо, що ми д?станемо р?вном?рно розпод?лен? вектори ваг?в у вх?дному простор? (якщо входи також були вибран? р?вном?рно). Рад?ус м?крорайону зменшу?ться за попередн?м планом, який ми назива?мо граф?ком. Ефект поляга? в тому, що кожного разу, коли оновлю?ться одиниця, також оновлюються сус?дн? одиниц?. Якщо ваговий вектор одиниц? притягу?ться до област? у вх?дному простор?, сус?ди також притягуються, хоча, в менш?й м?р?. П?д час навчального процесу як розм?р сус?дства, так ? значення φ поступово падають, так що вплив кожно? одиниц? на сус?д?в зменшу?ться. Константа навчання контролю? величину оновлення ваги, а також зменшу?ться поступово. Чистий ефект вибраного граф?ка поляга? в тому, щоб зробити б?льш? корективи на початку тренувань, н?ж в к?нц? [15].На рисунку 3.3 показан? результати експерименту з одновим?рною мережею Кохонена. Кожна одиниця представлена крапкою. Вх?дний домен - це трикутник. Наприк?нц? навчального процесу вагов? вектори досягають розпод?лу, який перетворю? кожну одиницю на ?представника? невелико? област? вх?дного простору. Наприклад, одиниця в нижньому кут? - це та, яка реагу? найб?льшим збудженням для вектор?в у зат?нен?й област?. Якщо ми ухвалимо стратег?ю активац?? "Переможець отриму? все", то вона буде 2396913147595200?диною, яка спрацьову?.Рисунок 3.3 : Карта трикутного рег?ону3.4 Особливост? мереж?Самоорган?зуюч? карти Кохонена можуть бути використан? для кластерного анал?зу т?льки в тому випадку, якщо заздалег?дь в?домо число кластер?вВажливим недол?ком ? те, що остаточний результат роботи нейронних мереж залежить в?д початкових установок мереж?. З ?ншого боку, нейронн? мереж? теоретично можуть апроксимувати будь-яку безперервну функц?ю, що дозволя? досл?днику не брати заздалег?дь будь-як? г?потези щодо модел?Плюси : Ст?йк?сть до зашумлених даних; швидке ? некероване навчання; можлив?сть спрощення багатовим?рних вх?дних даних за допомогою в?зуал?зац??.3.5 Висновки за розд?ломВ даному розд?л? було дано детальний описи ?нструменту, який буде використаний у робот?, а саме – самоорган?зуюча мережа Кохонена, розглянуто ?? алгоритм навчання. Описано ?? недол?ки та плюси.Даний тип мереж? п?дходить до вир?шення задач? так як прикладом мереж? з некерованим навчанням а також широко застосову?ться для виявлення аномал?й.РОЗД?Л 4 РОЗРОБКА ПРОГРАМНОГО ПРОДУКТУ ДЛЯ ВИЯВЛЕННЯ АНОМАЛ?Й РОБОТИ ОС WINDOWS4.1 Дан? для роботиДля тестування програмного продукту необх?дно з?брати лог-дан? з реального середовища. Для цього необх?дно, або знайти вже п?дготовлений датасет у мереж?, або п?дготувати власний. Нажаль на даний момент у мереж? нема? промаркованого датасету лог?в безпеки журналу Windows, так як, зазвичай, под?бн? дан?, зазвичай, ? секретною та, як насл?док, недоступною ?нформац??ю.Зважаючи на дан? фактори, датасет був з?браний вручну з впровадженням штучно аномальних даних, а саме : Авторизац?я у вих?дн? дн?;Авторизац?я у н?чний (позаробочий) час;Лог?н на комп’ютер з ?ншого компютера з домену компан?? (використовуючи в?ддалене п?дключення до робочого столу);Лог?н на комп’ютер з ?ншого компютера з нев?домого домену (використовуючи в?ддалене п?дключення до робочого столу).Системн? характеристики тестового середовища : Процесор: Intel ? Core ? i7-7700 CPU @ 3.60 GHz;RAM: 16 GB;Тип системи: 64 розрядна операц?йна система, процессор x64.Характеристики операц?йно? системи: Тип : Windows 10 Enterprise.Верс?я : 1809.4.2 Обробка даних4.2.1 Сб?р данихЯк було описано ран?ше, лог дан? збер?гаються у ре?стр? операц?йно? системи Windows. Наступн? формати ? прийнятими як розширення для лог даних журналу под?й операц?йно? системи Windows:.evt - використався у операц?йних системах Windows XP та нижче;.evtx (“.evt extensible”)– формат, що використову?ться у операц?йних системах Windows Vista та вище.Зазначимо, що користувач ма? змогу конвертувати лог дан? з одного формату в ?нший. В дан?й робот? будуть використовуватися лог дан? з розширенням .evtx, так як розробка та тестування проводиться з використанням операц?йно? системи Windows 10 Enterprise.Зб?р та симуляц?я аномальних под?й у лог даних на тестовому комп’ютер? проводилася впродовж трьох м?сяц?в. П?сля цього дан? мають бути скачан? з машини, найзручн?шим способом для цього ? стандартна програма, що йде в комплект? з операц?йною системою Windows Event Log Viewer. П?сля вигрузки даних за допомогою застосунку Windows Event Log Viewer дан? були передан? на локальну машину для подальшо? обробки та розробки програмного продуктуТак як формат .evtx п?дляга? обробц? засобами, як? ?снують у фреймоврку .Net Core, логи можуть бути оброблен? та в?дформатован? безпосередньо у програмному продукт?, без залучення сторонн?х засоб?в та програм. За допомогою б?бл?отеки ?System.Diagnostics.Eventing.Reader? обробка лог?в ? зручною а також ?нту?тивно зрозум?лою для розробника, який певний час працював ?з середовищем .Net. Також даний в?дх?д ? зручним в тому сенс?, що даний фунц?онал розроблювався одн??ю компан??ю, що ? сам лог файл операц?йно? системи Windows.4.2.2 Ф?льтрац?я данихП?сля збору даних необх?дно провести ?х ф?льтрац?ю. Для цього програмно з виб?рки лог даних видалялися поля, як? мали пошкоджен? дан?, а саме: деяк? ключов? поля у структур?, шо представлена б?бл?отекою ?System.Diagnostics.Eventing.Reader? могли мати значення null. Логи з пошкодженими даними не мають братися до анал?зу ? п?длягають виключенню за бази. Пошкоджен? дан? могли з’явитися через некоректне перевантаження системи, перебо? у електромереж?, оновлення системи, тощо.Так я дан? пошкодження даних для операц?йно? системи Windows ? радше виключенням, ан?ж правилом, пошкоджених лог?в у навчальн?й виб?рц? не було виявлено.4.2.3 Визначення ц?льових атрибут?вДля як?сного та правильного навчання нейронно? мереж? необх?дно використовувати лише т? дан?, як? м?стять в соб? користну ?нформац?ю для виявлення аномал?й. Розглянемо корисн? для навчання нейронно? мереж? атрибути лог запису з журналу безпеки операц?йно? системи Windows :Ключов? слова : ма? значення ?усп?шний аудит? або ?неусп?шний аудит?. ? корисним для навчання мереж?;Дата ? час : ма? значення дати у формат? DD:MM:YYYY/HH:MM:SS. ? корисним для навчання мереж?;Джерело : при наданих налаштуваннях комп’ютера набува? двох можливих значень {Eventlog, Microsoft Windows Security Auditing}. ? корисним для навчання мереж?;Код под??: поле типу Int, визнача? код под??б ? корисним для навчання мереж?;Категор?я задач? : визнача? категор?ю под??, ма? велику к?льк?сть можливих значень (вирахову?ться програмно) ? корисною для навчання мереж?.Можемо зробити висновок, що ц? атрибути запису журналу безпеки операц?йно? системи Windows ? корисними для навчання мереж?, що в?дпов?датиме за виявлення аномал?й операц?йно? системи Windows.4.2.4 Нормал?зац?я данихДля придатност? лог даних для машинного навчання ?х необх?дно привести до числового вигляду. Щоб досягнути такого вигляду, кожному значенню тестового поля ма? ?снувати в?дпов?дне число. Розглянемо кожен з вид?лених атрибут?в та процес нормал?зац??: Ключов? слова : явля? собою ф?ксований наб?р можливих параметр?в, а саме : ?усп?шний аудит? та ?неусп?шний аудит?. Дамо у в?дпов?дн?сть наступн? значення : {1, 0} Дата та час :Часов? значення перетворювалися в вектор довжини 1 за такою формулою:(hour * 3600 + minutes * 60 + seconds)/3600.Значення дн?в тижня переводилися в вектор довжини 3: .,.=Monday={0;0;1}Tuesday={0;1;0}Wendesday={0;1;1} Thursday={1;0;0}Friday={1;0;1}Saturday={1;1;0}Sunday={1;1;1}Джерело : явля? собою ф?ксований наб?р можливих значень, а саме : {Eventlog, Microsoft Windows Security Auditing}. Дамо у в?дпов?дн?сть наступн? значення : {1, 0};Категор?я задач? : явля? собою неф?ксований наб?р можливих значень. Значення переводиться у вектор довжини N, з одиницею на позиц?? m та нулями на ?нших позиц?ях, де N – к?льк?сть можливих значень, m – значення категор?? задач?;Код под??: поле типу Int, потребу? логарифм?зац?? для зведення до шкали [0,1].4.3 Опис програмного продукту Для розробки програмного продукту було обрано фреймворк .NET Core (рис 4.1) та середовище розробки Microsoft Visual Studio 2019 (рис. 4.2) через наступн? причини:Кросплатформен?сть;?нтерфейс схожий на стандартн? продукти, шо йдуть у комплект? з операц?йною системою Windows;Досв?д роботи у даному фреймворц? та у середовищ? розробки Microsoft Visual Studio.Рисунок 4.1 - .Net CoreРисунок 4.2 - Microsoft Visual Studio 20194.3.1 Опис ?нтерфейсу користувача?нтерфейс програмного продукту був виконаний використовуючи стандартний редактор, який йде у комплект? ?з Microsoft Visual Studio через простоту у застосуванн?, схож?сть з? стандартними продуктами Windows та гарний ?нструментар?й. Весь процес в?дбува?ться в одному в?кн?. Склада?ться ?з кнопки вибору лог файлу а також з кнопки, що в?дпов?да? за анал?з даних (рис.4.3). П?сля анал?зу даних користувач отриму? ?нформац?ю про аномальн? логи а також про к?льк?сть пошкоджених лог?в, якщо так? були, у виб?рц? (рис 4.4).Рисунок 4.3 - стартовий ?нтерфейс програмиРисунок 4.4 - ?нтерфейс програми п?сля анал?зу даних4.4 Результати роботи програмиП?сля детального анал?зу даних було виявлено що, деяк? штучно впроваджен? аномальн? дан? не були виявлен?, а саме : Лог?н у н?чний (позаробочий) час;Лог?н використовуючи в?ддалене п?дключення до робочого столу.Дану некоректну роботу програми можна пояснити тим, що аномальн? дан? були з?бран? з одного комп’ютера а також що впродовж м?сяця часто були випадки, коли робота велася у н?чний час, через що аномальн? дан? про роботу у н?чний час не були в?днесен? до аномальних. Така сама ситуац?я в?дбулася ? у випадку п?дключення через ?нший комп’ютер (використовуючи в?ддалене в?дключення до робочого столу), так як дана операц?я виконувалась част?ше (дек?лька раз?в кожен день).4.5 Висновки за розд?ломУ цьому розд?л? було наглядно продемонстровано кроки логи анал?тики у контекст? роботи з лог даними операц?йно? системи Windows. З результат?в досл?дження виплива? висновок, що при коректн?й обробц? даних за кроками, що описан? в основ? лог анал?тики, в результат? отримуються дан?, що готов? до подальшого процесс?нгу р?зними методами, як, наприклад, методами машинного навчання.У даному розд?л? було дано опис технолог?ям, що використовувались при розробц? програмного продукту. Було описано ?нтерфейс користувача а також детально пояснено алгоритм роботи з програмою.У к?нц? розд?лу було показано та проанал?зовано результати роботи програмного продукту. З результат?в роботи виплива? те, що модель та програмний продукт не ? ?деальними та поки що не п?дходять для впровадження у велик? компан??. Для покращення результат?в необх?дно з?брати б?ль гарн? дан? а також повн?стю виключити ?штучн?сть? ?з виб?рки.РОЗД?Л 5 РОЗРОБКА СТАРТАП-ПРОЕКТУВ межах даного п?дрозд?лу посл?довно проанал?зовано та подано у вигляд? таблиць наступн? пункти:зм?ст ?де?; можлив? напрямки застосування; основн? вигоди, що може отри мати користувач товару (за кожним напрямом застосування); чим в?др?зня?ться в?д ?снуючих аналог?в та зам?нник?в.Перш? три пункти подано у вигляд? таблиц? (Таблиця? 5.1) ? дають уявлення про зм?ст ?де? та потенц?йн? ринки, в межах яких потр?бно шукати групи потенц?йних кл??нт?в.?Таблиця? 5.1 – Опис ?де? стартап проектуЗм?ст ?де?Напрямки застосуванняВигоди для користувачаНадання застосунку для пошуку аномал?й у робот? операц?йно? системи Windows використовуючи записи журналу под?й.Контроль роботи сп?вроб?тник?в у систем?Контроль часу входу/виходу ?з системи з? сторони кер?вництва Отримання ?нформац?? про нестандартну повед?нку системиВчасне попередження стороннього проникнення у систему злочинник?в Анал?з потенц?йних техн?ко-економ?чних переваг ?де? пор?вняно ?з пропозиц?ями конкурент?в передбача?:визначення перел?ку техн?ко-економ?чних властивостей та характеристик ?де?;визначення попереднього кола конкурент?в, проект?в-конкурент?в, товар?в-зам?нник?в чи товар?в-аналог?в, що вже ?снують на ринку;зб?р ?нформац?? щодо значень техн?ко-економ?чних показник?в для ?де? власного проекту та проект?в-конкурент?в.В?дпов?дно до визначеного вище перел?ку проводиться пор?вняльний анал?з показник?в: г?рш? значення (W, слабк?); аналог?чн? (N, нейтральн?) значення; кращ? значення (S, сильн?).Визначення сильних, слабких та нейтральних характеристик ?де? стартап-проекту “Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.2.?Таблиця? 5.2 – Визначення сильних, слабких та нейтральних характеристик №Техн?ко-економ?чн? характеристики ?де?(потенц?йн?) товари/концепц?? конкурент?вХ-каМ?й проектКонк. 1Конк 21Форма виконанняДесктопний застосунокКонсольний застосунокWeb застосунок S2Соб?варт?стьНизькаНизькаНизькаN3Точн?сть результат?вСередняВеликаНизькаN4Наявн?сть ?нтернетуН?Н?ТакW5Кросплатформен?стьТакТакТакN6Складн?сть використання/автономн?стьН?ТакТакSВизначений перел?к слабких, сильних та нейтральних характеристик та властивостей ?де? потенц?йного товару ? п?д?рунтям для формування його конкурентоспроможност?.5.2 Технолог?чний аудит ?де? стартап-проектуВ межах даного п?дрозд?лу необх?дно провести аудит технолог??, за допомогою яко? можливо реал?зувати ?дею проекту (технолог?? створення товару).Визначення технолог?чно? зд?йсненност? ?де? проекту передбача? анал?з таких складових:за якою технолог??ю буде виготовлено товар зг?дно ?де? проекту;чи ?снують так? технолог??, чи ?х потр?бно розробити/доробити;чи доступн? так? технолог?? авторам проекту?Технолог?чну зд?йсненн?сть ?де? стартап-проекту “Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.3.Таблиця 5.3 – Технолог?чна зд?йсненн?сть ?де? стартап-проекту№?дея проектуТехнолог?? ?? реал?зац??Наявн?сть технолог?йДоступн?сть технолог?й1Застосунок для виявлення аномально? роботи у систем? WindowsC#НаявнаБезкоштовна, доступнаJavaНаявнаБезкоштовна, доступнаPythonНаявнаБезкоштовна, доступнаОбрана технолог?я реал?зац?? ?де? проекту для створення застосунку для виявлення аномально? роботи операц?йно? системи Windows обрана технолог?я C#, яка ? безкоштовною та якою волод?ють розробники.5.3 Анал?з ринкових можливостей запуску стартап-проектуВизначення ринкових можливостей, як? можна використати п?д час ринкового впровадження проекту, та ринкових загроз, як? можуть перешкодити реал?зац?? проекту, дозволя? спланувати напрями розвитку проекту ?з урахуванням стану ринкового середовища, потреб потенц?йних кл??нт?в та пропозиц?й проект?в-конкурент?в. Спочатку проводиться анал?з попиту: наявн?сть попиту, обсяг, динам?ка розвитку ринку (Таблиця?5.4).В ход? таких досл?джень вивчаються особливост? ? перспективи розвитку попиту на конкретн? товари, позиц?? конкурент?в на ринку, ?х сильн? ? слабк? сторони, динам?ку ц?н ? т.д. Стартап-проекту важливо знати, чи буде обсяг продаж?в його товар?в достатн?м для компенсац?? зусиль щодо виходу на ринок, тому важливою характеристикою ринку ? його ?мн?сть, п?д якою розум?ють максимально можливий обсяг продажу певного товару протягом року, виражений в натуральних ? варт?сних одиницях.Попит на б?льш?сть товару, який визнача? м?стк?сть ринку, характеризу?ться нестаб?льн?стю. Тому кожне п?дпри?мство прагне мати достов?рний прогноз попиту на св?й товар. З метою стимулювання зб?льшення попиту на товар необх?дно вивчити ? проанал?зувати думки ? потреби споживач?в певного товару.?Попередню характеристику потенц?йного ринку стартап-проекту “Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.4.Таблиця? 5.4 – Попередня характеристика потенц?йного ринку стартап-проектуПоказники стану ринку (найменування)ХарактеристикаК?льк?сть головних гравц?в, од2Загальний обсяг продаж, грн/ум.од180000Динам?ка ринку (як?сна оц?нка)Зроста?Наявн?сть обмежень для входу (вказати характер обмежень)Нема?Специф?чн? вимоги до стандартизац?? та сертиф?кац??Нема?Середня норма рентабельност? в галуз? (або по ринку), %R=22%Так як застосунок ма? безпосередн? в?дношення до роботи операц?йно? системи та ?? безпечно? та стаб?льно? роботи, можна зробити висновок, що нашим сегментом ринку компан?? будуть:Таблиця 5.5 – Потенц?йн? сегменти споживач?вХарактеристикаСегмент 1Сегмент 2Сегмент 3Сегмент 4Тип компан??productoutsourceproductoutsourceРозм?р800+800+21-8021-80СфераIT?мн?сть6 0004 00020 000120 000Характеристику потенц?йних кл??нт?в стартап-проекту “Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.6.Таблиця 5.6. – Характеристика потенц?йних кл??нт?в стартап-проекту№ п/пПотреба, що форму? ринокЦ?льова аудитор?я (ц?льов? сегменти ринку)В?дм?нност? у повед?нц? р?зних потенц?йних ц?льових груп кл??нт?вВимоги споживач?в до товару1Витрачати менше часу на анал?з коректност? роботи операц?йно? системи?Аудитор?я: системн? адм?н?стратори, розробники.Сегменти: ?ндив?дуальн? користувач?, маленьк? п?дпри?мства, велик? п?дпри?мства.Для сегменту маленьких п?дпри?мств та ?ндив?дуальних користувач?в характерне разове використання застосунку, в той час як велик? компан?? можуть поставити його використання на автоматичний режимМати розум?ння роботи операц?йно? системи, мати досв?д роботи з под?бними застосунками.П?сля визначення потенц?йних груп кл??нт?в проводиться анал?з ринкового середовища: складаються таблиц? фактор?в, що сприяють ринковому впровадженню проекту, та фактор?в, що йому перешкоджають. Фактори в таблицях подають в порядку зменшення значущост?.Ринков? можливост? – це сприятлив? обставини, як? п?дпри?мство може використовувати для отримання переваг. Сл?д зазначити, що можливостями з погляду SWOT-анал?зу ? не вс? можливост?, як? ?снують на ринку, а т?льки т?, як? можна використовувати.Ринков? загрози – под??, настання яких може несприятливо вплинути на п?дпри?мство.?Фактори загроз стартап-проекту “Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.7. Фактори можливостей стартап-проекту “ Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows” наведено у Таблиц? 5.8.Таблиця 5.7. - Фактори загроз№ п/пФакторЗм?ст загрозиМожлива реакц?я компан??1Зростаюча конкуренц?яЗ? зростанням попиту на розробку додатк?в для анал?зу ризик?в зросла ? пропозиц?я.Розробляти додаток високо? якост? та з додатковими ун?кальними функц?ями.2Зм?на потреб користувач?вКористувачам необх?дне програмне забезпечення з ?ншим функц?оналомПередбачити можлив?сть додавання нового функц?оналу до створюваного ПЗТаблиця 5.8 – Фактори можливостей№ п/пФакторЗм?ст можливост?Можлива реакц?я компан??1Зростаючий попитЗб?льшення попиту на додаток.Надавати високояк?сн? р?шення, займати н?шу ринку.2Оптим?зац?я швидкост? завантаженняОптим?зац?я швидкост? завантаження додатка.Оптим?зац?я швидкост? завантаження за рахунок рефакторингу, асинхронност?, м?н?м?зац?? файл?в к?нцевого веб-застосування та оптим?зац?? стиснення зображень.3Зниження дов?ри до конкурента 1У конкурента №1 нещодавно була знайдена помилка, завдяки як?й дан? кл??нт?в стали доступн? в ?нтернет??При виход? на ринок звертати увагу покупц?в на безпеку нашого ПЗ та авторитетн?сть компан??Ступеневий анал?з конкуренц?? на ринку стартап-проекту “ Застосунок для виявлення аномально? роботи у операц?йн?й систем? Windows ” наведено у Таблиц? 5.9.Таблиця? 5.9 – Ступеневий анал?з конкуренц?? на ринкуОсобливост? конкурентного середовищаВ чому проявля?ться дана характеристикаВплив на д?яльн?сть п?дпри?мства1. Вказати тип конкуренц?? - досконала?сну? 2 компан??-конкуренти на ринкуВрахувати ц?ни конкурентних компан?й на початкових етапах створення б?знесу, реклама (вказати на конкретн? переваги перед конкурентами)2. За р?внем конкурентно? боротьби - м?жнароднийВс? компан?? з ?нших кра?нВикористовувати локал?зац?ю3. За галузевою ознакою - внутр?шньогалузеваКонкуренти мають ПЗ, яке використову?ться лише всередин? дано? галуз?Створити основу ПЗ таким чином, щоб можна було легко переробити дане ПЗ для використання у ?нших галузях та додавати нов? модул? в ?снуюче4. Конкуренц?я за видами товар?в: - товарно-видоваВиди товар?в ? однаковимиСтворити ПЗ, враховуючи недол?ки конкурент?в5. За характером конкурентних переваг - нец?новаВдосконалення технолог?? створення ПЗ, щоб соб?варт?сть була нижчоюВикористання менш дорогих технолог?й для розробки, н?ж використовують конкуренти6. За ?нтенсивн?стю - марочнаБренди присутн?-П?сля анал?зу конкуренц?? проведено б?льш детальний анал?з умов конкуренц?? в галуз? (табл. 5.10).Таблиця? 5.10 - Анал?з конкуренц?? в галуз? за М. ПортеромСкладов? анал?зуВисновкиПрям? конкуренти в галуз?Навести перел?к прямих конкурент?в?сну? 2 конкуренти на ринку. Найб?льш схожим за виконанням ? конкурент 1, так як його р?шення ма? велику точн?сть.Потенц?йн? конкурентиВизначити бар’?ри входження в ринокТак, можливост? для входу на ринок ?, бо наше р?шення покращу? та пришвидшу? роботу спец?ал?стаПостачальникиВизначити фактори сили постачальник?вПостачальники в?дсутн?.Кл??нтиВизначити фактори сили споживач?вВажливим для користувача ? кросплатформен?сть ПЗ та як?сть його роботи.Товари-зам?нникиФактори загроз з боку зам?нник?вТовари-зам?нники можуть використати б?льш дешеву технолог?ю створення ПЗ та зменшити соб?варт?сть товару.За результатами анал?зу таблиц? зроблено висновок щодо принципово? можливост? роботи на ринку з огляду на конкурентну ситуац?ю. Також зроблено висновок щодо характеристик (сильних стор?н), як? повинен мати проект, щоб бути конкурентоспроможним на ринку. Другий висновок врахову?ться при формулюванн? перел?ку фактор?в конкурентоспроможност?. На основ? анал?зу конкуренц??, проведеного в табл.5.10, а також ?з урахуванням характеристик ?де? проекту (табл. 5.2), вимог споживач?в до товару (табл. 5.6) та фактор?в маркетингового середовища (табл. 5.7 – табл. 5.8) визначено та об?рунтовано перел?к фактор?в конкурентоспроможност?. Анал?з оформля?ться за табл. 5.11.Таблиця? 5.11 - Об?рунтування фактор?в конкурентоспроможност??№Фактор конкуренто-спроможност?Об?рунтування (наведення чинник?в, що роблять фактор для пор?вняння конкурентних проект?в значущим)1Виконання ПЗ у вигляд? зручного у користуванн? десктопного застосункуЦе р?шення дозволя? швидко встановлювати використовувати ПЗ на комп’ютер користувача2Простота ?нтерфейсу користувача?нтерфейс користувача зроблений таким чином, що користувачу необх?дно лише заповнити необх?дн? поля.3Наявн?сть моделей Ш?Це дозволить надати користувачев? ?нформац?ю, яка може спростити його работуЗа визначеними факторами конкурентоспроможност? (табл. 5.11) проведено анал?з сильних та слабких стор?н стартап-проекту (табл. 5.12).?Таблиця? 5.12 - Пор?вняльний анал?з сильних та слабких стор?н проекту№Фактор конкуренто-спроможност?Бали 1-20Рейтинг товар?в-конкурент?в у пор?внянн? з нашим п?дпри?мством-3-2-101231Десктопний застосунок19??+????2Простота ?нтерфейсу користувача16+??????Ф?нальним етапом ринкового анал?зу можливостей впровадження проекту ? складання SWOT-анал?зу (матриц? анал?зу сильних (Strength) та слабких (Weak) стор?н, загроз (Troubles) та можливостей (Opportunities) (табл. 5.13) на основ? вид?лених ринкових загроз та можливостей, та сильних ? слабких стор?н (табл. 5.12). Перел?к ринкових загроз та ринкових можливостей складено на основ? анал?зу фактор?в загроз та фактор?в можливостей маркетингового середовища. Ринков? загрози та ринков? можливост? ? насл?дками (прогнозованими результатами) впливу фактор?в, ?, на в?дм?ну в?д них, ще не ? реал?зованими на ринку та мають певну ймов?рн?сть зд?йснення. Наприклад: зниження доход?в потенц?йних споживач?в – фактор загрози, на основ? якого можна зробити прогноз щодо посилення значущост? ц?нового фактору при вибор? товару та в?дпов?дно, – ц?ново? конкуренц?? (а це вже – ринкова загроза).Таблиця 5.13 - SWOT- анал?з стартап-проектуСильн? сторони: простий ?нтерфейс користувача, кросплатформенн?сть ,достатня точн?сть результат?вСлабк? сторони: доступно т?льки англ?йською мовою, працю? т?льки з одним видом журналу WindowsМожливост?: зростання популярност? пошуку аномал?й у робот? операц?йно? системи у маленьких компан?ях та у ?ндив?дуальних користувач?вЗагрози: конкуренц?я, структури журналу, поява несум?сно? верс?? операц?йно? системиНа основ? SWOT-анал?зу розроблено альтернативи ринково? повед?нки (перел?к заход?в) для виведення стартап-проекту на ринок та ор??нтовний оптимальний час ?х ринково? реал?зац?? з огляду на потенц?йн? проекти конкурент?в, що можуть бути виведен? на ринок (див. табл.5.10, анал?з потенц?йних конкурент?в). Визначен? альтернативи проанал?зовано з точки зору строк?в та ймов?рност? отримання ресурс?в (табл.5.14).Таблиця?5.14 - Альтернативи ринкового впровадження стартап-проекту№Альтернатива (ор??нтовний комплекс заход?в) ринково? повед?нкиЙмов?рн?сть отримання ресурс?вСтроки реал?зац??1Створення застосунку для виявлення аномал?й операц?йно? системи Windows та створення попередньо локал?зованого ?нтерфейсу користувача70%8 м?сяц?2Створення застосунку для виявлення аномал?й операц?йно? системи Windows без створення попередньо локал?зованого ?нтерфейсу користувача30%5 м?сяц?Обира?мо альтернативу 1.З означених альтернатив обира?ться та, для яко?: а) отримання ресурс?в ? б?льш простим та ймов?рним; б) строки реал?зац?? – не набагато б?льш?. Враховуючи, що наявн?сть локал?зац?? зб?льшить ймов?рн?сть отримання ресурс?в, то обира?мо перший вар?ант.5.4 Розроблення ринково? стратег?? проектуРозроблення ринково? стратег?? першим кроком передбача? визначення стратег?? охоплення ринку: опис ц?льових груп потенц?йних споживач?в (табл. 5.15).Таблиця 5.15 – Виб?р ц?льових груп потенц?йних споживач?в№п/пОпис проф?лю ц?льово? групи потенц?йних кл??нт?вГотовн?сть споживач?в сприйняти продуктОр??нтовний попит в межах ц?льово? групи (сегменту)?нтенсивн?сть конкуренц?? в сегмент?Простота входу у сегмент1Велик? продуктов? компан??.Середня: велика конкуренц?я ? можлив?сть власних ?Т-в?дд?л?в.Високий.Велика.Легко.2Велик? аутсорсов? компан??Середня.Високий.Велика.Середня3Маленьк? продуктов? компан??.Середня.Середн?й.Середня.Середня.4Маленьк? аутсорсов? компан??Низька. Приватн? особи вол?ють продукт за найменшу ц?ну ? не обов’язково як?сний.Низький.Середня.Важко.?Як ц?льов? групи обрано ус? чотири вар?анти.За результатами анал?зу потенц?йних груп споживач?в (сегмент?в) автори ?де? обирають ц?льов? групи, для яких вони пропонуватимуть св?й товар, та визначають стратег?ю охоплення ринку:якщо компан?я зосереджу?ться на одному сегмент? – вона обира? стратег?ю концентрованого маркетингу;якщо працю? ?з к?лькома сегментами, розробляючи для них окремо програми ринкового впливу – вона використову? стратег?ю диференц?йованого маркетингу;якщо компан?я працю? з ус?м ринком, пропонуючи стандартизовану програму (включно ?з характеристиками товару/послуги) – вона використову? масовий маркетинг. Для роботи в обраних сегментах ринку сформовано базову стратег?ю розвитку (табл. 5.16)Таблиця? 5.16 - Визначення базово? стратег?? розвитку№Обрана альтернатива розвитку проектуСтратег?я охоплення ринкуКлючов? конкурентоспроможн? позиц?? в?дпов?дно до обрано? альтернативиБазова стратег?я розвитку1Створення застосунку для виявлення аномал?й операц?йно? системи Windows та створення попередньо локал?зованого ?нтерфейсу користувачаРинкове позиц?юванняПростота ?нтерфейсу, в?дритий доступ до ?ноземних ринк?вДиференц?ац???Наступним кроком ? виб?р стратег?? конкурентно? повед?нки (табл. 5.17).?Таблиця? 5.17 - Визначення базово? стратег?? конкурентно? повед?нки№Чи ? проект ?першопрох?дцем? на ринку?Чи буде компан?я шукати нових споживач?в, або забирати ?снуючих у конкурент?в?Чи буде компан?я коп?ювати основн? характеристики товару конкурента, ? як??Стратег?я конкурентно? повед?нки1Н?ТакТак: базов? функц?? керування ризикамиЗайняття конкурентно? н?ш??На основ? вимог споживач?в з обраних сегмент?в до постачальника (стартап-компан??) та до продукту (див. Табл. 5.6), а також в залежност? в?д обрано? базово? стратег?? розвитку (табл. 5.16) та стратег?? конкурентно? повед?нки (табл. 5.17) розробля?ться стратег?я позиц?онування (табл. 5.18). що поляга? у формуванн? ринково? позиц?? (комплексу асоц?ац?й), за яким споживач? мають ?дентиф?кувати торг?вельну марку/проект.?Таблиця? 5.18 - Визначення стратег?? позиц?онування№Вимоги до товару ц?льово? аудитор??Базова стратег?я розвиткуКлючов? конкурентоспроможн? позиц?? власного стартап-проектуВиб?р асоц?ац?й, як? мають сформувати комплексну позиц?ю власного проекту (три ключових)1Швидк?сть ? зручн?сть роботи, в?дпов?дн?сть результат?вДиференц?ац??локал?зован?сть, висока точн?сть результат?вШвидк?сть легк?сть, точн?сть, велик? дан?, анал?тика,операц?йна система?Результатом виконання п?дрозд?лу стала узгоджена система р?шень щодо ринково? повед?нки стартап-компан??, яка визнача? напрями роботи стартап-компан?? на ринку.5.5 Розроблення маркетингово? програми стартап-проектуПершим кроком ? формування маркетингово? концепц?? товару, який отриму? споживач. Для цього у табл. 5.19 п?дсумовано результати попереднього анал?зу конкурентоспроможност? товару. Концепц?я товару - письмовий опис ф?зичних та ?нших характеристик товару, як? сприймаються споживачем, ? набору вигод, як? в?н об?ця? певн?й груп? споживач?в.Таблиця? 5.19 - Визначення ключових переваг концепц?? потенц?йного товару№ПотребаВигода, яку пропону? товарКлючов? переваги перед конкурентами (?снуюч? або так?, що потр?бно створити1Витрачати менше часу виявлення аномал?й у робот? операц?йно? системиАвтоматична ?дентиф?кац?я аномал?й у робот? операц?йно? системиЕконом?я часу та зусиль2Можлив?сть сл?дкувати за активн?стю користувача за робочим комп’ютером Можлив?сть виявлення несанкц?онованого або незвичного лог?ну у систему Контроль роботи користувач?в??Розроблена трир?внева маркетингова модель товару: уточню?ться ?дея продукту та/або послуги, його ф?зичн? складов?, особливост? процесу його надання (табл. 5.20).Таблиця? 5.20 - Опис трьох р?вн?в модел? товаруР?вн? товаруСутн?сть та складов??. Товар за задумомТовар допомага? користувачам автоматично ?дентиф?кувати аномал?? у робот? операц?йно? системи Windows. В результат? це дозволя? пришвидшити процес виявлення та розум?ння ?снуючих проблем та пошук р?шення.??. Товар у реальному виконанн?Хар-киМ/НмВр/Тх /Тл/Е/Ор1) застосунок для виявлення аномал?й у робот? операц?йно? системи Windows;2) Простота у використанн?;3) Можлив?сть розширення--Як?сть: зг?дно до стандарту ?SO 4444 буде проведено тестуванняМаркування в?дсутн?.???. Товар ?з п?дкр?пленнямБезкоштовна верс?я з ур?заним функц?оналомПост?йна п?дтримка для користувач?в1-й р?вень - При формуванн? задуму товару вир?шу?ться питання щодо того, засобом вир?шення яко? потреби ? / або проблеми буде даний товар, яка його основна вигода. Дане питання безпосередньо пов'язаний з формуванням техн?чного завдання в процес? розробки конструкторсько? документац?? на вир?б.2-й р?вень - Цей р?вень явля? р?шення того, як буде реал?зований товар в реальному/ включа? в себе як?сть, властивост?, дизайн, упаковку, ц?ну.3-й р?вень - Товар з п?дкр?пленням (супроводом) - додатков? послуги та переваги для споживача, що створюються на основ? товару за задумом ? товару в реальному виконанн? (гарант?? якост? , доставка, умови оплати та ?н)За рахунок чого потенц?йний товар буде захищено в?д коп?ювання: ноу-хау.П?сля формування маркетингово? модел? товару сл?д особливо в?дм?тити – чим саме проект буде захищено в?д коп?ювання. Захист може бути орган?зовано за рахунок захисту ?де? товару (захист ?нтелектуально? власност?), або ноу-хау, чи комплексне по?днання властивостей ? характеристик, закладене на другому та третьому р?внях товару. Наступним кроком визначено ц?нов? меж?, якими необх?дно керуватись при встановленн? ц?ни на потенц?йний товар, яке передбача? анал?з ц?ни на товари-аналоги або товари субститути, а також анал?з р?вня доход?в ц?льово? групи споживач?в (табл. 5.21). Анал?з проводився експертним методом.Таблиця? 5.21 - Визначення меж встановлення ц?ни№Р?вень ц?н на товари-зам?нникиР?вень ц?н на товари-аналогиР?вень доход?в ц?льово? групи споживач?вВерхня та нижня меж? встановлення ц?ни на товар/послугу110001500200000500?Наступним кроком ? визначення оптимально? системи збуту, в межах якого прийма?ться р?шення (табл. 5.22):проводити збут власними силами або залучати сторонн?х посередник?в (власна або залучена система збуту);виб?р та об?рунтування оптимально? глибини каналу збуту;виб?р та об?рунтування виду посередник?в.Таблиця? 5.22 - Формування системи збуту№Специф?ка закуп?вельно? повед?нки ц?льових кл??нт?вФункц?? збуту, як? ма? виконувати постачальник товаруГлибина каналу збутуОптимальна система збуту1Купують ПЗ та роблять щор?чн? внески для подовження л?ценц??Продаж1(через посередника)Власна та через посередник?в?Останньою складово? маркетингово? програми ? розроблення концепц?? маркетингових комун?кац?й, що спира?ться на попередньо обрану основу для позиц?онування, визначену специф?ку повед?нки кл??нт?в (табл. 5.23).?Таблиця? 5.23 - Концепц?я маркетингових комун?кац?й№Специф?ка повед?нки ц?льових кл??нт?вКанали комун?кац?й, якими користуються ц?льов? кл??нтиКлючов? позиц??, обран? для позиц?онуванняЗавдання рекламного пов?домленняКонцепц?я рекламного звернення1Куп?вля л?ценз?й на використання через ?нтернет повно? верс???нтернетавтоматична ?дентиф?кац?я ризик?в, ре?стр ризик?вПоказати переваги ПЗ, у тому числ? ? перед конкурентамиДемо-ролик ?з використанням?Результатом пункту 5 ? ринкова (маркетингова) програма, що включа? в себе концепц?? товару, збуту, просування та попередн?й анал?з можливостей ц?ноутворення, спира?ться на ц?нност? та потреби потенц?йних кл??нт?в, конкурентн? переваги ?де?, стан та динам?ку ринкового середовища, в межах якого впроваджено проект, та в?дпов?дну обрану альтернативу ринково? повед?нки5.6 Висновки до розд?луЗг?дно до проведених досл?джень:?сну? можлив?сть ринково? комерц?ал?зац?? проекту;?снують перспективи впровадження з огляду на потенц?йн? групи кл??нт?в, бар’?ри входження висок?, але проект ма? одну значну перевагу перед конкурентами;необх?дно реал?зувати застосунок для виявлення аномал?й роботи операц?йно? системи Windows за технолог??ю C#;подальша ?мплементац?я ? доц?льною.ВИСНОВКИ ПО РОБОТ? ТА ПЕРСПЕКТИВИ ПОДАЛЬШИХ ДОСЛ?ДЖЕНЬОперац?йна система Windows ? нев?д’?мною частиною роботи чи побуту майже кожного з нас. ?? захищен?сть ? одним з найважлив?ших параметр?в, так як мало хто з нас може соб? уявити роботу у незахищеному середовищ?. У наш час багато системних адм?н?стратор?в та розробник?в вручну перев?ряють журнал безпеки операц?йно? системи для того, щоб виявити моменти, коли у систем? була аномальна ситуац?я, що могла привести до пошкодження даних , некоректно? роботи програм, тощо. Щоб запоб?гти втрат людського часу а також виключити фактор людсько? помилки при пошуку аномально? повед?нки системи, дану частину роботи краще виконувати програмно.В контекст? дано? роботи предметом для виявлення аномал?й безпеки системи були обран? лог-дан? – записи операц?йно? системи. ?з лог-даними були проведен? ф?льтрац?я даних (що не виявила пошкоджених даних) а також анал?з атрибут?в – визначення необх?дних для подальшо? побудови модел?.П?сля обробки даних було побудовано модель самоорган?зуючо? нейронно? мереж? Кохонена. Дана мережа була обрана для вир?шення поставлено? задач? так як ма? властив?сть некерованого навчання (що ? необх?дним для нерозм?чених даних) а також через гарн? властивост? для виявлення в?дхилень у набор? даних (у даному випадку – виявлення аномал?й). Результати експерименту показали, що деяк? аномальн? дан?, як? були штучно ?нтегрован? у виб?рку, не були пом?чен? як аномальн?. З цього можна зробити висновок, що даний програмний продукт потребу? вдосконалення для впровадження у велик? орган?зац??.Для зручност? роботи користувача, розроблений програмний продукт ма? граф?чний, ?нту?тивно зрозум?лий ?нтерфейс. На даний момент в?н не локал?зований а також багатьом користувачам зда?ться негарним.Задля б?льшо? привабливост? для користувача пропону?ться розробити локал?зовану верс?ю програми. Як крок для покращення функц?оналу пропону?ться розробити режими роботи не т?льки для лог?в журналу безпеки операц?йно? системи Windows, а й для ?нших вид?в лог?в (системного, логу застосунк?в)ПЕРЕЛ?К ПОСИЛАНЬLog analytics, log mining, anomaly detection. URL: (last accessed: 17.03.2018).Introduction to anomaly detection. URL: (last accessed: 17.03.2018).Kawano, H., Nishio, S., Han, J. & Hasegawa, T. How does knowledge discovery cooperate with active database techniques in controlling dynamic environment? Athens, Greece, Springer-Verlag Berlin Heidelberg, 1994. 379 p.Hodge, V. J. and Austin, J.. A Survey of Outlier Detection Methodologies. Artificial Intelligence Review 22, 1969, 156 p. S. Asanger and A. Hutchison. Experiences and Challenges in Enhancing Security Information and Event Management Capability Using Unsupervised Anomaly Detection. In 2013 International Conference on Availability, Reliability and Security, September 2013, 739 p.A. S. Buyukkayhan, A. Oprea, Z. Li, and W. Robertson. Lens on the Endpoint: Hunting for Malicious Software Through Endpoint Data Analysis. In M. Dacier, M. Bailey, M. Polychronakis, and M. Antonakakis, editors, Research in Attacks, Intrusions, and Defenses, October 2017, 11 p.JPCERT-CC. Detecting Lateral Movement through Tracking Event Logs. Technical Report Version 2, Japan Computer Emergency Response Team Coordination Center, December 2017, 17p.Microsoft. Credentials Processes in Windows Authentication. URL : windows-authentication (last accessed: 2019-08-12).Microsoft. 4624(S): An account was successfully logged on. URL: (last accessed: 2019-08-21).Microsoft. 4688(S): A new process has been created. (last accessed: 2019-09-22).Microsoft. Active Directory Domain Services Overview. URL (last accessed: 2019-09-15)V. Chandola, A. Banerjee, and V. Kumar. Anomaly detection: A survey. ACM Computing Surveys (CSUR), 56 p.Andreason C.A. Log-Based Anomaly Detection for System Surveillance. Master's thesis in Computer Systems and Networks, 2010, 18p.Srivastava, N. and Srivastava, J., ‘A hybrid-logic approach towards fault detection in complex cyber-physical systems’, Annual Conference of the Prognostic and Health Management Society, 2010, 13 p.Artificial neural networks, applications and algorithms. URL : (last accessed: 17.03.2019).Ian Goodfellow, Yoshua Bengio , Aaron Courville. Deep learning. 2018 748p. K. J. Wijnands. Using endpoints process information for malicious behavior detection. Master's thesis, Delft University of Technology, September 2015, 25 p.H. Ringberg, M. Roughan, and J. Rexford. The Need for Simulation in Evaluating Anomaly Detectors, January 2008, 64 p.R. K. Sahoo, M. S. Squillante, A. Sivasubramaniam, and Y. Zhang. Failure data analysis of a large-scale heterogeneous server environment. In International Conference on Dependable Systems and Networks, 2004, 890 p.J. Valdman. Log file analysis. Department of Computer Science and Engineering (FAV UWB)., Tech. Rep, 2001, 21 p.ДОДАТОК А Л?СТИНГ ПРОГРАМИ//AssemblyInfo.csusing System.Reflection;using System.pilerServices;using System.Runtime.InteropServices;// General Information about an assembly is controlled through the following// set of attributes. Change these attribute values to modify the information// associated with an assembly.[assembly: AssemblyTitle("WindowsAnomalyDetector")][assembly: AssemblyDescription("")][assembly: AssemblyConfiguration("")][assembly: AssemblyCompany("")][assembly: AssemblyProduct("WindowsAnomalyDetector")][assembly: AssemblyCopyright("Copyright ? Artem Chabanivskyi 2019")][assembly: AssemblyTrademark("")][assembly: AssemblyCulture("")]// Setting ComVisible to false makes the types in this assembly not visible// to COM components. If you need to access a type in this assembly from// COM, set the ComVisible attribute to true on that type.[assembly: ComVisible(false)]// The following GUID is for the ID of the typelib if this project is exposed to COM[assembly: Guid("8a0984d3-86c7-420b-9676-5ae488e84f71")]// Version information for an assembly consists of the following four values://// Major Version// Minor Version// Build Number// Revision//// You can specify all the values or you can default the Build and Revision Numbers// by using the '*' as shown below:// [assembly: AssemblyVersion("1.0.*")][assembly: AssemblyVersion("1.0.0.0")][assembly: AssemblyFileVersion("1.0.0.0")]//Resources.Designer.cs//------------------------------------------------------------------------------// <auto-generated>// This code was generated by a tool.// Runtime Version:4.0.30319.42000//// Changes to this file may cause incorrect behavior and will be lost if// the code is regenerated.// </auto-generated>//------------------------------------------------------------------------------namespace WindowsAnomalyDetector.Properties{ /// <summary> /// A strongly-typed resource class, for looking up localized strings, etc. /// </summary> // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.piler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.pilerGeneratedAttribute()] internal class Resources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } /// <summary> /// Returns the cached ResourceManager instance used by this class. /// </summary> [global::ponentModel.EditorBrowsableAttribute(global::ponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { if ((resourceMan == null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WindowsAnomalyDetector.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } return resourceMan; } } /// <summary> /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// </summary> [global::ponentModel.EditorBrowsableAttribute(global::ponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } }}//app.config<?xml version="1.0" encoding="utf-8" ?><configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup></configuration>//packages.config<?xml version="1.0" encoding="utf-8"?><packages> <package id="CsvHelper" version="12.2.1" targetFramework="net472" /> <package id="Microsoft.CSharp" version="4.5.0" targetFramework="net472" /></packages>//mainwindownamespace WindowsAnomalyDetector{ partial class MainWindow { /// <summary> /// Required designer variable. /// </summary> private ponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { label1 = new System.Windows.Forms.Label(); SelectLogsFileButton = new System.Windows.Forms.Button(); selectLogsFileDialog = new System.Windows.Forms.OpenFileDialog(); label2 = new System.Windows.Forms.Label(); AnalyzeButton = new System.Windows.Forms.Button(); label3 = new System.Windows.Forms.Label(); invalidLogsCountLabel = new System.Windows.Forms.Label(); resultLabel = new System.Windows.Forms.Label(); dataGridView1 = new System.Windows.Forms.DataGridView(); Date = new System.Windows.Forms.DataGridViewTextBoxColumn(); KeyWord = new System.Windows.Forms.DataGridViewTextBoxColumn(); Source = new System.Windows.Forms.DataGridViewTextBoxColumn(); EventCode = new System.Windows.Forms.DataGridViewTextBoxColumn(); TaskCategory = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((ponentModel.ISupportInitialize)(dataGridView1)).BeginInit(); SuspendLayout(); // // label1 // label1.AutoSize = true; label1.Location = new System.Drawing.Point(33, 38); label1.Name = "label1"; label1.Size = new System.Drawing.Size(156, 17); label1.TabIndex = 0; label1.Text = "Select input logs data : "; // // SelectLogsFileButton // SelectLogsFileButton.Location = new System.Drawing.Point(36, 82); SelectLogsFileButton.Name = "SelectLogsFileButton"; SelectLogsFileButton.Size = new System.Drawing.Size(273, 40); SelectLogsFileButton.TabIndex = 2; SelectLogsFileButton.Text = "Select Logs File"; SelectLogsFileButton.UseVisualStyleBackColor = true; SelectLogsFileButton.Click += new System.EventHandler(SelectLogsFileButton_Click); // // selectLogsFileDialog // selectLogsFileDialog.DefaultExt = "evtx"; selectLogsFileDialog.FileName = "WindowsLogs.evtx"; selectLogsFileDialog.Filter = "Windows Logs Files (*.evtx)|*.evtx"; // // label2 // label2.AutoSize = true; label2.Location = new System.Drawing.Point(211, 38); label2.Name = "label2"; label2.Size = new System.Drawing.Size(75, 17); label2.TabIndex = 3; label2.Text = "*Input File*"; // // AnalyzeButton // AnalyzeButton.Location = new System.Drawing.Point(36, 218); AnalyzeButton.Name = "AnalyzeButton"; AnalyzeButton.Size = new System.Drawing.Size(273, 149); AnalyzeButton.TabIndex = 4; AnalyzeButton.Text = "Analyze"; AnalyzeButton.UseVisualStyleBackColor = true; AnalyzeButton.Click += new System.EventHandler(AnalyzeButton_Click); // // label3 // label3.AutoSize = true; label3.Location = new System.Drawing.Point(36, 398); label3.Name = "label3"; label3.Size = new System.Drawing.Size(136, 17); label3.TabIndex = 5; label3.Text = "Invalid Logs Count : "; // // invalidLogsCountLabel // invalidLogsCountLabel.AutoSize = true; invalidLogsCountLabel.Location = new System.Drawing.Point(190, 398); invalidLogsCountLabel.Name = "invalidLogsCountLabel"; invalidLogsCountLabel.Size = new System.Drawing.Size(0, 17); invalidLogsCountLabel.TabIndex = 6; // // resultLabel // resultLabel.AutoSize = true; resultLabel.Location = new System.Drawing.Point(351, 105); resultLabel.Name = "resultLabel"; resultLabel.Size = new System.Drawing.Size(60, 17); resultLabel.TabIndex = 7; resultLabel.Text = "Result : "; // // dataGridView1 // dataGridView1.AllowUserToAddRows = false; dataGridView1.AllowUserToDeleteRows = false; dataGridView1.AllowUserToOrderColumns = true; dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { Date, KeyWord, Source, EventCode, TaskCategory}); dataGridView1.Location = new System.Drawing.Point(354, 153); dataGridView1.Name = "dataGridView1"; dataGridView1.ReadOnly = true; dataGridView1.RowHeadersWidth = 51; dataGridView1.RowTemplate.Height = 24; dataGridView1.Size = new System.Drawing.Size(683, 249); dataGridView1.TabIndex = 8; dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(dataGridView1_CellContentClick); // // Date // Date.HeaderText = "Date"; Date.MinimumWidth = 6; Date.Name = "Date"; Date.ReadOnly = true; Date.Width = 125; // // KeyWord // KeyWord.HeaderText = "Key Word"; KeyWord.MinimumWidth = 6; KeyWord.Name = "KeyWord"; KeyWord.ReadOnly = true; KeyWord.Width = 125; // // Source // Source.HeaderText = "Source"; Source.MinimumWidth = 6; Source.Name = "Source"; Source.ReadOnly = true; Source.Width = 125; // // EventCode // EventCode.HeaderText = "Event Code"; EventCode.MinimumWidth = 6; EventCode.Name = "EventCode"; EventCode.ReadOnly = true; EventCode.Width = 125; // // TaskCategory // TaskCategory.HeaderText = "Task Category"; TaskCategory.MinimumWidth = 6; TaskCategory.Name = "TaskCategory"; TaskCategory.ReadOnly = true; TaskCategory.Width = 125; // // MainWindow // AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ClientSize = new System.Drawing.Size(1084, 448); Controls.Add(dataGridView1); Controls.Add(resultLabel); Controls.Add(invalidLogsCountLabel); Controls.Add(label3); Controls.Add(AnalyzeButton); Controls.Add(label2); Controls.Add(SelectLogsFileButton); Controls.Add(label1); Name = "MainWindow"; Text = "MainWindow"; ((ponentModel.ISupportInitialize)(dataGridView1)).EndInit(); ResumeLayout(false); PerformLayout(); } #endregion private System.Windows.Forms.Label label1; private System.Windows.Forms.Button SelectLogsFileButton; private System.Windows.Forms.OpenFileDialog selectLogsFileDialog; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button AnalyzeButton; private System.Windows.Forms.Label label3; private System.Windows.Forms.Label invalidLogsCountLabel; private System.Windows.Forms.Label resultLabel; private System.Windows.Forms.DataGridView dataGridView1; private System.Windows.Forms.DataGridViewTextBoxColumn Date; private System.Windows.Forms.DataGridViewTextBoxColumn KeyWord; private System.Windows.Forms.DataGridViewTextBoxColumn Source; private System.Windows.Forms.DataGridViewTextBoxColumn EventCode; private System.Windows.Forms.DataGridViewTextBoxColumn TaskCategory; }}//EventLog.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using CsvHelper.Configuration;namespace WindowsAnomalyDetector{ internal sealed class EventLog { public enum AuditStatus { Successful = 0, Failed = 1, Undefined = -1, }; public enum EventSource { Eventlog = 0, MicrosoftWindowsSecurityAuditing = 1, Undefined = -1, }; public long Counter { get; set; } public int Id { get; set; } public AuditStatus Status { get; set; } public DateTime? TimeStamp { get; set; } public EventSource Source { get; set; } public string EventCode { get; set; } } internal sealed class FormattedEventLog { public long Counter { get; set; } public double Id { get; set; } public int Status { get; set; } public double[] TimeStamp { get; set; } public int Source { get; set; } public int[] EventCode { get; set; } } internal sealed class FormattedEventLogMap : ClassMap<FormattedEventLog> { public FormattedEventLogMap() { Map(m => m.Id); Map(m => m.Status); Map(m => m.TimeStamp); Map(m => m.Source); Map(m => m.EventCode); } }}//KohonenNeuralNetwork.csusing System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Threading.Tasks;namespace WindowsAnomalyDetector{ public class KohonenNeuralNetwork { public Neuron[] Outputs { get; private set; } private int _iteration; private int _length; private int _dimensions; private double _nf; private int _samples = 0; private int _classes = 1; private int _numberTotalOfNeurons = 0; private int[] _classStart = new int[] { 0 }; private readonly List<ulong> _timeLabbls = new List<ulong>(); private readonly List<byte[]> _patterns = new List<byte[]>(); private readonly Random _random = new Random(); private string _counberLog = @"counter.csv", _labelsLog = @"result.csv"; private string[] _burstLog = new string[] { @"WindowsLogs.csv" }; private int _inputSize = 500; private int _electrode = 64; private int _initSampleToLearn = 100000, _maxSampleCapacity = 200000, _sampleToLearn = 100000; private int _maxIteration; private int _numCPUs = 4; private int _neurons = 64; private int _neighborsDistance = 4; private bool _learnInRandomOrder = false; private bool _normalEuclideanDistances = false; private double[] _globalMaxError = new double[] { 0.0001 }; public KohonenNeuralNetwork() { Initialise(); string counberLogOrg = _counberLog.ToString(); for (int t = 0; t < _globalMaxError.Length; t++) { _iteration = 0; _counberLog = counberLogOrg + "_of_global_map_" + _globalMaxError[t].ToString(); var reader = File.OpenText(_burstLog[0]); var counterWriter = new StreamWriter(_counberLog + ".csv"); var labelsWriter = new StreamWriter(_labelsLog + ".csv"); var eof = _LoadData(ref reader, _initSampleToLearn); _BackupNeuronsWeights(); do { Train(_globalMaxError[t]); _DumpCountersLables(ref counterWriter, ref labelsWriter); if (_burstLog.Length == 1) { eof = _LoadData(ref reader, _sampleToLearn); } _iteration = _maxIteration - _sampleToLearn; Debug.WriteLine(" Load " + _sampleToLearn.ToString() + " samples, iteration " + _iteration.ToString()); } while (eof); counterWriter.Close(); labelsWriter.Close(); reader.Close(); _RestoreNeuronsWeights(); } } private void Initialise() { _length = _neurons; _dimensions = _inputSize * _electrode; _maxIteration = _maxSampleCapacity == 0 ? _initSampleToLearn : _maxSampleCapacity; _patterns.Capacity = _maxSampleCapacity == 0 ? 1000000 : _maxSampleCapacity; _nf = _maxIteration / Math.Log(_length); _numberTotalOfNeurons = _length * _length; //------------------------------- Outputs = new Neuron[_numberTotalOfNeurons]; for (int neuronIndex = 0, xAxisIndex = 0, yAxisIndex = 0; neuronIndex < _numberTotalOfNeurons; neuronIndex++, xAxisIndex = neuronIndex / _length, yAxisIndex = neuronIndex % _length) { Outputs[neuronIndex] = new Neuron(xAxisIndex, yAxisIndex, neuronIndex) { Weights = new double[_dimensions], DoubleWeights = new double[_dimensions], WeightsBackup = new double[_dimensions] }; for (int dimensionIndex = 0; dimensionIndex < _dimensions; dimensionIndex++) { double r = _random.Next() / (int.MaxValue + 0.0); Outputs[neuronIndex].Weights[dimensionIndex] = r; Outputs[neuronIndex].DoubleWeights[dimensionIndex] = r * r; Outputs[neuronIndex].WeightsBackup[dimensionIndex] = r; } // distance Outputs[neuronIndex].distance = new double[_length, _length]; for (int x = 0, id = 0; x < _length; x++) { for (int y = 0; y < _length; y++) { int tX = x - xAxisIndex; int tY = y - yAxisIndex; double temp = Math.Sqrt((tX * tX) + (tY * tY)); Outputs[neuronIndex].distance[x, y] = -(temp * temp); id++; } } } // Neighbors for each neuron foreach (var n in Outputs) { int num = 0; for (int x = 0; x < _length; x++) { for (int y = 0; y < _length; y++) { if (n.distance[x, y] >= -_neighborsDistance) { num++; } } } n.neighbors = new Neuron[num]; int neighborIndex = 0, counter = 0; for (int x = 0; x < _length; x++) { for (int y = 0; y < _length; y++) { if (n.distance[x, y] >= -_neighborsDistance) { n.neighbors[neighborIndex] = Outputs[counter]; neighborIndex++; } counter++; } } } } private bool _LoadData(ref StreamReader reader, int lines) { if (_classes == 1) { int count = 0; while (!reader.EndOfStream) { var line = reader.ReadLine().Split(','); var timeLable = ulong.Parse(line[0]); var inputs = new byte[_dimensions]; int e = -1; for (int i = 1; i < line.Length; i++) { if (line[i].CompareTo("") == 0) { continue; } var p = int.Parse(line[i]); if (p <= 0) { e = -p; } else { inputs[e * _inputSize + p] = 1; } } if (_maxSampleCapacity > 0 && _samples == _maxSampleCapacity) { _patterns.RemoveAt(0); _patterns.Add(inputs); _timeLabbls.RemoveAt(0); _timeLabbls.Add(timeLable); } else { _patterns.Add(inputs); _timeLabbls.Add(timeLable); _samples++; } count++; if (count == lines) { break; } } } else { _classStart = new int[_classes]; int count = 0; for (int f = 0; f < _classes; f++) { _classStart[f] = count; reader = new StreamReader(_burstLog[f]); while (!reader.EndOfStream) { var line = reader.ReadLine().Split(','); var timeLable = ulong.Parse(line[0]); var inputs = new byte[_dimensions]; int e = -1; for (int i = 1; i < line.Length; i++) { if (line[i].CompareTo("") == 0) { continue; } var p = Int32.Parse(line[i]); if (p <= 0) { e = -p; } else { inputs[e * _inputSize + p] = 1; } } count++; _patterns.Add(inputs); _timeLabbls.Add(timeLable); } } } return (!reader.EndOfStream); } private void Train(double maxError) { double currentError; var options = new ParallelOptions { MaxDegreeOfParallelism = _numCPUs }; do { Debug.WriteLine(Environment.NewLine); currentError = 0.0; if (_learnInRandomOrder) { var TrainingSet = new List<byte[]>(); foreach (var pattern in _patterns) { TrainingSet.Add(pattern); } for (int i = 0; i < _patterns.Count; i++) { if (i % 50 == 0) { Debug.Write("."); } var place = _random.Next(TrainingSet.Count - 1); var pattern = TrainingSet[place]; currentError += TrainPattern(pattern, ref options); TrainingSet.RemoveAt(place); } } else { int c = 0; foreach (byte[] pattern in _patterns) { currentError += TrainPattern(pattern, ref options); if (c % 50 == 0) { Debug.Write("."); } c++; } } Debug.Write("iteration: " + _iteration.ToString() + " Error: " + currentError.ToString("0.0000000")); } while (currentError > maxError); } private double TrainPattern(byte[] pattern, ref ParallelOptions options) { var winner = (_normalEuclideanDistances) ? _WinnerNormalEuclidean(pattern) : Winner_Customize_Euclidean(pattern); int winnerX = winner.X, winnerY = winner.Y; var learningRate = Math.Exp(-_iteration / (_maxIteration + 0.0)) * 0.1; var strength = Math.Exp(-_iteration / _nf) * (double)_length; strength *= strength; var e = winner.neighbors.Length; var error = new double[e]; Parallel.For(0, e, options, n => { var N = winner.neighbors[n]; var t = (learningRate * Math.Exp(N.distance[winnerX, winnerY] / strength)); error[n] = N.UpdateWeights(pattern, t); }); _iteration++; var r = error[0]; for (int i = 1; i < e; i++) { r += error[i]; } return Math.Abs(r / e); } private void _DumpCountersLables(ref StreamWriter counterWriter, ref StreamWriter lableWriter) { var labbles = new List<ulong>[_length, _length]; for (int x = 0; x < _length; x++) { for (int y = 0; y < _length; y++) { labbles[x, y] = new List<ulong>(); } } var globalCounter = new int[_length, _length]; var classCounters = new List<int[,]>(); for (int c = 0; c < _classes; c++) { classCounters.Add(new int[_length, _length]); } for (int c = 0, i = 0; i < _patterns.Count; i++) { var neuron = (_normalEuclideanDistances) ? _WinnerNormalEuclidean(_patterns[i]) : Winner_Customize_Euclidean(_patterns[i]); labbles[neuron.X, neuron.Y].Add(_timeLabbls[i]); globalCounter[neuron.X, neuron.Y]++; if ((c + 1 < _classes) && (_classStart[c + 1] < i)) { c++; } classCounters[c][neuron.X, neuron.Y]++; } // write the counters for (int x = 0; x < _length; x++) { for (int y = 0; y < _length; y++) { lableWriter.Write("{0},{1}", x, y); for (int i = 0; i < labbles[x, y].Count; i++) { lableWriter.Write(",{0}", labbles[x, y][i]); } lableWriter.WriteLine(); } } for (int i = 0; i < _length; i++) { for (int j = 0; j < _length; j++) { counterWriter.Write(globalCounter[i, j].ToString() + ","); } counterWriter.WriteLine(); } counterWriter.Flush(); if (_classes > 1) { for (int c = 0; c < _classes; c++) { var wr = new StreamWriter(_counberLog + "_class_" + c.ToString() + ".csv", true); for (int i = 0; i < _length; i++) { for (int j = 0; j < _length; j++) { wr.Write(classCounters[c][i, j].ToString() + ","); } wr.WriteLine(); } wr.Flush(); wr.Close(); } } } private Neuron Winner_Customize_Euclidean(byte[] pattern) { var winner = new Neuron[_numberTotalOfNeurons]; var min = new double[_numberTotalOfNeurons]; Parallel.ForEach(Outputs, new ParallelOptions { MaxDegreeOfParallelism = _numCPUs }, n => { var weights = n.Weights; double dd = 0; for (int i = 0; i < _inputSize; i++) { double t, d = 0; for (int w = i * _electrode, end = w + _electrode; w < end; w++) { if (pattern[w] == 0) { d += n.DoubleWeights[w]; } else { t = pattern[w] - weights[w]; d += t * t; } } dd += Math.Sqrt(d); } // min[n.ID] = dd; winner[n.ID] = n; }); int idx = 0; for (int i = 0; i < _numberTotalOfNeurons; i++) { if (winner[i] != null) { idx = i; break; } } for (int i = idx + 1; i < _numberTotalOfNeurons; i++) { if ((winner[i] != null) && (min[i] < min[idx])) { idx = i; } } return winner[idx]; } private Neuron _WinnerNormalEuclidean(byte[] pattern) { var winner = new Neuron[_numberTotalOfNeurons]; var min = new double[_numberTotalOfNeurons]; Parallel.ForEach(Outputs, new ParallelOptions { MaxDegreeOfParallelism = _numCPUs }, n => { // find the Euclidean distance double t, d = 0; double[] weights = n.Weights; for (int w = 0; w < weights.Length; w++) { t = (double)pattern[w] - weights[w]; d += t * t; } // min[n.ID] = Math.Sqrt(d); winner[n.ID] = n; }); int idx = 0; for (int i = 0; i < _numberTotalOfNeurons; i++) if (winner[i] != null) { idx = i; break; } for (int i = idx + 1; i < _numberTotalOfNeurons; i++) if ((winner[i] != null) && (min[i] < min[idx])) idx = i; return winner[idx]; } private void _BackupNeuronsWeights() { Debug.WriteLine(" - Backup Neurons Weights - "); Parallel.ForEach(Outputs, n => { n.BackupWeights(); }); } private void _RestoreNeuronsWeights() { Debug.WriteLine(" - Restore Neurons Weights - "); Parallel.ForEach(Outputs, n => { n.RestoreWeightsBackup(); }); } } public class Neuron { public double[] Weights, DoubleWeights, WeightsBackup; public double[,] distance; public Neuron[] neighbors; public int X; public int Y; public int ID; public Neuron(int x, int y, int id) { X = x; Y = y; ID = id; } public void RestoreWeightsBackup() { for (int k = 0; k < Weights.Length; k++) { Weights[k] = WeightsBackup[k]; DoubleWeights[k] = WeightsBackup[k] * WeightsBackup[k]; } } public void BackupWeights() { for (int k = 0; k < Weights.Length; k++) { WeightsBackup[k] = Weights[k]; } } public double UpdateWeights(byte[] pattern, double LearningRate_Gauss) { double sum = 0; for (int i = 0; i < Weights.Length; i++) { var delta = LearningRate_Gauss * (pattern[i] - Weights[i]); Weights[i] += delta; DoubleWeights[i] = Weights[i] * Weights[i]; sum += delta; } return sum / Weights.Length; } }}//LogsParser.csusing System;using System.Collections.Generic;using System.Diagnostics.Eventing.Reader;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks;namespace WindowsAnomalyDetector{ internal static class LogsParser { const int LogVectorSize = 7; const string AuditSuccessStatusSrting = "Audit Success"; const string AuditFaiureStatusSrting = "Audit Failure"; const string SecurityAuditingSourceString = "Microsoft-Windows-Security-Auditing"; const string EventLogSourceString = "Microsoft-Windows-Eventlog"; public static readonly Dictionary<EventLog.AuditStatus, string> AuditEnumStringMap = new Dictionary<EventLog.AuditStatus, string> { { EventLog.AuditStatus.Failed, AuditFaiureStatusSrting }, { EventLog.AuditStatus.Successful, AuditSuccessStatusSrting }, }; public static readonly Dictionary<EventLog.EventSource, string> SourceEnumStringMap = new Dictionary<EventLog.EventSource, string> { { EventLog.EventSource.Eventlog, "Microsoft Windows Security Auditing" }, { EventLog.EventSource.MicrosoftWindowsSecurityAuditing, "Microsoft Windows Eventlog"}, }; public static List<double[]> ParseEventLogsFile(string filePath, out int failedLogsCounter, out List<string> existandEventCodes, out List<EventLog> nonFormattedEventLogs) { long counter = 0; nonFormattedEventLogs = new List<EventLog>(); using (var reader = new EventLogReader(filePath, PathType.FilePath)) { EventRecord record; while ((record = reader.ReadEvent()) != null) { using (record) { var log = new EventLog { Id = record.Id, TimeStamp = record.TimeCreated, Source = GetEventSourceFromString(record.ProviderName), Status = GetAuditStatusFromString(record.KeywordsDisplayNames.SingleOrDefault()), EventCode = record.TaskDisplayName, }; log.Counter = counter++; nonFormattedEventLogs.Add(log); } } } existandEventCodes = nonFormattedEventLogs.Select(log => log.EventCode).Distinct().ToList(); var formattedLogsList = FormatEventLogList(nonFormattedEventLogs, existandEventCodes, out var invalidLogsCounter); failedLogsCounter = invalidLogsCounter; return FormatLogsToArray(formattedLogsList, existandEventCodes.Count); } public static List<EventLog> FormatBackResultedLogs(List<double[]> resultedEventLogs, List<EventLog> initialEventLogs) { var result = new List<EventLog>(); foreach(var resultedEventLog in resultedEventLogs) { var counter = Convert.ToInt32(resultedEventLog[0]); result.Add(initialEventLogs.ElementAt(counter)); } return result; } private static List<double[]> FormatLogsToArray(List<FormattedEventLog> formattedLogsList, int existantEventCodesCount) { var result = new List<double[]>(); foreach(var log in formattedLogsList) { var arraySize = LogVectorSize + existantEventCodesCount; var logArray = new double[arraySize]; logArray[0] = log.Id; logArray[1] = log.Status; logArray[2] = log.TimeStamp[0]; logArray[3] = log.TimeStamp[1]; logArray[4] = log.TimeStamp[2]; logArray[5] = log.TimeStamp[3]; logArray[6] = log.Source; for (int i = 7; i < arraySize; ++i) { logArray[i] = log.EventCode[i - 7]; } result.Add(logArray); } return result; } private static List<FormattedEventLog> FormatEventLogList(IReadOnlyList<EventLog> eventLogsList, List<string> existantEventCodes, out int failedLogsCounter) { failedLogsCounter = 0; var formattedEventLogsList = new List<FormattedEventLog>(); foreach (var eventLog in eventLogsList) { if (eventLog.TimeStamp == null || eventLog.Source == EventLog.EventSource.Undefined || eventLog.Status == EventLog.AuditStatus.Undefined) { failedLogsCounter++; continue; } var formattedEventLog = new FormattedEventLog { Counter = eventLog.Counter, Id = Math.Log(eventLog.Id), TimeStamp = FormatTimestampToArray(eventLog.TimeStamp.Value), Source = (int)eventLog.Source, Status = (int)eventLog.Status, EventCode = GetEventSourceFormattedArray(existantEventCodes, eventLog.EventCode), }; formattedEventLogsList.Add(formattedEventLog); } return formattedEventLogsList; } private static double[] FormatTimestampToArray(DateTime dateTime) { var result = new double[4]; result[0] = (dateTime.Hour * 3600 + dateTime.Minute * 60 + dateTime.Second) / 3600; switch (dateTime.DayOfWeek) { case DayOfWeek.Monday: { result[1] = 0; result[2] = 0; result[3] = 1; break; } case DayOfWeek.Tuesday: { result[1] = 0; result[2] = 1; result[3] = 0; break; } case DayOfWeek.Wednesday: { result[1] = 0; result[2] = 1; result[3] = 1; break; } case DayOfWeek.Thursday: { result[1] = 1; result[2] = 0; result[3] = 0; break; } case DayOfWeek.Friday: { result[1] = 1; result[2] = 0; result[3] = 1; break; } case DayOfWeek.Saturday: { result[1] = 1; result[2] = 1; result[3] = 0; break; } case DayOfWeek.Sunday: { result[1] = 1; result[2] = 1; result[3] = 1; break; } } return result; } private static int[] GetEventSourceFormattedArray(List<string> existantEventCodes, string currentEventCode) { var result = new int[existantEventCodes.Count]; for (int i = 0; i < existantEventCodes.Count; ++i) { result[i] = 0; } var currentEventCodeIndex = existantEventCodes.IndexOf(currentEventCode); result[currentEventCodeIndex] = 1; return result; } private static EventLog.EventSource GetEventSourceFromString(string eventSourceString) { switch (eventSourceString) { case SecurityAuditingSourceString: { return EventLog.EventSource.MicrosoftWindowsSecurityAuditing; } case EventLogSourceString: { return EventLog.EventSource.Eventlog; } default: { Debug.Assert(false, $"Unexpected event source {eventSourceString}"); return EventLog.EventSource.Undefined; } } } private static EventLog.AuditStatus GetAuditStatusFromString(string auditStatusSrting) { switch (auditStatusSrting) { case AuditSuccessStatusSrting: { return EventLog.AuditStatus.Successful; } case AuditFaiureStatusSrting: { return EventLog.AuditStatus.Failed; } default: { Debug.Assert(false, $"Unexpected audit status {auditStatusSrting}"); return EventLog.AuditStatus.Undefined; } } } }}//Program.csusing System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace WindowsAnomalyDetector{ static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainWindow()); } }}//MainWindow.csusing System;using System.Collections.Generic;using System.Globalization;using ponentModel;using System.Data;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using CsvHelper;namespace WindowsAnomalyDetector{ public partial class MainWindow : Form { private static readonly List<string> AllowedExtensions = new List<string> { ".evtx", }; public string FilePath { get; set; } public MainWindow() { InitializeComponent(); } private void SelectLogsFileButton_Click(object sender, EventArgs e) { var result = selectLogsFileDialog.ShowDialog(); if (result == DialogResult.OK || result == DialogResult.Yes) { FilePath = selectLogsFileDialog.FileName; if (string.IsNullOrEmpty(FilePath)) { MessageBox.Show("File hadn't been selected. Please select file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AllowedExtensions.Contains(Path.GetExtension(FilePath))) { MessageBox.Show("Invalid file", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } label2.Text = FilePath; } } private void AnalyzeButton_Click(object sender, EventArgs e) { dataGridView1.Rows.Clear(); if (string.IsNullOrEmpty(FilePath)) { MessageBox.Show("File hadn't been selected. Please select file.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!File.Exists(FilePath)) { MessageBox.Show("Invalid file : no longer exists on disk", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (!AllowedExtensions.Contains(Path.GetExtension(FilePath))) { MessageBox.Show("Invalid file : invalid format", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var parsedLogs = LogsParser.ParseEventLogsFile(FilePath, out var failedLogsCounter, out var existandEventCodes, out var nonFormattedEventLogs); invalidLogsCountLabel.Text = failedLogsCounter > 0 ? failedLogsCounter.ToString() : "None"; var logsWriter = new StreamWriter("WindowsLogs.csv"); foreach (var log in parsedLogs) { foreach (var logMember in log) { logsWriter.Write($"{logMember},"); } logsWriter.Write(";" + Environment.NewLine); } var network = new KohonenNeuralNetwork(); var csv = new CsvReader(File.OpenText("result.csv")); var resultedLogs = csv.GetRecords<double[]>().ToList(); var result = LogsParser.FormatBackResultedLogs(resultedLogs, nonFormattedEventLogs); foreach(var resultedLog in result) { dataGridView1.Rows.Add ( resultedLog.TimeStamp, LogsParser.AuditEnumStringMap[resultedLog.Status], LogsParser.SourceEnumStringMap[resultedLog.Source], resultedLog.Id, resultedLog.EventCode ); } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } }} ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download