首页 > 代码库 > 使用Neo4j可视化Windows日志

使用Neo4j可视化Windows日志

导语:大多数时候,这些都是以数据行的形式表示的,有时候我以看图表。当我我看到BloodHound项目时,我感觉我的图标形式显示比较老旧。我想要同样的视觉展示。

 

介绍

我花了很多时间在SIEM设备中找日志。大多数时候,这些都是以数据行的形式表示的,有时候我以看图表。当我我看到BloodHound项目时,我感觉我的图标形式显示比较老旧。我想要同样的视觉展示。

在这篇文章中,我想介绍如何使用 Neo4j可视化一些Sysmon日志。

入门

我快速的谷歌搜索,偶然发现这个的帖子,我学习了基础知识。第一步是抓住Neo4j的免费社区版本,可以在这里找到

安装完成后,您应该可以浏览http://127.0.0.1:7474/browser/访问Neo4j DB,默认用户/密码为neo4j/neo4j,在您在首次登录时更改密码。

第二步是使用配置文件安装Sysmon,在以前的文章中我介绍过Sysmon。

准备日志

现在,已经配置好Sysmon及Neo4j的设置,我们需要将日志转换成可以导入Neo4j的格式。我使用以下的PowerShell脚本:

这个脚本创建一个CSV文件

 
Import-Module C:UsersAntonDownloadsGet-WinEventData.ps1
$File = "C:UsersAntonDesktoplogs.csv"
Clear-Content "C:UsersAntonDesktoplogs.csv"
Add-Content $File -Value Source","Destination","DestinationPort","Application`n -NoNewline
$EventsID3 = Get-WinEvent -FilterHashtable @{logname="Microsoft-Windows-Sysmon/Operational";id=3} | Get-WinEventData | select EventDataSourceIp,EventDataDestinationIp,EventDataDestinationPort,EventDataImage
foreach ($Event3 in $EventsID3)
{
   $output = Write-Output $Event3.EventDataSourceIp","$Event3.EventDataDestinationIp","$Event3.EventDataDestinationPort","$Event3.EventDataImage`n
   Add-Content $File -Value $output -NoNewline
}

技术分享

为了简单起见,我将文件放入C:Users<Name>DocumentsNeo4jdefault.graphdbimport目录中

导入数据和Cypher查询

现在有了我们所需格式的文件,打开Neo4j界面,并在输入框中输入以下命令:

 
load csv with headers from "file:///logs.csv" AS csvLine
CREATE (source:address { address: csvLine.Source })
CREATE (destination:addressd { addressd: csvLine.Destination })
CREATE (DestinationPort:DestPort { destport: csvLine.DestinationPort })
CREATE (application:app { Application: csvLine.Application })
CREATE (source)-[:ConnectedTo]->(destination)-[:Using]->(application)-[:OnPort]->(DestinationPort)

第一行加载我们的CSV,

接下来的四个CREATE语句使我们的图形元素的源地址,目的地址,目标端口和应用程序

最后一个CREATE语句构建我们的关系。在这种情况下,我想知道什么源IP连接到什么目的地IP以及什么应用和目标端口。

技术分享

点击播放按钮,你应该看到类似于以下内容:

技术分享

现在我们可以找到感兴趣的东西,点击左侧的数据库图标,然后点击“关系类型”下的*图标:

技术分享

你现在应该看到的关系图如下:

技术分享

我们得到一个真正清晰的前端展示与什么连接到我们的系统。在这种情况下,我们可以看到192.168.1.123连接到204.79.197.200,使用端口443上的IE。

实例测试

让我们进一步了解一下如何使用它来分析一些恶意活动。

技术分享

当然Neo4j和这种设置不会提醒你任何恶意的活动

我们可以编写一个简单的查询来查看所有的PowerShell网络连接:

技术分享

给你一个结果列表

技术分享

我们可以双击来扩展它。现在我们应该看到我们对PowerShell网络活动的攻击展示:

再次,我们可以清楚地看到192.168.1.123连接到151.101.124.133(Github),通过端口443使用PowerShell。

这显然是一个简化的例子,但我认为这将是一个超级便利的工具,以获得一些额外的见解从你的日志。我在这里使用Sysmon,因为它提供了非常丰富的数据。

结语

使用Neo4j图形数据库,可以很方便的展示进行数据关联。

如果数据量过大,您可以通过JSON的API与BloodHound一样提供Neo4j数据库。

 
 

使用Neo4j可视化Windows日志