vamp-ssl-audit 1.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- vamp_ssl_audit-1.1.0/LICENSE +21 -0
- vamp_ssl_audit-1.1.0/PKG-INFO +236 -0
- vamp_ssl_audit-1.1.0/README.md +212 -0
- vamp_ssl_audit-1.1.0/pyproject.toml +34 -0
- vamp_ssl_audit-1.1.0/setup.cfg +4 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/PKG-INFO +236 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/SOURCES.txt +11 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/dependency_links.txt +1 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/entry_points.txt +2 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/requires.txt +2 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.egg-info/top_level.txt +2 -0
- vamp_ssl_audit-1.1.0/vamp_ssl_audit.py +2052 -0
- vamp_ssl_audit-1.1.0/vampsec_report.py +959 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 VampSecure Studios
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: vamp-ssl-audit
|
|
3
|
+
Version: 1.1.0
|
|
4
|
+
Summary: TLS/SSL security auditor — protocol version, cipher suites, certificate validity, HSTS preload
|
|
5
|
+
Author-email: VampSecure Studios <contact@vampsecurestudios.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Vampsecure-Labs/vamp-ssl-audit
|
|
8
|
+
Project-URL: Repository, https://github.com/Vampsecure-Labs/vamp-ssl-audit
|
|
9
|
+
Keywords: ssl,tls,security,audit,certificates,pentest,web-security,hsts
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Environment :: Console
|
|
12
|
+
Classifier: Intended Audience :: Information Technology
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Security
|
|
17
|
+
Classifier: Topic :: Internet :: WWW/HTTP
|
|
18
|
+
Requires-Python: >=3.8
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
License-File: LICENSE
|
|
21
|
+
Requires-Dist: cryptography>=41.0.0
|
|
22
|
+
Requires-Dist: rich>=13.7.0
|
|
23
|
+
Dynamic: license-file
|
|
24
|
+
|
|
25
|
+
<h1 align="center">vamp-ssl-audit</h1>
|
|
26
|
+
|
|
27
|
+
<p align="center">
|
|
28
|
+
<img src="https://img.shields.io/badge/python-3.9%2B-blue?logo=python&logoColor=white" alt="Python 3.9+"/>
|
|
29
|
+
<img src="https://img.shields.io/badge/platform-linux%20%7C%20macOS%20%7C%20windows-lightgrey" alt="Platform"/>
|
|
30
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License MIT"/>
|
|
31
|
+
<img src="https://img.shields.io/badge/VampSecure-Labs-magenta" alt="VampSecure Labs"/>
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
## Overview
|
|
35
|
+
|
|
36
|
+
`vamp-ssl-audit` is a professional TLS/SSL configuration auditor with an SSLabs-inspired A+–F grading system. It tests protocol support (SSLv3 through TLS 1.3), cipher suite quality, certificate validity and key strength, and HTTP security headers. Each finding includes a concrete remediation recommendation. Reports export to JSON, HTML (dark-theme with grade badge), Markdown, and CSV — making it suitable for both interactive assessments and automated CI/CD pipelines.
|
|
37
|
+
|
|
38
|
+
## Features
|
|
39
|
+
|
|
40
|
+
- SSLabs-style letter grading from A+ (TLS 1.3 + complete HSTS + no legacy protocols) to F (null cipher, expired certificate, or connection failure)
|
|
41
|
+
- Protocol detection: SSLv3 (CRITICAL, grade cap C), TLS 1.0/1.1 (CRITICAL/HIGH, cap B), TLS 1.2 (info), TLS 1.3 (info)
|
|
42
|
+
- Cipher suite analysis: NULL/EXPORT/ADH/AECDH ciphers (CRITICAL, cap F); RC4/DES/MD5 (CRITICAL, cap C); 3DES (HIGH, cap B)
|
|
43
|
+
- Certificate inspection: expiry and days remaining, key type and size (RSA < 1024 CRITICAL/F; RSA < 2048 HIGH/B; EC < 224 HIGH/B; DSA HIGH/B), signature algorithm (MD5 CRITICAL/C; SHA-1 HIGH/B), self-signed detection (HIGH/T), hostname coverage via SAN and CN
|
|
44
|
+
- HTTP security header checks alongside TLS: HSTS (presence, `max-age`, `includeSubDomains`, `preload`), X-Frame-Options, X-Content-Type-Options
|
|
45
|
+
- Multi-host concurrent scanning with configurable thread pool (`--workers`, default 5)
|
|
46
|
+
- Custom port support (`--port`, default 443) and per-host `HOST:PORT` notation
|
|
47
|
+
- Export to Console (Rich), JSON, HTML (dark-theme standalone with grade badge), Markdown, and CSV
|
|
48
|
+
|
|
49
|
+
## Requirements
|
|
50
|
+
|
|
51
|
+
- Python 3.9 or later
|
|
52
|
+
- `cryptography >= 41.0.0`
|
|
53
|
+
- `rich >= 13.7.0`
|
|
54
|
+
|
|
55
|
+
## Installation
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
git clone https://github.com/belky-me/vamp-ssl-audit.git
|
|
59
|
+
cd vamp-ssl-audit
|
|
60
|
+
python3 -m venv .venv
|
|
61
|
+
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
62
|
+
pip install -r requirements.txt
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Usage
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
python3 vamp_ssl_audit.py --help
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
usage: vamp_ssl_audit.py [-h] [-H HOST[:PORT]] [--file FILE]
|
|
73
|
+
[--port PORT] [--timeout TIMEOUT] [--workers WORKERS]
|
|
74
|
+
[--json FILE] [--html FILE]
|
|
75
|
+
[--markdown FILE] [--csv FILE]
|
|
76
|
+
[--client CLIENT] [--engagement ENGAGEMENT]
|
|
77
|
+
[--auditor AUDITOR] [--report-scope SCOPE]
|
|
78
|
+
[--report-html FILE] [--report-pdf FILE]
|
|
79
|
+
|
|
80
|
+
vamp-ssl-audit — TLS/SSL Professional Auditor (VampSecure Labs)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Try it now — public test targets
|
|
84
|
+
|
|
85
|
+
These hosts are publicly provided for testing TLS tools:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Expired certificate → grade F
|
|
89
|
+
python3 vamp_ssl_audit.py -H expired.badssl.com
|
|
90
|
+
|
|
91
|
+
# Self-signed certificate → grade T
|
|
92
|
+
python3 vamp_ssl_audit.py -H self-signed.badssl.com
|
|
93
|
+
|
|
94
|
+
# TLS 1.0 still accepted → HIGH finding, grade cap B
|
|
95
|
+
python3 vamp_ssl_audit.py -H tls-v1.badssl.com
|
|
96
|
+
|
|
97
|
+
# SHA-1 signature → HIGH finding
|
|
98
|
+
python3 vamp_ssl_audit.py -H sha1-2016.badssl.com
|
|
99
|
+
|
|
100
|
+
# Clean A grade (standard well-configured host)
|
|
101
|
+
python3 vamp_ssl_audit.py -H badssl.com
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Examples
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Audit a single host on default port 443
|
|
108
|
+
python3 vamp_ssl_audit.py -H example.com
|
|
109
|
+
|
|
110
|
+
# Audit with a non-standard port inline
|
|
111
|
+
python3 vamp_ssl_audit.py -H example.com:8443
|
|
112
|
+
|
|
113
|
+
# Audit multiple hosts in one command
|
|
114
|
+
python3 vamp_ssl_audit.py -H example.com -H api.example.com -H legacy.example.com
|
|
115
|
+
|
|
116
|
+
# Audit a list of hosts from file with 10 parallel workers
|
|
117
|
+
python3 vamp_ssl_audit.py --file hosts.txt --workers 10
|
|
118
|
+
|
|
119
|
+
# Export results to all formats
|
|
120
|
+
python3 vamp_ssl_audit.py -H example.com \
|
|
121
|
+
--json results.json --html report.html --markdown report.md --csv report.csv
|
|
122
|
+
|
|
123
|
+
# With Let's Encrypt auto-renewal active, 90d alerts are noise — use 30d instead
|
|
124
|
+
python3 vamp_ssl_audit.py --file hosts.txt --warn-days 30
|
|
125
|
+
|
|
126
|
+
# Scan a non-HTTPS service on a custom default port
|
|
127
|
+
python3 vamp_ssl_audit.py --file smtp_hosts.txt --port 587
|
|
128
|
+
|
|
129
|
+
# Generate client-ready engagement report (HTML + PDF)
|
|
130
|
+
python3 vamp_ssl_audit.py --file hosts.txt \
|
|
131
|
+
--client "Acme Corp" --engagement "TLS Configuration Review Q3 2026" \
|
|
132
|
+
--auditor "J. Smith" --report-html client_report.html --report-pdf client_report.pdf
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## CI/CD Integration
|
|
136
|
+
|
|
137
|
+
Drop this into `.github/workflows/ssl-audit.yml` to gate your pipeline on TLS grade:
|
|
138
|
+
|
|
139
|
+
```yaml
|
|
140
|
+
name: TLS Audit
|
|
141
|
+
on:
|
|
142
|
+
schedule:
|
|
143
|
+
- cron: '0 6 * * 1' # weekly on Monday
|
|
144
|
+
workflow_dispatch:
|
|
145
|
+
|
|
146
|
+
jobs:
|
|
147
|
+
ssl-audit:
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/checkout@v4
|
|
151
|
+
- uses: actions/setup-python@v5
|
|
152
|
+
with: { python-version: '3.12' }
|
|
153
|
+
- run: pip install vamp-ssl-audit
|
|
154
|
+
- run: |
|
|
155
|
+
vamp-ssl-audit \
|
|
156
|
+
-H yourdomain.com \
|
|
157
|
+
-H api.yourdomain.com \
|
|
158
|
+
--warn-days 30 \
|
|
159
|
+
--json ssl-results.json \
|
|
160
|
+
--markdown ssl-report.md
|
|
161
|
+
# Exit code 1 = HIGH findings, 2 = CRITICAL findings → pipeline fails
|
|
162
|
+
- uses: actions/upload-artifact@v4
|
|
163
|
+
if: always()
|
|
164
|
+
with:
|
|
165
|
+
name: ssl-audit-report
|
|
166
|
+
path: ssl-report.md
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## CLI Reference
|
|
170
|
+
|
|
171
|
+
| Flag | Default | Description |
|
|
172
|
+
|------|---------|-------------|
|
|
173
|
+
| `-H / --host HOST[:PORT]` | — | Target host, optionally with port (repeatable) |
|
|
174
|
+
| `--file FILE` | — | Text file with one host (or host:port) per line |
|
|
175
|
+
| `--port N` | 443 | Default port when not specified inline |
|
|
176
|
+
| `--timeout N` | 10 | Per-connection timeout in seconds |
|
|
177
|
+
| `--workers N` | 5 | Concurrent worker threads |
|
|
178
|
+
| `--json FILE` | — | Export results to JSON |
|
|
179
|
+
| `--html FILE` | — | Export dark-theme HTML report with grade badge |
|
|
180
|
+
| `--markdown FILE` | — | Export Markdown report |
|
|
181
|
+
| `--csv FILE` | — | Export CSV summary (+ `FILE.findings` detail file) |
|
|
182
|
+
| `--warn-days N` | 90 | Days ahead to issue MEDIUM cert-expiry alert. With Let's Encrypt auto-renewal, `--warn-days 30` avoids noise (renewal runs at 30d, not 90d) |
|
|
183
|
+
| `--client TEXT` | — | Client name for VSL engagement report |
|
|
184
|
+
| `--engagement TEXT` | — | Engagement title for VSL engagement report |
|
|
185
|
+
| `--auditor TEXT` | — | Auditor name for VSL engagement report |
|
|
186
|
+
| `--report-scope TEXT` | — | Scope description for VSL engagement report |
|
|
187
|
+
| `--report-html FILE` | — | Export unified VSL client report (HTML) |
|
|
188
|
+
| `--report-pdf FILE` | — | Export unified VSL client report (PDF, requires fpdf2) |
|
|
189
|
+
|
|
190
|
+
## Output Formats
|
|
191
|
+
|
|
192
|
+
| Format | Flag | Description |
|
|
193
|
+
|--------|------|-------------|
|
|
194
|
+
| Console | (default) | Rich-colored graded output with finding tables and remediations |
|
|
195
|
+
| JSON | `--json FILE` | Machine-readable full result set |
|
|
196
|
+
| HTML | `--html FILE` | Dark-theme standalone report with letter-grade badge |
|
|
197
|
+
| Markdown | `--markdown FILE` | Portable report for audit repositories |
|
|
198
|
+
| CSV | `--csv FILE` | Summary row per host + `FILE.findings` with one row per finding |
|
|
199
|
+
| Client HTML | `--report-html FILE` | Unified VampSecure Labs engagement report |
|
|
200
|
+
| Client PDF | `--report-pdf FILE` | PDF version of the VSL client report |
|
|
201
|
+
|
|
202
|
+
## Grading Scale
|
|
203
|
+
|
|
204
|
+
| Grade | Criteria |
|
|
205
|
+
|-------|----------|
|
|
206
|
+
| A+ | TLS 1.3 active, HSTS present and complete, no legacy protocols or weak ciphers |
|
|
207
|
+
| A | Good configuration; HSTS absent or TLS 1.3 not offered |
|
|
208
|
+
| A- | Good configuration; HSTS incomplete (short max-age, no includeSubDomains) |
|
|
209
|
+
| B | TLS 1.0/1.1 present, 3DES, SHA-1 signature, or RSA < 2048 |
|
|
210
|
+
| C | SSLv3 accepted, RC4, or MD5 signature algorithm |
|
|
211
|
+
| D | Very poor configuration |
|
|
212
|
+
| T | Certificate not trusted: self-signed or hostname mismatch |
|
|
213
|
+
| F | Critical failure: null cipher, expired certificate, or connection error |
|
|
214
|
+
|
|
215
|
+
## Exit Codes
|
|
216
|
+
|
|
217
|
+
| Code | Meaning | CI/CD Behavior |
|
|
218
|
+
|------|---------|----------------|
|
|
219
|
+
| `0` | No critical or high findings | Pipeline passes |
|
|
220
|
+
| `1` | High-severity findings detected | Pipeline fails — review required |
|
|
221
|
+
| `2` | Critical-severity findings detected | Pipeline fails — immediate action required |
|
|
222
|
+
|
|
223
|
+
## Legal Notice
|
|
224
|
+
|
|
225
|
+
Use exclusively on systems you own or for which you hold explicit written authorization from the system owner. VampSecure Studios assumes no liability for unauthorized use.
|
|
226
|
+
|
|
227
|
+
## Part of VampSecure Labs Toolkit
|
|
228
|
+
|
|
229
|
+
`vamp-ssl-audit` is one tool in the VampSecure Labs security research toolkit. For the full toolkit including the orchestrator that runs all tools in sequence and aggregates findings into a single engagement report, see:
|
|
230
|
+
|
|
231
|
+
- Portfolio: [github.com/belky-me](https://github.com/belky-me)
|
|
232
|
+
- Orchestrator: [github.com/belky-me/vamp-orchestrator](https://github.com/belky-me/vamp-orchestrator)
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
© VampSecure Studios — VampSecure Labs Security Research Division
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
<h1 align="center">vamp-ssl-audit</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="https://img.shields.io/badge/python-3.9%2B-blue?logo=python&logoColor=white" alt="Python 3.9+"/>
|
|
5
|
+
<img src="https://img.shields.io/badge/platform-linux%20%7C%20macOS%20%7C%20windows-lightgrey" alt="Platform"/>
|
|
6
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License MIT"/>
|
|
7
|
+
<img src="https://img.shields.io/badge/VampSecure-Labs-magenta" alt="VampSecure Labs"/>
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
`vamp-ssl-audit` is a professional TLS/SSL configuration auditor with an SSLabs-inspired A+–F grading system. It tests protocol support (SSLv3 through TLS 1.3), cipher suite quality, certificate validity and key strength, and HTTP security headers. Each finding includes a concrete remediation recommendation. Reports export to JSON, HTML (dark-theme with grade badge), Markdown, and CSV — making it suitable for both interactive assessments and automated CI/CD pipelines.
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
- SSLabs-style letter grading from A+ (TLS 1.3 + complete HSTS + no legacy protocols) to F (null cipher, expired certificate, or connection failure)
|
|
17
|
+
- Protocol detection: SSLv3 (CRITICAL, grade cap C), TLS 1.0/1.1 (CRITICAL/HIGH, cap B), TLS 1.2 (info), TLS 1.3 (info)
|
|
18
|
+
- Cipher suite analysis: NULL/EXPORT/ADH/AECDH ciphers (CRITICAL, cap F); RC4/DES/MD5 (CRITICAL, cap C); 3DES (HIGH, cap B)
|
|
19
|
+
- Certificate inspection: expiry and days remaining, key type and size (RSA < 1024 CRITICAL/F; RSA < 2048 HIGH/B; EC < 224 HIGH/B; DSA HIGH/B), signature algorithm (MD5 CRITICAL/C; SHA-1 HIGH/B), self-signed detection (HIGH/T), hostname coverage via SAN and CN
|
|
20
|
+
- HTTP security header checks alongside TLS: HSTS (presence, `max-age`, `includeSubDomains`, `preload`), X-Frame-Options, X-Content-Type-Options
|
|
21
|
+
- Multi-host concurrent scanning with configurable thread pool (`--workers`, default 5)
|
|
22
|
+
- Custom port support (`--port`, default 443) and per-host `HOST:PORT` notation
|
|
23
|
+
- Export to Console (Rich), JSON, HTML (dark-theme standalone with grade badge), Markdown, and CSV
|
|
24
|
+
|
|
25
|
+
## Requirements
|
|
26
|
+
|
|
27
|
+
- Python 3.9 or later
|
|
28
|
+
- `cryptography >= 41.0.0`
|
|
29
|
+
- `rich >= 13.7.0`
|
|
30
|
+
|
|
31
|
+
## Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
git clone https://github.com/belky-me/vamp-ssl-audit.git
|
|
35
|
+
cd vamp-ssl-audit
|
|
36
|
+
python3 -m venv .venv
|
|
37
|
+
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
|
38
|
+
pip install -r requirements.txt
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Usage
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
python3 vamp_ssl_audit.py --help
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
usage: vamp_ssl_audit.py [-h] [-H HOST[:PORT]] [--file FILE]
|
|
49
|
+
[--port PORT] [--timeout TIMEOUT] [--workers WORKERS]
|
|
50
|
+
[--json FILE] [--html FILE]
|
|
51
|
+
[--markdown FILE] [--csv FILE]
|
|
52
|
+
[--client CLIENT] [--engagement ENGAGEMENT]
|
|
53
|
+
[--auditor AUDITOR] [--report-scope SCOPE]
|
|
54
|
+
[--report-html FILE] [--report-pdf FILE]
|
|
55
|
+
|
|
56
|
+
vamp-ssl-audit — TLS/SSL Professional Auditor (VampSecure Labs)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Try it now — public test targets
|
|
60
|
+
|
|
61
|
+
These hosts are publicly provided for testing TLS tools:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Expired certificate → grade F
|
|
65
|
+
python3 vamp_ssl_audit.py -H expired.badssl.com
|
|
66
|
+
|
|
67
|
+
# Self-signed certificate → grade T
|
|
68
|
+
python3 vamp_ssl_audit.py -H self-signed.badssl.com
|
|
69
|
+
|
|
70
|
+
# TLS 1.0 still accepted → HIGH finding, grade cap B
|
|
71
|
+
python3 vamp_ssl_audit.py -H tls-v1.badssl.com
|
|
72
|
+
|
|
73
|
+
# SHA-1 signature → HIGH finding
|
|
74
|
+
python3 vamp_ssl_audit.py -H sha1-2016.badssl.com
|
|
75
|
+
|
|
76
|
+
# Clean A grade (standard well-configured host)
|
|
77
|
+
python3 vamp_ssl_audit.py -H badssl.com
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Examples
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
# Audit a single host on default port 443
|
|
84
|
+
python3 vamp_ssl_audit.py -H example.com
|
|
85
|
+
|
|
86
|
+
# Audit with a non-standard port inline
|
|
87
|
+
python3 vamp_ssl_audit.py -H example.com:8443
|
|
88
|
+
|
|
89
|
+
# Audit multiple hosts in one command
|
|
90
|
+
python3 vamp_ssl_audit.py -H example.com -H api.example.com -H legacy.example.com
|
|
91
|
+
|
|
92
|
+
# Audit a list of hosts from file with 10 parallel workers
|
|
93
|
+
python3 vamp_ssl_audit.py --file hosts.txt --workers 10
|
|
94
|
+
|
|
95
|
+
# Export results to all formats
|
|
96
|
+
python3 vamp_ssl_audit.py -H example.com \
|
|
97
|
+
--json results.json --html report.html --markdown report.md --csv report.csv
|
|
98
|
+
|
|
99
|
+
# With Let's Encrypt auto-renewal active, 90d alerts are noise — use 30d instead
|
|
100
|
+
python3 vamp_ssl_audit.py --file hosts.txt --warn-days 30
|
|
101
|
+
|
|
102
|
+
# Scan a non-HTTPS service on a custom default port
|
|
103
|
+
python3 vamp_ssl_audit.py --file smtp_hosts.txt --port 587
|
|
104
|
+
|
|
105
|
+
# Generate client-ready engagement report (HTML + PDF)
|
|
106
|
+
python3 vamp_ssl_audit.py --file hosts.txt \
|
|
107
|
+
--client "Acme Corp" --engagement "TLS Configuration Review Q3 2026" \
|
|
108
|
+
--auditor "J. Smith" --report-html client_report.html --report-pdf client_report.pdf
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## CI/CD Integration
|
|
112
|
+
|
|
113
|
+
Drop this into `.github/workflows/ssl-audit.yml` to gate your pipeline on TLS grade:
|
|
114
|
+
|
|
115
|
+
```yaml
|
|
116
|
+
name: TLS Audit
|
|
117
|
+
on:
|
|
118
|
+
schedule:
|
|
119
|
+
- cron: '0 6 * * 1' # weekly on Monday
|
|
120
|
+
workflow_dispatch:
|
|
121
|
+
|
|
122
|
+
jobs:
|
|
123
|
+
ssl-audit:
|
|
124
|
+
runs-on: ubuntu-latest
|
|
125
|
+
steps:
|
|
126
|
+
- uses: actions/checkout@v4
|
|
127
|
+
- uses: actions/setup-python@v5
|
|
128
|
+
with: { python-version: '3.12' }
|
|
129
|
+
- run: pip install vamp-ssl-audit
|
|
130
|
+
- run: |
|
|
131
|
+
vamp-ssl-audit \
|
|
132
|
+
-H yourdomain.com \
|
|
133
|
+
-H api.yourdomain.com \
|
|
134
|
+
--warn-days 30 \
|
|
135
|
+
--json ssl-results.json \
|
|
136
|
+
--markdown ssl-report.md
|
|
137
|
+
# Exit code 1 = HIGH findings, 2 = CRITICAL findings → pipeline fails
|
|
138
|
+
- uses: actions/upload-artifact@v4
|
|
139
|
+
if: always()
|
|
140
|
+
with:
|
|
141
|
+
name: ssl-audit-report
|
|
142
|
+
path: ssl-report.md
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## CLI Reference
|
|
146
|
+
|
|
147
|
+
| Flag | Default | Description |
|
|
148
|
+
|------|---------|-------------|
|
|
149
|
+
| `-H / --host HOST[:PORT]` | — | Target host, optionally with port (repeatable) |
|
|
150
|
+
| `--file FILE` | — | Text file with one host (or host:port) per line |
|
|
151
|
+
| `--port N` | 443 | Default port when not specified inline |
|
|
152
|
+
| `--timeout N` | 10 | Per-connection timeout in seconds |
|
|
153
|
+
| `--workers N` | 5 | Concurrent worker threads |
|
|
154
|
+
| `--json FILE` | — | Export results to JSON |
|
|
155
|
+
| `--html FILE` | — | Export dark-theme HTML report with grade badge |
|
|
156
|
+
| `--markdown FILE` | — | Export Markdown report |
|
|
157
|
+
| `--csv FILE` | — | Export CSV summary (+ `FILE.findings` detail file) |
|
|
158
|
+
| `--warn-days N` | 90 | Days ahead to issue MEDIUM cert-expiry alert. With Let's Encrypt auto-renewal, `--warn-days 30` avoids noise (renewal runs at 30d, not 90d) |
|
|
159
|
+
| `--client TEXT` | — | Client name for VSL engagement report |
|
|
160
|
+
| `--engagement TEXT` | — | Engagement title for VSL engagement report |
|
|
161
|
+
| `--auditor TEXT` | — | Auditor name for VSL engagement report |
|
|
162
|
+
| `--report-scope TEXT` | — | Scope description for VSL engagement report |
|
|
163
|
+
| `--report-html FILE` | — | Export unified VSL client report (HTML) |
|
|
164
|
+
| `--report-pdf FILE` | — | Export unified VSL client report (PDF, requires fpdf2) |
|
|
165
|
+
|
|
166
|
+
## Output Formats
|
|
167
|
+
|
|
168
|
+
| Format | Flag | Description |
|
|
169
|
+
|--------|------|-------------|
|
|
170
|
+
| Console | (default) | Rich-colored graded output with finding tables and remediations |
|
|
171
|
+
| JSON | `--json FILE` | Machine-readable full result set |
|
|
172
|
+
| HTML | `--html FILE` | Dark-theme standalone report with letter-grade badge |
|
|
173
|
+
| Markdown | `--markdown FILE` | Portable report for audit repositories |
|
|
174
|
+
| CSV | `--csv FILE` | Summary row per host + `FILE.findings` with one row per finding |
|
|
175
|
+
| Client HTML | `--report-html FILE` | Unified VampSecure Labs engagement report |
|
|
176
|
+
| Client PDF | `--report-pdf FILE` | PDF version of the VSL client report |
|
|
177
|
+
|
|
178
|
+
## Grading Scale
|
|
179
|
+
|
|
180
|
+
| Grade | Criteria |
|
|
181
|
+
|-------|----------|
|
|
182
|
+
| A+ | TLS 1.3 active, HSTS present and complete, no legacy protocols or weak ciphers |
|
|
183
|
+
| A | Good configuration; HSTS absent or TLS 1.3 not offered |
|
|
184
|
+
| A- | Good configuration; HSTS incomplete (short max-age, no includeSubDomains) |
|
|
185
|
+
| B | TLS 1.0/1.1 present, 3DES, SHA-1 signature, or RSA < 2048 |
|
|
186
|
+
| C | SSLv3 accepted, RC4, or MD5 signature algorithm |
|
|
187
|
+
| D | Very poor configuration |
|
|
188
|
+
| T | Certificate not trusted: self-signed or hostname mismatch |
|
|
189
|
+
| F | Critical failure: null cipher, expired certificate, or connection error |
|
|
190
|
+
|
|
191
|
+
## Exit Codes
|
|
192
|
+
|
|
193
|
+
| Code | Meaning | CI/CD Behavior |
|
|
194
|
+
|------|---------|----------------|
|
|
195
|
+
| `0` | No critical or high findings | Pipeline passes |
|
|
196
|
+
| `1` | High-severity findings detected | Pipeline fails — review required |
|
|
197
|
+
| `2` | Critical-severity findings detected | Pipeline fails — immediate action required |
|
|
198
|
+
|
|
199
|
+
## Legal Notice
|
|
200
|
+
|
|
201
|
+
Use exclusively on systems you own or for which you hold explicit written authorization from the system owner. VampSecure Studios assumes no liability for unauthorized use.
|
|
202
|
+
|
|
203
|
+
## Part of VampSecure Labs Toolkit
|
|
204
|
+
|
|
205
|
+
`vamp-ssl-audit` is one tool in the VampSecure Labs security research toolkit. For the full toolkit including the orchestrator that runs all tools in sequence and aggregates findings into a single engagement report, see:
|
|
206
|
+
|
|
207
|
+
- Portfolio: [github.com/belky-me](https://github.com/belky-me)
|
|
208
|
+
- Orchestrator: [github.com/belky-me/vamp-orchestrator](https://github.com/belky-me/vamp-orchestrator)
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
© VampSecure Studios — VampSecure Labs Security Research Division
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "vamp-ssl-audit"
|
|
7
|
+
version = "1.1.0"
|
|
8
|
+
description = "TLS/SSL security auditor — protocol version, cipher suites, certificate validity, HSTS preload"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
requires-python = ">=3.8"
|
|
12
|
+
authors = [{ name = "VampSecure Studios", email = "contact@vampsecurestudios.com" }]
|
|
13
|
+
keywords = ["ssl", "tls", "security", "audit", "certificates", "pentest", "web-security", "hsts"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Environment :: Console",
|
|
17
|
+
"Intended Audience :: Information Technology",
|
|
18
|
+
"License :: OSI Approved :: MIT License",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Topic :: Security",
|
|
22
|
+
"Topic :: Internet :: WWW/HTTP",
|
|
23
|
+
]
|
|
24
|
+
dependencies = ["cryptography>=41.0.0", "rich>=13.7.0"]
|
|
25
|
+
|
|
26
|
+
[project.scripts]
|
|
27
|
+
vamp-ssl-audit = "vamp_ssl_audit:main"
|
|
28
|
+
|
|
29
|
+
[project.urls]
|
|
30
|
+
Homepage = "https://github.com/Vampsecure-Labs/vamp-ssl-audit"
|
|
31
|
+
Repository = "https://github.com/Vampsecure-Labs/vamp-ssl-audit"
|
|
32
|
+
|
|
33
|
+
[tool.setuptools]
|
|
34
|
+
py-modules = ["vamp_ssl_audit", "vampsec_report"]
|