728x90
우분투에 sslscan을 설치하고 사용하는 방법
sslscan은 OpenSSL을 사용하여 SSL/TLS 서버의 보안 설정과 암호화 알고리즘을 스캔하는 도구입니다.
테스트 환경
docker run -it --rm anti1346/ubuntu2204:latest bash
1. 패키지 관리자를 사용하여 sslscan을 설치합니다.
sudo apt-get update
sudo apt-get install -y sslscan
더보기
sslscan www.google.com:443
Version: 2.0.7
OpenSSL 3.0.2 15 Mar 2022
Connected to 172.217.25.164
Testing SSL server www.google.com on port 443 using SNI name www.google.com
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 enabled
TLSv1.1 enabled
TLSv1.2 enabled
TLSv1.3 enabled
TLS Fallback SCSV:
Server supports TLS Fallback SCSV
TLS renegotiation:
Secure session renegotiation supported
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed
TLSv1.0 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253
Preferred TLSv1.2 256 bits ECDHE-ECDSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 128 bits AES128-GCM-SHA256
Accepted TLSv1.2 256 bits AES256-GCM-SHA384
Accepted TLSv1.2 128 bits AES128-SHA
Accepted TLSv1.2 256 bits AES256-SHA
Accepted TLSv1.2 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.1 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.1 128 bits AES128-SHA
Accepted TLSv1.1 256 bits AES256-SHA
Accepted TLSv1.1 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.0 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.0 128 bits AES128-SHA
Accepted TLSv1.0 256 bits AES256-SHA
Accepted TLSv1.0 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Server Key Exchange Group(s):
TLSv1.3 128 bits secp256r1 (NIST P-256)
TLSv1.3 128 bits x25519
TLSv1.2 128 bits secp256r1 (NIST P-256)
TLSv1.2 128 bits x25519
SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
ECC Curve Name: prime256v1
ECC Key Strength: 128
Subject: www.google.com
Altnames: DNS:www.google.com
Issuer: GTS CA 1C3
Not valid before: Jun 19 08:21:20 2023 GMT
Not valid after: Sep 11 08:21:19 2023 GMT
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
sudo apt-get install -y build-essential zlib1g-dev
OpenSSL 소스 코드 다운로드
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz
tar -xf openssl-1.1.1.tar.gz
cd openssl-1.1.1
OpenSSL 재빌드(압축 지원을 포함)
./config zlib
make
sudo make install
sudo ldconfig
2. 설치가 완료되면 터미널에서 sslscan 명령어를 사용하여 SSL/TLS 서버를 스캔할 수 있습니다.
sslscan [options] [host:port ...]
주요 옵션
- -h, --help: 도움말 출력
- -V, --version: 버전 정보 출력
- -t, --targets=<file>: 목표 호스트 및 포트가 포함된 파일 지정
- -f, --file=<file>: 결과를 파일로 저장
- -o, --xml=<file>: 결과를 XML 형식으로 저장
- -p, --protocols=<protocols>: 테스트할 프로토콜 지정 (예: --protocols=TLSv1,TLSv1.1,TLSv1.2)
- -c, --cipher=<cipher>: 특정 암호 스위트 테스트 (예: --cipher=ECDHE-RSA-AES256-GCM-SHA384)
- -e, --show-certificate: 서버 인증서 정보 표시
- -r, --renegotiation: 재협상 지원 확인
- -x, --starttls=<protocol>: STARTTLS 지원 확인 (예: --starttls=smtp)
- -b, --bulk: 여러 호스트 및 포트에 대한 결과를 함께 표시
예를 들어, google.com의 443 포트에 대한 SSL/TLS 연결을 스캔하려면 다음과 같이 실행합니다.
sslscan google.com:443
sslscan은 해당 서버의 SSL/TLS 설정 및 암호화 알고리즘을 분석하고 취약점 및 보안 문제를 보고합니다.
728x90
3. 스캔 결과를 분석합니다. sslscan은 해당 서버의 SSL/TLS 연결에 대한 다양한 정보를 제공합니다. 이를 통해 암호화 프로토콜, 암호화 알고리즘, 인증서 정보, 암호 강도 등을 확인할 수 있습니다.
예시 출력:
$ sslscan www.google.com:443
Version: 2.0.7
OpenSSL 3.0.2 15 Mar 2022
Connected to 172.217.25.164
Testing SSL server www.google.com on port 443 using SNI name www.google.com
SSL/TLS Protocols:
SSLv2 disabled
SSLv3 disabled
TLSv1.0 enabled
TLSv1.1 enabled
TLSv1.2 enabled
TLSv1.3 enabled
TLS Fallback SCSV:
Server supports TLS Fallback SCSV
TLS renegotiation:
Secure session renegotiation supported
TLS Compression:
OpenSSL version does not support compression
Rebuild with zlib1g-dev package for zlib support
Heartbleed:
TLSv1.3 not vulnerable to heartbleed
TLSv1.2 not vulnerable to heartbleed
TLSv1.1 not vulnerable to heartbleed
TLSv1.0 not vulnerable to heartbleed
Supported Server Cipher(s):
Preferred TLSv1.3 128 bits TLS_AES_128_GCM_SHA256 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_AES_256_GCM_SHA384 Curve 25519 DHE 253
Accepted TLSv1.3 256 bits TLS_CHACHA20_POLY1305_SHA256 Curve 25519 DHE 253
Preferred TLSv1.2 256 bits ECDHE-ECDSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-GCM-SHA256 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.2 128 bits AES128-GCM-SHA256
Accepted TLSv1.2 256 bits AES256-GCM-SHA384
Accepted TLSv1.2 128 bits AES128-SHA
Accepted TLSv1.2 256 bits AES256-SHA
Accepted TLSv1.2 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.1 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.1 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.1 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.1 128 bits AES128-SHA
Accepted TLSv1.1 256 bits AES256-SHA
Accepted TLSv1.1 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Preferred TLSv1.0 128 bits ECDHE-ECDSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits ECDHE-ECDSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.0 128 bits ECDHE-RSA-AES128-SHA Curve 25519 DHE 253
Accepted TLSv1.0 256 bits ECDHE-RSA-AES256-SHA Curve 25519 DHE 253
Accepted TLSv1.0 128 bits AES128-SHA
Accepted TLSv1.0 256 bits AES256-SHA
Accepted TLSv1.0 112 bits TLS_RSA_WITH_3DES_EDE_CBC_SHA
Server Key Exchange Group(s):
TLSv1.3 128 bits secp256r1 (NIST P-256)
TLSv1.3 128 bits x25519
TLSv1.2 128 bits secp256r1 (NIST P-256)
TLSv1.2 128 bits x25519
SSL Certificate:
Signature Algorithm: sha256WithRSAEncryption
ECC Curve Name: prime256v1
ECC Key Strength: 128
Subject: www.google.com
Altnames: DNS:www.google.com
Issuer: GTS CA 1C3
Not valid before: Jun 19 08:21:20 2023 GMT
Not valid after: Sep 11 08:21:19 2023 GMT
sslscan의 결과는 다음과 같은 내용을 포함할 수 있습니다.
- Target 정보: 검사 대상 서버의 호스트명 또는 IP 주소가 표시됩니다.
- Protocols: 서버가 지원하는 SSL/TLS 프로토콜 버전이 표시됩니다. 예를 들어, TLS 1.2, TLS 1.3 등이 포함될 수 있습니다.
- Cipher Suites: 서버가 지원하는 암호화 스위트의 목록이 표시됩니다. 각 스위트는 암호화 알고리즘과 키 교환 알고리즘의 조합으로 구성됩니다.
- Handshake Simulation: 다양한 클라이언트와 서버의 조합으로 핸드셰이크를 시뮬레이션한 결과가 표시됩니다. 이를 통해 클라이언트와 서버 간의 호환성과 지원 가능한 프로토콜 버전 및 암호화 스위트를 확인할 수 있습니다.
- Certificate Information: 서버의 인증서 정보가 표시됩니다. 인증서의 발급자, 유효 기간, 공개 키 등과 같은 정보를 포함할 수 있습니다.
- Heartbleed: 서버가 Heartbleed 취약점에 취약한지 여부가 표시됩니다. Heartbleed는 OpenSSL 라이브러리의 버그로 인해 발생하는 정보 노출 취약점입니다.
스캔 결과를 통해 암호화 강도, 지원하는 암호화 알고리즘, TLS 버전 등을 확인할 수 있습니다.
- 단일 호스트 검사
sslscan example.com:443
- 여러 호스트 및 포트에 대한 검사
sslscan --targets=targets.txt
- 결과를 파일로 저장
sslscan example.com:443 -f result.txt
- XML 형식으로 결과 저장
sslscan example.com:443 -o result.xml
- 특정 프로토콜 및 암호 스위트 테스트
sslscan example.com:443 --protocols=TLSv1.2 --cipher=ECDHE-RSA-AES256-GCM-SHA384
sslscan을 사용하여 sangchul.kr의 SSL/TLS 서버에서 지원하는 암호화 알고리즘 중 "Accepted" 상태인 알고리즘을 출력
sslscan --no-failed sangchul.kr | grep Accepted
$ sslscan --no-failed sangchul.kr | grep Accepted
Accepted TLSv1.2 256 bits ECDHE-RSA-AES256-GCM-SHA384 Curve 25519 DHE 253
Accepted TLSv1.2 256 bits ECDHE-RSA-CHACHA20-POLY1305 Curve 25519 DHE 253
이제 sslscan을 설치하고 사용할 수 있으며, SSL/TLS 서버의 보안 설정을 분석하고 취약점을 식별할 수 있습니다.
728x90
'리눅스' 카테고리의 다른 글
[draft] 우분투에서 UTF-8 언어셋으로 변경하는 방법 (0) | 2023.07.05 |
---|---|
SSL/TLS 암호화 알고리즘(SSLCipherSuite)을 제외하는 방법 (0) | 2023.07.05 |
docker inspect 명령어 (0) | 2023.07.04 |
[draft] 우분투에서 NTP 서버를 구성하는 방법 (0) | 2023.07.02 |
CentOS 8에서 Failed to download metadata for repo 'appstream' 오류를 해결하는 방법 (0) | 2023.07.02 |