来源:https://blog.apnic.net/2017/03/13/analyze-threat-intel-bro/
无论你是从事IT安全还是网络工作,你都可能听说过,或者甚至有过处理过IoT DDoS和Mirai僵尸网络事件的经验。有很多恶意设备在不断地尝试扫描你的网络,telnet/ssh到你的网络设备,或创建一些GRE会话与你的路由器相连。
有一些开源工具可以用作基于网络的入侵检测系统(IDS)或分析框架,其中之一是Bro网络安全监控器(Bro)。Bro强大的分析引擎使其擅长于高性能的网络监视、协议分析和实时应用层状态信息。在本文中,我将解释如何部署Bro来监视和分析威胁情报,以便调整安全设备。
1、安装Bro
对于安装,我使用64位的Ubuntu 14.04.4 LTS。
# uname -a
Linux bro-sensor 4.2.0-27-generic #32~14.04.1-Ubuntu SMP
Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
在安装Bro之前,确保有一些依赖项存在。
# sudo apt-get install cmake make gcc g++ flex bison libpcap-dev libssl-dev
python-dev swig zlib1g-dev swig libgoogle-perftools-dev
我们将从源代码安装Bro。下载源代码:
# sudo wget https://www.bro.org/downloads/bro-2.5.tar.gz
# sudo mkdir -p /opt/nsm/bro
# sudo tar -zxvf bro-2.5.tar.gz
# sudo cd bro-2.5
# sudo ./configure --prefix=/opt/nsm/bro
# sudo make
# sudo make install
导出路径环境变量:
# sudo export PATH=/opt/nsm/bro/bin:$PATH
启动Bro服务:
# sudo /opt/nsm/bro/bin/broctl deploy
检查Bro是否正常运行:
# sudo /opt/nsm/bro/bin/broctl status
Name Type Host Status Pid Started
bro standalone localhost running 1366 01 Feb 13:41:06
你会在/opt/nsm/bro/logs/current中看到一堆日志文件,这取决于bro是如何捕获所有包的。
您可以跟踪conn.log文件并实时观察Bro日志流:
# sudo tail -f /opt/nsm/bro/logs/current/conn.log
2 、添加威胁情报
CriticalStack的Intel Feed是一个为Bro提供的免费Intel市场。一旦你创建了一个免费的帐户,登录并创建一个“收集”和至少一个“传感器”下的收集。订阅与您的网络相关的提要。现在有超过100个订阅源可以订阅。如果一切都完成了,您的仪表板将看起来像这样:
记下API关键字,您需要将critical - stackintel与Bro集成在一起。
在Bro服务器中,安装critical-stack-intel:
# sudo curl
https://packagecloud.io/install/repositories/criticalstack/critical-stack-
intel/script.deb.sh | sudo bash
# apt-get install critical-stack-intel
# critical-stack-intel api YOUR-API-KEY-GOES-HERE
检查、安装和重启Bro:
# broctl check
# broctl install
# broctl restart
使用" critical - stack- intel "的命令来显示激活的威胁情报提要
# critical-stack-intel list
根据传感器的位置,它可能已经看到了恶意流量。 Critical Stack Intel客户端可能已经报告恶意活动到兄弟的intel.log文件。在我们的示例中,文件将位于/opt/nsm/bro/logs/current文件夹中。
我们的传感器准备好了,可以接收所有的日志。您可以从cli解析这些日志,但我发现它不友好/舒适。接下来,我们将包括ELK堆栈(ElasticSearch、Logstash和Kibana),以分析这些日志以获得关于网络流量的信息。
3、将ELK堆栈与Bro集成在一起
ELK stack是一个非常好的数据可视化工具。你可以在ElasticSearch、Logstash和Kibana网站上找到安装过程。当您的ELK堆栈已就绪,则该整合Bro:
# cd /etc/logstash/conf.d/
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-conn_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-dns_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-files_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-http_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-intel_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-notice_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-ssh_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-ssl_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-tunnel_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-weird_log.conf
# sudo wget https://raw.githubusercontent.com/fakrul/bro-elk/master/bro-x509_log.conf
configs从https://github.com/vicgc/logstash-dfir和https://github.com/timmolter/logstash-dfir派生,并进行了修改以满足我的安装需求。这些configs使用logstash-filter-translate插件——下面的命令将为您安装它:
# cd /usr/share/logstash/bin/
# sudo logstash-plugin install logstash-filter-translate
运行以下命令检查是否一切正常:
# sudo -u logstash /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d --debug
如果一切正常,重新启动logstash服务:
# sudo initctl restart logstash
访问在端口5601上运行的Kibana接口(http://localhost:5601/)。
现在您可以从这个接口搜索特定事件。您甚至可以拥有特定的过滤器,并通过创建图形来可视化它们。
你所得到的数据大多是广播和单播,最终会发送到传感器。接下来要做的是放置一些被动或主动的LAN tap,或者做一个端口镜像,来获得广播域中的所有数据。这种分析让您真正了解您的网络,您可以使用这些数据来微调您的安全设备