0x00 前言简介

红队的SIEM有两个主要目标:

  1. 通过创建一个集中管理中心,收集和丰富来自多个 teamservers的所有相关操作日志,增强了红队人员的可用性和概述。这对于在操作中进行历史搜索以及提供操作的可预览视图(例如蓝队)非常有用。特别适用于多场景、多teamservers、多成员和多时间操作。此外,查看所有屏幕截图、IOC、键盘输出等简单方法
  2. 通过一个集中管理中心收集和丰富来自重定向器的所有流量日志来发现蓝队。使用特定的查询,现在可以检测到蓝团队正在探测您的基础结构设施。

项目地址:https://github.com/outflanknl/RedELK

0x01 体系架构概述

以下是RedELK如何运行的体系架构概述。

redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入。

一组python脚本用于大量丰富日志数据,以及用于Blue Team检测。

0x02  安装和配置

执行安装需要几个重要步骤。每个步骤都需要执行:

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

  • $ FilebeatID是filebeat中重定向器的标识符。
  • $ ScenarioName是重定向器用于攻击方案的名称。
  • $ip/dns:port是filebeat日志发送的IP或DNS名称和端口的信息,这将是redelk服务器的IP/dns。即使使用默认端口(TCP/5044),也需要将其作为参数提供。

此脚本将设置时区(默认为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

  • $ FilebeatID是filebeat中teamserver的标识符。
  • $ ScenarioName是teamserver用于攻击方案的名称。
  • $ip/dns:port是filebeat日志发送的IP或DNS名称和端口的信息,这将是redelk服务器的IP/dns。即使使用默认端口(TCP/5044),也需要将其作为参数提供。
如果已经安装了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实例的文件,以获得更好的丰富功能和更好的警报。有些是必须的,有些则可选的

必须性配置:

  • /etc/redelk/alarm.json.conf:警报运行所需的详细信息。这包括用于在线服务的API密钥(Virus Total,IBM X-Force等)以及通过电子邮件发送警报所需的SMTP详细信息。如果不在此文件中输入您的详细信息,将导致REDELK无法使用其报警功能。

建议性配置:

  • /etc/redelk/iplist_redteam.conf:红队的公共IP地址,每行一个。便于识别红队成员进行的测试。在此处包含地址 的设置是将redirhaproxy- *索引中的适用记录设置一个标记。
  • /etc/redelk/iplist_customer.conf:目标的公共IP地址,每行一个。在此处包含地址的设置是将为redirhaproxy- *索引中的适用记录设置一个标记。
  • /etc/redelk/iplist_unknown.conf:您尚不确定的网关的公共IP地址,但不希望再次收到警告。每行一个。在此处包含地址的设置将为redirhaproxy- *索引中的适用记录设置一个标记
  • /etc/redelk/rogue_useragents.conf:用户代理在访问C2后端时出现已知错误。已经包含了一个基本的UAs列表,如curl,python-urllib和Blue Teamers喜欢使用的一些其他工具。该列表还包含即时消息工具的UAs列表,例如WhatsApp,Skype和Slack。当C2使用IM在分析员之间共享时非常有用。请随意将UAs添加到此列表中。
  • /etc/redelk/known_testsystems.conf:已知测试系统的beacon特征。您可能想要添加有关您自己的测试系统的信息。每行一个。此处包含数据的配置将在rtops- *索引中为适用记录设置一个标记。要将身份验证更改为nginx,请更改/etc/nginx/htpasswd.users以包含您的首选凭据。或者在初始设置之前对/redelk/elkserver/etc/nginx/htpasswd.users文件进行配置。

不建议编辑的其他配置文件:

  • /etc/redelk/abusbotnetc2ip.conf:由abuse.ch列出的已知c2 ip地址的自动更新列表
  • /etc/redelk/abussslcert.conf:由abuse.ch列出的c2 tls证书,c2已知的自动更新哈希列表。
  • /etc/redelk/roguedomains.conf :来自多个来源的已知坏域的自动更新列表。
  • /etc/redelk/torexitnodes.conf :已知TOR出口节点IP地址的自动更新列表。
  • /etc/redelk/known_sandboxes.conf:已知AV沙箱系统的beacon特征。每行一个。此处包含数据的配置将在rtops- *索引中为适用记录设置一个标记。随着越来越多的沙箱具有完全随机的名称,因此这不再具有真正的相关性。
  • /etc/redelk/redteamdomains.conf:攻击性基础设施使用的域列表。由于还没有进行报警编码来检查,因此不需要编辑此文件。
如果在初始安装之前更改这些文件,这些更改将包含在.tgz包中,并可用于未来的安装。这些文件可以在/redelk/elkserver/etc/redelk中找到。
 

0x03日常用法

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
为了检测蓝队活动:
  1. Elasticsearch中存储的数据
  2. 在线服务提供蓝队可能因OPSEC配置不当而放置的一些信息。
(2).配置文件
FSD
(3).检查
FSD

0x04  hood使用

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检测。

REDELK的安装和使用的更多相关文章

  1. docker——容器安装tomcat

    写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...

  2. 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法

    如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...

  3. Sublime Text3安装JsHint

    介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...

  4. Fabio 安装和简单使用

    Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...

  5. gentoo 安装

    加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...

  6. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  7. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part1:准备工作 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 1.实施前准备工作 1.1 服务器安装操 ...

  8. 【原】nodejs全局安装和本地安装的区别

    来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...

  9. tLinux 2.2下安装Mono 4.8

    Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...

随机推荐

  1. PAC在异常检测中的应用

    注:资料均来源于网络,本文只做知识分享,如侵立删,谢谢. PAC算法背景简述: 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律.多变量大数据集无疑会为研 ...

  2. day45 作业

    一.将当前日期按"2017-12-27 11:11 星期三"格式输出 function getdate(){ var d = new Date(); year = d.getFul ...

  3. Comet OJ 计算机(computer)

    Comet OJ 计算机(computer) 题目传送门 题目描述 小 X 有一台奇怪的计算机. 这台计算机首先会读入一个正整数 nn,然后生成一个包含 nn 个数的序列 aa. 一开始 a_i(1 ...

  4. LG2045 方格取数加强版 费用流

    问题描述 LG2045 题解 费用流. 套路拆点,把\((i,j)\)拆为两个点,在这两个点之间连边:一条边流量为\(1\),费用为\(a_{i,j}\),另一条边为流量为\(INF\),费用为\(0 ...

  5. websocket广播式实例

    1.引入相关依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>sp ...

  6. 实验1 C语言开发环境和数据类型、运算符、表达式

    #include <stdio.h> int main () { int x; printf("输入一个整数:\n"); scanf("%d",&a ...

  7. 洛谷P2194 【HXY烧情侣】

    首先请允许我吐槽一下这个题面 这个题面透露出血腥与暴力,电影院里还藏汽油 所以情侣们,要是想看电影就在家里看吧 毕竟出来容易被烧 在家里看虽然观影效果不如在电影院里 但是, 起码咱生命安全啥的有保障啊 ...

  8. JAVA SE11环境变量配置(Windows)

    附上:03. 安装环境:Windows · IntelliJ IDEA Tutorial 附上:使用调试功能进行 Java debug 附上:Linux(Deepin)下配置java8 - L1412 ...

  9. 动手学深度学习4-线性回归的pytorch简洁实现

    导入同样导入之前的包或者模块 生成数据集 通过pytorch读取数据 定义模型 初始化模型 定义损失函数 定义优化算法 训练模型 小结 本节利用pytorch中的模块,生成一个更加简洁的代码来实现同样 ...

  10. sqlite删除数据

    sqlite删除数据 某日, 在使用sqlite的时候发现查询速度极慢, 查看了一下文件大小, sqlite数据库文件已经达到了 22G! 对于一个文件数据库来说, 已经相当致命了,先不说后面如果解决 ...