[WEB]HTTPS 취약점 점검 완벽 가이드
HTTPS는 웹 통신 보안의 기반이지만, 잘못된 설정으로 인해 심각한 보안 위협에 노출될 수 있습니다. 이 가이드에서는 HTTPS 환경에서 주로 발견되는 4가지 핵심 취약점과 이를 체계적으로 점검하는 방법을 다룹니다.
⚠️ 주의 사항
💡 이 가이드에 포함된 정보는 교육 및 학습 목적으로만 제공됩니다.
불법적인 해킹, 시스템 침해, 또는 타인의 정보와 네트워크를 무단으로 사용하여 발생하는 모든 행위는 법적 처벌의 대상이 됩니다. 실습은 반드시 자신의 환경 또는 허가된 가상 환경(CTF, 테스트 서버)에서만 진행해야 합니다.
🔄 점검 워크플로우
도구 설치 ──▶ 프로토콜 점검 ──▶ 암호 알고리즘 점검 ──▶ 취약점 스캔 ──▶ 추가 보안 점검
📋 점검 도구 설치
Nmap
네트워크 스캐닝 도구로, 대상의 포트 및 서비스를 스캔하는 데 사용되는 오픈 소스 도구입니다.
다운로드: https://nmap.org/download
주요 SSL/TLS 점검 스크립트:
ssl-enum-ciphers- 암호화 스위트 열거 및 취약성 분석ssl-heartbleed- Heartbleed 취약점 (CVE-2014-0160) 감지ssl-ccs-injection- CCS Injection 취약점 (CVE-2014-0224) 감지ssl-poodle- POODLE 취약점 (CVE-2014-3566) 감지ssl-cert- SSL/TLS 인증서 정보 분석
OpenSSL
암호화와 보안 프로토콜을 구현하는 오픈 소스 라이브러리입니다.
다운로드 (Windows): https://slproweb.com/products/Win32OpenSSL.html
추가 점검 도구
sslscan
brew install sslscan # Mac
apt install sslscan # Ubuntu/Debian
# 사용 예시
sslscan [목적지]:[포트]
testssl.sh
- GitHub: https://testssl.sh
- bash 기반의 종합적인 SSL/TLS 점검 도구
git clone --depth 1 https://github.com/drwetter/testssl.sh.git
cd testssl.sh
# 사용 예시
./testssl.sh [목적지]
./testssl.sh -E -e -p [목적지] # 암호화 스위트, 프로토콜, 취약점 점검
온라인 점검 도구:
- SSL Labs (Qualys): https://www.ssllabs.com/ssltest/
- ImmuniWeb: https://www.immuniweb.com/ssl/
🔍 1. 취약한 HTTPS 프로토콜 점검
설명
취약한 버전의 암호 프로토콜 사용 시 암호화된 통신 내용이 유출될 수 있습니다. SSL 3.0 이하, TLS 1.2 미만 버전 사용 여부를 확인합니다.
점검 기준
TLS 프로토콜
- TLS 1.2 미만 버전 : 취약
- TLS 1.2 이상 버전 : 양호
- TLS 1.3 권장 (최신 보안 기능 포함)
SSL 프로토콜 (SSL 사용 시 : ALL 취약)
- SSL 2.0, SSL 3.0 : 취약
점검 방법
Nmap
nmap -p 443 --script ssl-enum-ciphers [목적지]
예시:
nmap -p 443 --script ssl-enum-ciphers example.com
결과 해석:
- TLSv1.2, TLSv1.3만 표시되면: ✅ 양호
- SSLv2, SSLv3, TLSv1.0, TLSv1.1 표시되면: ⚠️ 취약
sslscan
sslscan --no-fallback [목적지]:[포트]
testssl.sh
./testssl.sh -p [목적지] # 프로토콜 버전만 확인
🔐 2. 취약한 HTTPS 암호 알고리즘 점검
설명
보안 강도가 낮은 암호 알고리즘을 사용할 경우, 암호화된 통신 내용이 유출될 위험이 있습니다.
점검 기준
암호 알고리즘 보안 강도
- A : 알고리즘 강도 상 (안전)
- B : 알고리즘 강도 중
- C : 알고리즘 강도 하 (취약)
권장 Cipher Suite:
- AES-GCM (Galois/Counter Mode)
- ChaCha20-Poly1305
- ECDHE-RSA-AES256-GCM-SHA384
- ECDHE-ECDSA-AES256-GCM-SHA384
비권장(취약) Cipher Suite:
- RC4, DES, 3DES, MD5
- NULL, Anonymous, Export-grade ciphers
- SHA1 (SHA256 이상 권장)
점검 방법
Nmap
nmap -p 443 --script ssl-enum-ciphers [목적지]
결과 해석:
- A급 알고리즘만 사용: ✅ 양호
- C급 알고리즘 발견: ⚠️ 취약
sslscan
sslscan [목적지]:[포트]
testssl.sh
./testssl.sh -E [목적지] # 암호화 스위트 열거
🛡️ 3. 취약한 HTTPS 컴포넌트 점검
설명
취약한 HTTPS 컴포넌트 사용 시, 암호화된 정보 노출 등의 위협이 존재할 수 있습니다. 주요 CVE 취약점을 점검합니다.
주요 취약점
| CVE | 취약점명 | 설명 |
|---|---|---|
| CVE-2014-0160 | Heartbleed | OpenSSL의 메모리 노출 취약점, 서버의 중요 정보 유출 가능 |
| CVE-2014-0224 | CCS-Injection | CCS 메시지 처리 취약점, 정보 노출 및 변조 가능 |
| CVE-2014-3566 | POODLE | SSL 3.0 취약점, 암호화된 데이터 해독 가능 |
| CVE-2011-3389 | BEAST | TLS 1.0 CBC 모드 취약점 |
| CVE-2015-0204 | FREAK | Export-grade RSA 암호화 다운그레이드 |
| CVE-2015-4000 | Logjam | Diffie-Hellman 약한 파라미터 취약점 |
점검 방법
Heartbleed (CVE-2014-0160)
nmap -p 443 --script ssl-heartbleed [목적지]
결과 해석:
- 취약한 경우:
VULNERABLE메시지 출력 - 양호한 경우: 관련 메시지 없음
CCS-Injection (CVE-2014-0224)
nmap -p 443 --script ssl-ccs-injection [목적지]
POODLE (CVE-2014-3566)
nmap -p 443 --script ssl-poodle [목적지]
testssl.sh 종합 점검
./testssl.sh -f [목적지] # 모든 취약점 점검
🔄 4. 취약한 HTTPS 재협상 점검
설명
TLS 1.1 이하 버전에서 HTTPS 재협상(Renegotiation) 설정이 허용되어 있을 경우, 암호화된 통신 내용이 노출될 위험이 있습니다.
점검 기준
💡 TLS 1.1 이하의 재협상 설정 허용 시 취약
TLS 1.2 이상은 양호
점검 방법
OpenSSL
openssl s_client -connect [목적지:포트번호]
예시:
openssl s_client -connect example.com:443
연결 후 재협상을 위해 R 키 입력
결과 해석:
- 에러 메시지 출력: ✅ 양호 (재협상 거부)
- 정상 메시지 출력: ⚠️ 취약 (재협상 허용)
✨ 5. 추가 보안 설정 점검
Forward Secrecy (PFS) 지원
설명: 서버가 Forward Secrecy를 지원하는지 확인합니다. PFS를 지원하면 서버의 개인키가 유출되어도 과거 통신 내용 복호화가 어렵습니다.
점검 방법:
./testssl.sh -pfs [목적지]
nmap -p 443 --script ssl-enum-ciphers [목적지] | grep -E "ECDHE|DHE"
✅ 양호: ECDHE 또는 DHE cipher suite 사용
HSTS (HTTP Strict Transport Security) 설정
설명: 웹 서버가 HSTS 헤더를 전송하여 HTTPS만 사용하도록 강제하는지 확인합니다.
점검 방법:
curl -I https://[목적지] | grep -i strict-transport-security
권장 설정:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
인증서 유효성 점검
점검 항목:
- 인증서 만료 기간 확인
- 인증서 체인(chain) 유효성
- 키 크기 (최소 2048비트, 권장 4096비트)
- 서명 알고리즘 (SHA256 이상 권장)
점검 방법:
# 인증서 정보 확인
openssl s_client -connect [목적지]:443 -showcerts
# 인증서 만료 확인
echo | openssl s_client -connect [목적지]:443 2>/dev/null | openssl x509 -noout -dates
# Nmap으로 인증서 정보 확인
nmap -p 443 --script ssl-cert [목적지]
📊 점검 방법 요약표
| 취약점명 | 점검 기준 | 명령어 |
|---|---|---|
| 취약한 HTTPS 프로토콜 이용 | 프로토콜 버전 확인 | nmap -p 443 --script ssl-enum-ciphers [목적지]sslscan --no-fallback [목적지]:[포트]./testssl.sh -p [목적지] |
| 취약한 암호 알고리즘 사용 | 알고리즘 강도 확인 (A~C) | nmap -p 443 --script ssl-enum-ciphers [목적지]./testssl.sh -E [목적지] |
| 취약한 컴포넌트 사용 | 메시지 출력 여부 확인 | nmap -p 443 --script ssl-heartbleed [목적지]nmap -p 443 --script ssl-ccs-injection [목적지]nmap -p 443 --script ssl-poodle [목적지] |
| 취약한 재협상 허용 | 재협상 가능 여부 확인 | openssl s_client -connect [목적지:포트번호] 후 R 키 입력 |
| Forward Secrecy 지원 | ECDHE/DHE cipher 사용 확인 | ./testssl.sh -pfs [목적지] |
| HSTS 설정 | Strict-Transport-Security 헤더 확인 | curl -I https://[목적지] | grep -i strict-transport-security |
| 인증서 유효성 | 만료, 키 크기, 서명 알고리즘 확인 | nmap -p 443 --script ssl-cert [목적지] |
★ Insight ─────────────────────────────────────
HTTPS 보안의 핵심 계층 구조
- 프로토콜 계층: TLS 1.2+ 사용으로 기본적인 보안 강화
- 암호화 계층: 강력한 cipher suite로 데이터 기밀성 보장
- 인증 계층: 유효한 인증서로 서버 신원 검증
- 구성 계층: HSTS, PFS 등으로 추가 보안 계층 제공
각 계층이 제대로 구성되어야만 종합적인 HTTPS 보안이 달성됩니다.
─────────────────────────────────────────────────
📚 참고 자료
공식 가이드:
- OWASP Web Security Testing Guide - Weak SSL/TLS Ciphers
- SSL Labs SSL/TLS Deployment Best Practices
- DigiCert TLS Best Practices Guide
- KISA CSAP CCE 취약점 점검 가이드
점검 도구:
⚠️ 면책 조항
본 가이드를 따르면서 발생하는 모든 결과에 대한 책임은 전적으로 사용자 본인에게 있습니다. 이 문서는 참고용으로 제공되며, 작성자는 어떠한 손해나 문제에 대해 책임지지 않습니다.
금지 사항:
- 본 내용을 악의적인 목적으로 사용하는 것을 엄격히 금지합니다.
- 타인의 권리를 침해하거나 불법적인 활동에 사용하는 것을 금지합니다.
- 상업적 목적의 무단 복제나 재배포를 금지합니다.
본 가이드의 내용은 학습 및 교육 목적으로만 사용해야 합니다.
본 가이드에 포함된 모든 보안 점검 방법은 승인된 환경에서만 수행해야 하며, 타인의 시스템이 네트워크에 대해 무단으로 점검을 수행하는 것은 불법입니다.