panther

module
v1.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2021 License: AGPL-3.0

README ΒΆ

Panther Logo

A Cloud-Native SIEM for the Modern Security Team

Quick Start | Documentation | Blog | Careers | Chat with us on Slack!

All Contributors Slack CircleCI CLA Assistant Built with Mage

Panther is a platform for detecting threats with log data, improving cloud security posture, and conducting investigations.

Use Cases

Security teams can use Panther for:

Use Case Description
Continuous Monitoring Analyze logs in real-time and identify suspicious activity that could indicate a breach
Alert Triage Pivot across all of your security data to understand the full context of an alert
Searching IOCs Quickly search for matches against IOCs using standardized data fields
Securing Cloud Resources Identify misconfigurations, achieve compliance, and model security best practices in code

Deployment

Follow our Quick Start Guide to deploy Panther in your AWS account in a matter of minutes!

Use our Tutorials to learn about security logging and data ingestion.

Panther uses Python for analysis, and each deployment is pre-installed with 150+ open source detections.

Log Analysis

Panther uses Python3 rules to analyze logs from popular security tools such as osquery and OSSEC.

The example below identifies malware on macOS with the osx-attacks query pack:

from fnmatch import fnmatch

APPROVED_PATHS = {'/System/*', '/usr/*', '/bin/*', '/sbin/*', '/var/*'}


def rule(event):
    if 'osx-attacks' not in event.get('name'):
      return False

    if event.get('action') != 'added':
        return False

    process_path = event.get('columns', {}).get('path')
    # Send an alert if the process is running outside of any approved paths
    return not any([fnmatch(process_path, p) for p in APPROVED_PATHS])


def title(event):
    # Show the query name that caused the alert
    return 'Malware [{}] detected via osquery'.format(event.get('name'))


def dedup(event):
    # Group similar infections in the fleet
    return event.get('name')

If this rule returns True, an alert will be dispatched to your team based on the defined severity.

Cloud Security

Panther also supports analyzing cloud resources with policies. This can be used to detect vulnerable infrastructure along with modeling security best practices:

REGIONS_REQUIRED = {'us-east-1'}


def policy(resource):
    regions_enabled = [detector.split(':')[1] for detector in resource['Detectors']]
    for region in REGIONS_REQUIRED:
        if region not in regions_enabled:
            return False

    return True

Returning True means that a resource is compliant, and returning False will Fail the policy and trigger an alert.

Screenshots

Rule Search

Rule Search: Show running detections

Rule Editor

Rule Editor: Write and test Python detections in the UI

Alert Viewer

Alert Viewer: Triage generated alerts

Resource Viewer

Resource Viewer: View attributes and policy statuses

Cloud Security Overview

Cloud Security: Track and enforce resource compliance

About Us

Team

We are a San Francisco based startup comprising security practitioners who have spent years building large-scale detection and response capabilities for companies such as Amazon and Airbnb. Panther was founded by the core architect of StreamAlert, a cloud-native solution for automated log analysis open-sourced by Airbnb.

Want to help make Panther even better? We are hiring!

Why Panther?

It's no longer feasible to find the needle in the security-log-haystack manually. Many teams struggle to use traditional SIEMs due to their high costs, overhead, and inability to scale. Panther was built from the ground up to leverage the elasticity of cloud services and provide a highly scalable, performant, and flexible security solution at a much lower cost.

Contributing

We welcome all contributions! Please read our contributing guidelines before submitting pull requests.

License

Panther source code is licensed under AGPLv3.

Contributors

Thanks goes to these wonderful people (emoji key):


Aggelos Arvanitakis

πŸ’» πŸ“– 🎨 πŸ› πŸš‡

Austin Byers

πŸ’» πŸ“– πŸ›‘οΈ πŸ› πŸš‡

Nick

πŸ’» πŸ“– πŸ›‘οΈ πŸ› πŸš‡

Kostas Papageorgiou

πŸ’» πŸ›‘οΈ πŸ› πŸš‡

Quan Pham

πŸ’»

Alex Mylonas

πŸ’» πŸ›

Russell Leighton

πŸ’» πŸ›‘οΈ πŸ› πŸš‡

Sugandha

πŸ“–

Kartikey Pandey

πŸ“–

Jeremy Stott

πŸ’» πŸ›‘οΈ πŸš‡ πŸ€”

Jack Naglieri

πŸ’» πŸ“– πŸ›‘οΈ πŸ–‹ πŸ€” πŸ“†

Gavin

πŸ’» πŸ›‘οΈ πŸš‡ πŸ€”

Ryxias

πŸ“–

Sargon Sada

πŸ“– πŸ’»

Sergey Aksenov

πŸ“–

Patrick Hagan

πŸš‡

Alexandros Sigalas

πŸ’» πŸ›‘οΈ

Ben Pruce

πŸ’»

Theodore Vorillas

πŸ’» πŸ› πŸ›‘οΈ

Nick Angelou

πŸ’» πŸ“– πŸ›‘οΈ πŸ› πŸš‡

Ryan Moon

πŸ’»

George Papadrosou

πŸ’» πŸ›‘οΈ πŸ›

Lindsey Whitehurst

πŸ’» πŸ›‘οΈ πŸ›

Weyland

πŸ’» πŸ›‘οΈ πŸ›

William Lowe

πŸ“–

Jim Zoitas

🎨

Antonis Providakis

πŸ›

This project follows the all-contributors specification. Contributions of any kind welcome!

Directories ΒΆ

