• Stars
    star
    699
  • Rank 64,759 (Top 2 %)
  • Language
    Python
  • License
    Creative Commons ...
  • Created over 1 year ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Untitled Goose Tool is a robust and flexible hunt and incident response tool that adds novel authentication and data gathering methods in order to run a full investigation against a customer’s Azure Active Directory (AzureAD), Azure, and M365 environments.

Untitled Goose Tool


The Goose is loose.

Table of Contents

About

Untitled Goose Tool is a robust and flexible hunt and incident response tool that adds novel authentication and data gathering methods in order to run a full investigation against a customer’s Azure Active Directory (AzureAD), Azure, and M365 environments. Untitled Goose Tool gathers additional telemetry from Microsoft Defender for Endpoint (MDE) and Defender for Internet of Things (IoT) (D4IoT).

This tool was designed to assist incident response teams by exporting cloud artifacts after an incident for environments that aren't ingesting logs into a Security Information and Events Management (SIEM) or other long term solution for logs.

For more guidance on how to use Untitled Goose Tool, please see: Untitled Goose Tool Fact Sheet

Getting Started

Prerequisites

Python 3.7, 3.8, 3.9, or 3.10 (up to 3.10.11) is required to run Untitled Goose Tool with Python.

Firefox is required for authenticating with Untitled Goose Tool.

Currently, the following MFA methods are accepted in Untitled Goose Tool: the push notification offered by the Microsoft Authenticator app, number matching MFA, and one-time password (OTP) from either the Microsoft Authenticator app or SMS.

On a Windows machine, you will need to make sure to have the Microsoft Visual C++ redistributable package (14.x) installed prior to running the tool.

It's also recommended to run Untitled Goose Tool within a virtual environment.

Mac OSX

pip3 install virtualenv
virtualenv -p python3 .venv
source .venv/bin/activate

Linux

# You may need to run sudo apt-get install python3-venv first
python3 -m venv .venv
source .venv/bin/activate

Windows

# You can also use py -3 -m venv .venv
python -m venv .venv
.venv\Scripts\activate

Requirements

The following AzureAD/M365 permissions are required to run Untitled Goose Tool, and provide it read-only access to the tenant.

Please note: The user account should be a cloud-only account (not sync'd to the on-premise environment), this will ensure that the login process stays the same across environments for the tool.

A cloud-only user account with the following permissions:

Exchange Online Admin Center

- View-Only Audit Logs
- View-Only Configuration 
- View-Only Recipients
- User Options

A service principal with the following permissions:

API Permissions

Microsoft Threat Protection:
- AdvancedHunting.Read.All (Application)

WindowsDefenderATP:
- AdvancedQuery.Read.All (Application)
- Alert.Read.All (Application)
- Library.Manage (Application)
- Machine.Read.All (Application)
- SecurityRecommendation.Read.All (Application)
- Software.Read.All (Application)
- Ti.ReadWrite (Application)
- Vulnerability.Read.All (Application)

Microsoft Graph:
- APIConnectors.Read.All (Application)
- AuditLog.Read.All (Application)
- ConsentRequest.Read.All (Application)
- Directory.Read.All (Application)
- Domain.Read.All (Application)
- IdentityProvider.Read.All (Application)
- IdentityRiskEvent.Read.All (Application)
- IdentityRiskyServicePrincipal.Read.All (Application)
- IdentityRiskyUser.Read.All (Application)
- MailboxSettings.Read (Application)
- Policy.Read.All (Application)
- Policy.Read.PermissionGrant (Application)
- Reports.Read.All (Application)
- RoleManagement.Read.All (Application)
- SecurityActions.Read.All (Application)
- SecurityAlert.Read.All (Application)
- SecurityEvents.Read.All (Application)
- UserAuthenticationMethod.Read.All (Application)

Azure Subscription IAM Roles

- Reader
- Storage Blob Data Reader
- Storage Queue Data Reader

When creating the service principal, make sure to save the client secret value (not the client secret ID).

Make sure to enable "Allow public client flows" for the service principal.

Installing

To install, clone the repository and then do a pip install:

git clone https://github.com/cisagov/untitledgoosetool.git
cd untitledgoosetool
python3 -m pip install . 

If installing on Ubuntu 22.04 and later the following steps are required to ensure a successful install:

git clone https://github.com/cisagov/untitledgoosetool.git
cd untitledgoosetool
# Download the correct wxPython wheel based on the correct Ubuntu version and Python version
wget https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-22.04/wxPython-4.2.0-cp310-cp310-linux_x86_64.whl
pip install wxPython-4.2.0-cp310-cp310-linux_x86_64.whl
sudo apt install python3-tk
python3 -m pip install .

Usage

Config

Untitled Goose Tool requires authentication parameters and configuration. To automatically build the configuration file, run the following with the repository cloned:

$ python3 scripts/generate_conf.py

After this, .auth, .conf, .auth_d4iot, and .d4iot_conf files should be placed in your current directory. These files are used by Untitled Goose Tool. You should fill out the top section [auth] so that Untitled Goose Tool can properly auth to the appropriate resources. However, if you do not feel comfortable about entering your credentials into a file, you can opt to delete the .auth and/or .auth_d4iot and be prompted by the tool for credentials via console instead.

The barebones auth looks like:

[auth]
username=
password=
appid=
clientsecret=

Here is an auth file with descriptions of the fields:

[auth]
username=The username of your account. ex: [email protected]
password=The password of your account. ex: AAD_password
appid=The application ID of your service principal.
clientsecret=The client secret value of your service principal (not the secret ID).

The barebones config looks like:

[config]
tenant=
us_government=
mde_gcc=
mde_gcc_high=
exo_us_government=
subscriptionid=
m365=

[filters]
date_start=
date_end=

[azure]
activity_log=False
alerts=False
all_azure_subscriptions=False
all_resources=False
assessments=False
bastion_logs=False
compliance=False
container_config=False
diagnostic_settings=False
file_shares=False
key_vault_log=False
network=False
nsg_flow_logs=False
portal_alerts=False
portal_defendersettings=False
portal_pcap=False
portal_sensors=False
security_center=False
storage_accounts=False
vm_config=False

[azuread]
applications=False
azuread_audit=False
azuread_provisioning=False
conditional_access=False
devices=False
directory_roles=False
groups=False
identity_provider=False
organization=False
policies=False
risk_detections=False
risky_objects=False
security=False
service_principals=False
signins_adfs=False
signins_msi=False
signins_rt=False
signins_sp=False
summaries=False
users=False

[m365]
exo_addins=False
exo_groups=False
exo_inboxrules=False
exo_mailbox=False
powershell_calls=False
ual=False

[mde]
advanced_hunting_query=False
advanced_identity_hunting_query=False
alerts=False
indicators=False
investigations=False
library_files=False
machine_vulns=False
machines=False
recommendations=False
software=False

[msgtrc]
setemailaddress=
direction=
notifyaddress=
originalclientip=
recipientaddress=
reporttitle=
reporttype=
senderaddress=

Here is a conf file with descriptions of the fields:

[config]
tenant=The tenant ID of your AAD tenant.
us_government=If you have a GCC High tenant, set this to True, otherwise set this to False.
mde_gcc=If you have a GCC tenant with MDE, set this to True, otherwise set this to False.
mde_gcc_high=If you have a GCC High tenant with MDE, set this to True, otherwise set this to False.
exo_us_government=If your M365 tenant is a government tenant, set this to True, otherwise set this to False.
subscriptionid=If you want to check all of your Azure subscriptions, set this to All, otherwise enter your Azure subscription ID. For multiple IDs, separate it with commas, no spaces.
m365=If you have a M365 environment, set this to True, otherwise set this to False.

[filters]
date_start=Applies to Azure AD signin calls only. Maximum date range is 30 days ago. Format should be YYYY-MM-DD.
date_end=Applies to Azure AD signin calls only. Maximum date range is today's date. Format should be YYYY-MM-DD.

[azure]
activity_log=False
alerts=False
all_azure_subscriptions=False
all_resources=False
assessments=False
bastion_logs=False
compliance=False
container_config=False
diagnostic_settings=False
file_shares=False
key_vault_log=False
network=False
nsg_flow_logs=False
portal_alerts=False
portal_defendersettings=False
portal_pcap=False
portal_sensors=False
security_center=False
storage_accounts=False
vm_config=False

[azuread]
applications=False
azuread_audit=False
azuread_provisioning=False
conditional_access=False
devices=False
directory_roles=False
groups=False
identity_provider=False
organization=False
policies=False
risk_detections=False
risky_objects=False
security=False
service_principals=False
signins_adfs=False
signins_msi=False
signins_rt=False
signins_sp=False
summaries=False
users=False

[m365]
exo_addins=False
exo_groups=False
exo_inboxrules=False
exo_mailbox=False
powershell_calls=False
ual=False

[mde]
advanced_hunting_query=False
advanced_identity_hunting_query=False
alerts=False
indicators=False
investigations=False
library_files=False
machine_vulns=False
machines=False
recommendations=False
software=False

[msgtrc]
setemailaddress=If you want to be notified by Microsoft when your message trace is ready, set this to True, otherwise set this to False.
direction=Choices are All, Inbound, Outbound.
notifyaddress=If you want to be notified by Microsoft when your message trace is ready for download, input an email here. If you have `setemailaddress=False`, you can leave this field blank.
originalclientip=If you have a client IP address you want to check, input the IP address here.
recipientaddress=Email address of the recipient that you want to run a message trace on.
reporttitle=Set the report title here.
reporttype=Choices are MessageTraceDetail or MessageTrace.
senderaddress=Email address of the sender that you want to run a message trace on.

The barebones D4IoT auth looks like:

[auth]
username=
password=
d4iot_sensor_token=
d4iot_mgmt_token=

Here is an auth file with descriptions of the fields:

[auth]
username=Username for your D4IoT sensor login page.
password=Password for your D4IoT sensor login page.
d4iot_sensor_token=Enter your D4IoT sensor API token.
d4iot_mgmt_token=Enter your D4IoT management console API token.

The D4IoT config looks like:

[config]
d4iot_sensor_ip=
d4iot_mgmt_ip=

[d4iot]
mgmt_alerts=False
mgmt_devices=False
mgmt_pcap=False
mgmt_sensor_info=False
sensor_alerts=False
sensor_device_connections=False
sensor_device_cves=False
sensor_device_vuln=False
sensor_devices=False
sensor_events=False
sensor_operational_vuln=False
sensor_pcap=False
sensor_security_vuln=False

Here is a D4IoT conf file with descriptions of the fields:

[config]
d4iot_sensor_ip=Enter your D4IoT sensor IP.
d4iot_mgmt_ip=Enter your D4IoT management console IP.

[d4iot]
mgmt_alerts=False
mgmt_devices=False
mgmt_pcap=False
mgmt_sensor_info=False
sensor_alerts=False
sensor_device_connections=False
sensor_device_cves=False
sensor_device_vuln=False
sensor_devices=False
sensor_events=False
sensor_operational_vuln=False
sensor_pcap=False
sensor_security_vuln=False

To enable specific pulls, you can change occurrences of False to True (case insensitive).

GUI

There is a simplified GUI based off of Gooey. Note that colorings may be a bit off when you run.

Note: When you run goosey-gui and you use either app OTP or SMS OTP, you should make sure to keep an eye on the terminal that you used to launch goosey-gui with. It will prompt you for the OTP codes there and not in the GUI.

To run with GUI:

$ goosey-gui

Goosey GUI

Auth

$ goosey auth --help
usage: goosey auth [-h] [-a AUTHFILE] [--d4iot-authfile D4IOT_AUTHFILE] [-c CONFIG] [-ac AUTH]
                   [--d4iot-auth D4IOT_AUTH] [--d4iot-config D4IOT_CONFIG] [--revoke] [--interactive] [--debug]
                   [--d4iot] [--secure]

optional arguments:
  -h, --help            show this help message and exit
  -a AUTHFILE, --authfile AUTHFILE
                        File to store the authentication tokens and cookies (default: .ugt_auth)
  --d4iot-authfile D4IOT_AUTHFILE
                        File to store the authentication cookies for D4IoT (default: .d4iot_auth)
  -c CONFIG, --config CONFIG
                        Path to config file (default: .conf)
  -ac AUTH, --auth AUTH
                        File to store the credentials used for authentication (default: .auth)
  --d4iot-auth D4IOT_AUTH
                        File to store the D4IoT credentials used for authentication (default: .auth_d4iot)
  --d4iot-config D4IOT_CONFIG
                        Path to D4IoT config file (default: .d4iot_conf)
  --revoke              Revoke sessions for user with authentication tokens and cookies (default: .ugt_auth)
  --interactive         Interactive mode for Selenium. Default to false (headless).
  --debug               Enable debug logging
  --d4iot               Run the authentication portion for d4iot
  --secure              Enable secure authentication handling (file encryption)

Run with defaults:

$ goosey auth

Run with debug and secure authentication handling enabled:

$ goosey auth --debug --secure

Csv

$ goosey csv --help
usage: goosey csv [-h] [-o OUTPUT_DIR] [-r RESULT_DIR] [--debug]

optional arguments:
  -h, --help            show this help message and exit
  -o OUTPUT_DIR, --output_dir OUTPUT_DIR
                        The directory where the goose files are located
  -r RESULT_DIR, --result_dir RESULT_DIR
                        Directory for storing the results (default: output/csvs)
  --debug               Debug output

Run with defaults:

$ goosey csv

Graze

$ goosey graze --help
usage: goosey graze [-h] [-a AUTHFILE] [-c CONFIG] [-o OUTPUT_DIR] [-d] [-e ENDPOINT]

optional arguments:
  -h, --help            show this help message and exit
  -a AUTHFILE, --authfile AUTHFILE
                        File to store the authentication tokens and cookies (default: .ugt_auth)
  -c CONFIG, --config CONFIG
                        Path to config file (default: .conf)
  -o OUTPUT_DIR, --output-dir OUTPUT_DIR
                        Output directory for honk outputs
  -d, --debug           Enable debug logging
  -e ENDPOINT, --endpoint ENDPOINT
                        Endpoint for UAL. Can change to localhost for testing if hosting local server.

Run with defaults:

$ goosey graze

Honk

$ goosey honk --help
usage: goosey honk [-h] [-a AUTHFILE] [-c CONFIG] [-ac AUTH] [--output-dir OUTPUT_DIR] [--reports-dir REPORTS_DIR]
                   [--debug] [--dry-run] [--azure] [--ad] [--m365] [--mde]

optional arguments:
  -h, --help            show this help message and exit
  -a AUTHFILE, --authfile AUTHFILE
                        File to store the authentication tokens and cookies (default: .ugt_auth)
  -c CONFIG, --config CONFIG
                        Path to config file (default: .conf)
  -ac AUTH, --auth AUTH
                        File to store the credentials used for authentication (default: .auth)
  --output-dir OUTPUT_DIR
                        Directory for storing the results (default: output)
  --reports-dir REPORTS_DIR
                        Directory for storing debugging/informational logs (default: reports)
  --debug               Enable debug logging
  --dry-run             Dry run (do not do any API calls)
  --azure               Set all of the Azure calls to true
  --ad                  Set all of the Azure AD calls to true
  --m365                Set all of the M365 calls to true
  --mde                 Set all of the MDE calls to true

Run with default options:

$ goosey honk

Run with debug logging enabled, output to directory my_outputs, and enable all Azure calls:

$ goosey honk --debug --output-dir my_outputs --azure

Messagetrace

$ goosey messagetrace --help
usage: goosey messagetrace [-h] [--debug] [-c CONFIG] [-a AUTHFILE] [--output-dir OUTPUT_DIR] [--submit-report]
                           [--gather-report] [--status-check] [--interactive]

optional arguments:
  -h, --help            show this help message and exit
  --debug               Enable debug logging
  -c CONFIG, --config CONFIG
                        Path to config file (default: .conf)
  -a AUTHFILE, --authfile AUTHFILE
                        File to store the authentication tokens and cookies (default: .ugt_auth)
  --output-dir OUTPUT_DIR
                        Directory for storing the results (default: output)
  --submit-report       Submits a message trace report
  --gather-report       Gathers a message trace report
  --status-check        Automates check status after submitting trace request
  --interactive         Interactive mode for Selenium. Default to false (headless).

Submitting a report for message trace:

$ goosey messagetrace --submit-report

Downloading a message trace report with interactive Selenium:

$ goosey messagetrace --gather-report --interactive

Recommended Default Workflow

  1. Fill out the .auth file with your credentials
  2. Fill out the configuration information and set wanted calls in the .conf file to True.
  3. Run goosey auth with desired parameters.
  4. Run goosey honk with desired parameters.

Recommended Workflow for UAL Call with Time Bounds

  1. Fill out the .auth file with your credentials
  2. Run goosey auth.
  3. Run goosey graze and wait until it's finished running.
  4. Open the .conf file and set ual to True.
  5. Run goosey honk.

Considerations

  1. We recommend filling out the .conf file with your information as a first step.
  2. Filling out the .auth and/or .auth_d4iot is now optional.
  3. Always run goosey auth before making any other goosey call besides goosey csv, which doesn't require authentication to run.

Known Issues

  1. Having % in the password:

    Solution: Make sure to escape % in the password with %%.

  2. Error when attempting to pip install . when you are on Mac:

    ModuleNotFoundError: No module named 'certifi'

    Solution: Go to your applications folder, find your python version folder, and double click on the file "Install Certificates.command" inside the python folder to install the certificate.

  3. Why does Untitled Goose Tool return two results for Exchange Online inbox rules and Exchange Online mailbox permissions?

    Solution: Both the API and PowerShell calls are robust and show different information, so we decided to keep both.

  4. Error after running certain Azure Security Center calls:

    Azure Compliance Results:

    Error: (MissingSubscription) The request did not have a subscription or a valid tenant level resource provider.
    Code: MissingSubscription
    Message: The request did not have a subscription or a valid tenant level resource provider.

    Azure Information Protection Policies:

    Error: Operation returned an invalid status 'Not Found'

    Azure Assessments:

    Discriminator source is absent or null, use base class ResourceDetails.

    Azure SubAssessments:

    Subtype value GeneralVulnerability has no mapping, use base class AdditionalData.
    Subtype value SqlVirtualMachineVulnerability has no mapping, use base class AdditionalData.

    Solution: These messages aren't issues. Azure compliance result call will still complete. The Azure information protection policy call is not a critical error. The Azure assessments call spams the console with one line warning: "Discriminator source is absent or null, use base class ResourceDetails" and will complete without an issue (besides the console spam). The Azure subassessments call spams the console with one line warning: "Subtype value GeneralVulnerability has no mapping, use base class AdditionalData." or "Subtype value SqlVirtualMachineVulnerability has no mapping, use base class AdditionalData." and will complete without an issue (besides the console spam).

  5. Users on MacOS and/or *nix systems might not be able to run the EXO.ps1 PowerShell script.

    Solution: We recommend using Windows if you want to run the PowerShell script.

  6. Firefox geckodriver not in PATH

    auth - ERROR - Error getting Firefox webdriver: Message: 'geckodriver' executable needs to be in PATH.

    Solution: Run the following commands:

    #For Windows:
    webdrivermanager firefox:v0.33.0 --linkpath AUTO
    #For *nix recommend install outside of a virtual environment if you are working in one (you might need sudo):
    webdrivermanager firefox:v0.33.0 --linkpath /usr/local/bin
  7. Excessive amount of 429 errors during goosey honk

    Solution: Untitled Goose Tool will quickly encounter the Graph API limitations of a tenant; this is a limitation that Microsoft has on Graph API calls.

Acknowledgements

  • Claire Casalnova
  • Jordan Eberst
  • Wellington Lee
  • Victoria Wallace

Contributing

We welcome contributions! Please see here for details.

License

This project is in the worldwide public domain.

This project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.

All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.

Legal Disclaimer

NOTICE

This software package (“software” or “code”) was created by the United States Government and is not subject to copyright within the United States. All other rights are reserved. You may use, modify, or redistribute the code in any manner. However, you may not subsequently copyright the code as it is distributed. The United States Government makes no claim of copyright on the changes you effect, nor will it restrict your distribution of bona fide changes to the software. If you decide to update or redistribute the code, please include this notice with the code. Where relevant, we ask that you credit the Cybersecurity and Infrastructure Security Agency with the following statement: “Original code developed by the Cybersecurity and Infrastructure Security Agency (CISA), U.S. Department of Homeland Security.”

USE THIS SOFTWARE AT YOUR OWN RISK. THIS SOFTWARE COMES WITH NO WARRANTY, EITHER EXPRESS OR IMPLIED. THE UNITED STATES GOVERNMENT ASSUMES NO LIABILITY FOR THE USE OR MISUSE OF THIS SOFTWARE OR ITS DERIVATIVES.

THIS SOFTWARE IS OFFERED “AS-IS.” THE UNITED STATES GOVERNMENT WILL NOT INSTALL, REMOVE, OPERATE OR SUPPORT THIS SOFTWARE AT YOUR REQUEST. IF YOU ARE UNSURE OF HOW THIS SOFTWARE WILL INTERACT WITH YOUR SYSTEM, DO NOT USE IT.

More Repositories

1

RedEye

RedEye is a visual analytic tool supporting Red & Blue Team operations
TypeScript
2,654
star
2

ScubaGear

Automation to assess the state of your M365 tenant against CISA's baselines
Open Policy Agent
1,580
star
3

Malcolm

Malcolm is a powerful, easily deployable network traffic analysis tool suite for full packet capture artifacts (PCAP files), Zeek logs and Suricata alerts.
Python
1,504
star
4

cset

Cybersecurity Evaluation Tool
TSQL
1,424
star
5

Sparrow

Sparrow.ps1 was created by CISA's Cloud Forensics team to help detect possible compromised accounts and applications in the Azure/m365 environment.
PowerShell
1,371
star
6

log4j-scanner

log4j-scanner is a project derived from other members of the open-source community by CISA to help organizations identify potentially vulnerable web services affected by the log4j vulnerabilities.
Java
1,262
star
7

log4j-affected-db

A community sourced list of log4j-affected software
Shell
1,115
star
8

CHIRP

A DFIR tool written in Python.
Python
1,040
star
9

decider

A web application that assists network defenders, analysts, and researchers in the process of mapping adversary behaviors to the MITRE ATT&CK® framework.
HTML
1,021
star
10

LME

Logging Made Easy (LME) is a no-cost and open logging and protective monitoring solution serving all organizations.
Python
795
star
11

pshtt

Scan domains and return data based on HTTPS best practices
Python
670
star
12

crossfeed

External monitoring for organization assets
TypeScript
320
star
13

ESXiArgs-Recover

A tool to recover from ESXiArgs ransomware
Shell
292
star
14

trustymail

Scan domains and return data based on trustworthy email best practices
Python
185
star
15

bad-practices

CISA's catalog of bad practices that are exceptionally risky.
Shell
181
star
16

development-guide

A set of guidelines and best practices for an awesome engineering team
Python
180
star
17

ScubaGoggles

SCuBA Secure Configuration Baselines and assessment tool for Google Workspace
Open Policy Agent
148
star
18

cyber.dhs.gov

A site for CISA directives
SCSS
138
star
19

dotgov-data

Official list of .gov domains
108
star
20

check-cve-2019-19781

Test a host for susceptibility to CVE-2019-19781
Python
105
star
21

ICSNPP

Industrial Control Systems Network Protocol Parsers
104
star
22

findcdn

findCDN is a tool created to help accurately identify what CDN a domain is using.
Python
95
star
23

prescup-challenges

President's Cup Cybersecurity Competition Challenges
Python
78
star
24

shareable-soar-workflows

This is a repository of vendor-agnostic workflows provided for those interested in deploying Security Orchestration, Automation, and Response capabilities within their organizations.
74
star
25

parsnip

Python
68
star
26

ansible-role-cobalt-strike

An Ansible role for installing Cobalt Strike.
HCL
66
star
27

cybersecurity-performance-goals

CISA's space for collaboration on the Cybersecurity Performance Goals.
Shell
53
star
28

PNT-Integrity

The PNT Integrity Library provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.
C++
49
star
29

join-cisagov

CISA is hiring! We’re looking for candidates passionate about our mission to lead the national effort to understand and manage cyber and physical risk to our critical infrastructure.
Shell
45
star
30

gophish-tools

Helpful tools for interacting with a GoPhish phishing instance
Python
42
star
31

gophish-docker

Docker container for the gophish phishing framework.
Shell
40
star
32

ioc-scanner

Search a filesystem for indicators of compromise (IoC).
Python
39
star
33

pca-gophish-composition

Phishing campaign docker composition for Gophish
Shell
34
star
34

vdp-in-fceb

Vulnerability disclosure policies in the US Government's executive branch
32
star
35

Epsilon

The Epsilon Algorithm Suite provides users a method to verify the integrity of the received GPS data and ranging signals, thereby improving resiliency against potential GPS signal loss.
Python
31
star
36

check-your-pulse

This utility can help determine if indicators of compromise (IOCs) exist in the log files of a Pulse Secure VPN Appliance for CVE-2019-11510.
Python
28
star
37

getgov

Building a new .gov registrar for a bright .gov future
Python
27
star
38

postfix-docker

Docker container with a postfix server designed for use during phishing campaigns
Shell
26
star
39

dotgov-home

Homepage for the .gov registry
SCSS
25
star
40

assessment-reporting-engine

Python
24
star
41

skeleton-python-library

A skeleton project for quickly getting a new cisagov Python library started.
Python
19
star
42

scanner

Automated pshtt, trustymail, and sslyze scanning
Shell
18
star
43

cyhy_amis

AWS infrastructure for Cyber Hygiene and BOD 18-01 scanning
HCL
16
star
44

skeleton-docker

A skeleton project for quickly getting a new cisagov Docker container started.
Shell
15
star
45

admiral

Distributed certificate transparency log harvester
Python
14
star
46

icsnpp-opcua-binary

Zeek OPCUA Binary Parser - CISA ICSNPP
JavaScript
13
star
47

pe-reports

Automated process to build and distribute Posture & Exposure Reports' bi-weekly to customers.
Python
13
star
48

icsnpp-enip

Zeek Ethernet/IP and CIP Parser - CISA ICSNPP
Zeek
13
star
49

icsnpp-bacnet

Zeek BACnet Parser - CISA ICSNPP
JavaScript
12
star
50

ansible-role-clamav

Ansible role to install and enable the ClamAV virus scanner
Shell
12
star
51

lambda_functions

Generate AWS Lambda environment zip files for use by cisagov/domain-scan
Shell
12
star
52

icsnpp-s7comm

Zeek S7comm, S7comm-plus, and COTP Parser - CISA ICSNPP
JavaScript
11
star
53

network-architecture-verification-and-validation

The NAVV (Network Architecture Verification and Validation) tool creates a spreadsheet for network traffic analysis from PCAP data and Zeek logs, automating Zeek analysis of PCAP files, the collation of Zeek logs and the dissection of conn.log and dns.log to create a summary or network traffic in an XLSX-formatted spreadsheet.
Python
11
star
54

docker-kali-ansible

A systemd-enabled Kali Linux Docker image, in the spirit of geerlingguy/docker-debian11-ansible.
Dockerfile
10
star
55

tic3.0

Collaborating on Trusted Internet Connection 3.0 use cases
10
star
56

icsnpp-genisys

Industrial Control Systems Network Protocol Parsers (ICSNPP) - Genisys over TCP/IP
Python
10
star
57

gh-skeleton

This extension for the gh CLI provides the ability to easily start new projects from our existing library of skeleton repositories.
Shell
10
star
58

scoping-validation-tool

SVT is a tool that can be used to verify ownership and location of assets during the scoping process of a penetration test.
Python
9
star
59

orchestrator

Orchestrate gatherer, scanner, saver, and trustymail_reporter
Shell
9
star
60

pshtt_reporter

Generate HTTPS reports based on scan data
Python
9
star
61

cyhy-mailer

Email Cyber Hygiene, Trustworthy Email, and HTTPS reports to the appropriate technical or distribution addresses
Python
9
star
62

trustymail_reporter

Generate Trustworthy Email reports based on scan data
Python
9
star
63

pre-commit-packer

Provides pre-commit hooks for Packer projects.
Shell
9
star
64

nessus-packer

Create machine images containing the Nessus vulnerability scanner
HCL
9
star
65

domain-manager-api

Flask API for Domain Manager
Python
9
star
66

gatherer

Gather domains as a precursor to scanning
Shell
9
star
67

certboto-docker

Certbot container that stores its configuration in an AWS S3 bucket
Shell
9
star
68

icsnpp-modbus

Zeek Modbus Extension Scripts - CISA ICSNPP
Zeek
8
star
69

ansible-role-kali

An Ansible role for provisioning kali
HCL
8
star
70

aws-profile-sync

Synchronize AWS credential profiles from remote sources
Python
8
star
71

icsnpp-dnp3

Zeek DNP3 Extension Scripts - CISA ICSNPP
Zeek
8
star
72

dmarc-import

A tool for parsing DMARC aggregate reports.
Python
8
star
73

icsnpp-bsap-ip

Zeek BSAP over IP Parser - CISA ICSNPP
JavaScript
8
star
74

CISASuite

The CSET, Malcom, Con-PCA suite of tools
HTML
8
star
75

skeleton-generic

A generic skeleton project for quickly getting a new cisagov project started.
Shell
8
star
76

icsnpp-ethercat

Zeek Ethercat Parser - CISA ICSNPP
C++
8
star
77

Sogu

This script generates a list of possible SOGU filenames based on serial numbers of active drives. It has the added functionality of searching each drive from the generated file list.
PowerShell
8
star
78

PNT-Integrity-Toolkit

The PNT Integrity DIY Toolkit describes how a perspective end-user of the PNT Integrity Library can assemble a demonstrational toolkit with commercial-off-the-shelf (COTS) hardware.
C++
7
star
79

travis-wait-improved

A tool to help long-running, yet reticent, processes avoid death at the hands of Traivs-CI.
Python
7
star
80

con-pca-api

API Docker Container for Con-PCA
HTML
7
star
81

.dotfiles

Generic set of dotfiles to get you started with a cisagov development environment
Shell
7
star
82

domain-manager-ui

UI for the Domain Manager
HTML
7
star
83

pen-testing-findings

A collection of Active Directory, phishing, mobile technology, system, service, web application, and wireless technology weaknesses that may be discovered during a penetration test.
7
star
84

vulnerable-instances

Virtual machines that are set up with a variety of known vulnerabilities.
HCL
7
star
85

scan-target-data

Contains data used to identify targets for scanning
Shell
6
star
86

openvpn-server-tf-module

Terraform module to create an OpenVPN server instance
HCL
6
star
87

ansible-role-burp-suite-pro

An Ansible role for installing Burp Suite Professional
HCL
6
star
88

con-pca-web

The website source and terraform code for continuous phishing assessment.
HTML
6
star
89

security-contact-finder

Making government security contacts accessible
CSS
6
star
90

con-pca-cicd

continuous phishing main repository
HCL
6
star
91

flare-misp-service

Automate the regular transfer of AIS data into a MISP Server
Java
6
star
92

saver

Save scan results to a database
Python
6
star
93

megazord-composition

Shell
6
star
94

ansible-role-openvpn

Ansible role to install an OpenVPN server and configure it to authenticate users certificates against FreeIPA.
Shell
6
star
95

ansible-role-amazon-efs-utils

An Ansible role for installing aws/efs-utils
Shell
5
star
96

awssh

Tool to simplify secure shell connections over AWS simple systems manager.
Python
5
star
97

sslyze-lambda

AWS Lambda function for sslyze
Python
5
star
98

cyhy-core

Python
5
star
99

ncats-data-dictionary

Shell
5
star
100

cool-assessment-terraform

Terraform to deploy an assessment environment to the COOL
HCL
5
star