我目前正在使用 KQL,我需要制作某种列表或表格来保存数百个恶意 IP 值。一般来说,我对 KQL 和 InfoSec 非常陌生,所以我想知道是否有一种方法可以创建某种可以在各种查询中调用的 IP 数据表。
这是我正在使用的数据表类型的示例:
let ipAddresses = datatable(IPAddress:string)
[
"62.86.18.86",
"8.211.111.53",
"14.178.141.190"
];
本质上,我希望将其存储在单独的查询中,然后能够在需要时随时调用该数据表。例如,如果我希望能够在单独的查询中使用此数据表,以便能够检查这些 IP 中的任何一个是否已成功登录用户帐户。
我尝试在每次查询中复制并粘贴这些长长的 IP 列表,但这似乎效率很低。问题是,如果更新一个查询的数据表,则也必须更新所有也使用该数据表的查询。我正在寻找这张桌子更加集中(如果这有意义的话)。
我已经使用“.create”创建了 GetMaliciousIPs。由于我的环境设置方式,我无法使用“SignInLogs”,因此,我必须执行以下操作:
let signInsForIPs = AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (ipAddresses);
合并后,新查询如下所示:
let maliciousIPs = GetMaliciousIPs();
let signInsForIPs = AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (maliciousIPs);
运行时,这也不起作用。我收到语法错误。以及如何解决这个问题的想法?
首先,我有一个名为
AADSignInEventsBeta
的表,其中包含数据:
然后创建一个如下所示的函数:
这里 RithIps 是恶意 ip:
.create function RithIps() {
datatable(IPAddress:string)
[
"192.168.1.1",
"10.20.30.40"
]
}
测试是否恶意:
AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (RithIps)
您也可以将其分配给变量:
let x=AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (RithIps);
x