A Blue Team style Python auditing tool that establishes a system baseline, runs it against a checklist of common vulnerability classes, and produces a risk-ranked threat report — built as Cyber Security Project 4 ("Audited Systems: A Framework for Blue Team Defense").
"A system's integrity is dynamic. The security auditor is the essential gatekeeper for organizational resilience."
| Step | Area | Checks |
|---|---|---|
| 1 | The Identity Front Door | Password strength (NIST 800-63B), MFA method strength (flags legacy SMS/voice OTP) |
| 2 | Software Decay & Patch Management | Pending OS/package updates, staleness of the patch cache, antivirus definitions |
| 3 | Unsafe Practices & Exposure | Host firewall status, SSH hardening (root login / password auth), unexpected listening ports, passwordless sudo rules |
| Output | Threat Reporting | Risk-ranked findings (Critical → Info) + a deduplicated remediation roadmap, exportable as JSON |
The tool follows the Input → Process → Output blueprint:
- Input — establish the baseline (what's installed, what's listening, what's configured).
- Process — cross-reference the baseline against the checklist.
- Output — a risk-ranked vulnerability list with a remediation roadmap.
system-vulnerability-checklist/
├── main.py # CLI entry point
├── checklist/
│ ├── password_check.py # Step 1: passwords & MFA
│ ├── patch_check.py # Step 2: patch management
│ ├── user_practices.py # Step 3: firewall/SSH/ports/sudo
│ └── report.py # Output: risk-ranked reporting
├── sample_data/
│ └── sample_credentials.txt # Demo file for the password checker
├── tests/
│ ├── test_password_check.py
│ └── test_report.py
├── reports/ # Generated JSON reports land here
├── requirements.txt
└── README.md
- Python 3.10+
- No third-party packages required to run (standard library only)
pytestif you want to run the test suite
git clone https://github.com/<your-username>/system-vulnerability-checklist.git
cd system-vulnerability-checklist
pip install -r requirements.txt # only needed for running testsRun the full checklist (patch + practices checks always run; password checks run if you supply a credentials file):
python main.py full --passwords sample_data/sample_credentials.txtSave the report as JSON under reports/:
python main.py full --passwords sample_data/sample_credentials.txt --saveRun a single checklist step:
python main.py passwords --passwords sample_data/sample_credentials.txt
python main.py patches
python main.py practices========================================================
SYSTEM VULNERABILITY CHECKLIST — THREAT REPORT
========================================================
System : my-laptop
Platform : Linux-6.8.0-x86_64-with-glibc2.35
Generated: 2026-07-15T18:20:00+00:00
Overall Risk: CRITICAL
--------------------------------------------------------
[CRITICAL] password_strength
- Password appears on a common/breached password list.
[HIGH ] listening_ports
- Unexpected open port(s): [8080]. Verify each is an approved, needed service.
...
--------------------------------------------------------
REMEDIATION ROADMAP (risk-ranked)
1. [CRITICAL] password_strength: Enforce NIST 800-63B length-based password policy...
2. [HIGH] listening_ports: Investigate and close/firewall any unapproved listening service.
========================================================
This tool never reads real account credentials off the machine. It
audits a plain-text identifier:password file that you supply — e.g.
a password-policy test file or export from a password manager — so it
can be run safely without elevated privileges. Do not commit real
credentials into sample_data/; the sample file is for demonstration
only.
pytestmain.py exits with code 2 if the overall risk is CRITICAL (handy for
CI pipelines / cron jobs that should alert on regression), and 0
otherwise.
MIT — see LICENSE.