REDELK的安装和使用
0x00 前言简介
红队的SIEM有两个主要目标:
- 通过创建一个集中管理中心,收集和丰富来自多个 teamservers的所有相关操作日志,增强了红队人员的可用性和概述。这对于在操作中进行历史搜索以及提供操作的可预览视图(例如蓝队)非常有用。特别适用于多场景、多teamservers、多成员和多时间操作。此外,查看所有屏幕截图、IOC、键盘输出等简单方法
- 通过一个集中管理中心收集和丰富来自重定向器的所有流量日志来发现蓝队。使用特定的查询,现在可以检测到蓝团队正在探测您的基础结构设施。
项目地址:https://github.com/outflanknl/RedELK
0x01 体系架构概述
以下是RedELK如何运行的体系架构概述。
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入。
一组python脚本用于大量丰富日志数据,以及用于Blue Team检测。
0x02 安装和配置
执行安装需要几个重要步骤。每个步骤都需要执行:
我们需要生成用于加密重定向器/ 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
目前仅支持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
下面的配置是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}:
在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),也需要将其作为参数提供。
作为红队基础设施部署过程的一部分,在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中调优配置文件(请参见下面的部分)
在/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:攻击性基础设施使用的域列表。由于还没有进行报警编码来检查,因此不需要编辑此文件。
0x03日常用法
RedELK有两个主要使用场景:
(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。
- Elasticsearch中存储的数据
- 在线服务提供蓝队可能因OPSEC配置不当而放置的一些信息。
0x04 hood使用
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入.
一组python脚本用于大量丰富日志数据和蓝队检测。
更多细节描述如下:
1.脚本
在安装过程中,所有安装操作都记录在当前工作目录的日志文件中。
redelk使用典型的组件filebeat(传送)、logstash(过滤)、elasticsearch(存储)和kibana(查看)。rsync用于teamserver数据的第二次同步:日志、键盘输入、截图等。nginx用于对kibana进行身份验证,并在操作员浏览器中以简单的方式提供截图、beaconlogs、键盘输入。
一组python脚本用于大量丰富日志数据,以及用于Blue Team检测。
REDELK的安装和使用的更多相关文章
- docker——容器安装tomcat
写在前面: 继续docker的学习,学习了docker的基本常用命令之后,我在docker上安装jdk,tomcat两个基本的java web工具,这里对操作流程记录一下. 软件准备: 1.jdk-7 ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
- Sublime Text3安装JsHint
介绍 Sublime Text3使用jshint依赖Nodejs,SublimeLinter和Sublimelinter-jshint. NodeJs的安装省略. 安装SublimeLinter Su ...
- Fabio 安装和简单使用
Fabio(Go 语言):https://github.com/eBay/fabio Fabio 是一个快速.现代.zero-conf 负载均衡 HTTP(S) 路由器,用于部署 Consul 管理的 ...
- gentoo 安装
加载完光驱后 1进行ping命令查看网络是否通畅 2设置硬盘的标识为GPT(主要用于64位且启动模式为UEFI,还有一个是MBR,主要用于32位且启动模式为bois) parted -a optima ...
- 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. ...
- 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 服务器安装操 ...
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- tLinux 2.2下安装Mono 4.8
Tlinux2.2发行版基于CentOS 7.2.1511研发而成,内核版本与Tlinux2.0发行版保持完全一致,更加稳定,并保持对Tlinux2.0的完全兼容.Mono 4版本要求CentOS 7 ...
随机推荐
- 201871010101- 陈来弟《面向对象程序设计(java)》第6-7周学习总结
201871010101- 陈来弟<面向对象程序设计(java)>第6-7周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh ...
- django学习-数据库操作接口API--(CRUD)
初试API(数据库操作接口CRUD) 现在我们进入交互式python命令行,尝试一下django为你创建的各种API,通过以下命令打开python命令行: py -3 manage.py shell进 ...
- Java虚拟机所管理的内存,包含的运行时数据区域?
运行时数据区域 线程私有(随用户线程的启动和结束而建立和销毁)或所有线程共享(随虚拟机进程的启动而存在) 抛出的异常 备注 程序计数器(Program Counter Register) 线程私有 唯 ...
- 如何有效的清理yum缓存
如果遇到下面问题,请执行下面命令 yum clean all #清除缓存
- NOIP 1999 导弹拦截
洛谷 P1020 导弹拦截 https://www.luogu.org/problemnew/show/P1020 JDOJ 1411: [NOIP1999]拦截导弹 T1 https://neooj ...
- WebSocket协议-基础篇
本篇文章主要讲述以下几点: WebSocket协议出现的背景 WebSocket与HTTP WebSocket API WebSocket协议出现的背景 我们在上网过程中经常用到的是HTTP和HTTP ...
- JAVA基础概念(三)
JAVA方法入参和返回类型 方法入参 基础数据类型 引用数据类型 修饰符 返回类型 方法名(参数类型 参数名,参数类型 参数名...){//方法体return} 方法返回类型 return xxx 具 ...
- 不使用xftp上传/下载文件到linux
yum install lrzsz # 安装软件 window端上传到linux端: 1. window端先压缩需上传的文件 2. linux端运行命令rz 3. 在弹出的窗口选择压缩好的文件, ...
- ifream
很早前看到一个说法,前端要尽量少用ifream,因为它让页面调试麻烦,互操作不方便,会增加http请求,重复加载资源导致内存增加,产生多个页面不好管理等等. 所以很多标准的设计中都推荐不要用ifrea ...
- [LeetCode] 344. Reverse String 翻转字符串
Write a function that reverses a string. The input string is given as an array of characters char[]. ...