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

**URL:** <https://discuss.elastic.co/t/machine-learning-job/303726>\
**Category:** 中文提问与讨论\
**Tags:** docker\
**Created:** [May 2, 2022, 9:22am UTC](https://discuss.elastic.co/t/machine-learning-job/303726 "2022-05-02T09:22:51Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![OBT](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/obt/32/104922_2.png) [@OBT](https://discuss.elastic.co/u/OBT)\
**Post date:** [May 2, 2022, 9:22am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/1 "2022-05-02T09:22:52Z")

</div>

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

> **[access.log](https://drive.google.com/file/d/11d-BiCaudWkQcYbTaSSOHMv-xUcFhQ0x/view?usp=sharing)**
>
> Google Drive file.

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

---

<div class="post-metadata">

**Author:** ![martinliu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/martinliu/32/40279_2.png) [@martinliu](https://discuss.elastic.co/u/martinliu)\
**Post date:** [May 4, 2022, 2:00pm UTC](https://discuss.elastic.co/t/machine-learning-job/303726/2 "2022-05-04T14:00:09Z")

</div>

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

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](https://youtu.be/k5soiQ9wftg)

---

<div class="post-metadata">

**Author:** ![OBT](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/obt/32/104922_2.png) [@OBT](https://discuss.elastic.co/u/OBT)\
**Post date:** [May 4, 2022, 4:31pm UTC](https://discuss.elastic.co/t/machine-learning-job/303726/3 "2022-05-04T16:31:54Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![martinliu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/martinliu/32/40279_2.png) [@martinliu](https://discuss.elastic.co/u/martinliu)\
**Post date:** [May 5, 2022, 2:01am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/4 "2022-05-05T02:01:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![OBT](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/obt/32/104922_2.png) [@OBT](https://discuss.elastic.co/u/OBT)\
**Post date:** [May 5, 2022, 10:20am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/5 "2022-05-05T10:20:29Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![martinliu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/martinliu/32/40279_2.png) [@martinliu](https://discuss.elastic.co/u/martinliu)\
**Post date:** [May 6, 2022, 2:26am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/6 "2022-05-06T02:26:55Z")

</div>

packet 的参考文档见： [Capture HTTP traffic | Packetbeat Reference [8.2] | Elastic](https://www.elastic.co/guide/en/beats/packetbeat/current/packetbeat-http-options.html)

`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 under`response`and if [`send\_request`](https://www.elastic.co/guide/en/beats/packetbeat/current/common-protocol-options.html#send-request-option) enabled, then`request` contains the entire HTTP message including the body.`

希望这个对你有所帮助。

---

<div class="post-metadata">

**Author:** ![OBT](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/obt/32/104922_2.png) [@OBT](https://discuss.elastic.co/u/OBT)\
**Post date:** [May 7, 2022, 3:08am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/7 "2022-05-07T03:08:44Z")

</div>

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

- timeout的增加  

- 小封包的增加  
攻擊前  

- 大量GET請求  

- 來源封包較小  
攻擊前  

那目前我有一些疑問是

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

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

![image](https://us1.discourse-cdn.com/elastic/original/3X/8/a/8a431eab3a532fdaca978cc9e4807689f6d9defa.png)

感謝您抽空回答

---

<div class="post-metadata">

**Author:** ![martinliu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/martinliu/32/40279_2.png) [@martinliu](https://discuss.elastic.co/u/martinliu)\
**Post date:** [May 7, 2022, 5:54am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/8 "2022-05-07T05:54:48Z")

</div>

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

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

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

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

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

---

<div class="post-metadata">

**Author:** ![OBT](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/obt/32/104922_2.png) [@OBT](https://discuss.elastic.co/u/OBT)\
**Post date:** [May 7, 2022, 6:20am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/9 "2022-05-07T06:20:32Z")

</div>

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

 ![image](https://us1.discourse-cdn.com/elastic/original/3X/f/c/fcc694715033032f54aa0c5dd8016de129dc474f.jpeg)  
不知要到哪邊去創建規則呢?

---

<div class="post-metadata">

**Author:** ![martinliu](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/martinliu/32/40279_2.png) [@martinliu](https://discuss.elastic.co/u/martinliu)\
**Post date:** [May 9, 2022, 4:29am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/11 "2022-05-09T04:29:37Z")

</div>

推荐学习一下这个教程：[Elastic 安全实战工作坊(中等)](https://elastic.martinliu.cn/codelabs/elastic-security-foundation/#0)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [June 6, 2022, 4:29am UTC](https://discuss.elastic.co/t/machine-learning-job/303726/12 "2022-06-06T04:29:44Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