Path Synopsis
api
lambda/logtypes
Code generated by apigen; DO NOT EDIT.
Code generated by apigen; DO NOT EDIT.
cmd
internal
core/analysis_api/analysis
Package analysis contains proxies to interact with the Panther analysis backends.
Package analysis contains proxies to interact with the Panther analysis backends.
core/logtypesapi
Code generated by apigen; DO NOT EDIT.
Code generated by apigen; DO NOT EDIT.
core/logtypesapi/transact
Package ddbextras provides a builder for DynamoDB transactions.
Package ddbextras provides a builder for DynamoDB transactions.
core/organization_api/api
Package api defines CRUD actions for the Panther organization database.
Package api defines CRUD actions for the Panther organization database.
core/organization_api/table
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
core/outputs_api/api
Package api defines CRUD actions for Panther alert outputs.
Package api defines CRUD actions for Panther alert outputs.
core/outputs_api/table
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
core/users_api/api
Package api defines CRUD actions for the Cognito Api.
Package api defines CRUD actions for the Cognito Api.
log_analysis/alerts_api/api
Package api defines CRUD actions for the Panther alerts database.
Package api defines CRUD actions for the Panther alerts database.
log_analysis/alerts_api/table
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
Package table manages all of the Dynamo calls (query, scan, get, write, etc).
log_analysis/alerts_api/utils
Package utils manages all of the utility functions for alerts that are public
Package utils manages all of the utility functions for alerts that are public
log_analysis/awsglue/gluetimestamp
Package gluetimestamp handles encoding/decoding of timestamp values for AWS glue.
Package gluetimestamp handles encoding/decoding of timestamp values for AWS glue.
log_analysis/log_processor/customlogs
Package customlogs provides log processing for user-defined logs
Package customlogs provides log processing for user-defined logs
log_analysis/log_processor/customlogs/customparser
Package customparser provides a log parser that uses reflection
Package customparser provides a log parser that uses reflection
log_analysis/log_processor/logschema
Code generated for package logschema by go-bindata DO NOT EDIT.
Code generated for package logschema by go-bindata DO NOT EDIT.
log_analysis/log_processor/pantherlog/null
nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl Package null provides performant nullable values for JSON serialization/deserialization nolint: dupl nolint: dupl nolint: dupl nolint: dupl
nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl nolint: dupl Package null provides performant nullable values for JSON serialization/deserialization nolint: dupl nolint: dupl nolint: dupl nolint: dupl
log_analysis/log_processor/parsers/apachelogs
Package apachelogs contains parsers for logs of the Apache HTTP Server
Package apachelogs contains parsers for logs of the Apache HTTP Server
log_analysis/log_processor/parsers/awslogs
Package awslogs defines parsers and log types for AWS logs.
Package awslogs defines parsers and log types for AWS logs.
log_analysis/log_processor/parsers/gcplogs
Package gcplogs has log parsers for Google Cloud Platform
Package gcplogs has log parsers for Google Cloud Platform
log_analysis/log_processor/parsers/gitlablogs
Package gitlablogs parses GitLab JSON logs.
Package gitlablogs parses GitLab JSON logs.
log_analysis/log_processor/parsers/juniperlogs
Package juniperlogs provides parsers for Juniper logs
Package juniperlogs provides parsers for Juniper logs
log_analysis/log_processor/parsers/nginxlogs
Package nginxlogs provides parsers for NGINX server logs
Package nginxlogs provides parsers for NGINX server logs
log_analysis/log_processor/parsers/sysloglogs
Package sysloglogs provides parsers for syslog messages.
Package sysloglogs provides parsers for syslog messages.
log_analysis/log_processor/parsers/umbrellalogs
Package umbrellalogs provides parsers for Cisco Umbrella logs
Package umbrellalogs provides parsers for Cisco Umbrella logs
log_analysis/log_processor/preprocessors
Package preprocessors provides log pre processors
Package preprocessors provides log pre processors
log_analysis/log_processor/registry
Code generated by registry/generate_init.go; DO NOT EDIT
Code generated by registry/generate_init.go; DO NOT EDIT
log_analysis/managedschemas
Code generated for package managedschemas by build.sh DO NOT EDIT.
Code generated for package managedschemas by build.sh DO NOT EDIT.
pkg
awscfn
Package awscfn contains helper functions that query/manipulate AWS Cloudformation stacks
Package awscfn contains helper functions that query/manipulate AWS Cloudformation stacks
box
Package box provides boxing helpers for scalar values.
Package box provides boxing helpers for scalar values.
encryption
Package encryption handles all KMS operations.
Package encryption handles all KMS operations.
genericapi
Package genericapi provides a generic Router for API style Lambda functions.
Package genericapi provides a generic Router for API style Lambda functions.
lambdalogger
Package lambdalogger updates the global zap logger for use in a Lambda function.
Package lambdalogger updates the global zap logger for use in a Lambda function.
oplog
Package oplog implements standard (but extensible) logging for operations (events with status, start/end times).
Package oplog implements standard (but extensible) logging for operations (events with status, start/end times).
prompt
Utility package to read input from terminal.
Utility package to read input from terminal.
unbox
Package unbox provides unboxing helpers for scalar values
Package unbox provides unboxing helpers for scalar values
tools
cfnstacks
Package cfnstacks declares public constants and vars for Panther stacks and templates for use by tools
Package cfnstacks declares public constants and vars for Panther stacks and templates for use by tools
mage/clients
Package clients builds and caches connections to AWS and Panther services.
Package clients builds and caches connections to AWS and Panther services.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL