歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

通過ee-outliers與Elasticsearch檢測TLS beaconing

來源:本站整理 作者:佚名 時間:2019-05-26 TAG: 我要投稿

ee-outliers 是用于檢測存儲在 Elasticsearch 中的事件的異常值的工具,這篇文章中將展示如何使用 ee-outliers 檢測存儲在 Elasticsearch 中的安全事件中的 TLS beaconing 連接。Beaconing 連接是定期發起的連接,可能表示計算機已經被感染在進行控制通信,例如從 C&C 服務器中獲取指令或者靜默地在網絡中外傳數據。

預備 ee-outliers
ee-outliers 完全在 Docker 上運行,因此對環境的要求接近于零。唯一的要求是對 Docker 和 Elasticsearch 集群的連接配置,使其可以訪問數據。
該項目的 GitHub 的README頁面已經包含了所有細節,無需贅述。
創建配置文件
GitHub 上 ee-outliers 的默認配置文件中包含了所需要的所有配置選項。首先修改 general 部分中的參數,確保 ee-outliers 可以連接到 Elasticsearch 集群。使用時可以保留所有默認值,包括 beaconing_batch_eval_size。
[beaconing]
# 在查找異常值前,需要同時定義處理多少事件
# 事件數量的增多通常意味著會有更好的結果,但會導致內存使用量增加
beaconing_batch_eval_size=1000000
將參數 print_outliers_to_console 設置為 1,就可以直接在命令行輸出中看到檢出的異常值,這便于進一步調試。
print_outliers_to_console=1
額外需要調整一下 ee-outliers 的時間戳字段,提供一個 grok 模式將其轉換為 days, hours, minutes 的形式,便于人類閱讀。事件的時間戳字段為 timestamp,由此派生出的字段包括 timestamp_day 和 timestamp_hour。
##############################
# DERIVED FIELDS
##############################
[derivedfields]
timestamp=%{YEAR:timestamp_year}-%{MONTHNUM:timestamp_month}-%{MONTHDAY:timestamp_day}[T ]%{HOUR:timestamp_hour}:?%{MINUTE:timestamp_minute}(?::?%{SECOND:timestamp_second})?%{ISO8601_TIMEZONE:timestamp_timezone}?
接下來增加一部分新配置,用于定義統計 TLS beaconing 的檢測模型,此用例已在示例配置文件中定義過了,如下所示:
##############################
# BEACONING - DETECT OUTBOUND SSL BEACONING - TLS
##############################
[beaconing_ssl_outbound]
es_query_filter=BroFilter.event_type:"ssl.log" AND _exists_:BroFilter.server_name
aggregator=BroFilter.server_name,BroFilter.id_orig_h,timestamp_day
target=timestamp_hour
trigger_sensitivity=1
outlier_type=suspicious connection
outlier_reason=beaconing TLS connection
outlier_summary=beaconing TLS connection to {BroFilter.server_name}
run_model=1
test_model=0
讓我們逐行解釋一下,方括號之間的部分是要運行的模型名,名字都以 beaconing_ 為開頭,這樣 ee-outliers 就知道應用統計 beaconing 檢測模型了。
[beaconing_ssl_outbound]
參數 es_query_filter 指定模型要使用的 Elasticsearch 查詢,便于收集要分析的事件。在這個特定場景下,從存儲在集群中的 ssl.log 文件中選擇所有 Bro(Zeek)事件。此外,要篩選出創建 server name 字段的 SSL 事件,稍后在 aggregator 中要使用到這個字段:
es_query_filter=BroFilter.event_type:"ssl.log" AND _exists_:BroFilter.server_name
模型將為每個單獨的 aggregator 字段計算目標字段的所有唯一實例。在這個特定場景下,這意味著 ee-outliers 為一天中的每小時都創建 buckets(前文創建的派生字段之一——timestamp_hour),并用 aggregator 的每個唯一實例組合填充這些 buckets。
aggregator=BroFilter.server_name,BroFilter.id_orig_h,timestamp_day
target=timestamp_hour
trigger_sensitivity=1
例如,假設集群中關于域名 sneaky.com 的 TLS 連接事件每小時大約出現 5 次,都是針對特定源 IP 地址(192.168.0.2)和特定的日期(19/12)的。然后 ee-outliers 將會創建下列 buckets 來發現異常值:
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"
Target: 00 (midnight)
Total count: 5
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"
Target: 01 (01:00 AM)
Total count: 4
Aggregator: "sneaky.com - 192.168.0.2 - 19/12"
Target: 02 (02:00 AM)
Total count: 5
...
aggregator 中所有可能的實例組合都會裝進 buckets 中。在這個特定場景下就是 ee-outliers 處理事件范圍內唯一 server name、源 IP 地址與時間的組合。
觸發靈敏度定義了允許存在多少“標準差”。在上面的例子中,凌晨 1 點只存在 4 個而不是 5 個請求,如果不容忍一些偏差的存在,就不會被視為異常!通過將觸發靈敏度設置為 1 或者更高,將不會錯過那些微小偏差的異常值。例如,在 trigger_sensitivity 設置為 1 的情況下,下面 24 個計數值(一天中每小時一個)都是 beaconing。
5 5 5 4 4 5 5 5 5 3 5 5 5 2 5 5 5 5 4 5 5 5 5 5
標準差是 0.74,小于設置值 1,所以這個 24 個 buckets 的所有事件都會被標記為異常值。
此外,beaconing 模型的內置要求是至少需要 10 個 buckets,否則不會檢測到 beaconing。換句話說,上面如果只有 9 個值而不是 24 個,或者不滿足最少的 10 個值的任意個值都不會被標記為異常值。
然后指定異常值類型、成因和摘要。請注意,摘要中可以包含占位符字段,這些字段都會在異常事件中得到豐富,并且將使分析師更容易在以后對其進行可視化。
outlier_type=suspicious connection
outlier_reason=beaconing TLS connection
outlier_summary=beaconing TLS connection to {BroFilter.server_name}
最后,讓 ee-outliers 運行該模型。在配置文件的 general 部分中全局啟用或禁用運行與測試的開關。

[1] [2]  下一頁

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺 老师还可以怎么兼职赚钱 北京快3遗漏 福建11选5的走势图 哪个打字app赚钱最多 梦幻西游跑镖是怎么赚钱的 高频彩图片 甘肃快3推荐号码一定牛 网装修赚钱 智胜彩票4场进球 如何确定双色球红球尾数 河北十一选五选号助手 福彩黑龙江p62 海南七星彩票论坛 三分时时人免费计划 pk10走势图pk拾走势分析 开发一个游戏怎么赚钱吗