mirror of
https://github.com/splunk/security_content
synced 2026-06-08 17:32:49 +00:00
pretty print search yaml, update ci
This commit is contained in:
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: TAGGED, Validate that the tag is in the correct format
|
||||
|
||||
|
||||
run: |
|
||||
echo "The GITHUB_REF: $GITHUB_REF"
|
||||
#First check to see if the release is a tag
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
#is in the correct format (like v1.10.20)
|
||||
if [[ $GITHUB_REF =~ refs/tags/v[0-9]+.[0-9]+.[0-9]+ ]]; then
|
||||
echo "PASS: Tagged release with good format"
|
||||
exit 0
|
||||
exit 0
|
||||
else
|
||||
echo "FAIL: Tagged release with bad format"
|
||||
exit 1
|
||||
@@ -49,14 +49,14 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-tag-if-present]
|
||||
steps:
|
||||
#Previous config chose which branch/tag to operate on.
|
||||
#Previous config chose which branch/tag to operate on.
|
||||
#I think Github is smart enough to choose based on whether it's a pull request or push + other info?
|
||||
- name: Check out the repository code
|
||||
- name: Check out the repository code
|
||||
uses: actions/checkout@v2
|
||||
#with:
|
||||
# repository: splunk/security-content #check out https://github.com/mitre/cti.git, defaults to HEAD
|
||||
# path: "security-content"
|
||||
|
||||
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
@@ -66,14 +66,14 @@ jobs:
|
||||
|
||||
#TODO: CircleCI restore_cache equivalent
|
||||
|
||||
#don't need to install python3 or python3-dev since it was handled by the action above?
|
||||
#don't need to install python3 or python3-dev since it was handled by the action above?
|
||||
#Also, no support for YAML anchors/aliases in Github Actions...
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install jq -qq
|
||||
#TODO: CircleCI save_cache equivalent
|
||||
|
||||
sudo apt install jq -qq
|
||||
#TODO: CircleCI save_cache equivalent
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
#Get the virtualenv set up
|
||||
@@ -83,19 +83,19 @@ jobs:
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install wheel
|
||||
python3 -m pip install -q -r requirements.txt
|
||||
|
||||
|
||||
- name: run validate
|
||||
run: |
|
||||
|
||||
- name: run validate
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 contentctl.py --path . --verbose validate
|
||||
|
||||
- name: Get CTI Repo for Mitre context
|
||||
uses: actions/checkout@v2
|
||||
- name: Get CTI Repo for Mitre context
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: mitre/cti #check out https://github.com/mitre/cti.git, defaults to HEAD
|
||||
path: "cti/"
|
||||
|
||||
|
||||
|
||||
#Now generate the documentation (uses Node)
|
||||
- uses: actions/setup-node@v2
|
||||
@@ -108,18 +108,18 @@ jobs:
|
||||
#Enter the virtualenv and run the docgen
|
||||
source venv/bin/activate
|
||||
python3 bin/doc_gen.py --path . --output docs -v
|
||||
|
||||
|
||||
#Now generate the spec docs
|
||||
npm install -g @adobe/jsonschema2md
|
||||
jsonschema2md -d spec -o docs/spec -f yaml -e spec.json -x -
|
||||
|
||||
#Clean up extra properties on docs
|
||||
rm -rf docs/spec/*-*.md
|
||||
|
||||
|
||||
echo "****** BRANCH INFORMATION ******"
|
||||
git branch
|
||||
git branch --show-current
|
||||
|
||||
|
||||
build-sources:
|
||||
runs-on: ubuntu-latest
|
||||
needs: validate-content
|
||||
@@ -128,10 +128,10 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install jq -qq
|
||||
|
||||
sudo apt install jq -qq
|
||||
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
#Get the virtualenv set up
|
||||
@@ -143,18 +143,15 @@ jobs:
|
||||
python3 -m pip install -q -r requirements.txt
|
||||
|
||||
- name: Run Generate
|
||||
run: |
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 contentctl.py --path . --verbose generate --product ESCU --output dist/escu
|
||||
python3 contentctl.py --path . --verbose generate --product SAAWS --output dist/saaws
|
||||
python3 contentctl.py --path . --verbose generate --product DevSecOps --output dist/devsecops
|
||||
# make a copy of use_case_lib in order to have ES work :-(
|
||||
# cp dist/escu/default/use_case_library.conf dist/escu/default/analyticstories.conf
|
||||
# cp dist/saaws/default/use_case_library.conf dist/saaws/default/analyticstories.conf
|
||||
# cp dist/devsecops/default/use_case_library.conf dist/devsecops/default/analyticstories.conf
|
||||
python3 contentctl.py --path . --verbose generate --product SSA --output dist/ssa
|
||||
|
||||
- name: Copy lookups .csv files
|
||||
run: |
|
||||
run: |
|
||||
# clean up current lookups
|
||||
rm -rf dist/escu/lookups
|
||||
rm -rf dist/saaws/lookups
|
||||
@@ -167,7 +164,7 @@ jobs:
|
||||
cp -rv *.csv ../dist/escu/lookups
|
||||
cp -rv *.csv ../dist/saaws/lookups
|
||||
cp -rv *.csv ../dist/devsecops/lookups
|
||||
|
||||
|
||||
#Tag is '' for non-tagged push and the tag name for a tagged release
|
||||
- name: Set tag
|
||||
id: vars
|
||||
@@ -198,7 +195,7 @@ jobs:
|
||||
sed -i "s/\"version\": .*$/\"version\": \"$CONTENT_VERSION\"/g" dist/escu/app.manifest
|
||||
sed -i "s/version = .*$/version = $CONTENT_VERSION/g" dist/escu/default/content-version.conf
|
||||
tar -czf content-pack-build-escu.tar.gz dist/escu/*
|
||||
|
||||
|
||||
# update build number and version for saaws
|
||||
sed -i "s/build = .*$/build = ${{ github.run_number }}/g" dist/saaws/default/app.conf
|
||||
sed -i "s/^version = .*$/version = $CONTENT_VERSION/g" dist/saaws/default/app.conf
|
||||
@@ -209,6 +206,9 @@ jobs:
|
||||
# update build number and version for devsecops
|
||||
tar -czf content-pack-build-devsecops.tar.gz dist/devsecops/*
|
||||
|
||||
# update build number and version for ssa
|
||||
tar -czf content-pack-build-ssa.tar.gz dist/ssa/*
|
||||
|
||||
- name: Persist to Workspace
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
@@ -217,12 +217,13 @@ jobs:
|
||||
content-pack-build-escu.tar.gz
|
||||
content-pack-build-saaws.tar.gz
|
||||
content-pack-build-devsecops.tar.gz
|
||||
|
||||
content-pack-build-ssa.tar.gz
|
||||
|
||||
|
||||
build-package:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources]
|
||||
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
@@ -234,12 +235,12 @@ jobs:
|
||||
with:
|
||||
python-version: '2.7' #Available versions here - https://github.com/actions/python-versions/releases easy to change/make a matrix/use pypy
|
||||
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
|
||||
|
||||
|
||||
- name: Get virtualenv for Python 2.7
|
||||
run: |
|
||||
sudo apt install virtualenv
|
||||
sudo apt install virtualenv
|
||||
|
||||
- name: Grab Splunk Packaging Toolkit
|
||||
- name: Grab Splunk Packaging Toolkit
|
||||
run : |
|
||||
curl -Ls https://download.splunk.com/misc/packaging-toolkit/splunk-packaging-toolkit-0.9.0.tar.gz -o splunk-packaging-toolkit-latest.tar.gz
|
||||
mkdir slim-latest
|
||||
@@ -264,6 +265,7 @@ jobs:
|
||||
mv dist/escu DA-ESS-ContentUpdate
|
||||
mv dist/saaws DA-ESS_AmazonWebServices_Content
|
||||
mv dist/devsecops dev_sec_ops_analytics
|
||||
|
||||
slim package -o upload DA-ESS-ContentUpdate
|
||||
slim package -o upload DA-ESS_AmazonWebServices_Content
|
||||
slim package -o upload dev_sec_ops_analytics
|
||||
@@ -276,6 +278,9 @@ jobs:
|
||||
|
||||
cp upload/dev_sec_ops_analytics-*tar.gz dev_sec_ops_analytics-latest.tar.gz
|
||||
|
||||
cp content-pack-build-ssa.tar.gz upload/SSA_Content-latest.tar.gz
|
||||
sha256sum upload/SSA_Content-latest.tar.gz >> checksum.txt
|
||||
|
||||
touch tag-canary.txt
|
||||
|
||||
- name: store_artifacts
|
||||
@@ -292,8 +297,9 @@ jobs:
|
||||
build/DA-ESS-ContentUpdate-latest.tar.gz
|
||||
build/DA-ESS_AmazonWebServices_Content-latest.tar.gz
|
||||
build/dev_sec_ops_analytics-latest.tar.gz
|
||||
build/SSA_Content-latest.tar.gz
|
||||
build/checksum.txt
|
||||
|
||||
|
||||
|
||||
#Everything below this line should ONLY run on a tag and nothing else
|
||||
#We still want all of the above checks to run and pass before running these
|
||||
@@ -301,7 +307,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources, build-package]
|
||||
#Only run when tagged
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
|
||||
- name: Checkout Repo
|
||||
@@ -319,10 +325,10 @@ jobs:
|
||||
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install jq -qq
|
||||
|
||||
|
||||
|
||||
|
||||
- name: Submit ESCU Package to AppInspect API
|
||||
@@ -333,8 +339,8 @@ jobs:
|
||||
cd bin
|
||||
#Enclose in quotes in case there are any special characters in the username/password
|
||||
#Better not to pass these arguments on the command line, if possible
|
||||
./appinspect.sh ../ DA-ESS-ContentUpdate-latest.tar.gz "$APPINSPECT_USERNAME" "$APPINSPECT_PASSWORD"
|
||||
|
||||
./appinspect.sh ../ DA-ESS-ContentUpdate-latest.tar.gz "$APPINSPECT_USERNAME" "$APPINSPECT_PASSWORD"
|
||||
|
||||
- name: Submit SAAWS Package to AppInspect API
|
||||
env:
|
||||
APPINSPECT_USERNAME: ${{ secrets.AppInspectUsername }}
|
||||
@@ -342,20 +348,20 @@ jobs:
|
||||
run: |
|
||||
cd bin
|
||||
./appinspect.sh ../ DA-ESS_AmazonWebServices_Content-latest.tar.gz "$APPINSPECT_USERNAME" "$APPINSPECT_PASSWORD"
|
||||
|
||||
|
||||
- name: Create report artifact
|
||||
if: always()
|
||||
run: |
|
||||
#Always create this, regardless of whether success or failure above
|
||||
tar -cvzf report.tar.gz report/
|
||||
|
||||
- name: store_artifacts
|
||||
- name: store_artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: appinspect_reports
|
||||
path: |
|
||||
report.tar.gz
|
||||
|
||||
|
||||
#Still store the report, even if we have failed (otherwise we don't know why/how we failed)
|
||||
- name: store_artifacts_on_failure
|
||||
uses: actions/upload-artifact@v2
|
||||
@@ -364,7 +370,7 @@ jobs:
|
||||
name: appinspect_reports_failure
|
||||
path: |
|
||||
report.tar.gz
|
||||
|
||||
|
||||
create-report:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources, build-package, run-appinspect]
|
||||
@@ -375,13 +381,13 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 'develop'
|
||||
|
||||
|
||||
|
||||
|
||||
- name: Install System Packages
|
||||
run: |
|
||||
run: |
|
||||
sudo apt update -qq
|
||||
sudo apt install jq -qq
|
||||
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9' #Available versions here - https://github.com/actions/python-versions/releases easy to change/make a matrix/use pypy
|
||||
@@ -396,12 +402,12 @@ jobs:
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install wheel
|
||||
python3 -m pip install -q -r requirements.txt
|
||||
|
||||
|
||||
- name: run reporting
|
||||
run: |
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/reporting.py
|
||||
|
||||
|
||||
#Official, Verified Amazon-AWS Github Account Provided Action
|
||||
- uses: aws-actions/configure-aws-credentials@v1
|
||||
with:
|
||||
@@ -410,23 +416,23 @@ jobs:
|
||||
# aws-session-token: ${{ secrets.AWS_SESSION_TOKEN }} # if you have/need it
|
||||
aws-region: us-west-1 #assume we will always use this, could make this an environment variable...
|
||||
|
||||
- name: Upload Reporting
|
||||
- name: Upload Reporting
|
||||
run: |
|
||||
aws s3 cp bin/reporting s3://security-content/reporting --recursive --exclude "*" --include "*.svg"
|
||||
|
||||
|
||||
update-sources-github:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources, build-package, run-appinspect, create-report]
|
||||
#Only run when tagged
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
steps:
|
||||
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
token: ${{ secrets.PROTECTED_BRANCH_PUSH_TOKEN }}
|
||||
ref: 'develop'
|
||||
|
||||
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.9' #Available versions here - https://github.com/actions/python-versions/releases easy to change/make a matrix/use pypy
|
||||
@@ -443,6 +449,8 @@ jobs:
|
||||
tar -zxf DA-ESS-ContentUpdate-latest.tar.gz -C latest-escu --strip-components=1
|
||||
mkdir latest-saaws
|
||||
tar -zxf DA-ESS_AmazonWebServices_Content-latest.tar.gz -C latest-saaws --strip-components=1
|
||||
mkdir latest-ssa
|
||||
tar -zxf SSA_Content-latest.tar.gz -C latest-saaws --strip-components=1
|
||||
- name: Install Python Dependencies
|
||||
run: |
|
||||
#Get the virtualenv set up
|
||||
@@ -452,9 +460,9 @@ jobs:
|
||||
python3 -m pip install --upgrade pip
|
||||
python3 -m pip install wheel
|
||||
python3 -m pip install -q -r requirements.txt
|
||||
|
||||
- name: Get CTI Repo for Mitre context
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Get CTI Repo for Mitre context
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
repository: mitre/cti #check out https://github.com/mitre/cti.git, defaults to HEAD
|
||||
path: "cti/"
|
||||
@@ -463,33 +471,30 @@ jobs:
|
||||
id: vars
|
||||
run: |
|
||||
echo "::set-output name=branch::${GITHUB_REF#refs/heads/}"
|
||||
|
||||
- name: Run doc-gen
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/doc_gen.py --path . --output docs -v
|
||||
|
||||
- name: Make YAMLs Pretty
|
||||
|
||||
- name: Run doc-gen
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/pretty_yaml.py --path . -v
|
||||
python3 bin/doc_gen.py --path . --output docs -v
|
||||
|
||||
- name: Make YAMLs Pretty
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/pretty_yaml.py --path . -v
|
||||
|
||||
- name: Run generate-coverage-map
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/generate-coverage-map.py --projects_path . --output docs/mitre-map
|
||||
|
||||
|
||||
- name: Update github with new docs and package bits
|
||||
run: |
|
||||
rm -rf dist
|
||||
mkdir dist
|
||||
echo "Directory layout 3"
|
||||
pwd
|
||||
ls -lah
|
||||
mv latest-escu dist/escu
|
||||
mv latest-saaws dist/saaws
|
||||
mv latest-ssa dist/ssa
|
||||
# configure git to prep for commit
|
||||
#git config credential.helper 'cache --timeout=120'
|
||||
git config user.email "research@splunk.com"
|
||||
git config user.name "research bot"
|
||||
git config --global push.default simple
|
||||
@@ -500,7 +505,7 @@ jobs:
|
||||
# Push quietly to prevent showing the token in log
|
||||
#No need to provide any credentials
|
||||
git push
|
||||
|
||||
|
||||
|
||||
publish-github-release:
|
||||
#Github-maintained release action is in archived state: https://github.com/actions/create-release
|
||||
@@ -510,7 +515,7 @@ jobs:
|
||||
#Only run when tagged
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
|
||||
|
||||
#Get the artifacts that we need
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
@@ -520,23 +525,24 @@ jobs:
|
||||
with:
|
||||
name: appinspect_reports
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#Rename those artifacts appropriately
|
||||
- name: Set tag
|
||||
id: vars
|
||||
run: echo "::set-output name=tag::${GITHUB_REF#refs/*/}"
|
||||
|
||||
- name: Rename the content-update appropriately
|
||||
- name: Rename the content-update appropriately
|
||||
run: |
|
||||
cp DA-ESS-ContentUpdate-latest.tar.gz DA-ESS-ContentUpdate-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
cp DA-ESS_AmazonWebServices_Content-latest.tar.gz DA-ESS_AmazonWebServices_Content-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
|
||||
cp SSA_Content-latest.tar.gz SSA_Content-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
|
||||
#No checksum on the reports
|
||||
cp report.tar.gz report-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
|
||||
|
||||
cp checksum.txt checksum-${{ steps.vars.outputs.tag }}.txt
|
||||
|
||||
|
||||
#Upload all of the artifacts that we have created using the third party
|
||||
#action recommended bu Github
|
||||
- name: Upload Release Artifacts
|
||||
@@ -545,18 +551,19 @@ jobs:
|
||||
files: |
|
||||
DA-ESS-ContentUpdate-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
DA-ESS_AmazonWebServices_Content-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
SSA_Content-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
report-${{ steps.vars.outputs.tag }}.tar.gz
|
||||
checksum-${{ steps.vars.outputs.tag }}.txt
|
||||
|
||||
|
||||
|
||||
|
||||
attack-range-update:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources, build-package, run-appinspect, create-report, update-sources-github, publish-github-release]
|
||||
#Only run when tagged
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
|
||||
steps:
|
||||
|
||||
#Get the artifacts that we need
|
||||
- uses: actions/download-artifact@v2
|
||||
with:
|
||||
@@ -569,20 +576,20 @@ jobs:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
# aws-session-token: ${{ secrets.AWS_SESSION_TOKEN }} # if you have/need it
|
||||
aws-region: us-west-1 #assume we will always use this, could make this an environment variable...
|
||||
aws-region: us-west-1 #assume we will always use this, could make this an environment variable...
|
||||
|
||||
- name: Sync latest ESCU to the Attack Range S3 bucket for apps
|
||||
run: |
|
||||
aws s3 cp DA-ESS-ContentUpdate-latest.tar.gz s3://attack-range-appbinaries/
|
||||
# make the file public since it is not by default
|
||||
aws s3api put-object-acl --bucket attack-range-appbinaries --key DA-ESS-ContentUpdate-latest.tar.gz --acl public-read
|
||||
|
||||
|
||||
master-api-update:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [validate-content, build-sources, build-package, run-appinspect, create-report, update-sources-github, publish-github-release, attack-range-update]
|
||||
#Only run when tagged
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
steps:
|
||||
steps:
|
||||
- name: Checkout Repo
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
@@ -607,7 +614,7 @@ jobs:
|
||||
- name: Create Baseline Folder
|
||||
run: |
|
||||
source venv/bin/activate
|
||||
python3 bin/create_baseline_folder.py
|
||||
python3 bin/create_baseline_folder.py
|
||||
|
||||
#Official, Verified Amazon-AWS Github Account Provided Action
|
||||
- uses: aws-actions/configure-aws-credentials@v1
|
||||
@@ -615,7 +622,7 @@ jobs:
|
||||
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
# aws-session-token: ${{ secrets.AWS_SESSION_TOKEN }} # if you have/need it
|
||||
aws-region: us-west-1 #assume we will always use this, could make this an environment variable...
|
||||
aws-region: us-west-1 #assume we will always use this, could make this an environment variable...
|
||||
|
||||
- name: Update API sources
|
||||
run: |
|
||||
@@ -637,5 +644,3 @@ jobs:
|
||||
echo "Error [Security Content API status: $API_STATUS]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
|
||||
@@ -103,6 +103,15 @@ def generate_ssa_yaml(detections, TEMPLATE_PATH, OUTPUT_PATH):
|
||||
|
||||
for d in detections:
|
||||
manifest_file = OUTPUT_PATH + '/detections/' + d['name'].lower().replace(" ", "_") + '.yml'
|
||||
|
||||
# remove unused fields
|
||||
del d['risk']
|
||||
del d['deployment']
|
||||
del d['mappings']
|
||||
|
||||
# pretty search
|
||||
d['search'] = d['search'].replace("|", "\n|")
|
||||
|
||||
with open(manifest_file, 'w') as file:
|
||||
documents = yaml.dump(d, file, sort_keys=True)
|
||||
|
||||
|
||||
@@ -1,66 +1,18 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: This detection indicates use of Mimikatz modules that facilitate Pass-the-Token
|
||||
attack, Golden or Silver kerberos ticket attack, and Skeleton key attack.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 759a653f-cb92-40f9-94c9-ec4e47b0f709
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1055
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
- T1134
|
||||
- T1543
|
||||
- T1547
|
||||
- T1548
|
||||
- T1554
|
||||
- T1556
|
||||
- T1558
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Applying Stolen Credentials via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
- https://adsecurity.org/?p=1275
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is violating authentication processes by injecting
|
||||
golden or silver Kerberos tickets or passing stolen authentication tokens. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
@@ -107,17 +59,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line != null AND ( match_regex(cmd_line, /(?i)kerberos::ptt/)=true OR match_regex(cmd_line,
|
||||
/(?i)kerberos::golden/)=true OR match_regex(cmd_line, /(?i)kerberos::silver/)=true
|
||||
OR match_regex(cmd_line, /(?i)misc::skeleton/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)kerberos::ptt/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)kerberos::golden/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)kerberos::silver/)=true OR match_regex(cmd_line, /(?i)misc::skeleton/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+11
-62
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Stolen credentials are applied by methods such as user impersonation,
|
||||
credential injection, spoofing of authentication processes or getting hold of critical
|
||||
accounts. This detection indicates such activities carried out by PowerSploit exploit
|
||||
@@ -30,38 +9,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 270b482d-2af2-448f-9923-9cf005f61be4
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1055
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
- T1134
|
||||
- T1543
|
||||
- T1547
|
||||
- T1548
|
||||
- T1554
|
||||
- T1555
|
||||
- T1558
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Applying Stolen Credentials via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is violating authentication by injecting stolen
|
||||
credentials, manipulating authentication tokens or impersonating system or user
|
||||
accounts. Operation is performed at the device $dest_device_id$, by the account
|
||||
@@ -108,20 +60,17 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Invoke-CredentialInjection/)=true OR match_regex(cmd_line, /(?i)Invoke-TokenManipulation/)=true
|
||||
OR match_regex(cmd_line, /(?i)Invoke-UserImpersonation/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-System/)=true OR match_regex(cmd_line, /(?i)Invoke-RevertToSelf/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Invoke-CredentialInjection/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-TokenManipulation/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Invoke-UserImpersonation/)=true OR match_regex(cmd_line, /(?i)Get-System/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-RevertToSelf/)=true )\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+8
-54
@@ -1,60 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: This detection identifies use of DSInternals modules that verify password
|
||||
strength, i.e., identify week accounts that would be easily compromised.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 5526d3a4-2497-4e8d-9d3c-7a34c9aace2f
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1078
|
||||
- T1098
|
||||
- T1087
|
||||
- T1201
|
||||
- T1552
|
||||
- T1555
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Assessment of Credential Strength via DSInternals modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 25
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals tool kit is assessing password strength at the device $dest_device_id$.
|
||||
Account attempting this operation is $dest_user_id$ via command $cmd_line$
|
||||
savedsearch_annotations:
|
||||
@@ -95,17 +52,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Test-PasswordQuality/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Test-PasswordQuality/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+12
-46
@@ -2,28 +2,6 @@ author: Teoderick Contreras, splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic identifies suspicious series of attempt to kill multiple
|
||||
services on a system using either `net.exe` or `sc.exe`. This technique is use by
|
||||
adversaries to terminate security services or other related services to continue
|
||||
@@ -34,23 +12,11 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
Sysmon TA. Tune and filter known instances where renamed sc.exe may be used.
|
||||
id: a0c8c292-d01a-11eb-aa18-acde48001122
|
||||
known_false_positives: unknown
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
- CIS 13
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1489
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
name: Attempt To delete Services
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
@@ -65,18 +31,18 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), process_path=ucast(map_get(input_event, "process_path"), "string",
|
||||
null), parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line IS NOT NULL AND like(cmd_line, "%delete%") AND process_name = "sc.exe"
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=lower(ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%delete%\") AND process_name\
|
||||
\ = \"sc.exe\" \n| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+14
-47
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic will identify suspicious series of command-line to disable
|
||||
several services. This technique is seen where the adversary attempts to disable
|
||||
security app services or other malware services to complete the objective on the
|
||||
@@ -34,24 +12,12 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
Sysmon TA. Tune and filter known instances where renamed sc.exe may be used.
|
||||
id: afb31de4-d023-11eb-98d5-acde48001122
|
||||
known_false_positives: unknown
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 9
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1489
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
name: Attempt To Disable Services
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
- https://app.any.run/tasks/c0f98850-af65-4352-9746-fbebadee4f05/
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
@@ -66,19 +32,20 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
search: '| from read_ssa_enriched_events() | eval _datamodels=ucast(map_get(input_event,
|
||||
"_datamodels"), "collection<string>", []), body={} | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), process_path=ucast(map_get(input_event, "process_path"), "string",
|
||||
null), parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line IS NOT NULL AND like(cmd_line, "%disabled%") AND like(cmd_line, "%config%")
|
||||
AND process_name="sc.exe" | eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval _datamodels=ucast(map_get(input_event,\
|
||||
\ \"_datamodels\"), \"collection<string>\", []), body={} \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=lower(ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%disabled%\") AND like(cmd_line,\
|
||||
\ \"%config%\") AND process_name=\"sc.exe\" \n| eval start_time=timestamp, end_time=timestamp,\
|
||||
\ entities=mvappend(ucast(map_get(input_event, \"dest_user_id\"), \"string\", null),\
|
||||
\ ucast(map_get(input_event, \"dest_device_id\"), \"string\", null)), body=create_map([\"\
|
||||
event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\", process_name, \"\
|
||||
parent_process_name\", parent_process_name, \"process_path\", process_path]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+15
-52
@@ -1,55 +1,17 @@
|
||||
author: Jose Hernandez, Splunk
|
||||
datamodel: []
|
||||
date: 2020-6-04
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Monitor for execution of reg.exe with parameters specifying an export
|
||||
of keys that contain hashed credentials that attackers may try to crack offline.
|
||||
how_to_implement: You must be ingesting windows endpoint data that tracks process
|
||||
activity, including parent-child relationships from your endpoints.
|
||||
id: 14038953-e5f2-4daf-acff-5452062baf03
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 3
|
||||
- CIS 5
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- DE.CM
|
||||
name: Attempted Credential Dump From Registry via Reg exe
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/splunk/security_content/blob/55a17c65f9f56c2220000b62701765422b46125d/detections/attempted_credential_dump_from_registry_via_reg_exe.yml
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is dumping stored credentials from the registry sections
|
||||
SAM, Security, or System. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -85,20 +47,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)) | eval process_name=lower(ucast(map_get(input_event,
|
||||
"process_name"), "string", null)), cmd_line=ucast(map_get(input_event, "process"),
|
||||
"string", null), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null) | where process_name="cmd.exe"
|
||||
OR process_name="reg.exe" | where cmd_line != null AND match_regex(cmd_line, /(?i)save\s+/)=true
|
||||
AND ( match_regex(cmd_line, /(?i)HKLM\\Security/)=true OR match_regex(cmd_line,
|
||||
/(?i)HKLM\\SAM/)=true OR match_regex(cmd_line, /(?i)HKLM\\System/)=true OR match_regex(cmd_line,
|
||||
/(?i)HKEY_LOCAL_MACHINE\\Security/)=true OR match_regex(cmd_line, /(?i)HKEY_LOCAL_MACHINE\\SAM/)=true
|
||||
OR match_regex(cmd_line, /(?i)HKEY_LOCAL_MACHINE\\System/)=true ) | eval start_time
|
||||
= timestamp, end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id),
|
||||
body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name", process_name])
|
||||
| into write_ssa_detected_events(); '
|
||||
search: " \n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval process_name=lower(ucast(map_get(input_event,\
|
||||
\ \"process_name\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"\
|
||||
process\"), \"string\", null), dest_user_id=ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), dest_device_id=ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where process_name=\"cmd.exe\" OR process_name=\"reg.exe\" \n| where\
|
||||
\ cmd_line != null AND match_regex(cmd_line, /(?i)save\\s+/)=true AND ( match_regex(cmd_line,\
|
||||
\ /(?i)HKLM\\\\Security/)=true OR match_regex(cmd_line, /(?i)HKLM\\\\SAM/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)HKLM\\\\System/)=true OR match_regex(cmd_line, /(?i)HKEY_LOCAL_MACHINE\\\
|
||||
\\Security/)=true OR match_regex(cmd_line, /(?i)HKEY_LOCAL_MACHINE\\\\SAM/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)HKEY_LOCAL_MACHINE\\\\System/)=true ) \n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id),\
|
||||
\ body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\"\
|
||||
, process_name]) \n| into write_ssa_detected_events(); "
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
Vendored
+15
-53
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. FGdump is
|
||||
@@ -32,26 +11,10 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 312582f2-5e91-42c1-a275-cd67f31373c8
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of FGDump and CacheDump with s option
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is accessing stored credentials via FGDump or CacheDump
|
||||
tools. Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -87,22 +50,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), process_name=ucast(map_get(input_event,
|
||||
"process_name"), "string", null), process_path=ucast(map_get(input_event, "process_path"),
|
||||
"string", null), parent_process_name=ucast(map_get(input_event, "parent_process_name"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line != null AND process_name != null AND parent_process_name != null
|
||||
AND match_regex(parent_process_name, /(?i)System32\\services.exe/)=true AND match_regex(process_name,
|
||||
/(?i)cachedump\d{0,2}.exe/)=true AND match_regex(process_path, /(?i)\\Temp/)=true
|
||||
AND match_regex(cmd_line, /(?i)\-s/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND process_name != null AND parent_process_name\
|
||||
\ != null AND match_regex(parent_process_name, /(?i)System32\\\\services.exe/)=true\
|
||||
\ AND match_regex(process_name, /(?i)cachedump\\d{0,2}.exe/)=true AND match_regex(process_path,\
|
||||
\ /(?i)\\\\Temp/)=true AND match_regex(cmd_line, /(?i)\\-s/)=true\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
Vendored
+12
-51
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. FGdump is
|
||||
@@ -32,26 +11,10 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 3c40b0ef-a03f-460a-9484-e4b9117cbb38
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of FGDump and CacheDump with v option
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is accessing stored credentials via FGDump or CacheDump
|
||||
tools. Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -87,20 +50,18 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), process_name=ucast(map_get(input_event,
|
||||
"process_name"), "string", null), process_path=ucast(map_get(input_event, "process_path"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line != null AND process_name != null AND process_path != null AND match_regex(process_name,
|
||||
/(?i)cachedump\d{0,2}.exe/)=true AND match_regex(process_path, /(?i)\\Temp/)=true
|
||||
AND match_regex(cmd_line, /(?i)\-v/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND process_name != null AND process_path !=\
|
||||
\ null AND match_regex(process_name, /(?i)cachedump\\d{0,2}.exe/)=true AND match_regex(process_path,\
|
||||
\ /(?i)\\\\Temp/)=true AND match_regex(cmd_line, /(?i)\\-v/)=true\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
+8
-49
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. LaZagne is
|
||||
@@ -31,27 +10,10 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 341975fa-4ad0-4f01-9acc-df4f69742db7
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
- T1555
|
||||
nist:
|
||||
- PR.IP
|
||||
- PR.AC
|
||||
name: Credential Extraction indicative of Lazagne command line options
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Lazagne malware is extracting/decoding encoded credentials. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -87,17 +49,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND match_regex(cmd_line,
|
||||
/(?i)all\s+\-oA\s+\-output/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND match_regex(cmd_line, /(?i)all\\s+\\-oA\\\
|
||||
s+\\-output/)=true\n\n| eval start_time = timestamp, end_time = timestamp, entities\
|
||||
\ = mvappend( ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+17
-56
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. DSInternals
|
||||
@@ -30,28 +9,12 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 73e23834-c7ad-4860-bfd0-7d8ffe6527c2
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of use of DSInternals credential conversion
|
||||
modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals tool kit is converting stolen credential material to a form
|
||||
applicable to authentications. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -87,25 +50,23 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null), process_path=ucast(map_get(input_event,
|
||||
"process_path"), "string", null), cmd_line=ucast(map_get(input_event, "process"),
|
||||
"string", null), parent_process_name=ucast(map_get(input_event, "parent_process_name"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line != null AND ( match_regex(cmd_line, /(?i)ConvertFrom-ADManagedPasswordBlob/)=true
|
||||
OR match_regex(cmd_line, /(?i)ConvertFrom-GPPrefPassword/)=true OR match_regex(cmd_line,
|
||||
/(?i)ConvertFrom-UnicodePassword/)=true OR match_regex(cmd_line, /(?i)ConvertTo-GPPrefPassword/)=true
|
||||
OR match_regex(cmd_line, /(?i)ConvertTo-KerberosKey/)=true OR match_regex(cmd_line,
|
||||
/(?i)ConvertTo-LMHash/)=true OR match_regex(cmd_line, /(?i)ConvertTo-NTHash/)=true
|
||||
OR match_regex(cmd_line, /(?i)ConvertTo-OrgIdHash/)=true OR match_regex(cmd_line,
|
||||
/(?i)ConvertTo-UnicodePassword/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), process_name=ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), cmd_line=ucast(map_get(input_event, \"process\"), \"string\"\
|
||||
, null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)ConvertFrom-ADManagedPasswordBlob/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)ConvertFrom-GPPrefPassword/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)ConvertFrom-UnicodePassword/)=true OR match_regex(cmd_line, /(?i)ConvertTo-GPPrefPassword/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)ConvertTo-KerberosKey/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)ConvertTo-LMHash/)=true OR match_regex(cmd_line, /(?i)ConvertTo-NTHash/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)ConvertTo-OrgIdHash/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)ConvertTo-UnicodePassword/)=true )\n\n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\"\
|
||||
, process_name]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+19
-58
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. DSInternals
|
||||
@@ -30,27 +9,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 5d2172f0-8a7d-4ecd-aad9-2dcc95699e0d
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of use of DSInternals modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals tool kit is accessing sensitive credential material such
|
||||
as KDS root key, or accessing sensitive authentication infrastructure such as LsaPolicyInformation.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
@@ -87,27 +50,25 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null), process_path=ucast(map_get(input_event,
|
||||
"process_path"), "string", null), cmd_line=ucast(map_get(input_event, "process"),
|
||||
"string", null), parent_process_name=ucast(map_get(input_event, "parent_process_name"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-ADDBBackupKey/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ADDBDomainController/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-ADDBKdsRootKey/)=true OR match_regex(cmd_line, /(?i)Get-ADDBSchemaAttribute/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ADKeyCredential/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-ADReplAccount/)=true OR match_regex(cmd_line, /(?i)Get-ADReplBackupKey/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ADSIAccount/)=true OR match_regex(cmd_line, /(?i)Get-AzureADUserEx/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-BootKey/)=true OR match_regex(cmd_line, /(?i)Get-LsaBackupKey/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-LsaPolicyInformation/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-SamPasswordPolicy/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), process_name=ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), cmd_line=ucast(map_get(input_event, \"process\"), \"string\"\
|
||||
, null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-ADDBBackupKey/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-ADDBDomainController/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ADDBKdsRootKey/)=true OR match_regex(cmd_line, /(?i)Get-ADDBSchemaAttribute/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-ADKeyCredential/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ADReplAccount/)=true OR match_regex(cmd_line, /(?i)Get-ADReplBackupKey/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-ADSIAccount/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-AzureADUserEx/)=true OR match_regex(cmd_line, /(?i)Get-BootKey/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-LsaBackupKey/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-LsaPolicyInformation/)=true OR match_regex(cmd_line, /(?i)Get-SamPasswordPolicy/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line, \"process_name\", process_name]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+13
-53
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Mimikatz
|
||||
@@ -30,27 +9,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 966b635f-98e8-4aa4-9b49-47ed2cedcc85
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of use of Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 66
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is extracting/decoding encoded credentials from stores
|
||||
such as SAM or LSA dumps. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -86,22 +49,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)CRYPTO::Certificates/)=true OR match_regex(cmd_line, /(?i)CRYPTO::keys/)=true
|
||||
OR match_regex(cmd_line, /(?i)kerberos::list/)=true OR match_regex(cmd_line, /(?i)kerberos::tgt/)=true
|
||||
OR match_regex(cmd_line, /(?i)lsadump::sam/)=true OR match_regex(cmd_line, /(?i)lsadump::secrets/)=true
|
||||
OR match_regex(cmd_line, /(?i)lsadump::cache/)=true OR match_regex(cmd_line, /(?i)lsadump::lsa/)=true
|
||||
OR match_regex(cmd_line, /(?i)lsadump::trust/)=true OR match_regex(cmd_line, /(?i)lsadump::backupkeys/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)CRYPTO::Certificates/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)CRYPTO::keys/)=true OR match_regex(cmd_line, /(?i)kerberos::list/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)kerberos::tgt/)=true OR match_regex(cmd_line, /(?i)lsadump::sam/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)lsadump::secrets/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)lsadump::cache/)=true OR match_regex(cmd_line, /(?i)lsadump::lsa/)=true OR\
|
||||
\ match_regex(cmd_line, /(?i)lsadump::trust/)=true OR match_regex(cmd_line, /(?i)lsadump::backupkeys/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+14
-54
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. PowerSploit
|
||||
@@ -30,27 +9,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 5f1186a4-e681-446e-851c-dc9574ad28eb
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction indicative of use of PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is extracting encoded credentials or spoofing automated
|
||||
logings. Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -86,23 +49,20 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Get-ApplicationHost/)=true OR match_regex(cmd_line, /(?i)Get-CachedGPPPassword/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-GPPAutologon/)=true OR match_regex(cmd_line, /(?i)Get-GPPPassword/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-RegistryAutoLogon/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-SiteListPassword/)=true OR match_regex(cmd_line, /(?i)Get-SPNTicket/)=true
|
||||
OR match_regex(cmd_line, /(?i)Request-SPNTicket/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-VaultCredential/)=true OR match_regex(cmd_line, /(?i)Invoke-Kerberoast/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-ApplicationHost/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-CachedGPPPassword/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-GPPAutologon/)=true OR match_regex(cmd_line, /(?i)Get-GPPPassword/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-RegistryAutoLogon/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-SiteListPassword/)=true OR match_regex(cmd_line, /(?i)Get-SPNTicket/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Request-SPNTicket/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-VaultCredential/)=true OR match_regex(cmd_line, /(?i)Invoke-Kerberoast/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
Vendored
+14
-52
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Native Microsoft
|
||||
@@ -34,27 +13,11 @@ known_false_positives: Although unlikely, using debuggers this way may be indica
|
||||
of developers analyzing crash dumps of their code. Note, even for developers this
|
||||
is an unusual way of working on code - debuggers are mostly used to step through
|
||||
code, not analyze its crash dumps.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.IP
|
||||
- PR.AC
|
||||
name: Credential Extraction native Microsoft debuggers peek into the kernel
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://medium.com/@clermont1050/covid-19-cyber-infection-c615ead7c29
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is extracting/decoding encoded credentials via Microsoft's
|
||||
native debugging tools. Operation is performed at the device $dest_device_id$, by
|
||||
the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -90,21 +53,20 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), process_name=ucast(map_get(input_event,
|
||||
"process_name"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line != null AND parent_process_name != null AND process_name
|
||||
!= null AND ( match_regex(parent_process_name, /(?i)ntkd\.exe/)=true OR match_regex(parent_process_name,
|
||||
/(?i)livekd\.exe/)=true ) AND match_regex(process_name, /(?i)conhost\.exe/)=true
|
||||
AND match_regex(cmd_line, /(?i)0xffffffff/)=true AND match_regex(cmd_line, /(?i)\-ForceV1/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND parent_process_name != null AND process_name\
|
||||
\ != null AND ( match_regex(parent_process_name, /(?i)ntkd\\.exe/)=true OR match_regex(parent_process_name,\
|
||||
\ /(?i)livekd\\.exe/)=true ) AND match_regex(process_name, /(?i)conhost\\.exe/)=true\
|
||||
\ AND match_regex(cmd_line, /(?i)0xffffffff/)=true AND match_regex(cmd_line, /(?i)\\\
|
||||
-ForceV1/)=true\n\n| eval start_time = timestamp, end_time = timestamp, entities\
|
||||
\ = mvappend( ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line, \"process_name\", process_name, \"parent_process_name\"\
|
||||
, parent_process_name]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
Vendored
+11
-50
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. Native Microsoft
|
||||
@@ -34,26 +13,10 @@ known_false_positives: Although unlikely, using debuggers this way may be indica
|
||||
of developers analyzing crash dumps of their code. Note, even for developers this
|
||||
is an unusual way of working on code - debuggers are mostly used to step through
|
||||
code, not analyze its crash dumps.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Credential Extraction native Microsoft debuggers via z command line option
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is extracting/decoding encoded credentials via Microsoft's
|
||||
native debugging tools. Operation is performed at the device $dest_device_id$, by
|
||||
the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -89,19 +52,17 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), process_name=ucast(map_get(input_event,
|
||||
"process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line != null AND process_name != null AND ( match_regex(process_name,
|
||||
/^(?i)ntkd\.exe/)=true OR match_regex(process_name, /^(?i)kd\.exe/)=true ) AND match_regex(cmd_line,
|
||||
/(?i)\-z\s+/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND process_name != null AND ( match_regex(process_name,\
|
||||
\ /^(?i)ntkd\\.exe/)=true OR match_regex(process_name, /^(?i)kd\\.exe/)=true ) AND\
|
||||
\ match_regex(cmd_line, /(?i)\\-z\\s+/)=true\n\n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\"\
|
||||
, process_name]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+9
-48
@@ -1,27 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-18'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: Credential extraction is often an illegal recovery of credential material
|
||||
from secured authentication resources and repositories. This process may also involve
|
||||
decryption or other transformations of the stored credential material. PowerSploit
|
||||
@@ -31,27 +10,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: e4f126b5-e6bc-4a5c-b1a8-d07bc6c4a49f
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003
|
||||
nist:
|
||||
- PR.IP
|
||||
- PR.AC
|
||||
name: Credential Extraction via Get-ADDBAccount module present in PowerSploit and
|
||||
DSInternals
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is accessing stored credentials via Get-ADDBAccount
|
||||
module. Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -87,17 +50,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND match_regex(cmd_line,
|
||||
/(?i)Get-ADDBAccount/)=true AND match_regex(cmd_line, /(?i)\-dbpath[\s;:\.\|]+/)=true
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND match_regex(cmd_line, /(?i)Get-ADDBAccount/)=true\
|
||||
\ AND match_regex(cmd_line, /(?i)\\-dbpath[\\s;:\\.\\\n|]+/)=true\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+13
-46
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic will detect a suspicious net.exe/net1.exe command-line
|
||||
to delete a user on a system. This technique may be use by an administrator for
|
||||
legitimate purposes, however this behavior has been used in the wild to impair some
|
||||
@@ -37,23 +15,11 @@ how_to_implement: o successfully implement this search, you need to be ingesting
|
||||
id: 8776d79c-d26e-11eb-9a56-acde48001122
|
||||
known_false_positives: System administrators or scripts may delete user accounts via
|
||||
this technique. Filter as needed.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 4
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1489
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Delete A Net User
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
@@ -68,18 +34,19 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), process_path=ucast(map_get(input_event, "process_path"), "string",
|
||||
null), parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line IS NOT NULL AND like(cmd_line, "%/delete%") AND (process_name="net1.exe"
|
||||
OR process_name="net.exe") | eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=lower(ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%/delete%\") AND (process_name=\"\
|
||||
net1.exe\" OR process_name=\"net.exe\") \n| eval start_time=timestamp, end_time=timestamp,\
|
||||
\ entities=mvappend(ucast(map_get(input_event, \"dest_user_id\"), \"string\", null),\
|
||||
\ ucast(map_get(input_event, \"dest_device_id\"), \"string\", null)), body=create_map([\"\
|
||||
event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\", process_name, \"\
|
||||
parent_process_name\", parent_process_name, \"process_path\", process_path]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+13
-52
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-14'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic identifies a potential adversary that changes the security
|
||||
permission of a specific file or directory. This technique is commonly seen in APT
|
||||
tradecraft, ransomware or coinminer scripts. This behavior is meant to evade detection
|
||||
@@ -35,29 +13,11 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
id: b76eae28-cd25-11eb-9c92-acde48001122
|
||||
known_false_positives: network administrator may use this windows utility but this
|
||||
is not a common practice.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 14
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1222
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Deny Permission using Cacls Utility
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 35
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 35
|
||||
risk_message: A cacls process $process_name$ with commandline $cmd_line$ try to deny
|
||||
a permission of a file or directory in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -87,18 +47,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND match_regex(cmd_line, /(?i)deny/)=true
|
||||
AND (process_name="cacls.exe" OR process_name="xcacls.exe" OR process_name="icacls.exe")
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND match_regex(cmd_line, /(?i)deny/)=true\
|
||||
\ AND (process_name=\"cacls.exe\" OR process_name=\"xcacls.exe\" OR process_name=\"\
|
||||
icacls.exe\") \n| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+10
-47
@@ -1,27 +1,6 @@
|
||||
author: Jose Hernandez, Splunk
|
||||
datamodel: []
|
||||
date: '2020-09-15'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: This search detects the memory of lsass.exe being dumped for offline
|
||||
credential theft attack.
|
||||
how_to_implement: You must be ingesting endpoint data that tracks process activity,
|
||||
@@ -30,28 +9,11 @@ how_to_implement: You must be ingesting endpoint data that tracks process activi
|
||||
on the [attack_range](https://github.com/splunk/attack_range/blob/develop/ansible/roles/windows_common/tasks/windows-enable-4688-cmd-line-audit.yml).
|
||||
id: 76bb9e35-f314-4c3d-a385-83c72a13ce4e
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1003.003
|
||||
- T1003
|
||||
nist:
|
||||
- DE.CM
|
||||
name: Detect Dump LSASS Memory using comsvcs
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://2017.zeronights.org/wp-content/uploads/materials/ZN17_Kheirkhabarov_Hunting_for_Credentials_Dumping_in_Windows_Environment.pdf
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Malicious actor is dumping encoded credentials via Microsoft's native
|
||||
comsvc DLL. Operation is performed at the device $dest_device_id$, by the account
|
||||
$dest_user_id$ via command $cmd_line$
|
||||
@@ -87,15 +49,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events() | eval tenant=ucast(map_get(input_event,
|
||||
"_tenant"), "string", null), machine=ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), timestamp=parse_long(ucast(map_get(input_event, "_time"), "string",
|
||||
null)), process=lower(ucast(map_get(input_event, "process"), "string", null)), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where process_name LIKE "%rundll32.exe%" AND match_regex(process,
|
||||
/(?i)comsvcs.dll[,\s]+MiniDump/)=true | eval start_time = timestamp, end_time =
|
||||
timestamp, entities = mvappend(machine), body=create_map(["event_id", event_id,
|
||||
"process_name", process_name, "process", process]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval tenant=ucast(map_get(input_event,\
|
||||
\ \"_tenant\"), \"string\", null), machine=ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), timestamp=parse_long(ucast(map_get(input_event, \"_time\"\
|
||||
), \"string\", null)), process=lower(ucast(map_get(input_event, \"process\"), \"\
|
||||
string\", null)), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where process_name LIKE \"%rundll32.exe%\" AND match_regex(process,\
|
||||
\ /(?i)comsvcs.dll[,\\s]+MiniDump/)=true \n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend(machine), body=create_map([\"event_id\", event_id,\
|
||||
\ \"process_name\", process_name, \"process\", process]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+15
-53
@@ -1,27 +1,6 @@
|
||||
author: Xiao Lin, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Patrick Bareiss
|
||||
date: '2021-01-13'
|
||||
description: Example for a deployment for a specific Analytics Story
|
||||
id: 52f52a7c-078f-4413-84da-388b61ccac26
|
||||
name: Credential Dumping Story
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: Credential Dumping
|
||||
description: This search detects a potential kerberoasting attack via service principal
|
||||
name requests
|
||||
how_to_implement: The test data is converted from Windows Security Event logs generated
|
||||
@@ -29,28 +8,11 @@ how_to_implement: The test data is converted from Windows Security Event logs ge
|
||||
id: dabdd6d7-3e10-42be-8711-4e124f7a3850
|
||||
known_false_positives: Older systems that support kerberos RC4 by default NetApp may
|
||||
generate false positives
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1558.003
|
||||
- T1558
|
||||
nist:
|
||||
- DE.CM
|
||||
name: Detect Kerberoasting
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- Initial ESCU implementation by Jose Hernandez and Patrick Bareiss
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 14
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Kerberoasting malware is potentially applying stolen credentials. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -86,21 +48,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events() | eval _time=map_get(input_event, "_time"),
|
||||
EventCode=map_get(input_event, "event_code"), TicketOptions=map_get(input_event,
|
||||
"ticket_options"), TicketEncryptionType=map_get(input_event, "ticket_encryption_type"),
|
||||
ServiceName=map_get(input_event, "service_name"), ServiceID=map_get(input_event,
|
||||
"service_id"), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
event_id=ucast(map_get(input_event, "event_id"), "string", null) | where EventCode="4769"
|
||||
AND TicketOptions="0x40810000" AND TicketEncryptionType="0x17" | first_time_event
|
||||
input_columns=["EventCode","TicketOptions","TicketEncryptionType","ServiceName","ServiceID"]
|
||||
| where first_time_EventCode_TicketOptions_TicketEncryptionType_ServiceName_ServiceID
|
||||
| eval start_time=_time, end_time=_time, body=create_map(["event_id", event_id,
|
||||
"EventCode", EventCode, "ServiceName", ServiceName, "TicketOptions", TicketOptions,
|
||||
"TicketEncryptionType", TicketEncryptionType]), entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null))| select start_time, end_time, entities, body | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events() \n| eval _time=map_get(input_event,\
|
||||
\ \"_time\"), EventCode=map_get(input_event, \"event_code\"), TicketOptions=map_get(input_event,\
|
||||
\ \"ticket_options\"), TicketEncryptionType=map_get(input_event, \"ticket_encryption_type\"\
|
||||
), ServiceName=map_get(input_event, \"service_name\"), ServiceID=map_get(input_event,\
|
||||
\ \"service_id\"), dest_user_id=ucast(map_get(input_event, \"dest_user_id\"), \"\
|
||||
string\", null), dest_device_id=ucast(map_get(input_event, \"dest_device_id\"),\
|
||||
\ \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where EventCode=\"4769\" AND TicketOptions=\"0x40810000\" AND TicketEncryptionType=\"\
|
||||
0x17\" \n| first_time_event input_columns=[\"EventCode\",\"TicketOptions\",\"TicketEncryptionType\"\
|
||||
,\"ServiceName\",\"ServiceID\"] \n| where first_time_EventCode_TicketOptions_TicketEncryptionType_ServiceName_ServiceID\
|
||||
\ \n| eval start_time=_time, end_time=_time, body=create_map([\"event_id\", event_id,\
|
||||
\ \"EventCode\", EventCode, \"ServiceName\", ServiceName, \"TicketOptions\", TicketOptions,\
|
||||
\ \"TicketEncryptionType\", TicketEncryptionType]), entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null))\n| select start_time, end_time, entities, body \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Credential Dumping
|
||||
|
||||
+12
-58
@@ -1,28 +1,6 @@
|
||||
author: Xiao Lin, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This search looks for specific authentication events from the Windows
|
||||
Security Event logs to detect potential attempts using Pass-the-Hash technique.
|
||||
how_to_implement: The test data is converted from Windows Security Event logs generated
|
||||
@@ -30,32 +8,11 @@ how_to_implement: The test data is converted from Windows Security Event logs ge
|
||||
id: 7cd8b9fa-6b0c-424f-92a6-9c5287a72f5f
|
||||
known_false_positives: Legitimate logon activity by authorized NTLM systems may be
|
||||
detected by this search. Please investigate as appropriate.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 3
|
||||
- CIS 5
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1550
|
||||
- T1550.002
|
||||
nist:
|
||||
- PR.PT
|
||||
- PR.AT
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Detect Pass the Hash
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- Initial ESCU implementation by Bhavin Patel and Patrick Bareiss
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 16
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Potential use of the pass the hash/token attacks that spoof authentication.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -95,21 +52,18 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null))
|
||||
| eval signature_id=map_get(input_event, "signature_id"), authentication_type=map_get(input_event,
|
||||
"authentication_type"), authentication_method=map_get(input_event, "authentication_method"),
|
||||
origin_device_domain=map_get(input_event, "origin_device_domain"), dest_user_id=ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), dest_device_id=ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
|
||||
| where (authentication_type="3" AND authentication_method="NtLmSsp") OR (authentication_type="9"
|
||||
AND authentication_method="seclogo")
|
||||
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(dest_device_id,
|
||||
dest_user_id), body=create_map(["event_id", event_id, "authentication_type", authentication_type,
|
||||
"authentication_method", authentication_method]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval signature_id=map_get(input_event, \"signature_id\"\
|
||||
), authentication_type=map_get(input_event, \"authentication_type\"), authentication_method=map_get(input_event,\
|
||||
\ \"authentication_method\"), origin_device_domain=map_get(input_event, \"origin_device_domain\"\
|
||||
), dest_user_id=ucast(map_get(input_event, \"dest_user_id\"), \"string\", null),\
|
||||
\ dest_device_id=ucast(map_get(input_event, \"dest_device_id\"), \"string\", null),\
|
||||
\ event_id=ucast(map_get(input_event, \"event_id\"), \"string\", null)\n\n| where\
|
||||
\ (authentication_type=\"3\" AND authentication_method=\"NtLmSsp\") OR (authentication_type=\"\
|
||||
9\" AND authentication_method=\"seclogo\")\n\n| eval start_time=timestamp, end_time=timestamp,\
|
||||
\ entities=mvappend(dest_device_id, dest_user_id), body=create_map([\"event_id\"\
|
||||
, event_id, \"authentication_type\", authentication_type, \"authentication_method\"\
|
||||
, authentication_method]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Lateral Movement
|
||||
|
||||
@@ -1,28 +1,6 @@
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: 2020-7-13
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This search looks for executions of cmd.exe spawned by a process that
|
||||
is often abused by attackers and that does not typically launch cmd.exe. This is
|
||||
a SPL2 implementation of the rule `Detect Prohibited Applications Spawning cmd.exe`
|
||||
@@ -33,26 +11,10 @@ id: c10a18cb-fd80-4ffa-a844-25026e0a0c94
|
||||
known_false_positives: There are circumstances where an application may legitimately
|
||||
execute and interact with the Windows command-line interface. Investigate and modify
|
||||
the lookup file, as appropriate.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1059
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: Detect Prohibited Applications Spawning cmd exe
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 56
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Potential malicious landing to the console via unexpected programs that
|
||||
called cmd.exe. Operation is performed at the device $dest_device_id$, by the account
|
||||
$dest_user_id$ where parent process $parent_process$ spwaned $process_name$.
|
||||
@@ -91,24 +53,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null))
|
||||
| eval process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
parent_process=lower(ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null)), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string", null),
|
||||
dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null)
|
||||
|
||||
| where process_name="cmd.exe" | rex field=parent_process "(?<field0>[^\\\\]+)$"
|
||||
| where field0="winword.exe" OR field0="excel.exe" OR field0="outlook.exe" OR field0="powerpnt.exe"
|
||||
OR field0="visio.exe" OR field0="mspub.exe" OR field0="acrobat.exe" OR field0="acrord32.exe"
|
||||
OR field0="chrome.exe" OR field0="iexplore.exe" OR field0="opera.exe" OR field0="firefox.exe"
|
||||
OR field0="java.exe" OR field0="powershell.exe"
|
||||
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(dest_device_id,
|
||||
dest_user_id), body=create_map(["event_id", event_id, "process_name", process_name,
|
||||
"parent_process_name", parent_process]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval process_name=ucast(map_get(input_event,\
|
||||
\ \"process_name\"), \"string\", null), parent_process=lower(ucast(map_get(input_event,\
|
||||
\ \"parent_process_name\"), \"string\", null)), dest_user_id=ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), dest_device_id=ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null), event_id=ucast(map_get(input_event, \"\
|
||||
event_id\"), \"string\", null)\n\n| where process_name=\"cmd.exe\" \n| rex field=parent_process\
|
||||
\ \"(?<field0>[^\\\\\\\\]+)$\" \n| where field0=\"winword.exe\" OR field0=\"excel.exe\"\
|
||||
\ OR field0=\"outlook.exe\" OR field0=\"powerpnt.exe\" OR field0=\"visio.exe\" OR\
|
||||
\ field0=\"mspub.exe\" OR field0=\"acrobat.exe\" OR field0=\"acrord32.exe\" OR field0=\"\
|
||||
chrome.exe\" OR field0=\"iexplore.exe\" OR field0=\"opera.exe\" OR field0=\"firefox.exe\"\
|
||||
\ OR field0=\"java.exe\" OR field0=\"powershell.exe\"\n\n| eval start_time=timestamp,\
|
||||
\ end_time=timestamp, entities=mvappend(dest_device_id, dest_user_id), body=create_map([\"\
|
||||
event_id\", event_id, \"process_name\", process_name, \"parent_process_name\",\
|
||||
\ parent_process]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Suspicious Command-Line Executions
|
||||
|
||||
+13
-46
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic will identify a suspicious command-line that disables a
|
||||
user account using the `net.exe` utility native to Windows. This technique may used
|
||||
by the adversaries to interrupt availability of such users to do their malicious
|
||||
@@ -36,23 +14,11 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
id: ba858b08-d26c-11eb-af9b-acde48001122
|
||||
known_false_positives: network operator may use this approach to quickly disable an
|
||||
account but not a common practice.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 4
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1489
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Disable Net User Account
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
@@ -67,18 +33,19 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), process_path=ucast(map_get(input_event, "process_path"), "string",
|
||||
null), parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line IS NOT NULL AND like(cmd_line, "%/active:no%") AND (process_name="net1.exe"
|
||||
OR process_name="net.exe") | eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=lower(ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%/active:no%\") AND\
|
||||
\ (process_name=\"net1.exe\" OR process_name=\"net.exe\") \n| eval start_time=timestamp,\
|
||||
\ end_time=timestamp, entities=mvappend(ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\"\
|
||||
, process_name, \"parent_process_name\", parent_process_name, \"process_path\",\
|
||||
\ process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+20
-61
@@ -1,28 +1,6 @@
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: 2021-2-1
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This search looks for command-line arguments that use a `/c` parameter
|
||||
to execute a command that has not previously been seen. This is an implementation
|
||||
on SPL2 of the rule `First time seen command line argument` by @bpatel.
|
||||
@@ -33,32 +11,10 @@ known_false_positives: Legitimate programs can also use command-line arguments t
|
||||
execute. Please verify the command-line arguments to check what command/program
|
||||
is being executed. We recommend customizing the `first_time_seen_cmd_line_filter`
|
||||
macro to exclude legitimate parent_process_name
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 3
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Command and Control
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1059
|
||||
- T1117
|
||||
- T1202
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
- PR.IP
|
||||
name: First time seen command line argument
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 30
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 30
|
||||
risk_message: A cmd process $process_name$ with commandline $cmd_line$ try to execute
|
||||
command has not previously seen in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -92,23 +48,26 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)) | eval dest_user_id=ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), cmd_line_norm=lower(cmd_line),
|
||||
cmd_line_norm=replace(cmd_line_norm, /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/,
|
||||
"GUID"), cmd_line_norm=replace(cmd_line_norm, /(?<=\s)+\\[^:]*(?=\\.*\.\w{3}(\s|$)+)/,
|
||||
"\\PATH"), /* replaces " \\Something\\Something\\command.ext" => "PATH\\command.ext"
|
||||
*/ cmd_line_norm=replace(cmd_line_norm, /\w:\\[^:]*(?=\\.*\.\w{3}(\s|$)+)/, "\\PATH"),
|
||||
/* replaces "C:\\Something\\Something\\command.ext" => "PATH\\command.ext" */ cmd_line_norm=replace(cmd_line_norm,
|
||||
/\d+/, "N"), event_id=ucast(map_get(input_event, "event_id"), "string", null) |
|
||||
where process_name="cmd.exe" AND match_regex(ucast(cmd_line, "string", ""), /.*
|
||||
\/[cC] .*/)=true | select process_name, cmd_line, cmd_line_norm, timestamp, dest_device_id,
|
||||
dest_user_id | first_time_event input_columns=["cmd_line_norm"] | where first_time_cmd_line_norm
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend(dest_device_id,
|
||||
dest_user_id), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval dest_user_id=ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), dest_device_id=ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null), process_name=ucast(map_get(input_event,\
|
||||
\ \"process_name\"), \"string\", null), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), cmd_line_norm=lower(cmd_line), cmd_line_norm=replace(cmd_line_norm,\
|
||||
\ /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/, \"\
|
||||
GUID\"), cmd_line_norm=replace(cmd_line_norm, /(?<=\\s)+\\\\[^:]*(?=\\\\.*\\.\\\
|
||||
w{3}(\\s\n|$)+)/, \"\\\\PATH\"), /* replaces \" \\\\Something\\\\Something\\\\command.ext\"\
|
||||
\ => \"PATH\\\\command.ext\" */ cmd_line_norm=replace(cmd_line_norm, /\\w:\\\\[^:]*(?=\\\
|
||||
\\.*\\.\\w{3}(\\s\n|$)+)/, \"\\\\PATH\"), /* replaces \"C:\\\\Something\\\\Something\\\
|
||||
\\command.ext\" => \"PATH\\\\command.ext\" */ cmd_line_norm=replace(cmd_line_norm,\
|
||||
\ /\\d+/, \"N\"), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where process_name=\"cmd.exe\" AND match_regex(ucast(cmd_line, \"string\"\
|
||||
, \"\"), /.* \\/[cC] .*/)=true \n| select process_name, cmd_line, cmd_line_norm,\
|
||||
\ timestamp, dest_device_id, dest_user_id \n| first_time_event input_columns=[\"\
|
||||
cmd_line_norm\"] \n| where first_time_cmd_line_norm \n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id), body=create_map([\"\
|
||||
event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\", process_name]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
+13
-52
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-14'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic identifies potential adversaries that modify the security
|
||||
permission of a specific file or directory. This technique is commonly seen in APT
|
||||
tradecraft, ransomware and coinminer scripts to evade detections and restrict access
|
||||
@@ -35,29 +13,11 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
id: c6da561a-cd29-11eb-ae65-acde48001122
|
||||
known_false_positives: network administrator may use this windows utility but this
|
||||
is not a common practice.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 14
|
||||
- CIS 16
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1222
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Grant Permission Using Cacls Utility
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 35
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 35
|
||||
risk_message: A cacls process $process_name$ with commandline $cmd_line$ try to grant
|
||||
user a permission to a file or directory in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -87,18 +47,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND match_regex(cmd_line, /(?i)grant/)=true
|
||||
AND (process_name="cacls.exe" OR process_name="xcacls.exe" OR process_name="icacls.exe")
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND match_regex(cmd_line, /(?i)grant/)=true\
|
||||
\ AND (process_name=\"cacls.exe\" OR process_name=\"xcacls.exe\" OR process_name=\"\
|
||||
icacls.exe\") \n| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+11
-56
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that enable illegaly
|
||||
access user content, such as key logging, audio recording, screenshots, tapping
|
||||
into http and RDP sessions, etc.
|
||||
@@ -30,31 +8,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 01fc7d91-eb0c-478e-8633-e4fa4904463a
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1021
|
||||
- T1113
|
||||
- T1123
|
||||
- T1563
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Access To User Content via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 85
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is tapping into user content - microphone, camera,
|
||||
ongoing HTTP or RDP session. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -95,20 +53,17 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Get-HttpStatus/)=true OR match_regex(cmd_line, /(?i)Get-Keystrokes/)=true OR
|
||||
match_regex(cmd_line, /(?i)Get-MicrophoneAudio/)=true OR match_regex(cmd_line, /(?i)Get-NetRDPSession/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-TimedScreenshot/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-WebConfig/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-HttpStatus/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-Keystrokes/)=true OR match_regex(cmd_line, /(?i)Get-MicrophoneAudio/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetRDPSession/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-TimedScreenshot/)=true OR match_regex(cmd_line, /(?i)Get-WebConfig/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Malicious PowerShell
|
||||
|
||||
@@ -1,56 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that create accounts
|
||||
illegaly.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 20fba62a-fa5b-46cc-b39f-473fa248fee2
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1585
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Account Creation via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is creating illegal domain accounts. Operation is
|
||||
performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -87,17 +48,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)New-DomainUser/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)New-DomainUser/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
@@ -1,56 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that delete event
|
||||
logs.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 4ddb3b0d-f95f-4ae2-b4e8-663296453a7b
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1070
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Deletion of Logs via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 50
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is deleting event logs to cover tracks of malicious
|
||||
activity. Operation is performed at the device $dest_device_id$, by the account
|
||||
$dest_user_id$ via command $cmd_line$
|
||||
@@ -87,17 +48,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)event::drop/)=true OR match_regex(cmd_line, /(?i)event::clear/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)event::drop/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)event::clear/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n|\
|
||||
\ into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Log Manipulation
|
||||
|
||||
+9
-52
@@ -1,57 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of DSInternals modules that enable or disable
|
||||
accounts illegaly.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 3e0f9962-9989-445f-878c-939443326b63
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Enabling or Disabling of Accounts via DSInternals modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals malware is illegally enabling or disabling accounts. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -89,18 +49,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Disable-ADDBAccount/)=true OR match_regex(cmd_line, /(?i)Enable-ADDBAccount/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Disable-ADDBAccount/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Enable-ADDBAccount/)=true )\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
+10
-54
@@ -1,59 +1,18 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of DSInternals modules for illegal management
|
||||
of Active Directoty elements and policies.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: a587ca9f-c138-47b4-ba51-699f319b8cc5
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1098
|
||||
- T1207
|
||||
- T1484
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Management of Active Directory Elements and Policies via DSInternals
|
||||
modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals malware is controlling infrastructure by modifying Active
|
||||
Directory elements, domain controllers, and policies. Operation is performed at
|
||||
the device $dest_device_id$, by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -92,19 +51,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Remove-ADDBObject/)=true OR match_regex(cmd_line, /(?i)Set-ADDBDomainController/)=true
|
||||
OR match_regex(cmd_line, /(?i)Set-ADDBPrimaryGroup/)=true OR match_regex(cmd_line,
|
||||
/(?i)Set-LsaPolicyInformation/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Remove-ADDBObject/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Set-ADDBDomainController/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Set-ADDBPrimaryGroup/)=true OR match_regex(cmd_line, /(?i)Set-LsaPolicyInformation/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
+10
-55
@@ -1,59 +1,18 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that enable illegal
|
||||
management of computers and Active Directory elements.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 75760c11-7d48-4968-b828-013b299e8f6d
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1098
|
||||
- T1207
|
||||
- T1484
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Management of Computers and Active Directory Elements via PowerSploit
|
||||
modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is controlling infrastructure by modifying Active
|
||||
Directory elements or local Master Boot Records. Operation is performed at the device
|
||||
$dest_device_id$, by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -92,20 +51,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Set-DomainObject/)=true OR match_regex(cmd_line, /(?i)Set-ADObject/)=true OR
|
||||
match_regex(cmd_line, /(?i)Set-DomainObjectOwner/)=true OR match_regex(cmd_line,
|
||||
/(?i)Set-MasterBootRecord/)=true )
|
||||
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Set-DomainObject/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Set-ADObject/)=true OR match_regex(cmd_line, /(?i)Set-DomainObjectOwner/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Set-MasterBootRecord/)=true )\n\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
Vendored
+11
-54
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that illegaly
|
||||
elevate general privileges or ensure persistence, e.g., enable manipulation of registry,
|
||||
task scheduling, persistent WMI, access to OS objects under desired identities.
|
||||
@@ -30,30 +8,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 88c10ee9-fe72-4bce-b343-5b129044b991
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1053
|
||||
- T1134
|
||||
- T1548
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Privilege Elevation and Persistence via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is planting attack persistence elements, altering
|
||||
privileges and access controls. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -95,19 +54,17 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Add-DomainObjectAcl/)=true OR match_regex(cmd_line, /(?i)Add-ObjectAcl/)=true
|
||||
OR match_regex(cmd_line, /(?i)Enable-Privilege/)=true OR match_regex(cmd_line, /(?i)New-ElevatedPersistenceOption/)=true
|
||||
OR match_regex(cmd_line, /(?i)New-UserPersistenceOption/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Add-DomainObjectAcl/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Add-ObjectAcl/)=true OR match_regex(cmd_line, /(?i)Enable-Privilege/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)New-ElevatedPersistenceOption/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)New-UserPersistenceOption/)=true )\n\n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n|\
|
||||
\ into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Malicious PowerShell
|
||||
|
||||
@@ -1,57 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for illegal privilege
|
||||
elevation.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 2f873b1f-6352-4844-b7b9-b419f09a42c7
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1134
|
||||
- T1548
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Privilege Elevation via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is setting highest privileges to malicious entities.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -90,18 +50,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)privilege::debug/)=true OR match_regex(cmd_line, /(?i)token::elevate/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)privilege::debug/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)token::elevate/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n|\
|
||||
\ into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Privilege Escalation
|
||||
|
||||
+12
-55
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for illegal control
|
||||
over services and processes, including the authentication service.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: aaf3adf1-73e1-4477-b4ee-3771898964f1
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1055
|
||||
- T1106
|
||||
- T1569
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Service and Process Control via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is controlling computer's processess and services.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -91,20 +50,18 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)process::start/)=true OR match_regex(cmd_line, /(?i)service::\+/)=true OR match_regex(cmd_line,
|
||||
/(?i)service::\-/)=true OR match_regex(cmd_line, /(?i)service::start/)=true OR match_regex(cmd_line,
|
||||
/(?i)service::stop/)=true OR match_regex(cmd_line, /(?i)service::suspend/)=true
|
||||
OR match_regex(cmd_line, /(?i)misc::memssp/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)process::start/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)service::\\+/)=true OR match_regex(cmd_line, /(?i)service::\\\
|
||||
-/)=true OR match_regex(cmd_line, /(?i)service::start/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)service::stop/)=true OR match_regex(cmd_line, /(?i)service::suspend/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)misc::memssp/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n|\
|
||||
\ into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Service Abuse
|
||||
|
||||
+17
-62
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-09'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that enable illegal
|
||||
control of services and processes, such as installing or spoofing of malicious services,
|
||||
injecting malicious code in DLLs and EXEs, invoking shell code and WMI commands,
|
||||
@@ -31,30 +9,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 0e910e5b-309d-4bc3-8af2-0030c02aa353
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1055
|
||||
- T1106
|
||||
- T1569
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Illegal Service and Process Control via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is controlling computer's processess and services.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -94,27 +53,23 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Install-SSP/)=true OR match_regex(cmd_line, /(?i)Set-CriticalProcess/)=true
|
||||
OR match_regex(cmd_line, /(?i)Install-ServiceBinary/)=true OR match_regex(cmd_line,
|
||||
/(?i)Restore-ServiceBinary/)=true OR match_regex(cmd_line, /(?i)Write-ServiceBinary/)=true
|
||||
OR match_regex(cmd_line, /(?i)Set-ServiceBinaryPath/)=true OR match_regex(cmd_line,
|
||||
/(?i)Invoke-ReflectivePEInjection/)=true OR match_regex(cmd_line, /(?i)Invoke-DllInjection/)=true
|
||||
OR match_regex(cmd_line, /(?i)Invoke-ServiceAbuse/)=true OR match_regex(cmd_line,
|
||||
/(?i)Invoke-Shellcode/)=true OR match_regex(cmd_line, /(?i)Invoke-WScriptUACBypass/)=true
|
||||
OR match_regex(cmd_line, /(?i)Invoke-WmiCommand/)=true OR match_regex(cmd_line,
|
||||
/(?i)Write-HijackDll/)=true OR match_regex(cmd_line, /(?i)Add-ServiceDacl/)=true
|
||||
)
|
||||
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Install-SSP/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Set-CriticalProcess/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Install-ServiceBinary/)=true OR match_regex(cmd_line, /(?i)Restore-ServiceBinary/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Write-ServiceBinary/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Set-ServiceBinaryPath/)=true OR match_regex(cmd_line, /(?i)Invoke-ReflectivePEInjection/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-DllInjection/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Invoke-ServiceAbuse/)=true OR match_regex(cmd_line, /(?i)Invoke-Shellcode/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-WScriptUACBypass/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Invoke-WmiCommand/)=true OR match_regex(cmd_line, /(?i)Write-HijackDll/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Add-ServiceDacl/)=true )\n\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Service Abuse
|
||||
|
||||
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-15'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This analytic identifies suspicious modification of ACL permission to
|
||||
a files or folder to make it available to everyone or to a specific user. This technique
|
||||
may be used by the adversary to evade ACLs or protected files access. This changes
|
||||
@@ -37,23 +15,11 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
id: 9ae9a48a-cdbe-11eb-875a-acde48001122
|
||||
known_false_positives: network administrator may use this windows utility. filter
|
||||
is needed.
|
||||
mappings:
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1222
|
||||
name: Modify ACLs Permission Of Files Or Folders
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://thedfirreport.com/2020/04/20/sqlserver-or-the-miner-in-the-basement/
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 35
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 35
|
||||
risk_message: A cacls process $process_name$ with commandline $cmd_line$ try to modify
|
||||
a permission of a file or directory in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -77,19 +43,20 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND like(cmd_line, "%/G%") AND (match_regex(cmd_line,
|
||||
/(?i)everyone:/)=true OR match_regex(cmd_line, /(?i)SYSTEM:/)=true) AND (process_name="cacls.exe"
|
||||
OR process_name="xcacls.exe" OR process_name="icacls.exe") | eval start_time=timestamp,
|
||||
end_time=timestamp, entities=mvappend(ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null), ucast(map_get(input_event, "dest_device_id"), "string", null)),
|
||||
body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name", process_name,
|
||||
"parent_process_name", parent_process_name, "process_path", process_path]) | into
|
||||
write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%/G%\") AND (match_regex(cmd_line,\
|
||||
\ /(?i)everyone:/)=true OR match_regex(cmd_line, /(?i)SYSTEM:/)=true) AND (process_name=\"\
|
||||
cacls.exe\" OR process_name=\"xcacls.exe\" OR process_name=\"icacls.exe\") \n| eval\
|
||||
\ start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- XMRig
|
||||
|
||||
+39
-73
@@ -1,28 +1,6 @@
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: '2020-08-25'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: Attacker activity may compromise executing several LOLBAS applications
|
||||
in conjunction to accomplish their objectives. We are looking for more than usual
|
||||
LOLBAS applications over a window of time, by building profiles per machine.
|
||||
@@ -33,28 +11,11 @@ known_false_positives: 'Some administrative tasks may involve multiple use of LO
|
||||
beginning when it hasn''t collected yet enough data to construct the baseline.
|
||||
|
||||
'
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1059
|
||||
- T1053
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: More than usual number of LOLBAS applications in short time period
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/LOLBAS-Project/LOLBAS/tree/master/yml/OSBinaries
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 25
|
||||
- threat_object_field: process_name
|
||||
threat_object_type: processname
|
||||
risk_message: A system process $process_name$ with commandline $cmd_line$ spawn iin
|
||||
short period of time in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -84,40 +45,45 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: ' | from read_ssa_enriched_events() | eval device=ucast(map_get(input_event,
|
||||
"dest_device_id"), "string", null), process_name=lower(ucast(map_get(input_event,
|
||||
"process_name"), "string", null)), timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)) | where process_name=="regsvcs.exe" OR process_name=="ftp.exe"
|
||||
OR process_name=="dfsvc.exe" OR process_name=="rasautou.exe" OR process_name=="schtasks.exe"
|
||||
OR process_name=="xwizard.exe" OR process_name=="findstr.exe" OR process_name=="esentutl.exe"
|
||||
OR process_name=="cscript.exe" OR process_name=="reg.exe" OR process_name=="csc.exe"
|
||||
OR process_name=="atbroker.exe" OR process_name=="print.exe" OR process_name=="pcwrun.exe"
|
||||
OR process_name=="vbc.exe" OR process_name=="rpcping.exe" OR process_name=="wsreset.exe"
|
||||
OR process_name=="ilasm.exe" OR process_name=="certutil.exe" OR process_name=="replace.exe"
|
||||
OR process_name=="mshta.exe" OR process_name=="bitsadmin.exe" OR process_name=="wscript.exe"
|
||||
OR process_name=="ieexec.exe" OR process_name=="cmd.exe" OR process_name=="microsoft.workflow.compiler.exe"
|
||||
OR process_name=="runscripthelper.exe" OR process_name=="makecab.exe" OR process_name=="forfiles.exe"
|
||||
OR process_name=="desktopimgdownldr.exe" OR process_name=="control.exe" OR process_name=="msbuild.exe"
|
||||
OR process_name=="register-cimprovider.exe" OR process_name=="tttracer.exe" OR process_name=="ie4uinit.exe"
|
||||
OR process_name=="sc.exe" OR process_name=="bash.exe" OR process_name=="hh.exe"
|
||||
OR process_name=="cmstp.exe" OR process_name=="mmc.exe" OR process_name=="jsc.exe"
|
||||
OR process_name=="scriptrunner.exe" OR process_name=="odbcconf.exe" OR process_name=="extexport.exe"
|
||||
OR process_name=="msdt.exe" OR process_name=="diskshadow.exe" OR process_name=="extrac32.exe"
|
||||
OR process_name=="eventvwr.exe" OR process_name=="mavinject.exe" OR process_name=="regasm.exe"
|
||||
OR process_name=="gpscript.exe" OR process_name=="rundll32.exe" OR process_name=="regsvr32.exe"
|
||||
OR process_name=="regedit.exe" OR process_name=="msiexec.exe" OR process_name=="gfxdownloadwrapper.exe"
|
||||
OR process_name=="presentationhost.exe" OR process_name=="regini.exe" OR process_name=="wmic.exe"
|
||||
OR process_name=="runonce.exe" OR process_name=="syncappvpublishingserver.exe" OR
|
||||
process_name=="verclsid.exe" OR process_name=="psr.exe" OR process_name=="infdefaultinstall.exe"
|
||||
OR process_name=="explorer.exe" OR process_name=="expand.exe" OR process_name=="installutil.exe"
|
||||
OR process_name=="netsh.exe" OR process_name=="wab.exe" OR process_name=="dnscmd.exe"
|
||||
OR process_name=="at.exe" OR process_name=="pcalua.exe" OR process_name=="cmdkey.exe"
|
||||
OR process_name=="msconfig.exe" | stats count(process_name) as lolbas_counter by
|
||||
device,span(timestamp, 300s) | eval lolbas_counter=lolbas_counter*1.0 | rename window_end
|
||||
as timestamp | adaptive_threshold algorithm="quantile" value="lolbas_counter" entity="device"
|
||||
window=2419200000L | where label AND quantile>0.99 | eval start_time = window_start,
|
||||
end_time = timestamp, entities = mvappend(device), body=create_map(["lolbas_counter",
|
||||
lolbas_counter, "quantile", quantile, "device", device]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events() \n| eval device=ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null), process_name=lower(ucast(map_get(input_event,\
|
||||
\ \"process_name\"), \"string\", null)), timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| where process_name==\"regsvcs.exe\" OR process_name==\"\
|
||||
ftp.exe\" OR process_name==\"dfsvc.exe\" OR process_name==\"rasautou.exe\" OR process_name==\"\
|
||||
schtasks.exe\" OR process_name==\"xwizard.exe\" OR process_name==\"findstr.exe\"\
|
||||
\ OR process_name==\"esentutl.exe\" OR process_name==\"cscript.exe\" OR process_name==\"\
|
||||
reg.exe\" OR process_name==\"csc.exe\" OR process_name==\"atbroker.exe\" OR process_name==\"\
|
||||
print.exe\" OR process_name==\"pcwrun.exe\" OR process_name==\"vbc.exe\" OR process_name==\"\
|
||||
rpcping.exe\" OR process_name==\"wsreset.exe\" OR process_name==\"ilasm.exe\" OR\
|
||||
\ process_name==\"certutil.exe\" OR process_name==\"replace.exe\" OR process_name==\"\
|
||||
mshta.exe\" OR process_name==\"bitsadmin.exe\" OR process_name==\"wscript.exe\"\
|
||||
\ OR process_name==\"ieexec.exe\" OR process_name==\"cmd.exe\" OR process_name==\"\
|
||||
microsoft.workflow.compiler.exe\" OR process_name==\"runscripthelper.exe\" OR process_name==\"\
|
||||
makecab.exe\" OR process_name==\"forfiles.exe\" OR process_name==\"desktopimgdownldr.exe\"\
|
||||
\ OR process_name==\"control.exe\" OR process_name==\"msbuild.exe\" OR process_name==\"\
|
||||
register-cimprovider.exe\" OR process_name==\"tttracer.exe\" OR process_name==\"\
|
||||
ie4uinit.exe\" OR process_name==\"sc.exe\" OR process_name==\"bash.exe\" OR process_name==\"\
|
||||
hh.exe\" OR process_name==\"cmstp.exe\" OR process_name==\"mmc.exe\" OR process_name==\"\
|
||||
jsc.exe\" OR process_name==\"scriptrunner.exe\" OR process_name==\"odbcconf.exe\"\
|
||||
\ OR process_name==\"extexport.exe\" OR process_name==\"msdt.exe\" OR process_name==\"\
|
||||
diskshadow.exe\" OR process_name==\"extrac32.exe\" OR process_name==\"eventvwr.exe\"\
|
||||
\ OR process_name==\"mavinject.exe\" OR process_name==\"regasm.exe\" OR process_name==\"\
|
||||
gpscript.exe\" OR process_name==\"rundll32.exe\" OR process_name==\"regsvr32.exe\"\
|
||||
\ OR process_name==\"regedit.exe\" OR process_name==\"msiexec.exe\" OR process_name==\"\
|
||||
gfxdownloadwrapper.exe\" OR process_name==\"presentationhost.exe\" OR process_name==\"\
|
||||
regini.exe\" OR process_name==\"wmic.exe\" OR process_name==\"runonce.exe\" OR process_name==\"\
|
||||
syncappvpublishingserver.exe\" OR process_name==\"verclsid.exe\" OR process_name==\"\
|
||||
psr.exe\" OR process_name==\"infdefaultinstall.exe\" OR process_name==\"explorer.exe\"\
|
||||
\ OR process_name==\"expand.exe\" OR process_name==\"installutil.exe\" OR process_name==\"\
|
||||
netsh.exe\" OR process_name==\"wab.exe\" OR process_name==\"dnscmd.exe\" OR process_name==\"\
|
||||
at.exe\" OR process_name==\"pcalua.exe\" OR process_name==\"cmdkey.exe\" OR process_name==\"\
|
||||
msconfig.exe\" \n| stats count(process_name) as lolbas_counter by device,span(timestamp,\
|
||||
\ 300s) \n| eval lolbas_counter=lolbas_counter*1.0 \n| rename window_end as timestamp\
|
||||
\ \n| adaptive_threshold algorithm=\"quantile\" value=\"lolbas_counter\" entity=\"\
|
||||
device\" window=2419200000L \n| where label AND quantile>0.99 \n| eval start_time\
|
||||
\ = window_start, end_time = timestamp, entities = mvappend(device), body=create_map([\"\
|
||||
lolbas_counter\", lolbas_counter, \"quantile\", quantile, \"device\", device]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
+25
-53
@@ -1,28 +1,6 @@
|
||||
author: Xiao Lin, Splunk
|
||||
datamodel: []
|
||||
date: '2020-08-25'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: Malicious mails can conduct phishing that induces readers to open attachment,
|
||||
click links or trigger third party service. This detect uses Natural Language Processing
|
||||
(NLP) approach to analyze an email message's content (Sender, Subject and Body)
|
||||
@@ -42,21 +20,10 @@ id: 4b237388-dfa1-41a6-91d4-4de2d598376f
|
||||
known_false_positives: Because of imbalance of anomaly data in training, the model
|
||||
will less likely report false positive. Instead, the model is more prone to false
|
||||
negative. Current best recall score is ~85%
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1566
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: Phishing Email Detection by Machine Learning Method - SSA
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
cis20:
|
||||
- CIS 8
|
||||
@@ -67,26 +34,31 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
search: '| from read_ssa_enriched_events() | eval eventLine=concat(ucast(map_get(input_event,
|
||||
"From"), "string", " "), " ", ucast(map_get(input_event, "Subject"), "string", "
|
||||
"), " ", ucast(map_get(input_event, "Content"), "string", " "), " "),
|
||||
_time=map_get(input_event, "_time") | where eventLine IS NOT NULL | eval mapC={"
|
||||
": 32, "!": 33, "\"": 34, "#": 35, "$": 36, "%": 37, "&": 38, "`": 39, "(": 40,
|
||||
")": 41, "*": 42, "+": 43, ",": 44, "-": 45, ".": 46, "/": 47, "0": 48, "1": 49,
|
||||
"2": 50, "3": 51, "4": 52, "5": 53, "6": 54, "7": 55, "8": 56, "9": 57, ":": 58,
|
||||
";": 59, "<": 60, "=": 61, ">": 62, "?": 63, "@": 64, "A": 65, "B": 66, "C": 67,
|
||||
"D": 68, "E": 69, "F": 70, "G": 71, "H": 72, "I": 73, "J": 74, "K": 75, "L": 76,
|
||||
"M": 77, "N": 78, "O": 79, "P": 80, "Q": 81, "R": 82, "S": 83, "T": 84, "U": 85,
|
||||
"V": 86, "W": 87, "X": 88, "Y": 89, "Z": 90, "[": 91, "\\": 92, "]": 93, "^": 94,
|
||||
"_": 95, "`": 96, "a": 97, "b": 98, "c": 99, "d": 100, "e": 101, "f": 102, "g":
|
||||
103, "h": 104, "i": 105, "j": 106, "k": 107, "l": 108, "m": 109, "n": 110, "o":
|
||||
111, "p": 112, "q": 113, "r": 114, "s": 115, "t": 116, "u": 117, "v": 118, "w":
|
||||
119, "x": 120, "y": 121, "z": 122, "{": 123, "|": 124, "}": 125, "~": 126}, ml_in
|
||||
= for_each(iterator(mvrange(1,129), "i"), cast(map_get(mapC, substr(eventLine, i,
|
||||
1)), "float") ) | apply_model connection_id="YOUR_S3_ONNX_CONNECTOR_ID" name="phishing_email_v8"
|
||||
path="s3://smle-experiments/models/phishing_email" | eval probability = mvindex(ml_out,
|
||||
0) | where probability > 0.5 | eval start_time=_time, end_time=_time, entities="TBD",
|
||||
body="TBD" | select probability, body, entities, start_time, end_time | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval eventLine=concat(ucast(map_get(input_event,\
|
||||
\ \"From\"), \"string\", \" \"), \" \", ucast(map_get(input_event, \"Subject\"),\
|
||||
\ \"string\", \" \"), \" \", ucast(map_get(input_event, \"Content\"), \"string\"\
|
||||
, \" \"), \" \
|
||||
\ \"), _time=map_get(input_event,\
|
||||
\ \"_time\") \n| where eventLine IS NOT NULL \n| eval mapC={\" \": 32, \"!\": 33,\
|
||||
\ \"\\\"\": 34, \"#\": 35, \"$\": 36, \"%\": 37, \"&\": 38, \"`\": 39, \"(\": 40,\
|
||||
\ \")\": 41, \"*\": 42, \"+\": 43, \",\": 44, \"-\": 45, \".\": 46, \"/\": 47, \"\
|
||||
0\": 48, \"1\": 49, \"2\": 50, \"3\": 51, \"4\": 52, \"5\": 53, \"6\": 54, \"7\"\
|
||||
: 55, \"8\": 56, \"9\": 57, \":\": 58, \";\": 59, \"<\": 60, \"=\": 61, \">\": 62,\
|
||||
\ \"?\": 63, \"@\": 64, \"A\": 65, \"B\": 66, \"C\": 67, \"D\": 68, \"E\": 69, \"\
|
||||
F\": 70, \"G\": 71, \"H\": 72, \"I\": 73, \"J\": 74, \"K\": 75, \"L\": 76, \"M\"\
|
||||
: 77, \"N\": 78, \"O\": 79, \"P\": 80, \"Q\": 81, \"R\": 82, \"S\": 83, \"T\": 84,\
|
||||
\ \"U\": 85, \"V\": 86, \"W\": 87, \"X\": 88, \"Y\": 89, \"Z\": 90, \"[\": 91, \"\
|
||||
\\\\\": 92, \"]\": 93, \"^\": 94, \"_\": 95, \"`\": 96, \"a\": 97, \"b\": 98, \"\
|
||||
c\": 99, \"d\": 100, \"e\": 101, \"f\": 102, \"g\": 103, \"h\": 104, \"i\": 105,\
|
||||
\ \"j\": 106, \"k\": 107, \"l\": 108, \"m\": 109, \"n\": 110, \"o\": 111, \"p\"\
|
||||
: 112, \"q\": 113, \"r\": 114, \"s\": 115, \"t\": 116, \"u\": 117, \"v\": 118, \"\
|
||||
w\": 119, \"x\": 120, \"y\": 121, \"z\": 122, \"{\": 123, \"\n|\": 124, \"}\": 125,\
|
||||
\ \"~\": 126}, ml_in = for_each(iterator(mvrange(1,129), \"i\"), cast(map_get(mapC,\
|
||||
\ substr(eventLine, i, 1)), \"float\") ) \n| apply_model connection_id=\"YOUR_S3_ONNX_CONNECTOR_ID\"\
|
||||
\ name=\"phishing_email_v8\" path=\"s3://smle-experiments/models/phishing_email\"\
|
||||
\ \n| eval probability = mvindex(ml_out, 0) \n| where probability > 0.5 \n| eval\
|
||||
\ start_time=_time, end_time=_time, entities=\"TBD\", body=\"TBD\" \n| select probability,\
|
||||
\ body, entities, start_time, end_time \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
cis20:
|
||||
- CIS 8
|
||||
|
||||
Vendored
+21
-65
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2021-09-01'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies potential Pass the Token or Pass the Hash credential
|
||||
exploits. We detect the main side effect of these attacks, which is a transition
|
||||
from the dominant Kerberos logins to rare NTLM logins for a given user, as reported
|
||||
@@ -32,26 +10,11 @@ how_to_implement: You must be ingesting Windows Security logs from endpoint devi
|
||||
id: 82e76b80-5cdb-4899-9b43-85dbe777b36d
|
||||
known_false_positives: Environments in which NTLM is used extremely rarely and for
|
||||
benign purposes (such as a rare use of SMB shares).
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Lateral Movement
|
||||
mitre_attack:
|
||||
- T1550
|
||||
- T1550.002
|
||||
nist:
|
||||
- PR.PT
|
||||
- PR.AT
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Potential Pass the Token or Hash Observed at the Destination Device
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://attack.mitre.org/techniques/T1550/002/
|
||||
risk: []
|
||||
risk_message: Potential lateral movement and credential stealing via Pass the Token
|
||||
or Pass the Hash techniques. Operation is performed via credentials of the account
|
||||
$dest_user_id$ and observed by the destination device $dest_device_id$
|
||||
@@ -87,34 +50,27 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Other
|
||||
type: Hostname
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp= parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), dest_user= lower(ucast(map_get(input_event, "dest_user_primary_artifact"),
|
||||
"string", null)), dest_user_id= lower(ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null)), dest_device_id= lower(ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), signature_id= lower(ucast(map_get(input_event, "signature_id"),
|
||||
"string", null)), authentication_method= lower(ucast(map_get(input_event, "authentication_method"),
|
||||
"string", null))
|
||||
|
||||
| where signature_id = "4624" AND (authentication_method="ntlmssp" OR authentication_method="kerberos")
|
||||
AND dest_user_id != null AND dest_device_id != null
|
||||
|
||||
| eval isKerberos=if(authentication_method == "kerberos", 1, 0), isNtlm=if(authentication_method
|
||||
== "ntlmssp", 1, 0), timeNTLM=if(isNtlm > 0, timestamp, null)
|
||||
|
||||
| stats sum(isKerberos) as totalKerberos, sum(isNtlm) as totalNtlm, min(timestamp) as
|
||||
startTime, min(timeNTLM) as startNTLMTime, max(timestamp) as endTime, max(timeNTLM) as
|
||||
endNTLMTime by dest_user_id, dest_user, dest_device_id, span(timestamp, 86400s)
|
||||
|
||||
| where NOT dest_user="-" AND totalKerberos > 0 AND totalNtlm > 0 AND endTime -
|
||||
startTime > 1800000 AND (totalKerberos > 10 * totalNtlm AND totalKerberos > 50) AND
|
||||
(endTime - startTime) > 3 * (endNTLMTime - startNTLMTime)
|
||||
|
||||
| eval start_time=ucast(startNTLMTime, "long", null), end_time=ucast(endNTLMTime,
|
||||
"long", null), entities=mvappend(dest_user_id, dest_device_id), body=create_map(["total_kerberos",
|
||||
totalKerberos, "total_ntlm", totalNtlm, "analysis_start_time", startTime, "analysis_end_time",
|
||||
endTime, "pth_start_time", startNTLMTime, "pth_end_time", endNTLMTime])
|
||||
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp= parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), dest_user= lower(ucast(map_get(input_event,\
|
||||
\ \"dest_user_primary_artifact\"), \"string\", null)), dest_user_id= lower(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null)), dest_device_id= lower(ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), signature_id= lower(ucast(map_get(input_event,\
|
||||
\ \"signature_id\"), \"string\", null)), authentication_method= lower(ucast(map_get(input_event,\
|
||||
\ \"authentication_method\"), \"string\", null))\n\n| where signature_id = \"4624\"\
|
||||
\ AND (authentication_method=\"ntlmssp\" OR authentication_method=\"kerberos\")\
|
||||
\ AND dest_user_id != null AND dest_device_id != null\n\n| eval isKerberos=if(authentication_method\
|
||||
\ == \"kerberos\", 1, 0), isNtlm=if(authentication_method == \"ntlmssp\", 1, 0),\
|
||||
\ timeNTLM=if(isNtlm > 0, timestamp, null)\n\n| stats sum(isKerberos) as totalKerberos,\
|
||||
\ sum(isNtlm) as totalNtlm, min(timestamp) as startTime, min(timeNTLM) as\
|
||||
\ startNTLMTime, max(timestamp) as endTime, max(timeNTLM) as endNTLMTime by dest_user_id,\
|
||||
\ dest_user, dest_device_id, span(timestamp, 86400s)\n\n| where NOT dest_user=\"\
|
||||
-\" AND totalKerberos > 0 AND totalNtlm > 0 AND endTime - startTime > 1800000 AND\
|
||||
\ (totalKerberos > 10 * totalNtlm AND totalKerberos > 50) AND (endTime - startTime)\
|
||||
\ > 3 * (endNTLMTime - startNTLMTime)\n\n| eval start_time=ucast(startNTLMTime,\
|
||||
\ \"long\", null), end_time=ucast(endNTLMTime, \"long\", null), entities=mvappend(dest_user_id,\
|
||||
\ dest_device_id), body=create_map([\"total_kerberos\", totalKerberos, \"total_ntlm\"\
|
||||
, totalNtlm, \"analysis_start_time\", startTime, \"analysis_end_time\", endTime,\
|
||||
\ \"pth_start_time\", startNTLMTime, \"pth_end_time\", endNTLMTime])\n\n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Lateral Movement
|
||||
|
||||
Vendored
+21
-65
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2021-09-01'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies potential Pass the Token or Pass the Hash credential
|
||||
exploits. We detect the main side effect of these attacks, which is a transition
|
||||
from the dominant Kerberos logins to rare NTLM logins for a given user, as reported
|
||||
@@ -34,26 +12,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
id: 1058ba3e-a698-49bc-a1e5-7cedece4ea87
|
||||
known_false_positives: Environments in which NTLM is used extremely rarely and for
|
||||
benign purposes (such as a rare use of SMB shares).
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Lateral Movement
|
||||
mitre_attack:
|
||||
- T1550
|
||||
- T1550.002
|
||||
nist:
|
||||
- PR.PT
|
||||
- PR.AT
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Potential Pass the Token or Hash Observed by an Event Collecting Device
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://attack.mitre.org/techniques/T1550/002/
|
||||
risk: []
|
||||
risk_message: Potential lateral movement and credential stealing via Pass the Token
|
||||
or Pass the Hash techniques. Operation is performed via credentials of the account
|
||||
$dest_user_id$ and observed by the logging device $origin_device_id$
|
||||
@@ -89,34 +52,27 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Other
|
||||
type: Hostname
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp= parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), dest_user= lower(ucast(map_get(input_event, "dest_user_primary_artifact"),
|
||||
"string", null)), dest_user_id= lower(ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null)), origin_device_id= lower(ucast(map_get(input_event, "origin_device_id"),
|
||||
"string", null)), signature_id= lower(ucast(map_get(input_event, "signature_id"),
|
||||
"string", null)), authentication_method= lower(ucast(map_get(input_event, "authentication_method"),
|
||||
"string", null))
|
||||
|
||||
| where signature_id = "4624" AND (authentication_method="ntlmssp" OR authentication_method="kerberos")
|
||||
AND dest_user_id != null AND origin_device_id != null
|
||||
|
||||
| eval isKerberos=if(authentication_method == "kerberos", 1, 0), isNtlm=if(authentication_method
|
||||
== "ntlmssp", 1, 0), timeNTLM=if(isNtlm > 0, timestamp, null)
|
||||
|
||||
| stats sum(isKerberos) as totalKerberos, sum(isNtlm) as totalNtlm, min(timestamp) as
|
||||
startTime, min(timeNTLM) as startNTLMTime, max(timestamp) as endTime, max(timeNTLM) as
|
||||
endNTLMTime by dest_user_id, dest_user, origin_device_id, span(timestamp, 86400s)
|
||||
|
||||
| where NOT dest_user="-" AND totalKerberos > 0 AND totalNtlm > 0 AND endTime -
|
||||
startTime > 1800000 AND (totalKerberos > 10 * totalNtlm AND totalKerberos > 50) AND
|
||||
(endTime - startTime) > 3 * (endNTLMTime - startNTLMTime)
|
||||
|
||||
| eval start_time=startNTLMTime, end_time=endNTLMTime, entities=mvappend(dest_user_id,
|
||||
origin_device_id), body=create_map(["total_kerberos", totalKerberos, "total_ntlm",
|
||||
totalNtlm, "analysis_start_time", startTime, "analysis_end_time", endTime, "detection_start_time",
|
||||
startNTLMTime, "detection_end_time", endNTLMTime])
|
||||
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp= parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), dest_user= lower(ucast(map_get(input_event,\
|
||||
\ \"dest_user_primary_artifact\"), \"string\", null)), dest_user_id= lower(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null)), origin_device_id= lower(ucast(map_get(input_event,\
|
||||
\ \"origin_device_id\"), \"string\", null)), signature_id= lower(ucast(map_get(input_event,\
|
||||
\ \"signature_id\"), \"string\", null)), authentication_method= lower(ucast(map_get(input_event,\
|
||||
\ \"authentication_method\"), \"string\", null))\n\n| where signature_id = \"4624\"\
|
||||
\ AND (authentication_method=\"ntlmssp\" OR authentication_method=\"kerberos\")\
|
||||
\ AND dest_user_id != null AND origin_device_id != null\n\n| eval isKerberos=if(authentication_method\
|
||||
\ == \"kerberos\", 1, 0), isNtlm=if(authentication_method == \"ntlmssp\", 1, 0),\
|
||||
\ timeNTLM=if(isNtlm > 0, timestamp, null)\n\n| stats sum(isKerberos) as totalKerberos,\
|
||||
\ sum(isNtlm) as totalNtlm, min(timestamp) as startTime, min(timeNTLM) as\
|
||||
\ startNTLMTime, max(timestamp) as endTime, max(timeNTLM) as endNTLMTime by dest_user_id,\
|
||||
\ dest_user, origin_device_id, span(timestamp, 86400s)\n\n| where NOT dest_user=\"\
|
||||
-\" AND totalKerberos > 0 AND totalNtlm > 0 AND endTime - startTime > 1800000 AND\
|
||||
\ (totalKerberos > 10 * totalNtlm AND totalKerberos > 50) AND (endTime - startTime)\
|
||||
\ > 3 * (endNTLMTime - startNTLMTime)\n\n| eval start_time=startNTLMTime, end_time=endNTLMTime,\
|
||||
\ entities=mvappend(dest_user_id, origin_device_id), body=create_map([\"total_kerberos\"\
|
||||
, totalKerberos, \"total_ntlm\", totalNtlm, \"analysis_start_time\", startTime,\
|
||||
\ \"analysis_end_time\", endTime, \"detection_start_time\", startNTLMTime, \"detection_end_time\"\
|
||||
, endNTLMTime])\n\n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Lateral Movement
|
||||
|
||||
+10
-52
@@ -1,57 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-04'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of PowerSploit modules that facilitate
|
||||
access probing with admin credentials as well as probing access to system services.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: d405af5d-99f1-45af-8dfb-b8f98b764247
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Probing Access with Stolen Credentials via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 60
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is probing access with stolen credentials. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -89,18 +49,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Test-AdminAccess/)=true OR match_regex(cmd_line, /(?i)Invoke-CheckLocalAdminAccess/)=true
|
||||
OR match_regex(cmd_line, /(?i)Test-ServiceDaclPermission/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Test-AdminAccess/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-CheckLocalAdminAccess/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Test-ServiceDaclPermission/)=true )\n\n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Privilege Escalation
|
||||
|
||||
+46
-77
@@ -1,28 +1,6 @@
|
||||
author: Peter Gael, Splunk; Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: '2021-05-20'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: An attacker may use LOLBAS tools spawned from vulnerable applications
|
||||
not typically used by system administrators. This search leverages the Splunk Streaming
|
||||
ML DSP plugin to find rare parent/child relationships. The list of application has
|
||||
@@ -34,24 +12,10 @@ known_false_positives: 'Some custom tools used by admins could be used rarely to
|
||||
it hasn''t collected yet enough data to construct the baseline.
|
||||
|
||||
'
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1203
|
||||
- T1059
|
||||
- T1053
|
||||
- T1072
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: Rare Parent-Child Process Relationship
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
@@ -67,47 +31,52 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)) | eval parent_process=lower(ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null)), parent_process_name=mvindex(split(parent_process,
|
||||
"\\"), -1), process_name=lower(ucast(map_get(input_event, "process_name"), "string",
|
||||
null)), cmd_line=ucast(map_get(input_event, "process"), "string", null), dest_user_id=ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), dest_device_id=ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where parent_process_name!=null | select parent_process_name, process_name, cmd_line,
|
||||
timestamp, dest_device_id, dest_user_id | conditional_anomaly conditional="parent_process_name"
|
||||
target="process_name" | where (process_name="powershell.exe" OR process_name="regsvcs.exe"
|
||||
OR process_name="ftp.exe" OR process_name="dfsvc.exe" OR process_name="rasautou.exe"
|
||||
OR process_name="schtasks.exe" OR process_name="xwizard.exe" OR process_name="findstr.exe"
|
||||
OR process_name="esentutl.exe" OR process_name="cscript.exe" OR process_name="reg.exe"
|
||||
OR process_name="csc.exe" OR process_name="atbroker.exe" OR process_name="print.exe"
|
||||
OR process_name="pcwrun.exe" OR process_name="vbc.exe" OR process_name="rpcping.exe"
|
||||
OR process_name="wsreset.exe" OR process_name="ilasm.exe" OR process_name="certutil.exe"
|
||||
OR process_name="replace.exe" OR process_name="mshta.exe" OR process_name="bitsadmin.exe"
|
||||
OR process_name="wscript.exe" OR process_name="ieexec.exe" OR process_name="cmd.exe"
|
||||
OR process_name="microsoft.workflow.compiler.exe" OR process_name="runscripthelper.exe"
|
||||
OR process_name="makecab.exe" OR process_name="forfiles.exe" OR process_name="desktopimgdownldr.exe"
|
||||
OR process_name="control.exe" OR process_name="msbuild.exe" OR process_name="register-cimprovider.exe"
|
||||
OR process_name="tttracer.exe" OR process_name="ie4uinit.exe" OR process_name="sc.exe"
|
||||
OR process_name="bash.exe" OR process_name="hh.exe" OR process_name="cmstp.exe"
|
||||
OR process_name="mmc.exe" OR process_name="jsc.exe" OR process_name="scriptrunner.exe"
|
||||
OR process_name="odbcconf.exe" OR process_name="extexport.exe" OR process_name="msdt.exe"
|
||||
OR process_name="diskshadow.exe" OR process_name="extrac32.exe" OR process_name="eventvwr.exe"
|
||||
OR process_name="mavinject.exe" OR process_name="regasm.exe" OR process_name="gpscript.exe"
|
||||
OR process_name="rundll32.exe" OR process_name="regsvr32.exe" OR process_name="regedit.exe"
|
||||
OR process_name="msiexec.exe" OR process_name="gfxdownloadwrapper.exe" OR process_name="presentationhost.exe"
|
||||
OR process_name="regini.exe" OR process_name="wmic.exe" OR process_name="runonce.exe"
|
||||
OR process_name="syncappvpublishingserver.exe" OR process_name="verclsid.exe" OR
|
||||
process_name="psr.exe" OR process_name="infdefaultinstall.exe" OR process_name="explorer.exe"
|
||||
OR process_name="expand.exe" OR process_name="installutil.exe" OR process_name="netsh.exe"
|
||||
OR process_name="wab.exe" OR process_name="dnscmd.exe" OR process_name="at.exe"
|
||||
OR process_name="pcalua.exe" OR process_name="cmdkey.exe" OR process_name="msconfig.exe")
|
||||
| eval input = (-1)*log(output) | adaptive_threshold algorithm="gaussian" threshold=0.001
|
||||
window=604800000L | where label AND input > mean | eval start_time = timestamp,
|
||||
end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id), body =
|
||||
create_map(["process_name", process_name, "parent_process_name", parent_process_name,
|
||||
"input", input, "mean", mean, "variance", variance, "output", output, "cmd_line",
|
||||
cmd_line]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval parent_process=lower(ucast(map_get(input_event,\
|
||||
\ \"parent_process_name\"), \"string\", null)), parent_process_name=mvindex(split(parent_process,\
|
||||
\ \"\\\\\"), -1), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"), \"string\"\
|
||||
, null), dest_user_id=ucast(map_get(input_event, \"dest_user_id\"), \"string\",\
|
||||
\ null), dest_device_id=ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\", null) \n\
|
||||
| where parent_process_name!=null \n| select parent_process_name, process_name,\
|
||||
\ cmd_line, timestamp, dest_device_id, dest_user_id \n| conditional_anomaly conditional=\"\
|
||||
parent_process_name\" target=\"process_name\" \n| where (process_name=\"powershell.exe\"\
|
||||
\ OR process_name=\"regsvcs.exe\" OR process_name=\"ftp.exe\" OR process_name=\"\
|
||||
dfsvc.exe\" OR process_name=\"rasautou.exe\" OR process_name=\"schtasks.exe\" OR\
|
||||
\ process_name=\"xwizard.exe\" OR process_name=\"findstr.exe\" OR process_name=\"\
|
||||
esentutl.exe\" OR process_name=\"cscript.exe\" OR process_name=\"reg.exe\" OR process_name=\"\
|
||||
csc.exe\" OR process_name=\"atbroker.exe\" OR process_name=\"print.exe\" OR process_name=\"\
|
||||
pcwrun.exe\" OR process_name=\"vbc.exe\" OR process_name=\"rpcping.exe\" OR process_name=\"\
|
||||
wsreset.exe\" OR process_name=\"ilasm.exe\" OR process_name=\"certutil.exe\" OR\
|
||||
\ process_name=\"replace.exe\" OR process_name=\"mshta.exe\" OR process_name=\"\
|
||||
bitsadmin.exe\" OR process_name=\"wscript.exe\" OR process_name=\"ieexec.exe\" OR\
|
||||
\ process_name=\"cmd.exe\" OR process_name=\"microsoft.workflow.compiler.exe\" OR\
|
||||
\ process_name=\"runscripthelper.exe\" OR process_name=\"makecab.exe\" OR process_name=\"\
|
||||
forfiles.exe\" OR process_name=\"desktopimgdownldr.exe\" OR process_name=\"control.exe\"\
|
||||
\ OR process_name=\"msbuild.exe\" OR process_name=\"register-cimprovider.exe\" OR\
|
||||
\ process_name=\"tttracer.exe\" OR process_name=\"ie4uinit.exe\" OR process_name=\"\
|
||||
sc.exe\" OR process_name=\"bash.exe\" OR process_name=\"hh.exe\" OR process_name=\"\
|
||||
cmstp.exe\" OR process_name=\"mmc.exe\" OR process_name=\"jsc.exe\" OR process_name=\"\
|
||||
scriptrunner.exe\" OR process_name=\"odbcconf.exe\" OR process_name=\"extexport.exe\"\
|
||||
\ OR process_name=\"msdt.exe\" OR process_name=\"diskshadow.exe\" OR process_name=\"\
|
||||
extrac32.exe\" OR process_name=\"eventvwr.exe\" OR process_name=\"mavinject.exe\"\
|
||||
\ OR process_name=\"regasm.exe\" OR process_name=\"gpscript.exe\" OR process_name=\"\
|
||||
rundll32.exe\" OR process_name=\"regsvr32.exe\" OR process_name=\"regedit.exe\"\
|
||||
\ OR process_name=\"msiexec.exe\" OR process_name=\"gfxdownloadwrapper.exe\" OR\
|
||||
\ process_name=\"presentationhost.exe\" OR process_name=\"regini.exe\" OR process_name=\"\
|
||||
wmic.exe\" OR process_name=\"runonce.exe\" OR process_name=\"syncappvpublishingserver.exe\"\
|
||||
\ OR process_name=\"verclsid.exe\" OR process_name=\"psr.exe\" OR process_name=\"\
|
||||
infdefaultinstall.exe\" OR process_name=\"explorer.exe\" OR process_name=\"expand.exe\"\
|
||||
\ OR process_name=\"installutil.exe\" OR process_name=\"netsh.exe\" OR process_name=\"\
|
||||
wab.exe\" OR process_name=\"dnscmd.exe\" OR process_name=\"at.exe\" OR process_name=\"\
|
||||
pcalua.exe\" OR process_name=\"cmdkey.exe\" OR process_name=\"msconfig.exe\") \n\
|
||||
| eval input = (-1)*log(output) \n| adaptive_threshold algorithm=\"gaussian\" threshold=0.001\
|
||||
\ window=604800000L \n| where label AND input > mean \n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id), body\
|
||||
\ = create_map([\"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"input\", input, \"mean\", mean, \"variance\", variance, \"output\", output,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
Vendored
+9
-52
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for discovery of accounts
|
||||
and groups and access to them.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 1bce67aa-3fc4-4886-9089-67f0bfebbef6
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1078
|
||||
- T1087
|
||||
- T1484
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Accounts and Groups via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is searching for and using specific accounts and groups.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -92,17 +51,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)net::user/)=true OR match_regex(cmd_line, /(?i)net::group/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)net::user/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)net::group/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+30
-74
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
accounts, groups and policies that can be accessed or taken over.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 63422f8e-766c-468f-8133-2ba6795e263b
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1078
|
||||
- T1087
|
||||
- T1484
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Accounts Groups and Policies via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is searching for and using specific accounts, groups
|
||||
and policies, such as the last logged on account, a local Net group, etc. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
@@ -93,39 +52,36 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Find-DomainLocalGroupMember/)=true OR match_regex(cmd_line, /(?i)Invoke-EnumerateLocalAdmin/)=true
|
||||
OR match_regex(cmd_line, /(?i)Find-DomainUserEvent/)=true OR match_regex(cmd_line,
|
||||
/(?i)Invoke-EventHunter/)=true OR match_regex(cmd_line, /(?i)Find-DomainUserLocation/)=true
|
||||
OR match_regex(cmd_line, /(?i)Invoke-UserHunter/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DomainForeignGroupMember/)=true OR match_regex(cmd_line, /(?i)Find-ForeignGroup/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainForeignUser/)=true OR match_regex(cmd_line,
|
||||
/(?i)Find-ForeignUser/)=true OR match_regex(cmd_line, /(?i)Get-DomainGPO/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetGPO/)=true OR match_regex(cmd_line, /(?i)Get-DomainGPOComputerLocalGroupMapping/)=true
|
||||
OR match_regex(cmd_line, /(?i)Find-GPOComputerAdmin/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DomainGPOLocalGroup/)=true OR match_regex(cmd_line, /(?i)Get-NetGPOGroup/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainGPOUserLocalGroupMapping/)=true OR match_regex(cmd_line,
|
||||
/(?i)Find-GPOLocation/)=true OR match_regex(cmd_line, /(?i)Get-DomainGroup/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetGroup/)=true OR match_regex(cmd_line, /(?i)Get-DomainGroupMember/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetGroupMember/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DomainManagedSecurityGroup/)=true OR match_regex(cmd_line, /(?i)Find-ManagedSecurityGroups/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainOU/)=true OR match_regex(cmd_line, /(?i)Get-NetOU/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainUser/)=true OR match_regex(cmd_line, /(?i)Get-NetUser/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainUserEvent/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-UserEvent/)=true OR match_regex(cmd_line, /(?i)Get-NetLocalGroup/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetLocalGroupMember/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-NetLoggedon/)=true OR match_regex(cmd_line, /(?i)Get-RegLoggedOn/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-WMIRegLastLoggedOn/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-LastLoggedOn/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Find-DomainLocalGroupMember/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-EnumerateLocalAdmin/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Find-DomainUserEvent/)=true OR match_regex(cmd_line, /(?i)Invoke-EventHunter/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-DomainUserLocation/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Invoke-UserHunter/)=true OR match_regex(cmd_line, /(?i)Get-DomainForeignGroupMember/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-ForeignGroup/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainForeignUser/)=true OR match_regex(cmd_line, /(?i)Find-ForeignUser/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainGPO/)=true OR match_regex(cmd_line, /(?i)Get-NetGPO/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainGPOComputerLocalGroupMapping/)=true OR\
|
||||
\ match_regex(cmd_line, /(?i)Find-GPOComputerAdmin/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainGPOLocalGroup/)=true OR match_regex(cmd_line, /(?i)Get-NetGPOGroup/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainGPOUserLocalGroupMapping/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Find-GPOLocation/)=true OR match_regex(cmd_line, /(?i)Get-DomainGroup/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetGroup/)=true OR match_regex(cmd_line, /(?i)Get-DomainGroupMember/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetGroupMember/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainManagedSecurityGroup/)=true OR match_regex(cmd_line, /(?i)Find-ManagedSecurityGroups/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainOU/)=true OR match_regex(cmd_line, /(?i)Get-NetOU/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainUser/)=true OR match_regex(cmd_line, /(?i)Get-NetUser/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainUserEvent/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-UserEvent/)=true OR match_regex(cmd_line, /(?i)Get-NetLocalGroup/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetLocalGroupMember/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-NetLoggedon/)=true OR match_regex(cmd_line, /(?i)Get-RegLoggedOn/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-WMIRegLastLoggedOn/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-LastLoggedOn/)=true )\n\n| eval start_time = timestamp, end_time = timestamp,\
|
||||
\ entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"), \"string\"\
|
||||
, null), ucast(map_get(input_event, \"dest_device_id\"), \"string\", null)), body=create_map([\"\
|
||||
event_id\", event_id, \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+18
-63
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules for reconnaissance
|
||||
and access to elements of Active Directory infrastructure, such as domain identifiers,
|
||||
AD sites and forests, and trust relations.
|
||||
@@ -30,33 +8,12 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: db08ac40-ee14-43e9-9a75-dddd059ef812
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1199
|
||||
- T1482
|
||||
- T1590
|
||||
- T1591
|
||||
- T1595
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Active Directoty Infrastructure via PowerSploit
|
||||
modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is seaching for or accessing Active Directory objects
|
||||
such as domain sites, domain trusts, AD forests, etc. Operation is performed at
|
||||
the device $dest_device_id$, by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -98,26 +55,24 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Get-DomainSID/)=true OR match_regex(cmd_line, /(?i)Get-DomainSite/)=true OR
|
||||
match_regex(cmd_line, /(?i)Get-NetSite/)=true OR match_regex(cmd_line, /(?i)Get-DomainSubnet/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetSubnet/)=true OR match_regex(cmd_line, /(?i)Get-DomainTrust/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetDomainTrust/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DomainTrustMapping/)=true OR match_regex(cmd_line, /(?i)Invoke-MapDomainTrust/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-Forest/)=true OR match_regex(cmd_line, /(?i)Get-NetForest/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ForestDomain/)=true OR match_regex(cmd_line, /(?i)Get-NetForestDomain/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ForestGlobalCatalog/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-NetForestCatalog/)=true OR match_regex(cmd_line, /(?i)Get-ForestTrust/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetForestTrust/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-DomainSID/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainSite/)=true OR match_regex(cmd_line, /(?i)Get-NetSite/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainSubnet/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-NetSubnet/)=true OR match_regex(cmd_line, /(?i)Get-DomainTrust/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetDomainTrust/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainTrustMapping/)=true OR match_regex(cmd_line, /(?i)Invoke-MapDomainTrust/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-Forest/)=true OR match_regex(cmd_line, /(?i)Get-NetForest/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-ForestDomain/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-NetForestDomain/)=true OR match_regex(cmd_line, /(?i)Get-ForestGlobalCatalog/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetForestCatalog/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ForestTrust/)=true OR match_regex(cmd_line, /(?i)Get-NetForestTrust/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
Vendored
+13
-57
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
computers, servers and domains that can be accessed or taken over.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: fe1c4c5a-09f3-4b43-8129-560a7f38a08b
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1592
|
||||
- T1590
|
||||
- T1087
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Computers and Domains via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is seaching for or accessing domain controllers,
|
||||
computers, file servers, etc. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -92,22 +51,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Get-ComputerDetail/)=true OR match_regex(cmd_line, /(?i)Get-Domain/)=true OR
|
||||
match_regex(cmd_line, /(?i)Get-NetDomain/)=true OR match_regex(cmd_line, /(?i)Get-DomainComputer/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetComputer/)=true OR match_regex(cmd_line, /(?i)Get-DomainController/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-NetDomainController/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DomainFileServer/)=true OR match_regex(cmd_line, /(?i)Get-NetFileServer/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-ComputerDetail/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-Domain/)=true OR match_regex(cmd_line, /(?i)Get-NetDomain/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainComputer/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-NetComputer/)=true OR match_regex(cmd_line, /(?i)Get-DomainController/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetDomainController/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainFileServer/)=true OR match_regex(cmd_line, /(?i)Get-NetFileServer/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+8
-50
@@ -1,56 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for discovery of computers
|
||||
and servers and access to them.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 48664505-7d22-44ee-87d2-4c8a5bdc3d14
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1592
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Computers via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 50
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is collecting information about computers. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -86,17 +47,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)net::ServerInfo/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)net::ServerInfo/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+15
-64
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
and access operating system elements, such as processes, services, registry locations,
|
||||
security packages and files.
|
||||
@@ -30,36 +8,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: c1d33ad9-1727-4f9f-a474-4adbe4fed68a
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1057
|
||||
- T1083
|
||||
- T1592.002
|
||||
- T1046
|
||||
- T1012
|
||||
- T1007
|
||||
- T1047
|
||||
- T1592
|
||||
- T1518
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Operating System Elements via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is searching for and tapping into ongoing processes,
|
||||
mounted drives or other operating system elements. Operation is performed at the
|
||||
device $dest_device_id$, by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -105,23 +58,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Find-DomainProcess/)=true OR match_regex(cmd_line, /(?i)Invoke-ProcessHunter/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ServiceDetail/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-WMIProcess/)=true OR match_regex(cmd_line, /(?i)Get-NetProcess/)=true OR
|
||||
match_regex(cmd_line, /(?i)Get-SecurityPackage/)=true OR match_regex(cmd_line, /(?i)Find-DomainObjectPropertyOutlier/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainObject/)=true OR match_regex(cmd_line, /(?i)Get-ADObject/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-WMIRegMountedDrive/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-RegistryMountedDrive/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Find-DomainProcess/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-ProcessHunter/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ServiceDetail/)=true OR match_regex(cmd_line, /(?i)Get-WMIProcess/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetProcess/)=true OR match_regex(cmd_line, /(?i)Get-SecurityPackage/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-DomainObjectPropertyOutlier/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainObject/)=true OR match_regex(cmd_line, /(?i)Get-ADObject/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-WMIRegMountedDrive/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-RegistryMountedDrive/)=true )\n\n| eval start_time = timestamp, end_time\
|
||||
\ = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
Vendored
+9
-52
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for discovery and access
|
||||
to services and processes.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 0243d37c-57c1-4182-bfd1-39b212255fc8
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1007
|
||||
- T1046
|
||||
- T1057
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Processes and Services via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 50
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is listing processes and services. Operation is performed
|
||||
at the device $dest_device_id$, by the account $dest_user_id$ via command $cmd_line$
|
||||
savedsearch_annotations:
|
||||
@@ -89,17 +48,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)process::list/)=true OR match_regex(cmd_line, /(?i)service::list/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)process::list/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)service::list/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+8
-53
@@ -1,59 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for discovery and access
|
||||
to network shares.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: c97b6eb9-1d8b-4017-bbbb-2af7fc17bc3f
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1021
|
||||
- T1039
|
||||
- T1135
|
||||
- T1021.002
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Shared Resources via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is searching for and accessing network shares. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -94,17 +52,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)net::share/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)net::share/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
Vendored
+13
-57
@@ -1,59 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules that discover
|
||||
and access network and distributed file system shares.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 6b7ca431-6b1e-4b40-9589-21cb368e369e
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1021
|
||||
- T1039
|
||||
- T1135
|
||||
- T1021.002
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance and Access to Shared Resources via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is searching for and accessing network shares. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -94,21 +52,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Find-DomainShare/)=true OR match_regex(cmd_line, /(?i)Invoke-ShareFinder/)=true
|
||||
OR match_regex(cmd_line, /(?i)Find-InterestingDomainShareFile/)=true OR match_regex(cmd_line,
|
||||
/(?i)Invoke-FileFinder/)=true OR match_regex(cmd_line, /(?i)Find-InterestingFile/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainDFSShare/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DFSshare/)=true OR match_regex(cmd_line, /(?i)Get-NetShare/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Find-DomainShare/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Invoke-ShareFinder/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Find-InterestingDomainShareFile/)=true OR match_regex(cmd_line, /(?i)Invoke-FileFinder/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-InterestingFile/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainDFSShare/)=true OR match_regex(cmd_line, /(?i)Get-DFSshare/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-NetShare/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+18
-65
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of PowerSploit modules that discover opportunities
|
||||
for malicious access and persistence. Some examples include access to admin accounts,
|
||||
weak access control policies, landing paths for dropping malicious software or data
|
||||
@@ -32,33 +10,11 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 3d8bd7f3-1061-4ac7-9225-6764cc0684d7
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1053
|
||||
- T1068
|
||||
- T1078
|
||||
- T1543
|
||||
- T1547
|
||||
- T1574
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Access and Persistence Opportunities via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 60
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is searching for an entry point into the infrastructure,
|
||||
such as local admin accounts, opportunities to hijack processes, unattended install
|
||||
files, or modifiable access objects. Operation is performed at the device $dest_device_id$,
|
||||
@@ -100,27 +56,24 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Find-LocalAdminAccess/)=true OR match_regex(cmd_line, /(?i)Find-InterestingDomainAcl/)=true
|
||||
OR match_regex(cmd_line, /(?i)Invoke-ACLScanner/)=true OR match_regex(cmd_line,
|
||||
/(?i)Find-PathDLLHijack/)=true OR match_regex(cmd_line, /(?i)Find-ProcessDLLHijack/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainObjectAcl/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-ObjectAcl/)=true OR match_regex(cmd_line, /(?i)Get-DomainPolicy/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ModifiablePath/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-ModifiableRegistryAutoRun/)=true OR match_regex(cmd_line, /(?i)Get-ModifiableScheduledTaskFile/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-ModifiableService/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-ModifiableServiceFile/)=true OR match_regex(cmd_line, /(?i)Get-PathAcl/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-UnattendedInstallFile/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-UnquotedService/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Find-LocalAdminAccess/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-InterestingDomainAcl/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Invoke-ACLScanner/)=true OR match_regex(cmd_line, /(?i)Find-PathDLLHijack/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Find-ProcessDLLHijack/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-DomainObjectAcl/)=true OR match_regex(cmd_line, /(?i)Get-ObjectAcl/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DomainPolicy/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ModifiablePath/)=true OR match_regex(cmd_line, /(?i)Get-ModifiableRegistryAutoRun/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-ModifiableScheduledTaskFile/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-ModifiableService/)=true OR match_regex(cmd_line, /(?i)Get-ModifiableServiceFile/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-PathAcl/)=true OR match_regex(cmd_line, /(?i)Get-UnattendedInstallFile/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-UnquotedService/)=true )\n\n| eval start_time\
|
||||
\ = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line])\
|
||||
\ \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+13
-59
@@ -1,59 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies access to PowerSploit modules for reconnaissance
|
||||
of connectivity.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 525d32fd-65dd-4732-9b72-3cfc7ddddbd2
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1021
|
||||
- T1039
|
||||
- T1135
|
||||
- T1021.002
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Connectivity via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is performing port scans or searching for various
|
||||
connectivity details such as DNS data, proxies, or ongoing RDP connections. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
@@ -93,23 +51,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Get-DomainDNSRecord/)=true OR match_regex(cmd_line, /(?i)Get-DNSRecord/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-DomainDNSZone/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-DNSZone/)=true OR match_regex(cmd_line, /(?i)Invoke-ReverseDnsLookup/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-WMIRegCachedRDPConnection/)=true OR match_regex(cmd_line,
|
||||
/(?i)Get-CachedRDPConnection/)=true OR match_regex(cmd_line, /(?i)Get-WMIRegProxy/)=true
|
||||
OR match_regex(cmd_line, /(?i)Get-Proxy/)=true OR match_regex(cmd_line, /(?i)Invoke-Portscan/)=true
|
||||
)
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Get-DomainDNSRecord/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DNSRecord/)=true OR match_regex(cmd_line, /(?i)Get-DomainDNSZone/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-DNSZone/)=true OR match_regex(cmd_line, /(?i)Invoke-ReverseDnsLookup/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-WMIRegCachedRDPConnection/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Get-CachedRDPConnection/)=true OR match_regex(cmd_line, /(?i)Get-WMIRegProxy/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Get-Proxy/)=true OR match_regex(cmd_line, /(?i)Invoke-Portscan/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
Vendored
+10
-59
@@ -1,63 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies reconnaissance of credential stores and use
|
||||
of CryptoAPI services by Mimikatz modules.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 5facee5b-79e4-47ab-b0e6-c625acc0554f
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1098
|
||||
- T1590.001
|
||||
- T1078
|
||||
- T1589.001
|
||||
- T1590
|
||||
- T1068
|
||||
- T1589
|
||||
- T1590.003
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Credential Stores and Services via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is searching for and accessing credential stores. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -101,19 +55,16 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)crypto::capi/)=true OR match_regex(cmd_line, /(?i)crypto::cng/)=true OR match_regex(cmd_line,
|
||||
/(?i)crypto::providers/)=true OR match_regex(cmd_line, /(?i)crypto::stores/)=true
|
||||
OR match_regex(cmd_line, /(?i)crypto::sc/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)crypto::capi/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)crypto::cng/)=true OR match_regex(cmd_line, /(?i)crypto::providers/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)crypto::stores/)=true OR match_regex(cmd_line, /(?i)crypto::sc/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+8
-53
@@ -1,59 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of PowerSploit modules for assessment of
|
||||
presence of defensive tools.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 24b4e659-63a2-4e7b-89ac-87dd659c7110
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1592.002
|
||||
- T1595.002
|
||||
- T1592
|
||||
- T1595
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Defensive Tools via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 40
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is looking for presence of anti virus software.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -92,17 +50,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Find-AVSignature/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Find-AVSignature/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
dist/ssa/detections/reconnaissance_of_privilege_escalation_opportunities_via_powersploit_modules.yml
Vendored
+8
-52
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of PowerSploit modules for assessment of
|
||||
privilege escalation opportunities.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: b9b4492c-2af8-449b-beb4-b1b78d963321
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Privilege Escalation Opportunities via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 60
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is engaging its privilege escalation module. Operation
|
||||
is performed at the device $dest_device_id$, by the account $dest_user_id$ via command
|
||||
$cmd_line$
|
||||
@@ -90,17 +49,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Invoke-PrivescAudit/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Invoke-PrivescAudit/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+8
-52
@@ -1,28 +1,6 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-05'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies use of Mimikatz modules for discovery of process
|
||||
or service hijacking opportunities via Microsoft Detours compatibility. Microsoft
|
||||
Detours is an open source library for intercepting, monitoring and instrumenting
|
||||
@@ -33,31 +11,12 @@ how_to_implement: You must be ingesting Windows Security logs from devices of in
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: fc5c1cbd-7494-4314-aad2-458d6fd4fada
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1543
|
||||
- T1055
|
||||
- T1574
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Reconnaissance of Process or Service Hijacking Opportunities via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
- https://en.wikipedia.org/wiki/Microsoft_Detours
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 70
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is looking for and invoking Microsoft Detours package
|
||||
that enables spoofing of in-memory code. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -97,17 +56,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)misc::detours/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)misc::detours/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Discovery Techniques
|
||||
|
||||
+13
-47
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-21'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: The following analytics identifies the resizing of shadowstorage by ransomware
|
||||
malware to avoid the shadow volumes being made again. this technique is an alternative
|
||||
by ransomware attacker than deleting the shadowstorage which is known alert in defensive
|
||||
@@ -36,24 +14,12 @@ how_to_implement: To successfully implement this search, you need to be ingestin
|
||||
Sysmon TA.
|
||||
id: dbc30554-d27e-11eb-9e5e-acde48001122
|
||||
known_false_positives: network admin can resize the shadowstorage for valid purposes.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 10
|
||||
- CIS 13
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1489
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
name: Resize Shadowstorage Volume
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://www.fireeye.com/blog/threat-research/2020/10/fin11-email-campaigns-precursor-for-ransomware-data-theft.html
|
||||
- https://blog.virustotal.com/2020/11/keep-your-friends-close-keep-ransomware.html
|
||||
risk: []
|
||||
savedsearch_annotations:
|
||||
analytic_story:
|
||||
- Clop Ransomware
|
||||
@@ -68,19 +34,19 @@ savedsearch_annotations:
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=lower(ucast(map_get(input_event, "process"),
|
||||
"string", null)), process_name=lower(ucast(map_get(input_event, "process_name"),
|
||||
"string", null)), process_path=ucast(map_get(input_event, "process_path"), "string",
|
||||
null), parent_process_name=ucast(map_get(input_event, "parent_process_name"), "string",
|
||||
null), event_id=ucast(map_get(input_event, "event_id"), "string", null) | where
|
||||
cmd_line IS NOT NULL AND like(cmd_line, "%resize%") AND like(cmd_line, "%shadowstorage%")
|
||||
AND like(cmd_line, "%maxsize%") AND process_name="vssadmin.exe" | eval start_time=timestamp,
|
||||
end_time=timestamp, entities=mvappend(ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null), ucast(map_get(input_event, "dest_device_id"), "string", null)),
|
||||
body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name", process_name,
|
||||
"parent_process_name", parent_process_name, "process_path", process_path]) | into
|
||||
write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=lower(ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"%resize%\") AND like(cmd_line,\
|
||||
\ \"%shadowstorage%\") AND like(cmd_line, \"%maxsize%\") AND process_name=\"vssadmin.exe\"\
|
||||
\ \n| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Clop Ransomware
|
||||
|
||||
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies illegal setting of credentials via DSInternals
|
||||
modules.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: d5ef590f-9bde-49eb-9c63-2f5b62a65b9c
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Setting Credentials via DSInternals modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/MichaelGrafnetter/DSInternals
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: DSInternals malware is accessing, using or setting Active Directory
|
||||
or Azure credentials and accounts. Operation is performed at the device $dest_device_id$,
|
||||
by the account $dest_user_id$ via command $cmd_line$
|
||||
@@ -92,23 +51,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null), process_path=ucast(map_get(input_event,
|
||||
"process_path"), "string", null), cmd_line=ucast(map_get(input_event, "process"),
|
||||
"string", null), parent_process_name=ucast(map_get(input_event, "parent_process_name"),
|
||||
"string", null), event_id=ucast(map_get(input_event, "event_id"), "string", null)
|
||||
| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Add-ADDBSidHistory/)=true
|
||||
OR match_regex(cmd_line, /(?i)Add-ADReplNgcKey/)=true OR match_regex(cmd_line, /(?i)Set-ADDBAccountPassword/)=true
|
||||
OR match_regex(cmd_line, /(?i)Set-ADDBAccountPasswordHash/)=true OR match_regex(cmd_line,
|
||||
/(?i)Set-ADDBBootKey/)=true OR match_regex(cmd_line, /(?i)Set-SamAccountPasswordHash/)=true
|
||||
OR match_regex(cmd_line, /(?i)Set-AzureADUserEx/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), process_name=ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), cmd_line=ucast(map_get(input_event, \"process\"), \"string\"\
|
||||
, null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Add-ADDBSidHistory/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Add-ADReplNgcKey/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Set-ADDBAccountPassword/)=true OR match_regex(cmd_line, /(?i)Set-ADDBAccountPasswordHash/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)Set-ADDBBootKey/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)Set-SamAccountPasswordHash/)=true OR match_regex(cmd_line, /(?i)Set-AzureADUserEx/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies illegal setting of credentials via Mimikatz
|
||||
modules.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: c8b84699-7652-4363-910f-efd1ca82f780
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Setting Credentials via Mimikatz modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/gentilkiwi/mimikatz
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 80
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: Mimikatz malware is accessing, using or setting account credentials.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -91,17 +50,15 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)misc::addsid/)=true OR match_regex(cmd_line, /(?i)CRYPTO::scauth/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)misc::addsid/)=true\
|
||||
\ OR match_regex(cmd_line, /(?i)CRYPTO::scauth/)=true )\n\n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend( ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
@@ -1,58 +1,17 @@
|
||||
author: Stanislav Miskovic, Splunk
|
||||
datamodel: []
|
||||
date: '2020-11-03'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This detection identifies illegal setting of credentials via PowerSploit
|
||||
modules.
|
||||
how_to_implement: You must be ingesting Windows Security logs from devices of interest,
|
||||
including the event ID 4688 with enabled command line logging.
|
||||
id: 07b2a501-f967-4ddc-9f56-2dce46dfce44
|
||||
known_false_positives: None identified.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 16
|
||||
- CIS 20
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1068
|
||||
- T1078
|
||||
- T1098
|
||||
nist:
|
||||
- PR.AC
|
||||
- PR.IP
|
||||
name: Setting Credentials via PowerSploit modules
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://github.com/PowerShellMafia/PowerSploit
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 90
|
||||
- threat_object_field: cmd_line
|
||||
threat_object_type: processname
|
||||
risk_message: PowerSploit malware is setting passwords on Active Directory accounts.
|
||||
Operation is performed at the device $dest_device_id$, by the account $dest_user_id$
|
||||
via command $cmd_line$
|
||||
@@ -91,17 +50,14 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Others
|
||||
type: processname
|
||||
search: '| from read_ssa_enriched_events()
|
||||
|
||||
| eval timestamp=parse_long(ucast(map_get(input_event, "_time"), "string", null)),
|
||||
cmd_line=ucast(map_get(input_event, "process"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line != null AND ( match_regex(cmd_line,
|
||||
/(?i)Set-DomainUserPassword/)=true )
|
||||
|
||||
| eval start_time = timestamp, end_time = timestamp, entities = mvappend( ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events()\n\n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line != null AND ( match_regex(cmd_line, /(?i)Set-DomainUserPassword/)=true\
|
||||
\ )\n\n| eval start_time = timestamp, end_time = timestamp, entities = mvappend(\
|
||||
\ ucast(map_get(input_event, \"dest_user_id\"), \"string\", null), ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null)), body=create_map([\"event_id\", event_id,\
|
||||
\ \"cmd_line\", cmd_line]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Persistence Techniques
|
||||
|
||||
+243
-256
@@ -1,28 +1,6 @@
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: '2020-08-25'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: An attacker tries might try to use different version of a system command
|
||||
without overriding original, or they might try to avoid some detection running the
|
||||
process from a different folder. This detection checks that a list of system processes
|
||||
@@ -32,27 +10,10 @@ description: An attacker tries might try to use different version of a system co
|
||||
how_to_implement: Collect endpoint data such as sysmon or 4688 events.
|
||||
id: 28179107-099a-464a-94d3-08301e6c055f
|
||||
known_false_positives: None
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
mitre_attack:
|
||||
- T1036
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: System Process Running from Unexpected Location
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 56
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 56
|
||||
risk_message: A system process $process_name$ with commandline $cmd_line$ spawn in
|
||||
non-default folder path in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -82,223 +43,249 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: ' $ssa_input = | from read_ssa_enriched_events() | eval device=ucast(map_get(input_event,
|
||||
"dest_device_id"), "string", null), user=ucast(map_get(input_event, "dest_user_id"),
|
||||
"string", null), timestamp=parse_long(ucast(map_get(input_event, "_time"), "string",
|
||||
null)), process_name=lower(ucast(map_get(input_event, "process_name"), "string",
|
||||
null)), process_path=lower(ucast(map_get(input_event, "process_path"), "string",
|
||||
null)), event_id=ucast(map_get(input_event, "event_id"), "string", null);
|
||||
|
||||
$cond_1 = | from $ssa_input | where process_name="arp.exe" OR process_name="adaptertroubleshooter.exe"
|
||||
OR process_name="applicationframehost.exe" OR process_name="atbroker.exe" OR process_name="authhost.exe"
|
||||
OR process_name="autoworkplace.exe" OR process_name="axinstui.exe" OR process_name="backgroundtransferhost.exe"
|
||||
OR process_name="bdehdcfg.exe" OR process_name="bdeuisrv.exe" OR process_name="bdeunlockwizard.exe"
|
||||
OR process_name="bitlockerdeviceencryption.exe" OR process_name="bitlockerwizard.exe"
|
||||
OR process_name="bitlockerwizardelev.exe" OR process_name="bytecodegenerator.exe"
|
||||
OR process_name="camerasettingsuihost.exe" OR process_name="castsrv.exe" OR process_name="certenrollctrl.exe"
|
||||
OR process_name="checknetisolation.exe" OR process_name="clipup.exe" OR process_name="cloudexperiencehostbroker.exe"
|
||||
OR process_name="cloudnotifications.exe" OR process_name="cloudstoragewizard.exe"
|
||||
OR process_name="compmgmtlauncher.exe" OR process_name="compattelrunner.exe" OR
|
||||
process_name="computerdefaults.exe" OR process_name="credentialuibroker.exe" OR
|
||||
process_name="dfdwiz.exe" OR process_name="dwwin.exe" OR process_name="dataexchangehost.exe"
|
||||
OR process_name="defrag.exe" OR process_name="devicedisplayobjectprovider.exe" OR
|
||||
process_name="deviceeject.exe" OR process_name="deviceenroller.exe" OR process_name="devicepairingwizard.exe"
|
||||
OR process_name="deviceproperties.exe" OR process_name="disksnapshot.exe" OR process_name="dism.exe"
|
||||
OR process_name="displayswitch.exe" OR process_name="dmnotificationbroker.exe" OR
|
||||
process_name="dmomacpmo.exe" OR process_name="dpiscaling.exe" OR process_name="dsmusertask.exe"
|
||||
OR process_name="dxpserver.exe" OR process_name="edpcleanup.exe" OR process_name="eosnotify.exe"
|
||||
OR process_name="eap3host.exe" OR process_name="easpoliciesbrokerhost.exe" OR process_name="easeofaccessdialog.exe"
|
||||
OR process_name="ehstorauthn.exe" OR process_name="fxscover.exe" OR process_name="fxssvc.exe"
|
||||
OR process_name="fxsunatd.exe" OR process_name="filehistory.exe" OR process_name="fondue.exe"
|
||||
OR process_name="gamepanel.exe" OR process_name="genvalobj.exe" OR process_name="gettingstarted.exe"
|
||||
OR process_name="hostname.exe" OR process_name="icsentitlementhost.exe" OR process_name="infdefaultinstall.exe"
|
||||
OR process_name="installagent.exe" OR process_name="languagecomponentsinstallercomhandler.exe"
|
||||
OR process_name="launchtm.exe" OR process_name="launchwinapp.exe" OR process_name="legacynetuxhost.exe"
|
||||
OR process_name="licensemanagershellext.exe" OR process_name="licensingui.exe" OR
|
||||
process_name="locationnotificationwindows.exe" OR process_name="locationnotifications.exe"
|
||||
OR process_name="locator.exe" OR process_name="lockapphost.exe" OR process_name="lockscreencontentserver.exe"
|
||||
OR process_name="logonui.exe" OR process_name="lsaiso.exe" OR process_name="mdeserver.exe"
|
||||
OR process_name="mdmagent.exe" OR process_name="mdmappinstaller.exe" OR process_name="mrinfo.exe"
|
||||
OR process_name="mrt.exe" OR process_name="mschedexe.exe" OR process_name="magnify.exe"
|
||||
OR process_name="mbaeparsertask.exe" OR process_name="mdres.exe" OR process_name="mdsched.exe"
|
||||
OR process_name="migautoplay.exe" OR process_name="mpsigstub.exe" OR process_name="msspellcheckinghost.exe"
|
||||
OR process_name="muiunattend.exe" OR process_name="multidigimon.exe" OR process_name="musnotification.exe"
|
||||
OR process_name="musnotificationux.exe" OR process_name="napstat.exe" OR process_name="netstat.exe"
|
||||
OR process_name="narrator.exe" OR process_name="netcfgnotifyobjecthost.exe" OR process_name="netevtfwdr.exe"
|
||||
OR process_name="netproj.exe" OR process_name="netplwiz.exe" OR process_name="networkuxbroker.exe";
|
||||
|
||||
$cond_2 = | from $ssa_input | where process_name="openwith.exe" OR process_name="optionalfeatures.exe"
|
||||
OR process_name="pathping.exe" OR process_name="ping.exe" OR process_name="passwordonwakesettingflyout.exe"
|
||||
OR process_name="pickerhost.exe" OR process_name="pkgmgr.exe" OR process_name="pnpunattend.exe"
|
||||
OR process_name="pnputil.exe" OR process_name="presentationhost.exe" OR process_name="presentationsettings.exe"
|
||||
OR process_name="printbrmui.exe" OR process_name="printdialoghost.exe" OR process_name="printdialoghost3d.exe"
|
||||
OR process_name="printisolationhost.exe" OR process_name="proximityuxhost.exe" OR
|
||||
process_name="rdspnf.exe" OR process_name="rmactivate.exe" OR process_name="rmactivate_isv.exe"
|
||||
OR process_name="rmactivate_ssp.exe" OR process_name="rmactivate_ssp_isv.exe" OR
|
||||
process_name="route.exe" OR process_name="rdpsa.exe" OR process_name="rdpsaproxy.exe"
|
||||
OR process_name="rdpsauachelper.exe" OR process_name="reagentc.exe" OR process_name="recoverydrive.exe"
|
||||
OR process_name="register-cimprovider.exe" OR process_name="registeriepkeys.exe"
|
||||
OR process_name="relpost.exe" OR process_name="remoteposworker.exe" OR process_name="rmclient.exe"
|
||||
OR process_name="robocopy.exe" OR process_name="rpcping.exe" OR process_name="runlegacycplelevated.exe"
|
||||
OR process_name="runtimebroker.exe" OR process_name="sihclient.exe" OR process_name="searchfilterhost.exe"
|
||||
OR process_name="searchindexer.exe" OR process_name="searchprotocolhost.exe" OR
|
||||
process_name="secedit.exe" OR process_name="sensordataservice.exe" OR process_name="setieinstalleddate.exe"
|
||||
OR process_name="settingsynchost.exe" OR process_name="slidetoshutdown.exe" OR process_name="smartscreensettings.exe"
|
||||
OR process_name="sndvol.exe" OR process_name="snippingtool.exe" OR process_name="soundrecorder.exe"
|
||||
OR process_name="spaceagent.exe" OR process_name="sppextcomobj.exe" OR process_name="srtasks.exe"
|
||||
OR process_name="stikynot.exe" OR process_name="synchost.exe" OR process_name="sysreseterr.exe"
|
||||
OR process_name="systempropertiesadvanced.exe" OR process_name="systempropertiescomputername.exe"
|
||||
OR process_name="systempropertiesdataexecutionprevention.exe" OR process_name="systempropertieshardware.exe"
|
||||
OR process_name="systempropertiesperformance.exe" OR process_name="systempropertiesprotection.exe"
|
||||
OR process_name="systempropertiesremote.exe" OR process_name="systemsettingsadminflows.exe"
|
||||
OR process_name="systemsettingsbroker.exe" OR process_name="systemsettingsremovedevice.exe"
|
||||
OR process_name="tcpsvcs.exe" OR process_name="tracert.exe" OR process_name="tstheme.exe"
|
||||
OR process_name="tswbprxy.exe" OR process_name="tapiunattend.exe" OR process_name="taskmgr.exe"
|
||||
OR process_name="thumbnailextractionhost.exe" OR process_name="tokenbrokercookies.exe"
|
||||
OR process_name="tpminit.exe" OR process_name="tswpfwrp.exe" OR process_name="ui0detect.exe"
|
||||
OR process_name="upgraderesultsui.exe" OR process_name="useraccountbroker.exe" OR
|
||||
process_name="useraccountcontrolsettings.exe" OR process_name="usoclient.exe" OR
|
||||
process_name="utilman.exe" OR process_name="vssvc.exe" OR process_name="vaultcmd.exe"
|
||||
OR process_name="vaultsysui.exe" OR process_name="wfs.exe" OR process_name="wmpdmc.exe"
|
||||
OR process_name="wpdshextautoplay.exe" OR process_name="wscollect.exe" OR process_name="wsmanhttpconfig.exe"
|
||||
OR process_name="wsreset.exe" OR process_name="wudfhost.exe" OR process_name="wwahost.exe"
|
||||
OR process_name="wallpaperhost.exe" OR process_name="webcache.exe" OR process_name="werfault.exe"
|
||||
OR process_name="werfaultsecure.exe" OR process_name="winsat.exe" OR process_name="windows.media.backgroundplayback.exe"
|
||||
OR process_name="windowsactiondialog.exe" OR process_name="windowsanytimeupgrade.exe"
|
||||
OR process_name="windowsanytimeupgraderesults.exe";
|
||||
|
||||
$cond_3 = | from $ssa_input | where process_name="windowsanytimeupgradeui.exe" OR
|
||||
process_name="windowsupdateelevatedinstaller.exe" OR process_name="workfolders.exe"
|
||||
OR process_name="wpcmon.exe" OR process_name="acu.exe" OR process_name="aitagent.exe"
|
||||
OR process_name="aitstatic.exe" OR process_name="alg.exe" OR process_name="appidcertstorecheck.exe"
|
||||
OR process_name="appidpolicyconverter.exe" OR process_name="at.exe" OR process_name="attrib.exe"
|
||||
OR process_name="audiodg.exe" OR process_name="auditpol.exe" OR process_name="autochk.exe"
|
||||
OR process_name="autoconv.exe" OR process_name="autofmt.exe" OR process_name="baaupdate.exe"
|
||||
OR process_name="backgroundtaskhost.exe" OR process_name="bcastdvr.exe" OR process_name="bcdboot.exe"
|
||||
OR process_name="bcdedit.exe" OR process_name="bdechangepin.exe" OR process_name="bdeunlock.exe"
|
||||
OR process_name="bitsadmin.exe" OR process_name="bootcfg.exe" OR process_name="bootim.exe"
|
||||
OR process_name="bootsect.exe" OR process_name="bridgeunattend.exe" OR process_name="browser_broker.exe"
|
||||
OR process_name="bthudtask.exe" OR process_name="cacls.exe" OR process_name="calc.exe"
|
||||
OR process_name="cdpreference.exe" OR process_name="certreq.exe" OR process_name="certutil.exe"
|
||||
OR process_name="change.exe" OR process_name="changepk.exe" OR process_name="charmap.exe"
|
||||
OR process_name="chglogon.exe" OR process_name="chgport.exe" OR process_name="chgusr.exe"
|
||||
OR process_name="chkdsk.exe" OR process_name="chkntfs.exe" OR process_name="choice.exe"
|
||||
OR process_name="cipher.exe" OR process_name="cleanmgr.exe" OR process_name="cliconfg.exe"
|
||||
OR process_name="clip.exe" OR process_name="cmd.exe" OR process_name="cmdkey.exe"
|
||||
OR process_name="cmdl32.exe" OR process_name="cmmon32.exe" OR process_name="cmstp.exe"
|
||||
OR process_name="cofire.exe" OR process_name="colorcpl.exe" OR process_name="comp.exe"
|
||||
OR process_name="compact.exe" OR process_name="conhost.exe" OR process_name="consent.exe"
|
||||
OR process_name="control.exe" OR process_name="convert.exe" OR process_name="credwiz.exe"
|
||||
OR process_name="cscript.exe" OR process_name="csrss.exe" OR process_name="ctfmon.exe"
|
||||
OR process_name="cttune.exe" OR process_name="cttunesvr.exe" OR process_name="dashost.exe"
|
||||
OR process_name="dccw.exe" OR process_name="dcomcnfg.exe" OR process_name="ddodiag.exe"
|
||||
OR process_name="dfrgui.exe" OR process_name="dialer.exe" OR process_name="diantz.exe"
|
||||
OR process_name="dinotify.exe" OR process_name="diskpart.exe" OR process_name="diskperf.exe"
|
||||
OR process_name="diskraid.exe" OR process_name="dispdiag.exe" OR process_name="djoin.exe"
|
||||
OR process_name="dllhost.exe" OR process_name="dllhst3g.exe" OR process_name="dmcertinst.exe"
|
||||
OR process_name="dmcfghost.exe" OR process_name="dmclient.exe" OR process_name="dnscacheugc.exe"
|
||||
OR process_name="doskey.exe" OR process_name="dpapimig.exe" OR process_name="dpnsvr.exe"
|
||||
OR process_name="driverquery.exe" OR process_name="drvcfg.exe" OR process_name="drvinst.exe"
|
||||
OR process_name="dsregcmd.exe" OR process_name="dstokenclean.exe" OR process_name="dvdplay.exe"
|
||||
OR process_name="dvdupgrd.exe" OR process_name="dwm.exe" OR process_name="dxdiag.exe"
|
||||
OR process_name="easinvoker.exe" OR process_name="efsui.exe";
|
||||
|
||||
$cond_4 = | from $ssa_input | where process_name="embeddedapplauncher.exe" OR process_name="esentutl.exe"
|
||||
OR process_name="eudcedit.exe" OR process_name="eventcreate.exe" OR process_name="eventvwr.exe"
|
||||
OR process_name="expand.exe" OR process_name="extrac32.exe" OR process_name="fc.exe"
|
||||
OR process_name="fhmanagew.exe" OR process_name="find.exe" OR process_name="findstr.exe"
|
||||
OR process_name="finger.exe" OR process_name="fixmapi.exe" OR process_name="fltmc.exe"
|
||||
OR process_name="fodhelper.exe" OR process_name="fontdrvhost.exe" OR process_name="fontview.exe"
|
||||
OR process_name="forfiles.exe" OR process_name="fsavailux.exe" OR process_name="fsquirt.exe"
|
||||
OR process_name="fsutil.exe" OR process_name="ftp.exe" OR process_name="fvenotify.exe"
|
||||
OR process_name="fveprompt.exe" OR process_name="getmac.exe" OR process_name="gpresult.exe"
|
||||
OR process_name="gpscript.exe" OR process_name="gpupdate.exe" OR process_name="grpconv.exe"
|
||||
OR process_name="hdwwiz.exe" OR process_name="help.exe" OR process_name="hwrcomp.exe"
|
||||
OR process_name="hwrreg.exe" OR process_name="icacls.exe" OR process_name="icardagt.exe"
|
||||
OR process_name="icsunattend.exe" OR process_name="ie4uinit.exe" OR process_name="ieunatt.exe"
|
||||
OR process_name="ieetwcollector.exe" OR process_name="iexpress.exe" OR process_name="immersivetpmvscmgrsvr.exe"
|
||||
OR process_name="ipconfig.exe" OR process_name="irftp.exe" OR process_name="iscsicli.exe"
|
||||
OR process_name="iscsicpl.exe" OR process_name="isoburn.exe" OR process_name="klist.exe"
|
||||
OR process_name="ksetup.exe" OR process_name="ktmutil.exe" OR process_name="label.exe"
|
||||
OR process_name="licensingdiag.exe" OR process_name="lodctr.exe" OR process_name="logagent.exe"
|
||||
OR process_name="logman.exe" OR process_name="logoff.exe" OR process_name="lpkinstall.exe"
|
||||
OR process_name="lpksetup.exe" OR process_name="lpremove.exe" OR process_name="lsass.exe"
|
||||
OR process_name="lsm.exe" OR process_name="makecab.exe" OR process_name="manage-bde.exe"
|
||||
OR process_name="mblctr.exe" OR process_name="mcbuilder.exe" OR process_name="mctadmin.exe"
|
||||
OR process_name="mfpmp.exe" OR process_name="mmc.exe" OR process_name="mobsync.exe"
|
||||
OR process_name="mountvol.exe" OR process_name="mpnotify.exe" OR process_name="msconfig.exe"
|
||||
OR process_name="msdt.exe" OR process_name="msdtc.exe" OR process_name="msfeedssync.exe"
|
||||
OR process_name="msg.exe" OR process_name="mshta.exe" OR process_name="msiexec.exe"
|
||||
OR process_name="msinfo32.exe" OR process_name="mspaint.exe" OR process_name="msra.exe"
|
||||
OR process_name="mstsc.exe" OR process_name="mtstocom.exe" OR process_name="nbtstat.exe"
|
||||
OR process_name="ndadmin.exe" OR process_name="net.exe" OR process_name="net1.exe"
|
||||
OR process_name="netbtugc.exe" OR process_name="netcfg.exe" OR process_name="netiougc.exe"
|
||||
OR process_name="netsh.exe" OR process_name="newdev.exe" OR process_name="nltest.exe"
|
||||
OR process_name="notepad.exe" OR process_name="nslookup.exe" OR process_name="ntoskrnl.exe"
|
||||
OR process_name="ntprint.exe" OR process_name="ocsetup.exe" OR process_name="odbcad32.exe"
|
||||
OR process_name="odbcconf.exe" OR process_name="omadmclient.exe" OR process_name="omadmprc.exe";
|
||||
|
||||
$cond_5 = | from $ssa_input | where process_name="openfiles.exe" OR process_name="osk.exe"
|
||||
OR process_name="p2phost.exe" OR process_name="pcalua.exe" OR process_name="pcaui.exe"
|
||||
OR process_name="pcawrk.exe" OR process_name="pcwrun.exe" OR process_name="perfmon.exe"
|
||||
OR process_name="phoneactivate.exe" OR process_name="plasrv.exe" OR process_name="poqexec.exe"
|
||||
OR process_name="powercfg.exe" OR process_name="prevhost.exe" OR process_name="print.exe"
|
||||
OR process_name="printfilterpipelinesvc.exe" OR process_name="printui.exe" OR process_name="proquota.exe"
|
||||
OR process_name="provtool.exe" OR process_name="psr.exe" OR process_name="pwlauncher.exe"
|
||||
OR process_name="qappsrv.exe" OR process_name="qprocess.exe" OR process_name="query.exe"
|
||||
OR process_name="quser.exe" OR process_name="qwinsta.exe" OR process_name="rasautou.exe"
|
||||
OR process_name="rasdial.exe" OR process_name="raserver.exe" OR process_name="rasphone.exe"
|
||||
OR process_name="rdpclip.exe" OR process_name="rdpinput.exe" OR process_name="rdrleakdiag.exe"
|
||||
OR process_name="recdisc.exe" OR process_name="recover.exe" OR process_name="reg.exe"
|
||||
OR process_name="regedt32.exe" OR process_name="regini.exe" OR process_name="regsvr32.exe"
|
||||
OR process_name="rekeywiz.exe" OR process_name="relog.exe" OR process_name="repair-bde.exe"
|
||||
OR process_name="replace.exe" OR process_name="reset.exe" OR process_name="resmon.exe"
|
||||
OR process_name="rmttpmvscmgrsvr.exe" OR process_name="rrinstaller.exe" OR process_name="rstrui.exe"
|
||||
OR process_name="runas.exe" OR process_name="rundll32.exe" OR process_name="runonce.exe"
|
||||
OR process_name="rwinsta.exe" OR process_name="sbunattend.exe" OR process_name="sc.exe"
|
||||
OR process_name="schtasks.exe" OR process_name="sdbinst.exe" OR process_name="sdchange.exe"
|
||||
OR process_name="sdclt.exe" OR process_name="sdiagnhost.exe" OR process_name="secinit.exe"
|
||||
OR process_name="services.exe" OR process_name="sessionmsg.exe" OR process_name="sethc.exe"
|
||||
OR process_name="setspn.exe" OR process_name="setupcl.exe" OR process_name="setupugc.exe"
|
||||
OR process_name="setx.exe" OR process_name="sfc.exe" OR process_name="shadow.exe"
|
||||
OR process_name="shrpubw.exe" OR process_name="shutdown.exe" OR process_name="sigverif.exe"
|
||||
OR process_name="sihost.exe" OR process_name="slui.exe" OR process_name="smss.exe"
|
||||
OR process_name="snmptrap.exe" OR process_name="sort.exe" OR process_name="spinstall.exe"
|
||||
OR process_name="spoolsv.exe" OR process_name="sppsvc.exe" OR process_name="spreview.exe"
|
||||
OR process_name="srdelayed.exe" OR process_name="subst.exe" OR process_name="svchost.exe"
|
||||
OR process_name="sxstrace.exe" OR process_name="syskey.exe" OR process_name="systeminfo.exe"
|
||||
OR process_name="systemreset.exe" OR process_name="systray.exe" OR process_name="tabcal.exe"
|
||||
OR process_name="takeown.exe" OR process_name="taskeng.exe" OR process_name="taskhost.exe"
|
||||
OR process_name="taskhostw.exe" OR process_name="taskkill.exe" OR process_name="tasklist.exe"
|
||||
OR process_name="taskmgr.exe" OR process_name="tcmsetup.exe" OR process_name="timeout.exe"
|
||||
OR process_name="tpmvscmgr.exe" OR process_name="tpmvscmgrsvr.exe";
|
||||
|
||||
$cond_6 = | from $ssa_input | where process_name="tracerpt.exe" OR process_name="tscon.exe"
|
||||
OR process_name="tsdiscon.exe" OR process_name="tskill.exe" OR process_name="typeperf.exe"
|
||||
OR process_name="tzsync.exe" OR process_name="tzutil.exe" OR process_name="ucsvc.exe"
|
||||
OR process_name="unlodctr.exe" OR process_name="unregmp2.exe" OR process_name="upnpcont.exe"
|
||||
OR process_name="userinit.exe" OR process_name="vds.exe" OR process_name="vdsldr.exe"
|
||||
OR process_name="verclsid.exe" OR process_name="verifier.exe" OR process_name="verifiergui.exe"
|
||||
OR process_name="vmicsvc.exe" OR process_name="vssadmin.exe" OR process_name="w32tm.exe"
|
||||
OR process_name="waitfor.exe" OR process_name="wbadmin.exe" OR process_name="wbengine.exe"
|
||||
OR process_name="wecutil.exe" OR process_name="wermgr.exe" OR process_name="wevtutil.exe"
|
||||
OR process_name="wextract.exe" OR process_name="where.exe" OR process_name="whoami.exe"
|
||||
OR process_name="wiaacmgr.exe" OR process_name="wiawow64.exe" OR process_name="wifitask.exe"
|
||||
OR process_name="wimserv.exe" OR process_name="wininit.exe" OR process_name="winload.exe"
|
||||
OR process_name="winlogon.exe" OR process_name="winresume.exe" OR process_name="winrs.exe"
|
||||
OR process_name="winrshost.exe" OR process_name="winver.exe" OR process_name="wisptis.exe"
|
||||
OR process_name="wkspbroker.exe" OR process_name="wksprt.exe" OR process_name="wlanext.exe"
|
||||
OR process_name="wlrmdr.exe" OR process_name="wowreg32.exe" OR process_name="wpnpinst.exe"
|
||||
OR process_name="wpr.exe" OR process_name="write.exe" OR process_name="wscript.exe"
|
||||
OR process_name="wsmprovhost.exe" OR process_name="wsqmcons.exe" OR process_name="wuapihost.exe"
|
||||
OR process_name="wuapp.exe" OR process_name="wuauclt.exe" OR process_name="wusa.exe"
|
||||
OR process_name="xcopy.exe" OR process_name="xpsrchvw.exe" OR process_name="xwizard.exe";
|
||||
|
||||
| from $cond_1 | union $cond_2 | union $cond_3 | union $cond_4 | union $cond_5 |
|
||||
union $cond_6 | where match_regex(process_path, /(?i)\\windows\\system32/)=false
|
||||
AND match_regex(process_path, /(?i)\\windows\\syswow64/)=false | eval start_time=timestamp,
|
||||
end_time=timestamp, entities=mvappend(device, user), body=create_map(["event_id",
|
||||
event_id, "process_path", process_path, "process_name", process_name]) | into write_ssa_detected_events();'
|
||||
search: " $ssa_input = \n| from read_ssa_enriched_events() \n| eval device=ucast(map_get(input_event,\
|
||||
\ \"dest_device_id\"), \"string\", null), user=ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), timestamp=parse_long(ucast(map_get(input_event, \"_time\"\
|
||||
), \"string\", null)), process_name=lower(ucast(map_get(input_event, \"process_name\"\
|
||||
), \"string\", null)), process_path=lower(ucast(map_get(input_event, \"process_path\"\
|
||||
), \"string\", null)), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null);\n$cond_1 = \n| from $ssa_input \n| where process_name=\"arp.exe\" OR process_name=\"\
|
||||
adaptertroubleshooter.exe\" OR process_name=\"applicationframehost.exe\" OR process_name=\"\
|
||||
atbroker.exe\" OR process_name=\"authhost.exe\" OR process_name=\"autoworkplace.exe\"\
|
||||
\ OR process_name=\"axinstui.exe\" OR process_name=\"backgroundtransferhost.exe\"\
|
||||
\ OR process_name=\"bdehdcfg.exe\" OR process_name=\"bdeuisrv.exe\" OR process_name=\"\
|
||||
bdeunlockwizard.exe\" OR process_name=\"bitlockerdeviceencryption.exe\" OR process_name=\"\
|
||||
bitlockerwizard.exe\" OR process_name=\"bitlockerwizardelev.exe\" OR process_name=\"\
|
||||
bytecodegenerator.exe\" OR process_name=\"camerasettingsuihost.exe\" OR process_name=\"\
|
||||
castsrv.exe\" OR process_name=\"certenrollctrl.exe\" OR process_name=\"checknetisolation.exe\"\
|
||||
\ OR process_name=\"clipup.exe\" OR process_name=\"cloudexperiencehostbroker.exe\"\
|
||||
\ OR process_name=\"cloudnotifications.exe\" OR process_name=\"cloudstoragewizard.exe\"\
|
||||
\ OR process_name=\"compmgmtlauncher.exe\" OR process_name=\"compattelrunner.exe\"\
|
||||
\ OR process_name=\"computerdefaults.exe\" OR process_name=\"credentialuibroker.exe\"\
|
||||
\ OR process_name=\"dfdwiz.exe\" OR process_name=\"dwwin.exe\" OR process_name=\"\
|
||||
dataexchangehost.exe\" OR process_name=\"defrag.exe\" OR process_name=\"devicedisplayobjectprovider.exe\"\
|
||||
\ OR process_name=\"deviceeject.exe\" OR process_name=\"deviceenroller.exe\" OR\
|
||||
\ process_name=\"devicepairingwizard.exe\" OR process_name=\"deviceproperties.exe\"\
|
||||
\ OR process_name=\"disksnapshot.exe\" OR process_name=\"dism.exe\" OR process_name=\"\
|
||||
displayswitch.exe\" OR process_name=\"dmnotificationbroker.exe\" OR process_name=\"\
|
||||
dmomacpmo.exe\" OR process_name=\"dpiscaling.exe\" OR process_name=\"dsmusertask.exe\"\
|
||||
\ OR process_name=\"dxpserver.exe\" OR process_name=\"edpcleanup.exe\" OR process_name=\"\
|
||||
eosnotify.exe\" OR process_name=\"eap3host.exe\" OR process_name=\"easpoliciesbrokerhost.exe\"\
|
||||
\ OR process_name=\"easeofaccessdialog.exe\" OR process_name=\"ehstorauthn.exe\"\
|
||||
\ OR process_name=\"fxscover.exe\" OR process_name=\"fxssvc.exe\" OR process_name=\"\
|
||||
fxsunatd.exe\" OR process_name=\"filehistory.exe\" OR process_name=\"fondue.exe\"\
|
||||
\ OR process_name=\"gamepanel.exe\" OR process_name=\"genvalobj.exe\" OR process_name=\"\
|
||||
gettingstarted.exe\" OR process_name=\"hostname.exe\" OR process_name=\"icsentitlementhost.exe\"\
|
||||
\ OR process_name=\"infdefaultinstall.exe\" OR process_name=\"installagent.exe\"\
|
||||
\ OR process_name=\"languagecomponentsinstallercomhandler.exe\" OR process_name=\"\
|
||||
launchtm.exe\" OR process_name=\"launchwinapp.exe\" OR process_name=\"legacynetuxhost.exe\"\
|
||||
\ OR process_name=\"licensemanagershellext.exe\" OR process_name=\"licensingui.exe\"\
|
||||
\ OR process_name=\"locationnotificationwindows.exe\" OR process_name=\"locationnotifications.exe\"\
|
||||
\ OR process_name=\"locator.exe\" OR process_name=\"lockapphost.exe\" OR process_name=\"\
|
||||
lockscreencontentserver.exe\" OR process_name=\"logonui.exe\" OR process_name=\"\
|
||||
lsaiso.exe\" OR process_name=\"mdeserver.exe\" OR process_name=\"mdmagent.exe\"\
|
||||
\ OR process_name=\"mdmappinstaller.exe\" OR process_name=\"mrinfo.exe\" OR process_name=\"\
|
||||
mrt.exe\" OR process_name=\"mschedexe.exe\" OR process_name=\"magnify.exe\" OR process_name=\"\
|
||||
mbaeparsertask.exe\" OR process_name=\"mdres.exe\" OR process_name=\"mdsched.exe\"\
|
||||
\ OR process_name=\"migautoplay.exe\" OR process_name=\"mpsigstub.exe\" OR process_name=\"\
|
||||
msspellcheckinghost.exe\" OR process_name=\"muiunattend.exe\" OR process_name=\"\
|
||||
multidigimon.exe\" OR process_name=\"musnotification.exe\" OR process_name=\"musnotificationux.exe\"\
|
||||
\ OR process_name=\"napstat.exe\" OR process_name=\"netstat.exe\" OR process_name=\"\
|
||||
narrator.exe\" OR process_name=\"netcfgnotifyobjecthost.exe\" OR process_name=\"\
|
||||
netevtfwdr.exe\" OR process_name=\"netproj.exe\" OR process_name=\"netplwiz.exe\"\
|
||||
\ OR process_name=\"networkuxbroker.exe\";\n$cond_2 = \n| from $ssa_input \n| where\
|
||||
\ process_name=\"openwith.exe\" OR process_name=\"optionalfeatures.exe\" OR process_name=\"\
|
||||
pathping.exe\" OR process_name=\"ping.exe\" OR process_name=\"passwordonwakesettingflyout.exe\"\
|
||||
\ OR process_name=\"pickerhost.exe\" OR process_name=\"pkgmgr.exe\" OR process_name=\"\
|
||||
pnpunattend.exe\" OR process_name=\"pnputil.exe\" OR process_name=\"presentationhost.exe\"\
|
||||
\ OR process_name=\"presentationsettings.exe\" OR process_name=\"printbrmui.exe\"\
|
||||
\ OR process_name=\"printdialoghost.exe\" OR process_name=\"printdialoghost3d.exe\"\
|
||||
\ OR process_name=\"printisolationhost.exe\" OR process_name=\"proximityuxhost.exe\"\
|
||||
\ OR process_name=\"rdspnf.exe\" OR process_name=\"rmactivate.exe\" OR process_name=\"\
|
||||
rmactivate_isv.exe\" OR process_name=\"rmactivate_ssp.exe\" OR process_name=\"rmactivate_ssp_isv.exe\"\
|
||||
\ OR process_name=\"route.exe\" OR process_name=\"rdpsa.exe\" OR process_name=\"\
|
||||
rdpsaproxy.exe\" OR process_name=\"rdpsauachelper.exe\" OR process_name=\"reagentc.exe\"\
|
||||
\ OR process_name=\"recoverydrive.exe\" OR process_name=\"register-cimprovider.exe\"\
|
||||
\ OR process_name=\"registeriepkeys.exe\" OR process_name=\"relpost.exe\" OR process_name=\"\
|
||||
remoteposworker.exe\" OR process_name=\"rmclient.exe\" OR process_name=\"robocopy.exe\"\
|
||||
\ OR process_name=\"rpcping.exe\" OR process_name=\"runlegacycplelevated.exe\" OR\
|
||||
\ process_name=\"runtimebroker.exe\" OR process_name=\"sihclient.exe\" OR process_name=\"\
|
||||
searchfilterhost.exe\" OR process_name=\"searchindexer.exe\" OR process_name=\"\
|
||||
searchprotocolhost.exe\" OR process_name=\"secedit.exe\" OR process_name=\"sensordataservice.exe\"\
|
||||
\ OR process_name=\"setieinstalleddate.exe\" OR process_name=\"settingsynchost.exe\"\
|
||||
\ OR process_name=\"slidetoshutdown.exe\" OR process_name=\"smartscreensettings.exe\"\
|
||||
\ OR process_name=\"sndvol.exe\" OR process_name=\"snippingtool.exe\" OR process_name=\"\
|
||||
soundrecorder.exe\" OR process_name=\"spaceagent.exe\" OR process_name=\"sppextcomobj.exe\"\
|
||||
\ OR process_name=\"srtasks.exe\" OR process_name=\"stikynot.exe\" OR process_name=\"\
|
||||
synchost.exe\" OR process_name=\"sysreseterr.exe\" OR process_name=\"systempropertiesadvanced.exe\"\
|
||||
\ OR process_name=\"systempropertiescomputername.exe\" OR process_name=\"systempropertiesdataexecutionprevention.exe\"\
|
||||
\ OR process_name=\"systempropertieshardware.exe\" OR process_name=\"systempropertiesperformance.exe\"\
|
||||
\ OR process_name=\"systempropertiesprotection.exe\" OR process_name=\"systempropertiesremote.exe\"\
|
||||
\ OR process_name=\"systemsettingsadminflows.exe\" OR process_name=\"systemsettingsbroker.exe\"\
|
||||
\ OR process_name=\"systemsettingsremovedevice.exe\" OR process_name=\"tcpsvcs.exe\"\
|
||||
\ OR process_name=\"tracert.exe\" OR process_name=\"tstheme.exe\" OR process_name=\"\
|
||||
tswbprxy.exe\" OR process_name=\"tapiunattend.exe\" OR process_name=\"taskmgr.exe\"\
|
||||
\ OR process_name=\"thumbnailextractionhost.exe\" OR process_name=\"tokenbrokercookies.exe\"\
|
||||
\ OR process_name=\"tpminit.exe\" OR process_name=\"tswpfwrp.exe\" OR process_name=\"\
|
||||
ui0detect.exe\" OR process_name=\"upgraderesultsui.exe\" OR process_name=\"useraccountbroker.exe\"\
|
||||
\ OR process_name=\"useraccountcontrolsettings.exe\" OR process_name=\"usoclient.exe\"\
|
||||
\ OR process_name=\"utilman.exe\" OR process_name=\"vssvc.exe\" OR process_name=\"\
|
||||
vaultcmd.exe\" OR process_name=\"vaultsysui.exe\" OR process_name=\"wfs.exe\" OR\
|
||||
\ process_name=\"wmpdmc.exe\" OR process_name=\"wpdshextautoplay.exe\" OR process_name=\"\
|
||||
wscollect.exe\" OR process_name=\"wsmanhttpconfig.exe\" OR process_name=\"wsreset.exe\"\
|
||||
\ OR process_name=\"wudfhost.exe\" OR process_name=\"wwahost.exe\" OR process_name=\"\
|
||||
wallpaperhost.exe\" OR process_name=\"webcache.exe\" OR process_name=\"werfault.exe\"\
|
||||
\ OR process_name=\"werfaultsecure.exe\" OR process_name=\"winsat.exe\" OR process_name=\"\
|
||||
windows.media.backgroundplayback.exe\" OR process_name=\"windowsactiondialog.exe\"\
|
||||
\ OR process_name=\"windowsanytimeupgrade.exe\" OR process_name=\"windowsanytimeupgraderesults.exe\"\
|
||||
;\n$cond_3 = \n| from $ssa_input \n| where process_name=\"windowsanytimeupgradeui.exe\"\
|
||||
\ OR process_name=\"windowsupdateelevatedinstaller.exe\" OR process_name=\"workfolders.exe\"\
|
||||
\ OR process_name=\"wpcmon.exe\" OR process_name=\"acu.exe\" OR process_name=\"\
|
||||
aitagent.exe\" OR process_name=\"aitstatic.exe\" OR process_name=\"alg.exe\" OR\
|
||||
\ process_name=\"appidcertstorecheck.exe\" OR process_name=\"appidpolicyconverter.exe\"\
|
||||
\ OR process_name=\"at.exe\" OR process_name=\"attrib.exe\" OR process_name=\"audiodg.exe\"\
|
||||
\ OR process_name=\"auditpol.exe\" OR process_name=\"autochk.exe\" OR process_name=\"\
|
||||
autoconv.exe\" OR process_name=\"autofmt.exe\" OR process_name=\"baaupdate.exe\"\
|
||||
\ OR process_name=\"backgroundtaskhost.exe\" OR process_name=\"bcastdvr.exe\" OR\
|
||||
\ process_name=\"bcdboot.exe\" OR process_name=\"bcdedit.exe\" OR process_name=\"\
|
||||
bdechangepin.exe\" OR process_name=\"bdeunlock.exe\" OR process_name=\"bitsadmin.exe\"\
|
||||
\ OR process_name=\"bootcfg.exe\" OR process_name=\"bootim.exe\" OR process_name=\"\
|
||||
bootsect.exe\" OR process_name=\"bridgeunattend.exe\" OR process_name=\"browser_broker.exe\"\
|
||||
\ OR process_name=\"bthudtask.exe\" OR process_name=\"cacls.exe\" OR process_name=\"\
|
||||
calc.exe\" OR process_name=\"cdpreference.exe\" OR process_name=\"certreq.exe\"\
|
||||
\ OR process_name=\"certutil.exe\" OR process_name=\"change.exe\" OR process_name=\"\
|
||||
changepk.exe\" OR process_name=\"charmap.exe\" OR process_name=\"chglogon.exe\"\
|
||||
\ OR process_name=\"chgport.exe\" OR process_name=\"chgusr.exe\" OR process_name=\"\
|
||||
chkdsk.exe\" OR process_name=\"chkntfs.exe\" OR process_name=\"choice.exe\" OR process_name=\"\
|
||||
cipher.exe\" OR process_name=\"cleanmgr.exe\" OR process_name=\"cliconfg.exe\" OR\
|
||||
\ process_name=\"clip.exe\" OR process_name=\"cmd.exe\" OR process_name=\"cmdkey.exe\"\
|
||||
\ OR process_name=\"cmdl32.exe\" OR process_name=\"cmmon32.exe\" OR process_name=\"\
|
||||
cmstp.exe\" OR process_name=\"cofire.exe\" OR process_name=\"colorcpl.exe\" OR process_name=\"\
|
||||
comp.exe\" OR process_name=\"compact.exe\" OR process_name=\"conhost.exe\" OR process_name=\"\
|
||||
consent.exe\" OR process_name=\"control.exe\" OR process_name=\"convert.exe\" OR\
|
||||
\ process_name=\"credwiz.exe\" OR process_name=\"cscript.exe\" OR process_name=\"\
|
||||
csrss.exe\" OR process_name=\"ctfmon.exe\" OR process_name=\"cttune.exe\" OR process_name=\"\
|
||||
cttunesvr.exe\" OR process_name=\"dashost.exe\" OR process_name=\"dccw.exe\" OR\
|
||||
\ process_name=\"dcomcnfg.exe\" OR process_name=\"ddodiag.exe\" OR process_name=\"\
|
||||
dfrgui.exe\" OR process_name=\"dialer.exe\" OR process_name=\"diantz.exe\" OR process_name=\"\
|
||||
dinotify.exe\" OR process_name=\"diskpart.exe\" OR process_name=\"diskperf.exe\"\
|
||||
\ OR process_name=\"diskraid.exe\" OR process_name=\"dispdiag.exe\" OR process_name=\"\
|
||||
djoin.exe\" OR process_name=\"dllhost.exe\" OR process_name=\"dllhst3g.exe\" OR\
|
||||
\ process_name=\"dmcertinst.exe\" OR process_name=\"dmcfghost.exe\" OR process_name=\"\
|
||||
dmclient.exe\" OR process_name=\"dnscacheugc.exe\" OR process_name=\"doskey.exe\"\
|
||||
\ OR process_name=\"dpapimig.exe\" OR process_name=\"dpnsvr.exe\" OR process_name=\"\
|
||||
driverquery.exe\" OR process_name=\"drvcfg.exe\" OR process_name=\"drvinst.exe\"\
|
||||
\ OR process_name=\"dsregcmd.exe\" OR process_name=\"dstokenclean.exe\" OR process_name=\"\
|
||||
dvdplay.exe\" OR process_name=\"dvdupgrd.exe\" OR process_name=\"dwm.exe\" OR process_name=\"\
|
||||
dxdiag.exe\" OR process_name=\"easinvoker.exe\" OR process_name=\"efsui.exe\";\n\
|
||||
$cond_4 = \n| from $ssa_input \n| where process_name=\"embeddedapplauncher.exe\"\
|
||||
\ OR process_name=\"esentutl.exe\" OR process_name=\"eudcedit.exe\" OR process_name=\"\
|
||||
eventcreate.exe\" OR process_name=\"eventvwr.exe\" OR process_name=\"expand.exe\"\
|
||||
\ OR process_name=\"extrac32.exe\" OR process_name=\"fc.exe\" OR process_name=\"\
|
||||
fhmanagew.exe\" OR process_name=\"find.exe\" OR process_name=\"findstr.exe\" OR\
|
||||
\ process_name=\"finger.exe\" OR process_name=\"fixmapi.exe\" OR process_name=\"\
|
||||
fltmc.exe\" OR process_name=\"fodhelper.exe\" OR process_name=\"fontdrvhost.exe\"\
|
||||
\ OR process_name=\"fontview.exe\" OR process_name=\"forfiles.exe\" OR process_name=\"\
|
||||
fsavailux.exe\" OR process_name=\"fsquirt.exe\" OR process_name=\"fsutil.exe\" OR\
|
||||
\ process_name=\"ftp.exe\" OR process_name=\"fvenotify.exe\" OR process_name=\"\
|
||||
fveprompt.exe\" OR process_name=\"getmac.exe\" OR process_name=\"gpresult.exe\"\
|
||||
\ OR process_name=\"gpscript.exe\" OR process_name=\"gpupdate.exe\" OR process_name=\"\
|
||||
grpconv.exe\" OR process_name=\"hdwwiz.exe\" OR process_name=\"help.exe\" OR process_name=\"\
|
||||
hwrcomp.exe\" OR process_name=\"hwrreg.exe\" OR process_name=\"icacls.exe\" OR process_name=\"\
|
||||
icardagt.exe\" OR process_name=\"icsunattend.exe\" OR process_name=\"ie4uinit.exe\"\
|
||||
\ OR process_name=\"ieunatt.exe\" OR process_name=\"ieetwcollector.exe\" OR process_name=\"\
|
||||
iexpress.exe\" OR process_name=\"immersivetpmvscmgrsvr.exe\" OR process_name=\"\
|
||||
ipconfig.exe\" OR process_name=\"irftp.exe\" OR process_name=\"iscsicli.exe\" OR\
|
||||
\ process_name=\"iscsicpl.exe\" OR process_name=\"isoburn.exe\" OR process_name=\"\
|
||||
klist.exe\" OR process_name=\"ksetup.exe\" OR process_name=\"ktmutil.exe\" OR process_name=\"\
|
||||
label.exe\" OR process_name=\"licensingdiag.exe\" OR process_name=\"lodctr.exe\"\
|
||||
\ OR process_name=\"logagent.exe\" OR process_name=\"logman.exe\" OR process_name=\"\
|
||||
logoff.exe\" OR process_name=\"lpkinstall.exe\" OR process_name=\"lpksetup.exe\"\
|
||||
\ OR process_name=\"lpremove.exe\" OR process_name=\"lsass.exe\" OR process_name=\"\
|
||||
lsm.exe\" OR process_name=\"makecab.exe\" OR process_name=\"manage-bde.exe\" OR\
|
||||
\ process_name=\"mblctr.exe\" OR process_name=\"mcbuilder.exe\" OR process_name=\"\
|
||||
mctadmin.exe\" OR process_name=\"mfpmp.exe\" OR process_name=\"mmc.exe\" OR process_name=\"\
|
||||
mobsync.exe\" OR process_name=\"mountvol.exe\" OR process_name=\"mpnotify.exe\"\
|
||||
\ OR process_name=\"msconfig.exe\" OR process_name=\"msdt.exe\" OR process_name=\"\
|
||||
msdtc.exe\" OR process_name=\"msfeedssync.exe\" OR process_name=\"msg.exe\" OR process_name=\"\
|
||||
mshta.exe\" OR process_name=\"msiexec.exe\" OR process_name=\"msinfo32.exe\" OR\
|
||||
\ process_name=\"mspaint.exe\" OR process_name=\"msra.exe\" OR process_name=\"mstsc.exe\"\
|
||||
\ OR process_name=\"mtstocom.exe\" OR process_name=\"nbtstat.exe\" OR process_name=\"\
|
||||
ndadmin.exe\" OR process_name=\"net.exe\" OR process_name=\"net1.exe\" OR process_name=\"\
|
||||
netbtugc.exe\" OR process_name=\"netcfg.exe\" OR process_name=\"netiougc.exe\" OR\
|
||||
\ process_name=\"netsh.exe\" OR process_name=\"newdev.exe\" OR process_name=\"nltest.exe\"\
|
||||
\ OR process_name=\"notepad.exe\" OR process_name=\"nslookup.exe\" OR process_name=\"\
|
||||
ntoskrnl.exe\" OR process_name=\"ntprint.exe\" OR process_name=\"ocsetup.exe\" OR\
|
||||
\ process_name=\"odbcad32.exe\" OR process_name=\"odbcconf.exe\" OR process_name=\"\
|
||||
omadmclient.exe\" OR process_name=\"omadmprc.exe\";\n$cond_5 = \n| from $ssa_input\
|
||||
\ \n| where process_name=\"openfiles.exe\" OR process_name=\"osk.exe\" OR process_name=\"\
|
||||
p2phost.exe\" OR process_name=\"pcalua.exe\" OR process_name=\"pcaui.exe\" OR process_name=\"\
|
||||
pcawrk.exe\" OR process_name=\"pcwrun.exe\" OR process_name=\"perfmon.exe\" OR process_name=\"\
|
||||
phoneactivate.exe\" OR process_name=\"plasrv.exe\" OR process_name=\"poqexec.exe\"\
|
||||
\ OR process_name=\"powercfg.exe\" OR process_name=\"prevhost.exe\" OR process_name=\"\
|
||||
print.exe\" OR process_name=\"printfilterpipelinesvc.exe\" OR process_name=\"printui.exe\"\
|
||||
\ OR process_name=\"proquota.exe\" OR process_name=\"provtool.exe\" OR process_name=\"\
|
||||
psr.exe\" OR process_name=\"pwlauncher.exe\" OR process_name=\"qappsrv.exe\" OR\
|
||||
\ process_name=\"qprocess.exe\" OR process_name=\"query.exe\" OR process_name=\"\
|
||||
quser.exe\" OR process_name=\"qwinsta.exe\" OR process_name=\"rasautou.exe\" OR\
|
||||
\ process_name=\"rasdial.exe\" OR process_name=\"raserver.exe\" OR process_name=\"\
|
||||
rasphone.exe\" OR process_name=\"rdpclip.exe\" OR process_name=\"rdpinput.exe\"\
|
||||
\ OR process_name=\"rdrleakdiag.exe\" OR process_name=\"recdisc.exe\" OR process_name=\"\
|
||||
recover.exe\" OR process_name=\"reg.exe\" OR process_name=\"regedt32.exe\" OR process_name=\"\
|
||||
regini.exe\" OR process_name=\"regsvr32.exe\" OR process_name=\"rekeywiz.exe\" OR\
|
||||
\ process_name=\"relog.exe\" OR process_name=\"repair-bde.exe\" OR process_name=\"\
|
||||
replace.exe\" OR process_name=\"reset.exe\" OR process_name=\"resmon.exe\" OR process_name=\"\
|
||||
rmttpmvscmgrsvr.exe\" OR process_name=\"rrinstaller.exe\" OR process_name=\"rstrui.exe\"\
|
||||
\ OR process_name=\"runas.exe\" OR process_name=\"rundll32.exe\" OR process_name=\"\
|
||||
runonce.exe\" OR process_name=\"rwinsta.exe\" OR process_name=\"sbunattend.exe\"\
|
||||
\ OR process_name=\"sc.exe\" OR process_name=\"schtasks.exe\" OR process_name=\"\
|
||||
sdbinst.exe\" OR process_name=\"sdchange.exe\" OR process_name=\"sdclt.exe\" OR\
|
||||
\ process_name=\"sdiagnhost.exe\" OR process_name=\"secinit.exe\" OR process_name=\"\
|
||||
services.exe\" OR process_name=\"sessionmsg.exe\" OR process_name=\"sethc.exe\"\
|
||||
\ OR process_name=\"setspn.exe\" OR process_name=\"setupcl.exe\" OR process_name=\"\
|
||||
setupugc.exe\" OR process_name=\"setx.exe\" OR process_name=\"sfc.exe\" OR process_name=\"\
|
||||
shadow.exe\" OR process_name=\"shrpubw.exe\" OR process_name=\"shutdown.exe\" OR\
|
||||
\ process_name=\"sigverif.exe\" OR process_name=\"sihost.exe\" OR process_name=\"\
|
||||
slui.exe\" OR process_name=\"smss.exe\" OR process_name=\"snmptrap.exe\" OR process_name=\"\
|
||||
sort.exe\" OR process_name=\"spinstall.exe\" OR process_name=\"spoolsv.exe\" OR\
|
||||
\ process_name=\"sppsvc.exe\" OR process_name=\"spreview.exe\" OR process_name=\"\
|
||||
srdelayed.exe\" OR process_name=\"subst.exe\" OR process_name=\"svchost.exe\" OR\
|
||||
\ process_name=\"sxstrace.exe\" OR process_name=\"syskey.exe\" OR process_name=\"\
|
||||
systeminfo.exe\" OR process_name=\"systemreset.exe\" OR process_name=\"systray.exe\"\
|
||||
\ OR process_name=\"tabcal.exe\" OR process_name=\"takeown.exe\" OR process_name=\"\
|
||||
taskeng.exe\" OR process_name=\"taskhost.exe\" OR process_name=\"taskhostw.exe\"\
|
||||
\ OR process_name=\"taskkill.exe\" OR process_name=\"tasklist.exe\" OR process_name=\"\
|
||||
taskmgr.exe\" OR process_name=\"tcmsetup.exe\" OR process_name=\"timeout.exe\" OR\
|
||||
\ process_name=\"tpmvscmgr.exe\" OR process_name=\"tpmvscmgrsvr.exe\";\n$cond_6\
|
||||
\ = \n| from $ssa_input \n| where process_name=\"tracerpt.exe\" OR process_name=\"\
|
||||
tscon.exe\" OR process_name=\"tsdiscon.exe\" OR process_name=\"tskill.exe\" OR process_name=\"\
|
||||
typeperf.exe\" OR process_name=\"tzsync.exe\" OR process_name=\"tzutil.exe\" OR\
|
||||
\ process_name=\"ucsvc.exe\" OR process_name=\"unlodctr.exe\" OR process_name=\"\
|
||||
unregmp2.exe\" OR process_name=\"upnpcont.exe\" OR process_name=\"userinit.exe\"\
|
||||
\ OR process_name=\"vds.exe\" OR process_name=\"vdsldr.exe\" OR process_name=\"\
|
||||
verclsid.exe\" OR process_name=\"verifier.exe\" OR process_name=\"verifiergui.exe\"\
|
||||
\ OR process_name=\"vmicsvc.exe\" OR process_name=\"vssadmin.exe\" OR process_name=\"\
|
||||
w32tm.exe\" OR process_name=\"waitfor.exe\" OR process_name=\"wbadmin.exe\" OR process_name=\"\
|
||||
wbengine.exe\" OR process_name=\"wecutil.exe\" OR process_name=\"wermgr.exe\" OR\
|
||||
\ process_name=\"wevtutil.exe\" OR process_name=\"wextract.exe\" OR process_name=\"\
|
||||
where.exe\" OR process_name=\"whoami.exe\" OR process_name=\"wiaacmgr.exe\" OR process_name=\"\
|
||||
wiawow64.exe\" OR process_name=\"wifitask.exe\" OR process_name=\"wimserv.exe\"\
|
||||
\ OR process_name=\"wininit.exe\" OR process_name=\"winload.exe\" OR process_name=\"\
|
||||
winlogon.exe\" OR process_name=\"winresume.exe\" OR process_name=\"winrs.exe\" OR\
|
||||
\ process_name=\"winrshost.exe\" OR process_name=\"winver.exe\" OR process_name=\"\
|
||||
wisptis.exe\" OR process_name=\"wkspbroker.exe\" OR process_name=\"wksprt.exe\"\
|
||||
\ OR process_name=\"wlanext.exe\" OR process_name=\"wlrmdr.exe\" OR process_name=\"\
|
||||
wowreg32.exe\" OR process_name=\"wpnpinst.exe\" OR process_name=\"wpr.exe\" OR process_name=\"\
|
||||
write.exe\" OR process_name=\"wscript.exe\" OR process_name=\"wsmprovhost.exe\"\
|
||||
\ OR process_name=\"wsqmcons.exe\" OR process_name=\"wuapihost.exe\" OR process_name=\"\
|
||||
wuapp.exe\" OR process_name=\"wuauclt.exe\" OR process_name=\"wusa.exe\" OR process_name=\"\
|
||||
xcopy.exe\" OR process_name=\"xpsrchvw.exe\" OR process_name=\"xwizard.exe\";\n\n\
|
||||
| from $cond_1 \n| union $cond_2 \n| union $cond_3 \n| union $cond_4 \n| union $cond_5\
|
||||
\ \n| union $cond_6 \n| where match_regex(process_path, /(?i)\\\\windows\\\\system32/)=false\
|
||||
\ AND match_regex(process_path, /(?i)\\\\windows\\\\syswow64/)=false \n| eval start_time=timestamp,\
|
||||
\ end_time=timestamp, entities=mvappend(device, user), body=create_map([\"event_id\"\
|
||||
, event_id, \"process_path\", process_path, \"process_name\", process_name]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Defense Evasion Tactics
|
||||
|
||||
+17
-51
@@ -1,28 +1,6 @@
|
||||
author: Ignacio Bermudez Corrales, Splunk
|
||||
datamodel: []
|
||||
date: '2020-10-06'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: Command lines that are extremely long may be indicative of malicious
|
||||
activity on your hosts. This search leverages the Splunk Streaming ML DSP plugin
|
||||
to help identify command lines with lengths that are unusual for a given user. This
|
||||
@@ -36,25 +14,10 @@ known_false_positives: This detection may flag suspiciously long command lines w
|
||||
for the tracked process. Also, some legitimate applications may use long command
|
||||
lines. Such is the case of Ansible, that encodes Powershell scripts using long base64.
|
||||
Attackers may use this technique to obfuscate their payloads.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
kill_chain_phases:
|
||||
- Actions on Objectives
|
||||
nist:
|
||||
- PR.PT
|
||||
- DE.CM
|
||||
name: Unusually Long Command Line
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references: []
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 12
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 12
|
||||
risk_message: A process $process_name$ with a long commandline $cmd_line$ executed
|
||||
in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -81,20 +44,23 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: ' | from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)) | eval cmd_line=ucast(map_get(input_event, "process"),
|
||||
"string", null), dest_user_id=ucast(map_get(input_event, "dest_user_id"), "string",
|
||||
null), dest_device_id=ucast(map_get(input_event, "dest_device_id"), "string", null),
|
||||
process_name=ucast(map_get(input_event, "process_name"), "string", null), event_id=ucast(map_get(input_event,
|
||||
"event_id"), "string", null) | where cmd_line!=null and dest_user_id!=null | eval
|
||||
cmd_line_norm=replace(cast(cmd_line, "string"), /\s(--?\w+)|(\/\w+)/, " ARG"), cmd_line_norm=replace(cmd_line_norm,
|
||||
/\w:\\[^\s]+/, "PATH"), cmd_line_norm=replace(cmd_line_norm, /\d+/, "N"), input=parse_double(len(coalesce(cmd_line_norm,
|
||||
""))) | select timestamp, process_name, dest_device_id, dest_user_id, cmd_line,
|
||||
input | adaptive_threshold algorithm="quantile" entity="process_name" window=60480000
|
||||
| where label AND quantile>0.99 | first_time_event input_columns=["dest_device_id",
|
||||
"cmd_line"] | where first_time_dest_device_id_cmd_line | eval start_time = timestamp,
|
||||
end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id), body=create_map(["event_id",
|
||||
event_id, "cmd_line", cmd_line, "process_name", process_name]) | into write_ssa_detected_events();'
|
||||
search: " \n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)) \n| eval cmd_line=ucast(map_get(input_event, \"\
|
||||
process\"), \"string\", null), dest_user_id=ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), dest_device_id=ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line!=null and dest_user_id!=null \n| eval cmd_line_norm=replace(cast(cmd_line,\
|
||||
\ \"string\"), /\\s(--?\\w+)\n|(\\/\\w+)/, \" ARG\"), cmd_line_norm=replace(cmd_line_norm,\
|
||||
\ /\\w:\\\\[^\\s]+/, \"PATH\"), cmd_line_norm=replace(cmd_line_norm, /\\d+/, \"\
|
||||
N\"), input=parse_double(len(coalesce(cmd_line_norm, \"\"))) \n| select timestamp,\
|
||||
\ process_name, dest_device_id, dest_user_id, cmd_line, input \n| adaptive_threshold\
|
||||
\ algorithm=\"quantile\" entity=\"process_name\" window=60480000 \n| where label\
|
||||
\ AND quantile>0.99 \n| first_time_event input_columns=[\"dest_device_id\", \"cmd_line\"\
|
||||
] \n| where first_time_dest_device_id_cmd_line \n| eval start_time = timestamp,\
|
||||
\ end_time = timestamp, entities = mvappend(dest_device_id, dest_user_id), body=create_map([\"\
|
||||
event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\", process_name]) \n\
|
||||
| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Unusual Processes
|
||||
|
||||
+15
-55
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-15'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: The wevtutil.exe application is the windows event log utility. This searches
|
||||
for wevtutil.exe with parameters for clearing the application, security, setup,
|
||||
powershell, sysmon, or system event logs.
|
||||
@@ -35,30 +13,11 @@ how_to_implement: You must be ingesting data that records process activity from
|
||||
id: 5438113c-cdd9-11eb-93b8-acde48001122
|
||||
known_false_positives: The wevtutil.exe application is a legitimate Windows event
|
||||
log utility. Administrators may use it to manage Windows event logs.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
- CIS 13
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1070
|
||||
- T1070.001
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
name: WevtUtil Usage To Clear Logs
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://www.splunk.com/en_us/blog/security/detecting-clop-ransomware.html
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 63
|
||||
risk_message: A wevtutil process $process_name$ with commandline $cmd_line$ to clear
|
||||
event logs in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -91,20 +50,21 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND like(cmd_line, "% cl %") AND (match_regex(cmd_line,
|
||||
/(?i)security/)=true OR match_regex(cmd_line, /(?i)system/)=true OR match_regex(cmd_line,
|
||||
/(?i)sysmon/)=true OR match_regex(cmd_line, /(?i)application/)=true OR match_regex(cmd_line,
|
||||
/(?i)setup/)=true OR match_regex(cmd_line, /(?i)powershell/)=true) AND process_name="wevtutil.exe"
|
||||
| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,
|
||||
"dest_user_id"), "string", null), ucast(map_get(input_event, "dest_device_id"),
|
||||
"string", null)), body=create_map(["event_id", event_id, "cmd_line", cmd_line, "process_name",
|
||||
process_name, "parent_process_name", parent_process_name, "process_path", process_path])
|
||||
| into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"% cl %\") AND (match_regex(cmd_line,\
|
||||
\ /(?i)security/)=true OR match_regex(cmd_line, /(?i)system/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)sysmon/)=true OR match_regex(cmd_line, /(?i)application/)=true OR match_regex(cmd_line,\
|
||||
\ /(?i)setup/)=true OR match_regex(cmd_line, /(?i)powershell/)=true) AND process_name=\"\
|
||||
wevtutil.exe\" \n| eval start_time=timestamp, end_time=timestamp, entities=mvappend(ucast(map_get(input_event,\
|
||||
\ \"dest_user_id\"), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"\
|
||||
), \"string\", null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line,\
|
||||
\ \"process_name\", process_name, \"parent_process_name\", parent_process_name,\
|
||||
\ \"process_path\", process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Log Manipulation
|
||||
|
||||
+13
-52
@@ -2,28 +2,6 @@ author: Teoderick Contreras, Splunk
|
||||
datamodel:
|
||||
- Endpoint
|
||||
date: '2021-06-15'
|
||||
deployment:
|
||||
alert_action:
|
||||
notable:
|
||||
nes_fields:
|
||||
- user
|
||||
- dest
|
||||
- src
|
||||
rule_description: '%description%'
|
||||
rule_title: '%name%'
|
||||
author: Bhavin Patel
|
||||
date: '2020-04-27'
|
||||
description: This configuration file applies to all correlation searches that are
|
||||
used for detection
|
||||
id: bc91a8cd-35e7-4bb2-6140-e756cc46f212
|
||||
name: Enterprise Security deployment configuration
|
||||
scheduling:
|
||||
cron_schedule: 0 * * * *
|
||||
earliest_time: -70m@m
|
||||
latest_time: -10m@m
|
||||
schedule_window: auto
|
||||
tags:
|
||||
analytic_story: all
|
||||
description: This search is to detect execution of wevtutil.exe to disable logs. This
|
||||
technique was seen in several ransomware to disable the event logs to evade alerts
|
||||
and detections in compromised host.
|
||||
@@ -35,30 +13,11 @@ how_to_implement: You must be ingesting data that records process activity from
|
||||
id: a4bdc944-cdd9-11eb-ac97-acde48001122
|
||||
known_false_positives: network operator may disable audit event logs for debugging
|
||||
purposes.
|
||||
mappings:
|
||||
cis20:
|
||||
- CIS 8
|
||||
- CIS 13
|
||||
kill_chain_phases:
|
||||
- Exploitation
|
||||
mitre_attack:
|
||||
- T1070
|
||||
- T1070.001
|
||||
nist:
|
||||
- PR.DS
|
||||
- PR.IP
|
||||
name: Wevtutil Usage To Disable Logs
|
||||
product:
|
||||
- Splunk Behavioral Analytics
|
||||
references:
|
||||
- https://www.bleepingcomputer.com/news/security/new-ransom-x-ransomware-used-in-texas-txdot-cyberattack/
|
||||
risk:
|
||||
- risk_object_field: dest_device_id
|
||||
risk_object_type: system
|
||||
risk_score: 63
|
||||
- risk_object_field: dest_user_id
|
||||
risk_object_type: user
|
||||
risk_score: 63
|
||||
risk_message: A wevtutil process $process_name$ with commandline $cmd_line$ to disable
|
||||
event logs in host $dest_device_id$
|
||||
savedsearch_annotations:
|
||||
@@ -90,17 +49,19 @@ savedsearch_annotations:
|
||||
role:
|
||||
- Victim
|
||||
type: user
|
||||
search: '| from read_ssa_enriched_events() | eval timestamp=parse_long(ucast(map_get(input_event,
|
||||
"_time"), "string", null)), cmd_line=ucast(map_get(input_event, "process"), "string",
|
||||
null), process_name=ucast(map_get(input_event, "process_name"), "string", null),
|
||||
process_path=ucast(map_get(input_event, "process_path"), "string", null), parent_process_name=ucast(map_get(input_event,
|
||||
"parent_process_name"), "string", null), event_id=ucast(map_get(input_event, "event_id"),
|
||||
"string", null) | where cmd_line IS NOT NULL AND like(cmd_line, "% sl %") AND like(cmd_line,
|
||||
"%/e:false%") AND process_name="wevtutil.exe" | eval start_time=timestamp, end_time=timestamp,
|
||||
entities=mvappend(ucast(map_get(input_event, "dest_user_id"), "string", null), ucast(map_get(input_event,
|
||||
"dest_device_id"), "string", null)), body=create_map(["event_id", event_id, "cmd_line",
|
||||
cmd_line, "process_name", process_name, "parent_process_name", parent_process_name,
|
||||
"process_path", process_path]) | into write_ssa_detected_events();'
|
||||
search: "\n| from read_ssa_enriched_events() \n| eval timestamp=parse_long(ucast(map_get(input_event,\
|
||||
\ \"_time\"), \"string\", null)), cmd_line=ucast(map_get(input_event, \"process\"\
|
||||
), \"string\", null), process_name=ucast(map_get(input_event, \"process_name\"),\
|
||||
\ \"string\", null), process_path=ucast(map_get(input_event, \"process_path\"),\
|
||||
\ \"string\", null), parent_process_name=ucast(map_get(input_event, \"parent_process_name\"\
|
||||
), \"string\", null), event_id=ucast(map_get(input_event, \"event_id\"), \"string\"\
|
||||
, null) \n| where cmd_line IS NOT NULL AND like(cmd_line, \"% sl %\") AND like(cmd_line,\
|
||||
\ \"%/e:false%\") AND process_name=\"wevtutil.exe\" \n| eval start_time=timestamp,\
|
||||
\ end_time=timestamp, entities=mvappend(ucast(map_get(input_event, \"dest_user_id\"\
|
||||
), \"string\", null), ucast(map_get(input_event, \"dest_device_id\"), \"string\"\
|
||||
, null)), body=create_map([\"event_id\", event_id, \"cmd_line\", cmd_line, \"process_name\"\
|
||||
, process_name, \"parent_process_name\", parent_process_name, \"process_path\",\
|
||||
\ process_path]) \n| into write_ssa_detected_events();"
|
||||
tags:
|
||||
analytic_story:
|
||||
- Windows Log Manipulation
|
||||
|
||||
Reference in New Issue
Block a user