# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: Sigma Rule Tests

on:
  push:
    branches:
      - "*"
  pull_request:
    branches:
      - master
      - oscd

jobs:
  test-sigma:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Set up Python 3.8
      uses: actions/setup-python@v1
      with:
        python-version: 3.8
    - name: Install dependencies
      run: |
        pip install sigma-cli~=0.3.2
    - name: Test Sigma Rule Syntax
      run: |
        sigma check rules
    - name: Test Sigma Rules
      run: |
        pip install PyYAML attackcti colorama
        python tests/test_rules.py
  yamllint:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: yaml-lint
      uses: ibiqlik/action-yamllint@v3
  check-baseline-win10:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Download evtx-sigma-checker
      run: wget --no-verbose https://github.com/NextronSystems/evtx-baseline/releases/latest/download/evtx-sigma-checker
    - name: Download and extract Windows 10 baseline
      run: |
        wget --no-verbose https://github.com/NextronSystems/evtx-baseline/releases/latest/download/win10-client.tgz
        tar xzf win10-client.tgz
    - name: Remove deprecated rules
      run: 'grep -ERl "^status: deprecated" rules | xargs -r rm -v'
    - name: Check for Sigma matches in baseline
      run: |
        chmod +x evtx-sigma-checker
        ./evtx-sigma-checker --log-source tools/config/thor.yml --evtx-path Logs_Client/ --rule-path rules/windows/ > findings.json
    - name: Show findings excluding known FPs
      run: ./.github/workflows/matchgrep.sh findings.json .github/workflows/known-FPs.csv
