You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Cypher查询查找Memgraph中受感染主机的关联交互

查询与受感染计算机有交互的节点的Cypher语句

假设你的Memgraph数据库中:

  • 计算机节点使用标签Computer标识,包含is_infected(布尔值,标记是否感染)、ip/hostname/machine_id(唯一标识字段)等属性
  • 计算机间的交互使用关系类型(如INTERACTED_WITH、CONNECTED_TO、FILE_TRANSFER等)连接

以下是几种常用的查询场景:

1. 已知受感染计算机的唯一标识(如IP)

如果已经知道受感染机器的IP(比如192.168.1.100),可以精准定位并查询其交互节点:

MATCH (infected:Computer {ip: '192.168.1.100', is_infected: true})-[r]-(other:Computer)
WHERE other <> infected
RETURN other.machine_id, other.ip, other.hostname, type(r) AS interaction_type
  • MATCH子句匹配目标受感染节点及其关联的所有计算机节点
  • WHERE子句排除受感染节点自身,避免返回自环结果
  • RETURN返回交互节点的核心信息及交互类型

2. 查询所有受感染计算机的交互节点

如果有多个受感染节点,可批量查询所有感染节点的交互对象:

MATCH (infected:Computer {is_infected: true})-[r]-(other:Computer)
WHERE other <> infected
RETURN infected.ip AS infected_machine_ip, other.ip AS interacting_machine_ip, type(r) AS interaction_type

3. 按交互方向过滤查询

如果日志记录了交互的发起方向,可通过关系箭头精准筛选:

  • 查询受感染计算机主动发起的交互:
MATCH (infected:Computer {is_infected: true})-[r]->(other:Computer)
RETURN infected.ip, other.ip, type(r) AS initiated_interaction_type
  • 查询主动连接到受感染计算机的节点:
MATCH (other:Computer)-[r]->(infected:Computer {is_infected: true})
RETURN other.ip, infected.ip, type(r) AS incoming_interaction_type

注意事项

  • 请根据你的实际数据模型调整节点标签(比如Computer可能是Endpoint)、属性名(比如用hostname代替ip)和关系类型(比如SSH_CONNECTION、RDP_SESSION等)
  • 如果需要统计交互次数,可添加COUNT(r)到RETURN子句并配合GROUP BY使用

内容的提问来源于stack exchange,提问作者KWriter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:41:21