{"id":20234,"date":"2023-03-24T05:00:00","date_gmt":"2023-03-24T04:00:00","guid":{"rendered":"https:\/\/sii.pl\/blog\/?p=20234"},"modified":"2023-03-17T11:10:57","modified_gmt":"2023-03-17T10:10:57","slug":"automatyzacja-zadan-w-cyberbezpieczenstwie","status":"publish","type":"post","link":"https:\/\/sii.pl\/blog\/automatyzacja-zadan-w-cyberbezpieczenstwie\/","title":{"rendered":"Automatyzacja zada\u0144 w Cyberbezpiecze\u0144stwie"},"content":{"rendered":"\n<p>Podstaw\u0105 automatyzacji zada\u0144 jest wybranie j\u0119zyka programowania, kt\u00f3ry b\u0119dzie nam pomaga\u0107 zrealizowa\u0107 cel. Ja zdecydowa\u0142em si\u0119 na Pythona, dlatego \u017ce jest on dost\u0119pny zar\u00f3wno na system operacyjny Windows jak i na Linux. Wykorzystuje si\u0119 go jako podstawowy j\u0119zyk w aplikacjach SOAR (Security Orchestration, Automation and Response). Ponadto, jest wysokopoziomowy, a przy u\u017cyciu dost\u0119pnych bibliotek ma nieograniczone mo\u017cliwo\u015bci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Pierwsze kroki z automatyzacj\u0105 zada\u0144<\/strong><\/h2>\n\n\n\n<p>Do\u015bwiadczenie z automatyzacj\u0105 zada\u0144 rozpocz\u0105\u0142em od nauki podstaw programowania tego j\u0119zyka oraz wyznaczenia sobie celu. W moim przypadku by\u0142o nim sprawdzenie wielu IOC (Indicator of Compromise) URL na stronie <a href=\"https:\/\/www.virustotal.com\/gui\/home\/upload\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >VirusTotal.com<\/a>. Na VT mo\u017cna znale\u017a\u0107 bardzo dobrze przygotowan\u0105 dokumentacj\u0119 do API (Application Programming Interface) pomagaj\u0105c\u0105 przy utworzeniu po\u0142\u0105czenia, autentykacji oraz wysy\u0142aniu i odbieraniu \u017c\u0105da\u0144. Niekiedy r\u00f3wnie\u017c \u2013 jak w tym przypadku \u2013 niemal ca\u0142kowite rozwi\u0105zanie podane jest w dokumentacji:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4.png\"><img decoding=\"async\" width=\"1024\" height=\"639\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4-1024x639.png\" alt=\"Dokumentacja do API ze strony VirusTotal\" class=\"wp-image-20235\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4-1024x639.png 1024w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4-300x187.png 300w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4-768x480.png 768w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/1-4.png 1153w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Ryc. 1 <a href=\"https:\/\/www.virustotal.com\/gui\/home\/upload\" target=\"_blank\" aria-label=\" (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\" rel=\"nofollow\" >Dokumentacja do API ze strony VirusTotal<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Wystarczy jedynie wyszuka\u0107 potrzebn\u0105 akcj\u0119, zmieni\u0107 j\u0119zyk z domy\u015blnego Shell na Python oraz wype\u0142ni\u0107 pola \u2013 jak w przyk\u0142adzie URL oraz x-apikey. Dokumentacja wspiera nas r\u00f3wnie\u017c m.in. poprzez wskazanie wymaganych bibliotek i informuj\u0105c, jak je zainstalowa\u0107 w naszym \u015brodowisku. &nbsp;<\/p>\n\n\n\n<p>Do realizacji mojego celu wystarczy\u0142o skopiowa\u0107 kod programu i delikatnie go zmodyfikowa\u0107, by m\u00f3c przeskanowa\u0107 100 URL na raz, eliminuj\u0105c element r\u0119cznego klikania przez WebGui albo zmieniania parametru URL w kodzie programu.<\/p>\n\n\n\n<p>Na szcz\u0119\u015bcie mia\u0142em do dyspozycji plik z IOC, wi\u0119c wystarczy\u0142o go zaimportowa\u0107 do programu i w p\u0119tli wykonywa\u0107 po\u0142\u0105czenia do serwisu, a wyniki zapisywa\u0107 do osobnego pliku. Odpowied\u017a z serwera, zawiera bardzo du\u017co informacji, jednak dla mnie najwa\u017cniejsze by\u0142y adresy URL, liczba pozytywnych wynik\u00f3w oraz suma wszystkich skan\u00f3w.<\/p>\n\n\n\n<p>Dla przyk\u0142adu kod programu w Python:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/2-4.png\"><img decoding=\"async\" width=\"701\" height=\"281\" src=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/2-4.png\" alt=\"fragment kodu\" class=\"wp-image-20237\" srcset=\"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/2-4.png 701w, https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/2-4-300x120.png 300w\" sizes=\"(max-width: 701px) 100vw, 701px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Jak wida\u0107 na przyk\u0142adzie, prosta modyfikacja kodu pozwoli\u0142a zaoszcz\u0119dzi\u0107 par\u0119 godzin sprawdzania 100 adres\u00f3w URL w serwisie. Wiele obecnie wiod\u0105cych serwis\u00f3w posiada interface API w celu automatyzacji lub bez graficznego po\u0142\u0105czenia si\u0119 z nim i uzyskania takich samych danych lub nawet ich wi\u0119kszej ilo\u015bci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Wykorzystanie Splunk SOAR<\/strong><\/h2>\n\n\n\n<p>Podobne rozwi\u0105zanie tematu oraz szersze wykorzystanie automatyzacji zada\u0144 daje np. Splunk SOAR (dawniej Phantom). Jest to bardzo dobre narz\u0119dzie z rodziny Splunk, kt\u00f3re idealnie wsp\u00f3\u0142pracuje z Splunk Enterprise Security i generowanymi tam notable evantami (incydentami o bardzo wysokiej wa\u017cno\u015bci).<\/p>\n\n\n\n<p>Wszystkie <strong>ograniczenia Splunk ES<\/strong> da si\u0119 rozwi\u0105za\u0107 przy pomocy Splunk SOAR i jego Playbook\u00f3w oraz wynikaj\u0105cych z nich automatyzacji. A to, czego nie da si\u0119 wykona\u0107 za pomoc\u0105 dost\u0119pnych akcji z aplikacji, mo\u017cemy dowolnie zaprogramowa\u0107 przy u\u017cyciu j\u0119zyka Python w istniej\u0105cych blokach (co nie jest zalecane w dedykowanych w tym celu Custom Functions).<\/p>\n\n\n\n<p>W dobrze skonfigurowanym \u015brodowisku Splunk SOAR z odpowiednimi aplikacjami oraz Playbookami mo\u017cna np.:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>weryfikowa\u0107 zaraportowane maile jako Phishing,<\/li><li>wyci\u0105ga\u0107 automatycznie wszystkie dost\u0119pne IOC \u2013 te widoczne jak i ukryte w kodzie e-maila oraz za\u0142\u0105cznikach,<\/li><li>weryfikowa\u0107 wa\u017cno\u015b\u0107 u\u017cytkownika, kt\u00f3ry zaraportowa\u0142 e-mail,<\/li><li>automatycznie rozwija\u0107 short URL oraz wyci\u0105ga\u0107 domeny i IP z domen i URL,<\/li><li>sprawdza\u0107, czy dany adres e-mail, temat lub tre\u015b\u0107 nie znajduj\u0119 na White li\u015bcie,<\/li><li>sprawdza\u0107 reputacj\u0119 pozyskanych IOC w r\u00f3\u017cnych zewn\u0119trznych lub wewn\u0119trznych serwisach,<\/li><li>wysy\u0142a\u0107 e-maile automatycznie do Sandboxa,<\/li><li>przesy\u0142a\u0107 e-maile do AI,<\/li><li>weryfikowa\u0107 automatycznie parametry z Header takie jak: dmarc, dkim, spf,<\/li><li>sprawdza\u0107 w lokalnej lub zewn\u0119trznej bazie danych, czy dany sender nie jest na Black li\u015bcie,<\/li><li>sprawdza\u0107 w poprzednio zaraportowanych e-mailach podobie\u0144stwa i zamyka\u0107 automatycznie w przypadku znalezienia podobnego,<\/li><li>blokowa\u0107 URL sendera, czy\u015bci\u0107 skrzynki z zaraportowanego e-maila u innych u\u017cytkownik\u00f3w,<\/li><li>wiele innych akcji, kt\u00f3re analityk musi wykona\u0107 r\u0119cznie w r\u00f3\u017cnych serwisach, a mog\u0142o by to zosta\u0107 wykonane automatycznie przy u\u017cyciu aplikacji u\u017cywaj\u0105cych API w celu realizacji zada\u0144.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Przyk\u0142adowe u\u017cycie Splunk SOAR<\/strong><\/h2>\n\n\n\n<p>W przyk\u0142adzie ze skanowaniem 100 adres\u00f3w URL opisanym na pocz\u0105tku artyku\u0142u mo\u017cna r\u00f3wnie\u017c pos\u0142u\u017cy\u0107 si\u0119 Splunk SOAR.<\/p>\n\n\n\n<p>Najlepiej w tym celu stworzy\u0107 nowego Playbooka. Wystarczy w\u00f3wczas doda\u0107 blok z aplikacj\u0105 Virustotal, w kt\u00f3rej wybieramy akcj\u0119 <em>url reputation<\/em>, a w polu url wybieramy <em>artifact.requestUrl<\/em>. Nast\u0119pnie zapisujemy Playbooka z dowoln\u0105 nazw\u0105, wybieramy, aby dzia\u0142a\u0142 na wszystkich label.<\/p>\n\n\n\n<p>Kolejno przechodzimy np. do source -&gt; events i tworzymy nowy container, do kt\u00f3rego w zak\u0142adce Files wrzucamy plik IOC.txt. Uruchamiamy przycisk <em>action<\/em> i tam wybieramy akcj\u0119 <em>extract ioc<\/em> z aplikacji Parser. W ten spos\u00f3b zostan\u0105 wyci\u0105gni\u0119te wszystkie adresy URL z pliku IOC.txt. Podajemy <em>vaultId<\/em> wcze\u015bniej zapisanego pliku i uruchamiamy akcj\u0119. Utworzy to 100 artefakt\u00f3w, kt\u00f3re pos\u0142u\u017c\u0105 nam do wcze\u015bniej utworzonego Playbooka.<\/p>\n\n\n\n<p>Nast\u0119pnie uruchamiamy nasz Playbook, a on wygeneruje seri\u0119 zapyta\u0144 do VirusTotal i dzi\u0119ki temu w prosty spos\u00f3b otrzymamy informacj\u0119 o reputacji ka\u017cdego adresu URL z pliku. Wynik z dzia\u0142ania aplikacji znajdziemy w zak\u0142adce Widgets na dole strony.<\/p>\n\n\n\n<p>Jak mo\u017cna zauwa\u017cy\u0107, automatyzacja zada\u0144 z udzia\u0142em Splunk SOAR nie wymaga znajomo\u015bci programowania, a jedynie bazuje na prostych umiej\u0119tno\u015bciach w pos\u0142ugiwaniu si\u0119 t\u0105 aplikacj\u0105. Jednak nie ka\u017cdego wynik tej operacji mo\u017ce satysfakcjonowa\u0107.<\/p>\n\n\n\n<p>Kolejnym krokiem powinno by\u0107 <strong>dostosowanie wynik\u00f3w do potrzeb<\/strong>, czyli np. wpisanie najwa\u017cniejszych informacji bezpo\u015brednio do <em>artifactu<\/em>. W tym celu nale\u017cy u\u017cy\u0107 bloku Custom function i w nim, wykorzystuj\u0105c polecenia <em>update_artifact,<\/em> zaktualizowa\u0107 artefakt o wynik positives i total dla ka\u017cdego z artefakt\u00f3w. Dodatkowo, mo\u017cna te\u017c zmieni\u0107 serverity z domy\u015blnego medium na low lub high w zale\u017cno\u015bci od liczby znalezionych positives przez VirusTotal. Dzi\u0119ki temu uzyskamy przejrzysty wgl\u0105d w artefakty zawieraj\u0105ce URL z wynikami, kt\u00f3re nas interesuj\u0105. Uzyskane dane mo\u017cemy te\u017c wyeksportowa\u0107 do pliku w formacie JSON i wykorzysta\u0107 je w innych systemach.<\/p>\n\n\n\n<p>Podany Playbook jest jedynie przyk\u0142adem wykorzystuj\u0105cym aplikacj\u0119 VirusTotal, jednak nic nie stoi nam na przeszkodzie, by w prosty spos\u00f3b doda\u0107 do niego dodatkowe serwisy sprawdzaj\u0105ce reputacj\u0119 oraz logik\u0119, kt\u00f3ra ujednolica wyniki i podaje prosty scoring dla analityka.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Podsumowanie<\/strong><\/h2>\n\n\n\n<p>W analizie incydent\u00f3w Cyberbezpiecze\u0144stwa na t\u0119 chwil\u0119 jest coraz mniej miejsca na manualn\u0105 analiz\u0119. Dzi\u0119ki wykorzystaniu automatyzacji w jak najwi\u0119kszej liczbie miejsc, mo\u017cemy pozwoli\u0107 sobie na uzyskanie wi\u0119kszej ilo\u015bci znormalizowanych wynik\u00f3w z wielu r\u00f3\u017cnych \u017ar\u00f3de\u0142. Pozwala nam to na przesuni\u0119cie dost\u0119pnych zasob\u00f3w ludzkich do bardziej wymagaj\u0105cych incydent\u00f3w bezpiecze\u0144stwa oraz na dodatkowe treningi wiedzy dla analityk\u00f3w.<\/p>\n\n\n\n<p>***<\/p>\n\n\n\n<p>Je\u015bli interesuje Ci\u0119 obszar Cyberbezpiecze\u0144stwa, polecamy r\u00f3wnie\u017c <a href=\"https:\/\/sii.pl\/blog\/all\/cybersecurity\/\" target=\"_blank\" aria-label=\"inne artyku\u0142y naszych ekspert\u00f3w (opens in a new tab)\" rel=\"noreferrer noopener\" class=\"ek-link\">inne artyku\u0142y naszych ekspert\u00f3w<\/a>. <\/p>\n\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-bottom\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;20234&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;bottom&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;2&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;5&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;11&quot;,&quot;greet&quot;:&quot;&quot;,&quot;legend&quot;:&quot;5\\\/5 ( votes: 2)&quot;,&quot;size&quot;:&quot;18&quot;,&quot;title&quot;:&quot;Automatyzacja zada\u0144 w Cyberbezpiecze\u0144stwie&quot;,&quot;width&quot;:&quot;139.5&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} ( {votes}: {count})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 139.5px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 11px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 18px; height: 18px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 14.4px;\">\n            5\/5 ( votes: 2)    <\/div>\n    <\/div>\n","protected":false},"excerpt":{"rendered":"<p>Podstaw\u0105 automatyzacji zada\u0144 jest wybranie j\u0119zyka programowania, kt\u00f3ry b\u0119dzie nam pomaga\u0107 zrealizowa\u0107 cel. Ja zdecydowa\u0142em si\u0119 na Pythona, dlatego \u017ce &hellip; <a class=\"continued-btn\" href=\"https:\/\/sii.pl\/blog\/automatyzacja-zadan-w-cyberbezpieczenstwie\/\">Continued<\/a><\/p>\n","protected":false},"author":487,"featured_media":20240,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_editorskit_title_hidden":false,"_editorskit_reading_time":4,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","inline_featured_image":false,"footnotes":""},"categories":[1316],"tags":[1658,1512,851,354],"class_list":["post-20234","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-development-na-miekko","tag-splunk-soar-2","tag-poradnik","tag-cybersecurity","tag-automatyzacja"],"acf":[],"aioseo_notices":[],"republish_history":[],"featured_media_url":"https:\/\/sii.pl\/blog\/wp-content\/uploads\/2023\/03\/Automatyzacja-zadan-w-Cyberbezpieczenstwie.jpg","category_names":["Development na mi\u0119kko"],"_links":{"self":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/20234"}],"collection":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/users\/487"}],"replies":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/comments?post=20234"}],"version-history":[{"count":2,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/20234\/revisions"}],"predecessor-version":[{"id":20368,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/posts\/20234\/revisions\/20368"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media\/20240"}],"wp:attachment":[{"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/media?parent=20234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/categories?post=20234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sii.pl\/blog\/wp-json\/wp\/v2\/tags?post=20234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}