一键导入
cert-transparency
Certificate Transparency log search via crt.sh API to discover subdomains and certificates
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Certificate Transparency log search via crt.sh API to discover subdomains and certificates
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Interactive gap analysis against Korea's ISMS-P 102-control certification framework (management, protection, personal information)
Security log analysis and anomaly detection for access, auth, and syslog files
Analyze suspicious files through triage/static/dynamic/code phases to produce IOCs, YARA/Sigma rules, and MITRE ATT&CK mappings
File hash reputation lookup via VirusTotal API v3 for MD5/SHA1/SHA256 detection ratio, threat classification, and vendor results
OWASP Top 10 (2021) checklist-based inspection and compliance matrix generation
Multi-chain smart contract security for Solana, Algorand, Cairo, Cosmos, Substrate, and TON with pre-audit readiness checks
| name | cert-transparency |
| description | Certificate Transparency log search via crt.sh API to discover subdomains and certificates |
| license | MIT |
| metadata | {"category":"recon","locale":"en","phase":"v1"} |
Queries TLS/SSL certificates issued for a specific domain via the crt.sh Certificate Transparency (CT) log API. Extracts subdomains from the CN (Common Name) and SAN (Subject Alternative Name) fields of certificates, deduplicates them, and expands the attack surface.
curl:
sudo apt-get install -y curl
jq (JSON parsing):
sudo apt-get install -y jq
SECSKILL_TARGET_DOMAIN: domain to query| Variable | Required | Description |
|---|---|---|
SECSKILL_TARGET_DOMAIN | Required | Root domain to query (e.g. example.com) |
SECSKILL_OUTPUT_DIR | Optional | Output directory for results (default: ./output) |
SECSKILL_INCLUDE_EXPIRED | Optional | Set to true to include expired certificates (default: false) |
export TARGET="${SECSKILL_TARGET_DOMAIN:?Set the SECSKILL_TARGET_DOMAIN environment variable}"
export OUTDIR="${SECSKILL_OUTPUT_DIR:-./output}"
export INCLUDE_EXPIRED="${SECSKILL_INCLUDE_EXPIRED:-false}"
mkdir -p "$OUTDIR"
echo "[*] Starting Certificate Transparency lookup: $TARGET"
echo "[*] Querying crt.sh API..."
CRT_URL="https://crt.sh/?q=%.${TARGET}&output=json"
RAW_JSON="$OUTDIR/crt_raw_${TARGET}.json"
HTTP_CODE=$(curl -s -o "$RAW_JSON" -w "%{http_code}" \
--max-time 30 \
--retry 3 \
--retry-delay 5 \
"$CRT_URL")
if [ "$HTTP_CODE" != "200" ]; then
echo "[-] crt.sh API error (HTTP $HTTP_CODE). Please retry after a moment."
exit 1
fi
CERT_COUNT=$(jq 'length' "$RAW_JSON" 2>/dev/null || echo "0")
echo "[+] Certificates found: $CERT_COUNT"
echo "[*] Extracting subdomains..."
SUBDOMAINS_FILE="$OUTDIR/ct_subdomains_${TARGET}.txt"
jq -r '.[].name_value' "$RAW_JSON" 2>/dev/null \
| tr ',' '\n' \
| sed 's/^\*\.//' \
| tr '[:upper:]' '[:lower:]' \
| grep -E "\\.${TARGET}$|^${TARGET}$" \
| sort -u \
> "$SUBDOMAINS_FILE"
SUB_COUNT=$(wc -l < "$SUBDOMAINS_FILE")
echo "[+] Unique subdomains: $SUB_COUNT"
if [ "$INCLUDE_EXPIRED" != "true" ]; then
echo "[*] Extracting subdomains from valid certificates only..."
VALID_SUBDOMAINS_FILE="$OUTDIR/ct_valid_subdomains_${TARGET}.txt"
NOW=$(date -u '+%Y-%m-%dT%H:%M:%S')
jq -r --arg now "$NOW" \
'.[] | select(.not_after > $now) | .name_value' "$RAW_JSON" 2>/dev/null \
| tr ',' '\n' \
| sed 's/^\*\.//' \
| tr '[:upper:]' '[:lower:]' \
| grep -E "\\.${TARGET}$|^${TARGET}$" \
| sort -u \
> "$VALID_SUBDOMAINS_FILE"
VALID_COUNT=$(wc -l < "$VALID_SUBDOMAINS_FILE")
echo "[+] Subdomains from valid certificates: $VALID_COUNT"
fi
echo ""
echo "===== Certificate Issuer Statistics ====="
jq -r '.[].issuer_name' "$RAW_JSON" 2>/dev/null \
| grep -oP '(?<=O=)[^,]+' \
| sort | uniq -c | sort -rn | head -10
echo "========================================="
echo ""
echo "===== Wildcard Certificate List ====="
jq -r '.[].name_value' "$RAW_JSON" 2>/dev/null \
| tr ',' '\n' \
| grep '^\*\.' \
| sort -u \
| head -20
echo "======================================"
echo ""
echo "===== Certificate Transparency Results Summary ====="
echo "Target domain : $TARGET"
echo "Certificates found: $CERT_COUNT"
echo "Unique subdomains: $SUB_COUNT"
echo "Output file : $SUBDOMAINS_FILE"
echo "Raw JSON : $RAW_JSON"
echo "==================================================="
| Symptom | Cause | Resolution |
|---|---|---|
| HTTP 503 error | crt.sh server overload | Retry after a few minutes |
jq: command not found | jq not installed | Run apt-get install jq |
| 0 results | New domain or not submitted to CT | Verify domain, use subdomain-enum skill in parallel |
| JSON parse error | API response format changed | Check raw response with cat $RAW_JSON |
| Timeout | Network latency | Increase --max-time value (60 seconds or more) |
*.example.com) can cover thousands of subdomains.subdomain-enum skill results yields a more complete list.https://censys.io) and the Facebook CT API can be used as complementary sources alongside crt.sh.