
확장 가능한 호스트 트라이지 도구로, 레드 팀을 위해 OpSec을 고려한 검사를 동적으로 로드하여 execute-assembly 방식을 통해 Windows 엔드포인트에서 사용자, 도메인, 권한 및 자격 증명 정보를 수집합니다.
확장 가능하고 설정 가능한 호스트 진단(Host Triage) 도구입니다.
SitRep은 가볍고 확장 가능한 호스트 진단 대안을 제공하기 위해 설계되었습니다. 검사(Checks)는 독립 실행 파일에서 런타임에 동적으로 로드됩니다. 이를 통해 운영자는 필요에 따라 기존 검사를 빠르게 수정하거나 새 검사를 추가할 수 있습니다.
검사는 카테고리별로 그룹화되며 OpSec 안전/비안전으로 표시될 수 있습니다. 비안전 검사는 /AllowUnsafe 플래그가 제공된 경우에만 로드됩니다. 흥미로운 결과는 "[*]"로 강조 표시됩니다.
검사는 카테고리로 구분됩니다. 이를 통해 적절한 그룹으로 표시할 수 있습니다. 현재 사용 가능한 검사는 다음과 같습니다:
환경
방어
권한
소프트웨어
자격 증명
다음 검사는 현재 OpSec 안전하지 않은 것으로 표시되어 있습니다:
이 구성을 검토하고 필요에 따라 OpSec 태그를 업데이트해야 합니다.
모든 검사는 기본적으로 활성화되어 있습니다. 그러나 검사가 동적으로 로드되므로 이를 비활성화할 수 있습니다.
검사 비활성화하기
CheckBase에는 기본값이 true인 부울 'Enabled' 속성이 포함되어 있습니다. 이는 생성자를 추가하여 파생 클래스에서 설정할 수 있습니다. 아래 예제는 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();
}
}
}
PR 환영합니다. 검사가 독립적이어야 합니다(즉, 다른 검사의 출력에 의존하지 않음). 가능한 한 검사는 자체 포함되어야 하며, 모든 단일 사용 코드는 검사 클래스 내에 있어야 합니다.
도메인에 가입된 Windows 엔드포인트를 모킹(mocking)해 본 적이 있나요? 그것이 이유입니다.
SitRep은 Seatbelt, SharpUp 및 다양한 StackOverflow 게시물의 코드를 사용합니다. 적절한 곳에 크레딧이 추가되었습니다.