首页 > 代码库 > 使用Neo4j可视化Windows日志
使用Neo4j可视化Windows日志
导语:大多数时候,这些都是以数据行的形式表示的,有时候我以看图表。当我我看到BloodHound项目时,我感觉我的图标形式显示比较老旧。我想要同样的视觉展示。
介绍
我花了很多时间在SIEM设备中找日志。大多数时候,这些都是以数据行的形式表示的,有时候我以看图表。当我我看到BloodHound项目时,我感觉我的图标形式显示比较老旧。我想要同样的视觉展示。
在这篇文章中,我想介绍如何使用 Neo4j可视化一些Sysmon日志。
入门
安装完成后,您应该可以浏览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日志