红队的SIEM有两个主要目标:
项目地址:https://github.com/outflanknl/RedELK
以下是RedELK如何运行的体系架构概述。
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入。
一组python脚本用于大量丰富日志数据,以及用于Blue Team检测。
执行安装需要几个重要步骤。每个步骤都需要执行:
1.生成密钥和包
我们需要生成用于加密重定向器/ teamservers和redelk服务器之间的filebeat流量的TLS密钥对。
配置./certs/config.cnf以包含TLS证书的正确详细信息。在该文件中列出正确的IP(IP.1)或DNS(DNS.1)名称非常重要!这些需要指向RedELK服务器的IP或DNS。否则,您的TLS设置将不起作用,Logstash将启动失败并严重崩溃,日志中存在隐藏的错误。
完成后,运行:initial-setup.sh ./certs/config.cnf这将创建一个CA,为redirs,teamserver和elkserver之间的安全通信生成必要的证书,并为Elkserver到TeamServer的安全rsync身份验证生成一个ssh密钥对。
它还生成teamservers.tgz、redirs.tgz和elkserver.tgz,其中包含每个组件的安装包。您需要将这些TGZ文件复制到相关的系统中(TeamServers,redirs-en,将用作RedELK中心节点的系统)
只有在需要使用新的TLS密钥时才需要重新运行此初始设置。如果是这种情况,请删除./certs/redelkCA.*和./certs/elkserver.*文件,并重新运行initial-setup.sh ./certs/config.cnf
2.重定向器安装的配置
目前仅支持haproxy服务器
作为红队基础设施部署过程的一部分,在重定向器上复制并解压缩redirs.tgz。行:install-redir.sh$filebeatid$scenarioname$ip/dns:port
此脚本将设置时区(默认为Europe / Amsterdam,但您可以在脚本中更改此内容),安装filebeat和依赖项,安装所需证书,修改filebeat配置并启动filebeat。
(1).HAProxy细节
RedELK需要修改默认的haproxy配置才能记录更多详细信息。
在“默认值”部分:
log-format frontend:%f/%H/%fi:%fp\ backend:%b\ client:%ci:%cp\ GMT:%T\ useragent:%[capture.req.hdr()]\ body:%[capture.req.hdr()]\ request:%r
在“前端”部分:
declare capture request len
http-request capture req.body id
capture request header User-Agent len
(2).HAProxy配置文件示例
下面的配置是haproxy的一个运行示例。这适用于默认的Cobalt Strike配置文件
log 127.0.0.1 local2 debug
maxconn
user haproxy
group haproxy
defaults
log global
mode http
option httplog
option dontlognull
retries
option redispatch
timeout connect
timeout client
timeout server
log-format frontend:%f/%H/%fi:%fp\ backend:%b\ client:%ci:%cp\ GMT:%T\ useragent:%[capture.req.hdr()]\ body:%[capture.req.hdr()]\ request:%r
frontend www-https
option http-buffer-request
declare capture request len
http-request capture req.body id
capture request header User-Agent len
log /dev/log local2 debug
bind ::: v4v6 ssl crt /etc/letsencrypt/live/haproxy.pem
reqadd X-Forwarded-Proto:\ https
acl path_cs path -m beg /dpixel
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[-z][-z][-z][-z]$
use_backend cobaltstrike-https if path_cs
default_backend www-decoy
timeout client 1m
frontend www-http
mode http
option http-buffer-request
declare capture request len
http-request capture req.body id
capture request header User-Agent len
log /dev/log local2 debug
bind ::: v4v6
reqadd X-Forwarded-Proto:\ http
acl path_cs path -m beg /dpixel
acl path_cs path -m beg /submit.php
acl path_cs path_reg ^/[-z][-z][-z][-z]$
use_backend cobaltstrike-http if path_cs
default_backend www-decoy
timeout client 1m
backend www-decoy
mode http
http-request set-header Host localhost
server localhost localhost:
backend cobaltstrike-https
option forwardfor
server teamserver ${FQDNteamserver}: check ssl verify none
backend cobaltstrike-http
option forwardfor
server teamserver ${FQDNteamserver}:
3.Teamserver安装和配置
在Cobalt Strike TeamServer上复制并解压缩teamservers.tgz,作为红队基础设施部署过程的一部分。运行:install-teamserver.sh$filebeatid$scenarioname$ip/dns:port
如果已经安装了filebeat,则此脚本将发出警告(这一点很重要,因为elk和filebeat有时对于版本相同非常挑剔),设置时区(默认为Europe / Amsterdam,但您可以在脚本中更改此内容),安装filebeat和依赖项,安装所需书,修改filebeat配置,启动filebeat,创建本地用户'scponly'并通过scp,sftp,rsync将该用户限制为基于ssh密钥的身份验证。
4.RedELK安装和配置
(1).安装
作为红队基础设施部署过程的一部分,在RedELK服务器上复制并解压缩elkserver.tgz。
运行:install-teamserver.sh(不需要参数)
此脚本将设置时区(默认为Europe / Amsterdam,但您可以在脚本中更改此内容),安装logstash,elasticsearch,kibana和依赖项,安装所需证书,部署logstash配置和所需的自定义ruby扩展脚本,下载GeoIP数据库,安装Nginx,配置Nginx,使用先前生成的SSH密钥创建本地用户'redelk',在TeamServers上安装用于rsyncing远程日志的脚本,安装用于创建屏幕截图缩略图的脚本,安装RedELK配置文件,安装crontab文件用于RedELK任务,安装GeoIP elasticsearch插件并配置模板,安装python扩展脚本,最后安装python蓝队检测脚本。
还没有完成。需要在/etc/cron.d/redelk中手动输入teamservers的详细信息,并在/etc/redelk中调优配置文件(请参见下面的部分)
(2).配置
在/etc/redelk目录中的ELK服务器上,您可以找到几个可用于调整RedELK实例的文件,以获得更好的丰富功能和更好的警报。有些是必须的,有些则可选的
必须性配置:
建议性配置:
不建议编辑的其他配置文件:
如果在初始安装之前更改这些文件,这些更改将包含在.tgz包中,并可用于未来的安装。这些文件可以在/redelk/elkserver/etc/redelk中找到。
RedELK有两个主要使用场景:
1.红队运行概述
(1).首次登录
浏览到RedELK服务器的IP地址,并使用Nginx的凭据登录(默认为redelk:redelk)。您现在位于Kibana界面中。
您可能需要在此处执行两项操作:查看仪表盘,或者查看并搜索更详细的数据。您可以使用左侧栏上的按钮(默认Kibana功能)在这些视图之间切换。
(2).仪表盘
单击左侧的仪表盘图标,您将得到2个选项:Traffic和Beacon
(3).详细查找和搜索数据
单击“发现”按钮以更详细地查看和搜索数据。完成后,单击要使用的时间范围,然后单击“打开”按钮,使用其中一个准备好的视图搜索。
(3).Beacon数据
当选择搜索“TimelineOverview”时,您将看到一个易于使用的Cobalt Strike团队服务器数据视图,如果您愿意,可以使用Beacon事件的时间线。该视图包括您想要的相关列,例如时间戳、测试场景名称、用户名、BeaconID、主机名、操作系统和操作系统版本。最后,将显示来自Cobalt Strike的完整消息
您可以根据自己的喜好修改此搜索。此外,因为它是elasticsearch,您可以使用搜索栏搜索此索引中的所有数据。
单击记录的详细信息将显示完整的详细信息。可用性的一个重要字段是beaconlogfile字段。此字段是一个超链接,链接到该记录的完整Beacon日志文件。它允许您在更大的窗口中查看Beacon记录并在其中使用CTRL + F.
(4).截图
Redelk提供了一种简单的方法,可以查看从您的目标中生成的所有截图。选择“截图”搜索以获取此详细信息。我们添加了两个很大的可用性内容:缩略图和完整图片的超链接。缩略图可以快速滚动并给您一个直接的印象:通常你记得截图是什么样子的。
(5).键盘输入
和截图一样,简单地概述所有键盘输入操作非常方便。此搜索为您提供了第一行内容,以及指向完整键盘输入日志文件的超链接。
(6).IOC数据
为了快速获得所有IOC的列表,Redelk提供了一个简单的概述。只需使用“iocs”搜索即可获得此列表。这将显示来自Cobalt Strike的所有IOC数据,包括来自文件和服务的数据。
您可以通过点击顶部栏中的“报告”按钮快速导出此列表,以生成此精确视图的CSV。
(7).下载
RedELK提供了一种简单的方法来查看在红队运行期间下载的每个文件。您可以通过“下载”搜索找到此信息。现在可以获得所有下载文件的列表,包括所有相关的元数据,这些都是可搜索的。但更重要的是,您还可以直接从Web浏览器下载实际文件。由于RedELK从每个TeamServer收集所有数据时,这意味着您在整个操作中拥有来自每个TeamServer的所有下载文件。不再需要使用Cobalt Strike客户端登录(并同步)到每个TeamServer。
2.蓝队检测
(1).Aproach
为了检测蓝队活动:
(2).配置文件
FSD
(3).检查
FSD
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入.
一组python脚本用于大量丰富日志数据和蓝队检测。
更多细节描述如下:
1.脚本
如果您想在elk服务器的hood下查看,请查看/etc/cron.d/redelk中的redelk cron文件。它在/usr/share/redelk/bin/中启动几个脚本。有些脚本是为了丰富内容,另一些则用于警告。这些脚本的配置是通过/etc/redelk/中的配置文件完成的。logstash中还进行了大量的扩展(包括为截图生成超链接等)。您可以直接从/etc/logstash/conf.d/中的logstash配置文件中检查出来。
2.日志
在安装过程中,所有安装操作都记录在当前工作目录的日志文件中。
redelk在TeamServer和redelk服务器上的操作期间生成的日志。您可以在/var/log/redelk中找到这些日志。除了所有典型的elasticsearch、logstash等日志之外,您可能只需要将其用于故障排除。
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入。
一组python脚本用于大量丰富日志数据,以及用于Blue Team检测。
https://www.youtube.com/watch?v=ZezBCAUax6c
手机扫一扫
移动阅读更方便
你可能感兴趣的文章