可扩展、可配置的主机信息收集工具。
SitRep 旨在提供一种轻量级、可扩展的主机信息收集替代方案。检查项在运行时从独立文件动态加载。这使得操作员可以快速修改现有检查项,或根据需要添加新检查项。
检查项按类别分组,并可标记为 OpSec 安全/不安全。不安全的检查项仅在提供 /AllowUnsafe 标志时加载。
有趣的结果会以 [*] 高亮显示。
检查项按类别划分,以便在适当的组中显示。目前可用的检查项如下:
环境
防御
权限
软件
凭据
以下检查项当前标记为 OpSec 不安全:
您应检查此配置并根据需要更新 OpSec 标签。
默认情况下所有检查项均启用。但由于检查项是动态加载的,因此可以禁用它们。
禁用单个检查项
CheckBase 包含一个布尔型属性“Enabled”,默认为 true。可以通过在派生类中添加构造函数来设置此属性。下面的示例禁用了 CurrentUser 检查项 (CurrentUser.cs):
public CurrentUser()
{
base.Enabled = false;
}
从构建中排除检查项
由于检查项是动态加载的,因此可以在不进行其他修改的情况下将某个检查项从构建中排除。最简单的方法是在 Visual Studio 中右键单击检查项类,然后选择“从项目中排除”。可以通过在同一上下文菜单中选择“包含在项目中”来重新添加该检查项。
这种方法的优点是将代码从编译后的工件中移除。
运行所有检查项
SitRep.exe /AllowUnsafe
仅运行 OpSec 安全的检查项(默认)
SitRep.exe
SitRep 设计为通过 execute-assembly(或等效方法)执行。

检查项继承自 CheckBase 并实现 ICheck 接口。这强制了动态检查项加载所需的模式。可以根据需要添加其他方法和类。
ICheck 接口公开以下属性和方法:
派生类必须重写 CheckBase 中定义的 "ToString()" 方法。在显示每个检查项的输出时会调用该方法。
通过 "NativeMethods" 文件夹中的类提供对本机方法的访问。每个类以与之交互的 DLL 命名。
检查项负责提供自己的错误处理。当前检查项将整个 "check" 方法包装在 try-catch 块中,鼓励使用此模式。
下面显示了一个空的示例检查项:
using SitRep.Interfaces;
using System;
namespace SitRep.Checks.Software
{
class ExampleCheck : CheckBase, ICheck
{
public bool IsOpsecSafe => true;
public int DisplayOrder => 1;
public Enums.Enums.CheckType CheckType => Enums.Enums.CheckType.Credential;
public void Check()
{
try
{
throw new NotImplementedException();
}
catch
{
Message = "Check failed [*]";
}
}
public override string ToString()
{
throw new NotImplementedException();
}
}
}
欢迎提交 Pull Request。请确保检查项是独立的(即不依赖于其他检查项的输出)。尽可能让检查项自包含,所有一次性代码都存在于检查项类中。
您尝试过模拟域加入的 Windows 端点吗?这就是原因。
SitRep 使用了来自 Seatbelt、SharpUp 和随机 StackOverflow 帖子的代码。已在适当位置添加了致谢。