检测攻击的基础日志服务器 Part2:日志聚合

 

一.写在前面的话

在我之前的文章中,我介绍了如何设置Graylog2日志记录服务器。在这篇文章中,我将介绍如何从我们安装的Graylog中获取一些日志。可是因为每个渗透测试人员使用的基础设施资产的数量和类型各不相同,所以无法在一篇文章中介绍所有的日志来源。但是,这些思想是差不多的,希望这篇文章将会帮助你理解。
我将介绍以下设置日志聚合的方法:

1.Apache有效负载/网上诱骗/ C2重定向器服务器。
2.Postfix / Sendmail邮件服务器。

 

二.Graylog消息输入和Rsyslog :

在开始设置日志聚合之前,我应该了解一下关于Graylog的消息输入和Rsyslog的内容:

1.消息输入是Graylog用来提取传入日志消息的内容。
2.Rsyslog是用于日志处理的快速系统。它是一个基于*nix的实用工具(通常是预安装的),用于通过网络转发日志消息(通过TCP或UDP)。这是我们用来将基础设施资产(即客户)的日志转发给Graylog的方法。

 

三.服务器 – 设置Graylog消息输入:

Graylog中的消息输入配置非常简单。你可以从System → Inputs菜单中的Web界面启动。

Graylog支持大量的输入类型。正如我前面提到的,我们使用Rsyslog,选择“Syslog TCP”,然后单击“启动新输入。

下图中的大多数设置都是可选的,你需要输入一个新名称并选择你将要使用的绑定端口(你的Graylog服务器将创建一个监听服务来提取该端口上的日志)。Rsyslog默认使用514端口,我推荐在下面的例子中使用一个独立的高端口(> 1024),如5140。

配置完成后,点击开始输入以启动它。

现在我们可以开始用客户端向Graylog发送一些日志。

 

四.客户端 – Apache webserver日志聚合:

登录到您的Apache Web服务器并创建文件/etc/rsyslog.d/apache.conf。将以下文本粘贴到其中:

$ ModLoad imfile

#默认Apache错误日志
$ InputFileName /var/log/apache2/error.log
$ InputFileTag apache-error-default:
$ InputFileStateFile stat-apache -error $
InputFileSeverity info
$ InputFileFacility local3
$ InputRunFileMonitor

#默认Apache访问日志
$ InputFileName /var/log/apache2/access.log
$ InputFileTag apache-access-default:
$ InputFileStateFile stat-apache-access
$ InputFileSeverity info
$ InputFileFacility local4
$ InputRunFileMonitor

$ InputFilePollInterval 1 

接下来,打开/etc/rsyslog.conf并将以下文本粘贴到文件底部:

$ ActionDuectory / var / spool /
rsyslog $ ActionQueueFileName fwdRule1
$ ActionQueueMaxDiskSpace 1g
$ ActionQueueSaveOnShutdown on
$ ActionQueueType LinkedList
$ ActionResumeRetryCount -1
*。* @@ graylog.example.org:5140; RSYSLOG_SyslogProtocol23Format
local3。* @@ graylog.example.org:5140 ; RSYSLOG_SyslogProtocol23Format
local4。* @@ graylog.example.org:5140; RSYSLOG_SyslogProtocol23Format

将所有出现的“Graylog .example.org:5140” 替换为您的Graylog服务器的IP地址/域,以及消息输入的端口。

如果这些都完成了,现在只需启动Rsyslog服务,然后Apache Web服务器就可以将日志转发给Graylog。

sudo service syslog stop
sudo service rsyslog restart
sudo service rsyslog status

让我们来看看它是否正常工作; 返回到您的Graylog服务器Web管理并打开Sources菜单。您应该在源列表中看到您的Apache Web服务器的主机名/ IP地址。

要验证您的Apache日志是否在实时处理数据,请打开Graylog的搜索菜单并在您的Apache客户端上生成一些Apache日志,您可以看到您的日志出现在搜索菜单的Messages部分。

现在,您所要做的就是重复上面的步骤,以实现所有基于Apache的基础设施资产(有效负载服务器、网络服务器、redirectors等)的操作。

 

五.服务器 – Apache日志解析:

默认情况下,Graylog不会将Apache日志解析为某种信息格式,例如IP地址、用户代理、请求字符串、响应代码等等。所以,这些日志都是未经过滤的原始文本,分析起来有点困难。

