본문 바로가기

리눅스

우분투에 sslscan을 설치하고 사용하는 방법

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