Module/Common/Data.ps1

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

# This is used to centralize the regEx patterns
data RegularExpression
{
    ConvertFrom-StringData -stringdata @'
        # General matches

        dash = -

        # match a exactly one ( the first ) hexcode in a string
        hexCode = \\b(0x[A-Fa-f0-9]{8}){1}\\b

        # looks for an integer but is not hex
        leadingIntegerUnbound = \\b([0-9]{1,})\\b

        textBetweenQuotes = ["\''](.*?)["\'']

        textBetweenParentheses = \\(([^\)]+)\\)

        spaceDashSpace = \\s-\\s

        TypePrincipalAccess = (?:\\bType\\b\\s*-\\s*\\w*\\s*)(?:\\bPrincipal\\b\\s*-\\s*(\\w*\\s*){1,2})(?:\\bAccess\\b\\s*-\\s*\\w*\\s*)

        InheritancePermissionMap = :\\(\\w\\)\\(\\w\\)

        PermissionRuleMap = \\(\\w\\)\\s*-\\s*\\w

        blankString = \\(Blank\\)

        nonLetters = [^a-zA-Z ]

        enabledOrDisabled = Enable(d)?|Disable(d)?

        # Windows Feature Rule Matches

        WindowsFeatureName = Get-WindowsFeature\\s-Name\\s*\\w+.\\w+

        FeatureNameEquals = FeatureName\\s-eq\\s*\\S*

        FeatureNameSpaceColon = FeatureName\\s\\:\\s\\S*

        IfTheApplicationExists = If the [\\s\\S]*?application exists

        WebDavPublishingFeature = ((W|w)eb(DAV|(D|d)av) (A|a)uthoring)|(WebDAV Publishing)

        SimpleTCP = Simple\\sTCP/IP\\sServices

        IISWebserver = Internet\\sInformation\\sServices

        IISHostableWebCore = Internet\\sInformation\\sServices\\sHostable\\sWeb\\sCore

        # Service policy matches

        McAfee = McAfee Agent

        SmartCardRemovalPolicy = Smart Card Removal Policy

        SecondaryLogon = Secondary Logon

        followingservices = Verify the Startup Type for the following Windows services:

        # DNS rules matches
        textBetweenTheTab = the\\s(?s)(.*)tab\\.

        allEvents = \\"All\\sevents\\"

        # Permission policy matches

        WinEvtDirectory = %SystemRoot%\\\\SYSTEM32\\\\WINEVT\\\\LOGS

        cDrive = system drive's root directory

        SysVol = Windows\\\\SYSVOL

        eventViewer = eventvwr\.exe

        systemRoot = Windows installation directory

        adminShares = (?=.*?\\bADMIN\\b\\$)(?=.*?\\bC\\b\\$)(?=.*?\\bIPC\\b\\$).*$

        permissionRegistryInstalled = (?=.*?\\bHKEY_LOCAL_MACHINE\\b)(?=.*?\\bInstalled\\sComponents\\b).*$

        permissionRegistryWinlogon = (?=.*?\\bHKEY_LOCAL_MACHINE\\b)(?=.*?\\bWinlogon\\b).*$

        permissionRegistryWinreg = (?=.*?\\bHKEY_LOCAL_MACHINE\\b)(?=.*?\\bwinreg\\b).*$

        permissionRegistryNTDS = (?=.*?\\bHKEY_LOCAL_MACHINE\\b)(?=.*?\\bNTDS\\b).*$

        programFiles = ^\\\\Program\\sFiles\\sand\\s\\\\Program\\sFiles\\s\\(x86\\)

        dnsServerLog = DNS\\sServer\\.evtx

        cryptoFolder = ^%ALLUSERSPROFILE%\\\\Microsoft\\\\Crypto$

        hklmSecurity = HKEY_LOCAL_MACHINE\\\\SECURITY

        hklmSoftware = HKEY_LOCAL_MACHINE\\\\SOFTWARE

        hklmSystem = HKEY_LOCAL_MACHINE\\\\SYSTEM

        hklmRootKeys = HKEY_LOCAL_MACHINE\\\\(SECURITY|SOFTWARE|SYSTEM)

        rootOfC = ^C\\:\\\\$

        winDir = ^\\\\Windows

        programFiles86 = ^\\\\Program\\sFiles\\s\\(x86\\)*

        programFileFolder = ^\\\\Program\\sFiles$

        # WinEventLog rule matches
        WinEventLogPath = Logs\\\\Microsoft\\\\Windows

        ADAuditPath = Verify the auditing configuration for (the)?

        inetpub = inetpub