我们将使用Grok模式解决这个问题。

I)选择一个Apache日志消息示例:

第一件事是从Graylog的搜索菜单中选择任何一个Apache日志消息作为示例。点击它并记下2个值; 该消息的ID字符串和存储在索引。

II)创建一个Apache日志提取器:

接下来,进入系统→输入菜单,然后单击正在运行的Rsyslog输入旁边的“ 管理提取器”按钮。

点击Add extractor菜单下的“ 开始 ”,然后点击Message ID选项卡。粘贴消息ID字符串和您之前从示例Apache日志中提取的索引。完成后点击“ 加载消息 ”。

完整的Apache示例日志会在下一个窗口中加载。滚动到“消息”字段,并从“选择提取器类型”下拉菜单中选择Grok模式。

如果一切顺利,您应该在示例消息窗口中看到示例Apache日志。您现在需要做的就是粘贴Grok模式,将其解析为Grok模式文本框。

将下面的整个字符串粘贴到文本框中,然后点击旁边的“ Try ” 按钮:
%{IPORHOST:clientip}%{HTTPDUSER:ident}%{USER:auth} [%{HTTPDATE:timestamp} ]“(?:%{WORD:verb}%{NOTSPACE:request}(?: HTTP / {NUMBER:httpversion})?|%{DATA:rawrequest})“%{NUMBER:response}(?:%{NUMBER:bytes} | - )

您可以看见在“ Extractor Preview ”窗口中的日志被正确地解析为多个字段。

然后要做的就是重命名提取器,点击“ 创建提取器 ”按钮。确保每次选中提取单选。

III)测试:

现在所有进入日志服务器的Apache日志都将被自动解析为多个字段;这样便于分析。您也可以通过在Graylog的搜索菜单中查看新的Apache日志来验证这一点——以前不存在的字段现在应该有了。


注意: Grok模式非常强大,允许您从各种来源解析日志;web服务器、邮件服务器甚至自定义应用程序。我建议在 System → Grok patterns菜单下检查Graylog的内置Grok模式。您可以从其他来源上传新的Grok模式,甚至可以自行编写。

 

六.客户端 – 邮件服务器日志聚合:

Postfix和Sendmail都将日志写入syslog的邮件工具。邮件日志通常存储在/ var / log / maillog中。与Apache Web服务器日志不同,它们也由Rsyslog的默认配置来处理。

这对我们来说是个好消息,因为您只需编辑邮件服务器中的/etc/rsyslog.conf文件,并将以下行添加到文件的底部即可。
*。* @@ graylog.example.org:5140; RSYSLOG_SyslogProtocol23Format

替换“ graylog.example.org:5140 ”以匹配日志记录服务器的详细信息。

现在只需重新启动Rsyslog,并且您的邮件服务器的日志应该开始出现在Graylog中。

sudo service syslog stop
sudo service rsyslog restart
sudo service rsyslog status

提示:默认情况下,Postfix仅在其日志文件中捕获电子邮件的“发件人”和“收件人”详细信息。可以按照这个博客中的步骤捕获电子邮件的主题以及更详细的日志记录。

 

七.额外的C2日志聚合:

如果你也有兴趣从Cobalt Strike C2日志中导入Graylog ,请参阅“ Cobalt Strike Team Server Logging Client ”部分,然后用上面的Apache日志导入。

老实说,我还不知道如何将Empire的日志发送给Graylog,但是如果您在Empire C2前使用重定向器,那么将重定向器的日志发送给Graylog应该就足够了。

 

八.结论:

现在我们有一个Graylog服务器从多个攻击基础架构资产中接收日志。在下一篇文章中,我将介绍如何设可视化这些数据。

 

参考:

http://docs.graylog.org/en/2.4/pages/sending_data.html

https://community.graylog.org/t/rsyslog-udp-works-but-not-syslog-tcp/2511

https://github.com/Graylog2/graylog-guide-syslog-linux/blob/master/README.md#rsyslog

http://www.rsyslog.com/sending-messages-to-a-remote-syslog-server/

https://bluescreenofjeff.com/2017-08-08-attack-infrastructure-log-aggregation-and-monitoring/

https://gist.github.com/GaryRogers/85c8f2a805010ceeccc6

(完)