원클릭으로
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.