'@

}

data ADAuditPath
{
    ConvertFrom-StringData -StringData @'
        domain = {Domain}
        Domain Controller OU = OU=Domain Controllers,{Domain}
        AdminSDHolder = CN=AdminSDHolder,CN=System,{Domain}
        RID Manager$ = CN=RID Manager$,CN=System,{Domain}
        Infrastructure = CN=Infrastructure,{Domain}
'@

}

# This is used to centralize the regEx patterns
data rangeMatch
{
    ConvertFrom-StringData -stringdata @'
        gt = ^0x([A-Fa-f0-9]{8})
        ge = ^[0-9]{1,}
        lt = or less
        less than = lt
        or less = lt
        le = '(.*?)'
'@

}

data errorMessage
{
    ConvertFrom-StringData -stringdata @'
        ruleNotFound = rule not found
        ruleNotComplete = rule not complete
'@

}

data processMitigationRegex
{
    ConvertFrom-StringData -StringData @'
        TextBetweenDoubleQuoteAndColon = "[\\s\\S]*?:
        TextBetweenColonAndDoubleQuote = :[\\s\\S]*?"
        EnableColon = Enable:
        ColonSpaceOn = :\\sON
        IfTheStatusOf = If\\sthe\\sstatus\\sof
        IfTheStatusOfIsOff = If\\sthe\\sstatus\\sof[\\s\\S]*?\\sis\\s"OFF"[\\s\\S]*this\\sis\\sa\\sfinding
        NotHaveAStatusOfOn = If\\sthe\\sfollowing\\smitigations\\sdo\\snot\\shave\\sa\\sstatus\\sof\\s"ON"
'@

}

# List rules that can be excluded
data exclusionRuleList
{
    ConvertFrom-StringData -StringData @'
        V-73523 =
'@

}

data webRegularExpression
{
    ConvertFrom-StringData -stringdata @'
        configSection = (?<=\")system.+?(?=\")
        customFields = >>
        customFieldSection = Under "Custom Fields", verify the following fields
        excludeExtendedAscii = [^\x20-\x7A]+
        keyValuePairLine = Verify.+?(reflects|is set to)
        keyValuePair = (?<=\").+?(?=\")
        logFlags = (?<=(")?Select Fields(")?, verify at a minimum the following fields are checked:).+(?=\.)
        logFormat = Verify the "Format:" under "Log File" is configured to
        logPeriod = Verify a schedule is configured to rollover log files
        logTargetW3c = Under Log Event Destination, verify the
        mimeType = (?<=)^[.].+(?=)
        mimeTypeAbsent = verify MIME types for OS shell program extensions have been removed
        standardFields = (?<=Under "Standard Fields",).+
        standardFieldEntries = "([^"]*)"
        HMACSHA256 = Verify "HMACSHA256" is selected for the Validation method
        autoEncryptionMethod = "Auto" is selected for the Encryption method
        CGIModules = "Allow unspecified CGI modules"
        ISAPIModules = "Allow unspecified ISAPI modules"
        useCookies = (Use Cookies|UseCookies)
        expiredSession = Regenerate expired session ID
        sessionTimeout = Time\-out
        inetpub = inetpub
'@

}

data eventLogRegularExpression
{
    <#
        The name entry was added to support event log name extraction from the
        different formats found in different Window Server STIGs. For example in
        the 2012 Stig, (Application.evtx) was used, in 2016 “Application.evtx”
        is used, so name now extracts the log name from the extension and the
        preceding word.
    #>

    ConvertFrom-StringData -stringdata @'
        name = \\w+\\.evtx
'@

}