使用Machine Learning創建job來判斷是否遭到攻擊

我目前有一個想嘗試的東西是使用filebeat獲得伺服器的log file
再透過machine learing進行判斷並再遭到攻擊時傳送alert來警告
這邊附上我使用Slowloris攻擊Apache的log file

希望在這的大佬能給我一些方向或是幫助
或是有甚麼這方面的教程影片也希望能提供一下 感恩

建议尝试一下这两个思路:

  1. 已知的可知论:从日志中可以看到在 10 分钟内收到了成千上万的攻击性访问,从访问模式上看,假如这就是一个我们需要捕捉的一种威胁信号,对此的威胁狩猎,可以使用 discovery 中的查询功能,统计 4xx 代码 在 10 分钟内的数量,如果访问总数大于某个值,就可以认定是一次攻击行为的发生,这个查询可以用 Elastic Security 中的规则自动化动态捕获。也可以用 Kibana 的 Alert 的设置告警规则。
  2. 已知的未知论:这个日志在我们的生产环境中还有 n 多个未知的变种,我们怎么设置规则呢?这里机器学习就可以帮到我们了。首先你需要建立几个数据基线让让 Elastic ML 去学习:a)创建 filebeat-* 这个索引整个的机器学习作业,这个在 ML 的控制界面里就有。b)创建针对 apache 返回码数值的特别的 ML job。c)使用以上的情报创建其他可能多指标 ML job 做到更精确的预测。

参考视频:ElasticCC: 如何使用Elastic Stack规划和执行威胁狩猎 - 刘征 - YouTube

感謝你的回覆
我現在換了個方式去抓取資料,使用的是packetbeat去抓取,不知道能不能使用你所說的那些方法去創建Elastic ML,因為我發現他所抓取到的資料跟我把Log file直接丟入後所產出的資料不太相同

Packetbeat 的加入了会更好,又多了一种数据源,上面的两个思路是可以适用于任何数据源的。
happy hunting!

但我從Packetbeat所獲得的資料中似乎沒有看到有關server respond的部分,是否Packetbeat並不會抓取這個資料?

packet 的参考文档见: Capture HTTP traffic | Packetbeat Reference [8.2] | Elastic

In addition, if [ send_response](https://www.elastic.co/guide/en/beats/packetbeat/current/common-protocol-options.html#send-response-option) option is enabled, then the HTTP body is exported together with the HTTP headers underresponseand if [send_request](https://www.elastic.co/guide/en/beats/packetbeat/current/common-protocol-options.html#send-request-option) enabled, thenrequest contains the entire HTTP message including the body.

希望这个对你有所帮助。

感謝你,目前我找到幾個算是判斷的依據
像是

那目前我有一些疑問是

  1. 這些您覺得有哪些能當成被攻擊的依據呢,或是那些可能不是那麼適合?

  2. 該如何去設定這些值,例如下圖我想用source.bytes的小封包增加當成判斷依據那我該選擇哪一項呢?

image

感謝您抽空回答

  1. 這些您覺得有哪些能當成被攻擊的依據呢,或是那些可能不是那麼適合?

在条件允许的情况下(考虑ES 的存储和计算资源 x 时间周期),可以适当的多设定一些安全威胁的信号量,这样可以扩大感知的范围,其实我们不得不依靠时间来筛选出那些确实有意义的指标,用于长期的持续观测。建议设定初选指标后,定期评审筛选它们。

  1. 該如何去設定這些值,例如下圖我想用source.bytes的小封包增加當成判斷依據那我該選擇哪一項呢?

如果你已经考虑观测这个指标了,建议在一个监控图里画出两三个计算值(min,max,mean,sum....),在画出了一段时间的曲线之后,它们之间就可以相互比较了,留下一两条有意义又可以相互参考的线作为长期的观察目标。

希望这些思路对你有所帮助。

感謝您的回覆
我剛剛思考了一下,目前想先以timeout的出現頻率做判斷
但我剛剛看了您的影片( ElasticCC: 如何使用Elastic Stack规划和执行威胁狩猎 - 刘征)
卻在我的elastic上找不到創建這個的地方


不知要到哪邊去創建規則呢?

推荐学习一下这个教程:Elastic 安全实战工作坊(中等)