有一個漏洞!你是一個信息安全事件響應器得到調查。你出現,並開始要求人們對網絡流量日誌和遙測數據。人們開始與你分享tb的數據,指出你在雲存儲不同的位置。你編譯的數以百計的IP地址和域名列表作為妥協(國際石油公司)的指標。首先,你想要檢查是否這些國際石油公司出現在日誌和遙測數據給你。你快速的外觀和意識到日誌數據從所有不同的係統,安全設備和雲提供商的組織使用很多不同的模式和格式。你如何分析這些數據?你不能完全的數據下載到筆記本電腦和執行grep。你不能完全把這變成一個安全信息和事件管理(SIEM)係統——它將繁瑣的設置,過於昂貴,可能太慢。 How would you query for IOCs over the different schemas? You imagine spending days figuring out the different schemas.
現在想象一下,如果你有磚LakehouseBeplay体育安卓版本平台。所有的日誌和遙測數據從組織的係統,出口安全傳感器和雲提供商可以直接到磚Lakehouse攝取三角洲表(也存儲在廉價的雲存儲)。三角洲表也促進高績效分析和AI /毫升。因為磚可以在多個雲,不需要將數據合並到一個雲數據駐留在多個雲。您可以過濾磚在多個雲中的數據並獲取結果通過三角洲鋪文件共享協議。因此你隻付出口費用查詢結果沒有數據攝入!想象的各種查詢、分析和AI /毫升模型等網絡安全平台可以運行在你深入地了解一個事件反應(IR)的調查。Beplay体育安卓版本想象是多麼容易尋找那些國際石油公司。
在這個博客中,我們將
- 在網絡安全操作,解釋國際奧委會匹配問題
- 向您展示如何執行國際奧委會匹配日誌和遙測數據存儲在數據磚Lakehouse平台不知道表名或字段名,Beplay体育安卓版本
- 向您展示如何擴展連續或增量監測特定查詢,和
- 向您展示如何創建概要結構增加時間覆蓋率和加快曆史奧委會搜索。
年底這個博客,你將能夠把相關的筆記本和樣本數據,嚐試在自己的磚工作區。
國際奧委會匹配為什麼重要?
檢測
匹配的原子國際石油公司的一個基本構建塊檢測使用的規則或模型檢測係統,如端點檢測和響應(EDR)係統和入侵檢測係統(IDS)。原子奧委會可以一個IP地址,一個完全限定域名(FQDN),文件哈希(MD5、SHA1, SHA256等等。),TLS指紋,注冊表鍵或文件名與潛在的入侵或惡意活動。檢測係統通常使用(原子)國際奧委會匹配與其他謂詞檢測網絡威脅和生成一個安全事件預警與相對較高的信心。
例如,考慮國際奧委會的FQDN惡意指揮控製(C2)服務器。檢測規則需要找到一個域名係統(DNS)請求相匹配的FQDN日誌,確認請求成功,確認發送請求試圖連接到主機的IP地址與之前的FQDN生成警報。從檢測係統警報通常聚合,優先和修複安全操作中心(SOC)的一個組織。大多數警報是假陽性,但當真正發現積極的提醒,一個事件響應觸發工作流。
事件反應(IR)
當違約,如SolarWinds黑客,懷疑,第一個任務事件反應者要做的就是構建一個列表相關的國際石油公司和掃描所有日誌和遙測數據的國際石油公司。掃描的結果,或國際奧委會匹配,是國際奧委會的列表(有時也稱為線索或低忠誠警報)。這些國際奧委會擊中受到事件反應者和一個更深的法醫調查進行受影響的係統。法醫調查的目的是建立時間表和違約的範圍。
威脅狩獵
威脅狩獵是一個積極主動的尋找逃避現有的檢測係統的安全威脅。威脅狩獵通常始於一個奧委會搜索所有可用的日誌和遙測數據。國際石油公司用於狩獵的列表通常是策劃的具體組織的威脅在過去,發現公共新聞/博客,威脅情報來源。我們可以進一步威脅情報來源分解成付費訂閱(VirusTotal等等),開源(Facebook ThreatExchange)和執法(聯邦調查局,國土安全部,網絡司令部)。
在紅外和威脅狩獵用例,這一事件響應者或威脅獵人(今後“分析師”)將執行國際奧委會匹配獲得國際奧委會的列表。這些點擊分組的設備(主機、服務器、筆記本電腦、等)與國際奧委會相關事件的發生。對於每一個組,分析師將和查詢額外數據之前事件的時間戳。這些數據包括流程執行、文件下載、用戶賬戶和有時富含威脅情報(如。檢查文件對VirusTotal散列)。如果觸發事件被認為是惡意的,修複分離或隔離設備可能會采取行動。注意,國際石油公司威脅情報訂閱的限製,他們是有限的(如“公共”指標。公共IP地址),一些惡意演員劫持受害者的基礎設施,因此操作私有IP地址,難以檢測。在任何情況下,調查過程是由國際奧委會匹配操作,因此它在網絡安全操作的重要性。
為什麼是國際奧委會匹配困難的?
考慮國際奧委會為紅外用例匹配。在最好的情況下的所有數據坐在安全信息和事件管理(SIEM)係統,因此可以很容易地查詢;然而,SIEM通常有一個相對較短的停留時間(通常少於90天熱存儲)由於成本和一些威脅可能在組織的運營環境,隻要一年。的Solarwinds或陽光違反2020年是一個很好的例子:最早的活動可以追溯到2020年2月即使違反2020年11月才發現。此外,即使你可以保持一年的數據SIEM,大多數遺留SIEM無法查詢了這麼多數據交互速度和許多分析師最終“組塊”查詢分成多個查詢,短時間內(如一個星期)。在其他情況下,數據可能坐跨多個孤立的數據存儲與不再保留,但需要巨大的努力來執行國際奧委會匹配不同的數據存儲。
即使一個外部網絡安全廠商從事紅外,供應商紅外團隊經常會想把客戶數據回中央數據存儲與國際奧委會執行匹配和分析的功能。困難之一將變化的數據模式數據回落,需要一些努力來處理模式變化使用schema-on-write或schema-on-read技術。另一個困難的報道將搜索的時間或數據保留。給定一個紅外的緊迫性,隻有最近的時間窗口的數據被審查,因為它往往是困難或不可行的收購涉及的數據量很長的停留時間。注意,數據采集的紅外可以非常複雜:客戶可能沒有一個安全、long-retention,和防篡改記錄設施;源係統上的日誌可能滾由於有限的存儲;演員的威脅可能會篡改日誌來掩蓋自己的蹤跡。
威脅狩獵用例麵臨類似的數據工程挑戰,但有一個額外的困難,國際石油公司匹配的列表可以在數百或數千人。在執行單奧委會匹配可能仍然是可接受的紅外使用情況的國際石油公司數以千萬計,這種方法不可能威脅打獵。國際奧委會匹配等威脅狩獵需要治療一個數據庫連接操作和利用各種高性能加入算法開發的數據庫社區。
國際奧委會匹配使用磚Lakehouse平台Beplay体育安卓版本
現在回到事件反應(IR)場景中,我們開始這個博客,你會怎麼做國際奧委會在你所有的日誌和遙測數據匹配?
如果你有一個SIEM,您可以運行一個查詢匹配的一個或一組國際石油公司,但我們已經提到過的局限性。也許你構建自己的解決方案通過發送和儲存你所有的日誌和遙測等廉價的雲存儲的AWS S3(或湖Azure數據存儲(ADLS)或穀歌雲存儲)。你仍然需要一個查詢引擎像轉眼間/ Trino AWS雅典娜,AWS紅移,Azure數據瀏覽,或穀歌大查詢來查詢數據。然後你還需要一個用戶界麵(UI)支持協作所需的大多數紅外和威脅狩獵用例。將這些碎片粘合起來成有功能的解決方案仍需要重大工程工作。
好消息是,磚Lakehouse平台是一個統一的數據平台:Beplay体育安卓版本
- 讓你攝取所有的日誌和遙測的原始形式在雲存儲到三角洲表(雲存儲)使用三角洲湖框架(三角洲湖框架使用開放格式,支持快速、可靠和可伸縮的查詢處理);
- 支持分析和AI /毫升的工作負載在同一三角洲表——不需要複製或ETL;
- 支持beplay娱乐ios工作流通過筆記本UI以及通過一組豐富的api和與其他工具和係統集成;
- 同時支持流媒體和批處理相同的運行時環境。
磚的紅外場景
讓我們深入的紅外場景假設所有數據已經攝取到磚Lakehouse平台。Beplay体育安卓版本你想要檢查是否發生任何的國際石油公司你編譯的日誌和遙測數據在過去的12個月。現在你麵臨以下問題:
- 數據庫、表和列包含相關數據,應該檢查國際石油公司?
- 我們如何提取指標(IP地址,fqdn)相關列?
- 我們如何表達國際奧委會匹配查詢作為一個有效的連接查詢?
第一個問題本質上是一個模式發現任務。你可以自由使用第三方模式發現的工具,但它也直接查詢磚metastore與數據庫相關聯的元數據,表和列。下麵的代碼片段,並將結果進行進一步的過濾到一個臨時視圖。
db_list = [x [0]為x在spark.sql (“顯示數據庫”).collect ())excluded_tables = [“test01.ioc”,“test01.iochits”]# =完整列表模式、表、列類型full_list = []為我在db_list:試一試:tb_df = spark.sql (f "顯示表{我}”)除了異常作為x:打印(f”無法顯示表{我}…跳過”)繼續為(db、table_name is_temp)在tb_df.collect ():full_table_name = db +“。”+ table_name如果is_temp或full_table_name在excluded_tables:繼續試一試:cols_df = spark.sql (f”描述{full_table_name}”)除了異常作為x:#最可能的例外是拒絕訪問,因為桌子是不可見的用戶帳戶打印(f”無法形容{full_table_name}…跳過”)繼續為(col_type col_name評論)在cols_df.collect ():如果不col_type或col_name [:5)= =“部分”:繼續full_list。追加([db, table_name、col_name col_type])火花。createDataFrame (full_list模式= [“數據庫”,“表”,“columnName”,“colType”]).createOrReplaceTempView (“allColumns”)顯示器(spark.sql (“從allColumns SELECT *”))
然後寫一個SQL查詢臨時視圖上找到相關的列在where子句中使用簡單的啟發式方法。
metadata_sql_str =”“”選擇數據庫、表collect_set (columnName)過濾器(columnName我喜歡' %源自% '或columnName我喜歡' % resp % '或columnName我喜歡“% dest %”或columnName我喜歡' % dst % '或columnName我喜歡' % src % '或columnName我喜歡' % ipaddr % '或columnName(“查詢”、“主機”,“推薦人”)作為ipv4_col_list),collect_set (columnName)過濾器(在columnName(“查詢”、“推薦人”)作為fqdn_col_list從allColumns在colType = '字符串'通過數據庫,表名”“”
顯示器(spark.sql (metadata_sql_str))
對於第二個問題,您可以使用SQL內置函數regexp_extract_all ()從列中提取指標使用正則表達式。例如,下麵的SQL查詢,
選擇regexp_extract_all (“這個https://d.test.com粘貼到瀏覽器”,”((? !)[A-Za-z0-9 -] {63} (? !) \ \) + [A-Za-z] {2,6} ',0)作為提取聯盟所有選擇regexp_extract_all (萍為1.2.3.4然後ssh 10.0.0.1和類型表示的,”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0)作為提取
將返回結果:
提取 |
(“d.test.com”) |
["為1.2.3.4”、“10.0.0.1”表示) |
對於第三個問題,讓我們考慮情況下,采取單表域名係統(DNS)表為例。從網絡中提取的DNS表包含DNS請求數據包捕獲文件。DNS表,您將運行下麵的查詢執行國際奧委會對指標提取匹配相關的列。
選擇/ * +廣播(ioc) * /現在()作為detection_ts,“test01.dns”作為src, aug.rawioc.ioc_value作為matched_ioc,ioc.ioc_type從(選擇exp.raw extracted_obs從(選擇to_json (struct (d。*))作為生,concat (regexp_extract_all (d.query”(\ \ d + \ \ \ d + \。\ \ d + \ \ \ d +)。”,0),regexp_extract_all (d.id_orig_h”(\ \ d + \ \ \ d + \。\ \ d + \ \ \ d +)。”,0),regexp_extract_all (d.id_resp_h”(\ \ d + \ \ \ d + \。\ \ d + \ \ \ d +)。”,0),regexp_extract_all (d.query”((? !)[A-Za-z0-9 -] {63} (? !) \ \) + [A-Za-z] {2,6} ',0))作為extracted_obslist從test01.dns作為d)作為exp側視爆炸(exp.extracted_obslist)作為extracted_obs)作為8月內連接test01.ioc作為國際奧委會在aug.extracted_obs = ioc.ioc_value
注意,可選的優化器指令“廣播(ioc)”。告訴磚查詢優化器選擇的查詢執行計劃,廣播較小的“國際奧委會”表包含國際石油公司所有職工的列表節點處理連接操作符。還請注意,正則表達式提供了簡化的例子(考慮使用的正則表達式msticpy生產)。現在,你隻需要使用上麵的查詢作為模板並生成相應的SQL查詢所有表可能包含有關列指標。您可以查看的Python代碼中提供的筆記本。
注意,需要的時間將取決於運行這些奧委會匹配查詢的數據量和可用的計算資源的筆記本:考慮到相同體積的數據,計算資源越多,越並行處理,更快的處理時間。
磚的威脅的狩獵場景
狩獵場景的威脅呢?狩獵,威脅你的安全團隊通常維護一個策劃的國際石油公司並執行列表周期國際奧委會的匹配對國際石油公司的列表。
幾句關於維護一個策劃的國際石油公司列表。根據您的組織的網絡安全實踐的成熟,國際石油公司的策劃列表可能隻是惡意IP地址的集合,fqdn,散列等獲得組織的威脅情報訂閱所策劃的獵人的威脅與您的組織或行業之間的關係。在一些組織中,獵人的威脅可能發揮更積極的作用為包容,尋找國際石油公司測試的發病率統計國際石油公司,以確保假陽性利率管理,和即將到期的國際石油公司當他們不再相關。
當執行國際奧委會匹配使用策劃國際石油公司的列表,您可以選擇跳過模式發現步驟如果數據庫、表和列是眾所周知的和緩慢的變化。為了提高效率,您也不希望運行國際奧委會匹配操作每次都從頭開始,因為大多數的數據在上一次運行檢查。磚三角洲生活表(DLT)提供一個非常方便的方式將國際奧委會匹配查詢轉化為管道運行逐步隻在底層表的更新。
創建流表iochits生活作為現在選擇()作為detection_ts,“test01.dns”作為src, aug.raw ioc.ioc_value作為matched_ioc, ioc.ioc_type從(選擇exp.raw extracted_obs從(選擇to_json (struct (d。*))作為生,concat (regexp_extract_all (d.query”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.id_orig_h”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.id_resp_h”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.query”((? !)[A-Za-z0-9 -] {63} (? !) \ \) + [A-Za-z] {2,6} ',0))作為extracted_obslist從流(test01.dns)作為d)作為exp側視爆炸(exp.extracted_obslist)作為extracted_obs)作為8月內連接test01.ioc作為國際奧委會在aug.extracted_obs = ioc.ioc_valueUNION ALL現在選擇()作為detection_ts,“test01.http”作為src,aug.raw,ioc.ioc_value作為matched_ioc,ioc.ioc_type從(選擇exp.raw extracted_obs從(選擇to_json (struct (d。*))作為生,concat (regexp_extract_all (d.origin”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.referrer”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.id_orig_h”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.host”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.id_resp_h”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),regexp_extract_all (d.referrer”((? !)[A-Za-z0-9 -] {63} (? !) \ \) + [A-Za-z] {2,6} ',0))作為extracted_obslist從流(test01.http)作為d)作為exp側視爆炸(exp.extracted_obslist)作為extracted_obs)作為8月內連接test01.ioc作為國際奧委會在aug.extracted_obs = ioc.ioc_value;
事實上,你已經完全控製增量處理的程度:你可以在計劃執行增量處理連續或間隔。
當你開始執行一個狩獵查詢定期或連續,這不是在檢測領域而不是打獵?確實這是一個細線。狩獵的查詢往往更少和更低的忠誠而檢測規則在成千誤判率高是不接受的。由此產生的加工特點也不同。縮放的問題檢測處理成千上萬的檢測規則在大量的木材和遙測數據非常適合並行化自檢測規則幾乎都是獨立的。流和micro-batching方法可用於增量執行檢測處理新日誌和遙測數據的到來。狩獵往往是一些查詢,但每個查詢試圖覆蓋更多的數據,因此需要更多的資源來處理。
狩獵和調查,更多特別的在自然界中?有什麼方法可以讓這些查詢在互動工作速度?這是一種常見的請求從威脅獵人等大量的網絡日誌數據尤其是DNS數據。
一個優雅的和有效的方法是保持highly-aggregated總結結構作為物化視圖。例如,DNS數據,總結結構隻會持有DNS記錄聚合使用桶為每一個獨特的價值(日期、sourceTable indicator_value、sourceIP destinationIP)。威脅獵人首先查詢這個總結的結構,然後使用字段彙總記錄源表查詢詳情。磚DLT的特性又提供了一種方便的方法來為維護這些概要創建管道結構和下麵顯示了SQL的DNS彙總表。
創建流表ioc_summary_dns生活作為選擇ts_day、obs_value src_data、src_ip dst_ip, count (*)作為問從(選擇“test01.dns”作為src_data,extracted_obs作為obs_value,date_trunc (“天”,時間戳(exp.ts))作為ts_day,exp.id_orig_h作為src_ip,exp.id_resp_h作為dst_ip從(選擇d。*,concat (regexp_extract_all (d.query”(\ \ d + \ \ \ \ d + \ \。\ \ d + \ \ \ \ d +)。”,0),數組(d.id_orig_h),數組(d.id_resp_h),regexp_extract_all (d.query”((? !)[A-Za-z0-9 -] {63} (? !) \ \) + [A-Za-z] {2,6} ',0))作為extracted_obslist從流(test01.dns)作為d)作為exp側視爆炸(exp.extracted_obslist)作為extracted_obs)作為8月GROUP BY ts_day、obs_value src_data、src_ip dst_ip;
你會為每一個源表創建單獨的DLT管道,然後創建一個視圖聯盟所有彙總表成一個單一的視圖查詢了以下SQL。
創建視圖test01.ioc_summary_all作為選擇*從test01.ioc_summary_dns聯盟所有選擇*從test01.ioc_summary_http
彙總表幫助如何?
考慮到DNS表,回想一下,總結結構隻會持有DNS記錄聚合為每一個獨特的價值(日期、sourceTable indicator_value、sourceIP destinationIP)。相同的源目的地IP組之間,可能會有成千上萬的DNS請求一天同樣的FQDN。聚合彙總表,隻有一條記錄代表潛在的,成千上萬的DNS請求相同的FQDN之間相同的源目的地地址。因此彙總表是原始表的有損壓縮的壓縮比至少10倍。查詢規模小得多的彙總表因此更多性能和互動。此外的壓縮性質總結結構意味著它可以涵蓋更長的停留時間與原始數據相比。你失去與聚合時間分辨率,但至少它給了你在調查過程中急需的可見性。想想如何總結結構能告訴你你是否在的影響的陽光威脅即使威脅被發現9個月後第一個可疑活動。
結論
在這篇文章中,我們給你的網絡安全的lakehouse是開放的,低成本和多重雲。放大奧委會匹配的基本操作,我們給了你一個味道的磚Lakehouse平台就可以執行它的輕鬆和簡單性在所有安全相關數據從你的攻擊表麵攝取。Beplay体育安卓版本
我們邀請你