[역량강화] TLS 1.0, TLS 1.1 버전이 취약한 이유
- 2024.03.21 -
마찬가지로, 두번째 역량강화가 끝났다.
한.. 20일 새벽에 끝났는데 바로 올릴까 하다가 업무 끝나고 조금 쉬다보니 ㅋㅋㅋ
시간이 벌써 하루가 다 가버렸다.
각설하고 바로 시작해보자.
목차
1. TLSv1.0, TLSv1.1 버전이 왜 취약한가?
2. 아래의 사이트를 통해 target(도메인)을 진단후 결과값에서 TLSv1.0, v1.1 버전 접속이 가능여부 확인
ssl 취약점 분석 사이트 : https://www.ssllabs.com/ssltest/
3. openssl.exe 가 무엇인지 조사하기 & 설치
4. openssl을 통해 target(도메인)이 사용중인 TLS 버전이 뭔지 알 수 있는 방법 조사하기
5. openssl을 통해 target(도메인)에 TLSv1.0, 1.1, 1.2, 1.3 연결이 가능한지 알아낼 수 있는 방법 조사하기
6. 4번 5번의 결과를 출력하는 배치파일 제작하기.
1. TLSv1.0, TLSv1.1 버전이 왜 취약한지 조사하기
1.1 TLS란?
TLSv1.0과 1.1이 왜 취약한지 알기위해서는 TLS가 무엇인지 알아야한다.
TLS(Transport Layer Security)는 데이터 통신을 암호화하고 안전하게 전송하기 위해 고안된 프로토콜이다.
네트워크에서 데이터 통신을 함에 이를 보호하기 위한 고안되어 TLS는 안전한 통신 채널을 설정 및 인증을 위해 사용된다. 주로 웹 브라우저와 웹 서버간의 통신에 사용이 되며 HTTPS로도 알려져 있다. HTTPS는 SSL 프로토콜의 후속버전으로, TLS를 기반으로 작동한다. TLS는 아래와 같이 구분하고 구분에 따라 기능을 수행한다.
1. 암호화 : 데이터를 안전하게 암호화하여 제3자가 데이터를 가로채어도 읽을 수 없도록 한다.
2. 인증 : 클라이언트 및 서버 간의 상호 인증을 통해 통신하는 대상을 식별한다.
3. 데이터 무결성 보호 : 데이터가 전송 중에 변경, 손상되지 않도록 무결성을 보장한다.
4. 완전성 보호 : 데이터가 전송 중에 변조되거나 위조되지 않도록 보장한다.
1.2 TLS1.0과 TLS1.1이 취약한 이유
1. 암호화 알고리즘의 취약성 : TLS 1.0과 1.1은 DES및 3DES와 같은 암호화 알고리즘을 사용하고 있는데 이런 알 고리즘은 키가 짧고 암호분석기술이 발전함에 따라 표준기술에서 폐기되었다. 현재 NIST를 포함한 다른 기관에서 권장하지 않는 암호화 알고리즘이며 결정적으로 선형미분공격 및 생일공격과 같은 암호학적 공격기법들이 등장함에 따라 더 이상 안전하지 않는 암호화 알고리즘으로 평가되고 있다.
2. 키 교환 알고리즘 취약성 : TLS1.0과 1.1은 RSA라고 부르는 키 교환방식을 사용하며 이는 공격자가 중간에 키를 가로 챌 수 있는 중간자공격에 취약하다. 지금 TLS1.2와 TLS1.3에서는 이러한 방법을 대비할 수 있게 안전한 매커니즘이 조치가 가능하나 1.0과 1.1에서는 방법이 부족한것으로 알고 있다.
3. 암호화 오버헤드 : TLS1.0과 TLS1.1에는 취약한 기능과 알려진 보안결함이 있으며 이러한 결함을 이용해 공격자는 중요정보를 노출시킬 수 있고, 더 나아가서는 시스템 침투할 수 있는 가능성을 제공한다.
2. 아래의 사이트를 통해 target(도메인)을 진단후 결과값에서 TLSv1.0, v1.1 버전 접속이 가능여부 확인
ssl 취약점 분석 사이트 : https://www.ssllabs.com/ssltest/
Qualys에서 지원하고 있는 SSL취약점 분석 사이트
NAVER를 넣어 조회해보니 B등급이 확인되었다.
위 처럼 지원하는 TLS버전이 1.0과 1.1이렇게 두가지가 존재하는 것을 확인 할 수 있다.
3. Openssl.exe 가 무엇인지 조사하기 & 설치
3.1 OpenSSL이란?
평균적으로 사용되고 있는 대부분의 대칭/비대칭 암호화 프로토콜을 구현한 오픈소스 라이브러리로, 가장 대표적으로 SSL/TLS와 관련된 기능들을 제공하며 폭 넓게 사용되는 암호화계의 사실상 표준이다.
3.2 설치 과정
링크로 접근하여 가장 최신 버전으로 다운로드 후 설치
https://slproweb.com/products/Win32OpenSSL.html
OpenSSL 환경변수 설정 | |
시스템 환경변수 설정 | 경로 “C:\Program Files\OpenSSL-Win64\bin” 추가 |
![]() |
![]() |
※ 경로는 설치된 환경과 이름마다 조금씩 상이함.
4. Openssl을 통해 target(도메인)이 사용중인 TLS 버전이 뭔지 알 수 있는 방법 조사하기
s_client명령어를 이용하여 특정 대상과 통신을 시도할 수 있다.
openssl s_client -connect naver.com:443
5. Openssl을 통해 target(도메인)에 TLSv1.0, 1.1, 1.2, 1.3 연결이 가능한지 알아낼 수 있는 방법 조사하기
4번과 동일하게 명령어를 이용하되 뒤에 옵션을 붙여 사용할 수 있다.
명령어 'tls1_@'는 각각 1.0~1.3까지를 일컺는다.
openssl s_client -connect naver.com:443 -tls1
openssl s_client -connect naver.com:443 -tls1_1
openssl s_client -connect naver.com:443 -tls1_2
openssl s_client -connect naver.com:443 -tls1_3
6. 4번 5번의 결과를 출력하는 배치파일 제작하기.
@echo off
title TLS Checker
set /p domain=도메인 주소를 입력하세요:
echo.
echo.
echo ###### #### ##### #### ## ## ####### #### ### ##
echo # ## # ## ## ## ## ## ## ## ## # ## ## ## ##
echo ## ## # ## ## ## ## # ## ## ##
echo ## ## ##### ## ####### #### ## ####
echo ## ## # ## ## ## ## ## # ## ## ##
echo ## ## ## ## ## ## ## ## ## ## # ## ## ## ##
echo #### ####### ##### #### ## ## ####### #### ### ##
echo ########
echo.
echo.
echo TLS Checker Target: %domain%
echo.
echo TLS 1.0 지원 여부:
openssl s_client -connect %domain%:443 -tls1 2>nul | findstr /C:"Protocol" | findstr /C:"TLSv1.0" >nul && (
echo TLS 1.0 지원 중
openssl s_client -connect %domain%:443 -tls1 2>nul | findstr /C:"Protocol"
) || (
echo TLS 1.0 미지원
)
echo.
echo TLS 1.1 지원 여부:
openssl s_client -connect %domain%:443 -tls1_1 2>nul | findstr /C:"Protocol" | findstr /C:"TLSv1.1" >nul && (
echo TLS 1.1 지원 중
openssl s_client -connect %domain%:443 -tls1_1 2>nul | findstr /C:"Protocol"
) || (
echo TLS 1.1 미지원
)
echo.
echo TLS 1.2 지원 여부:
openssl s_client -connect %domain%:443 -tls1_2 2>nul | findstr /C:"Protocol" | findstr /C:"TLSv1.2" >nul && (
echo TLS 1.2 지원 중
openssl s_client -connect %domain%:443 -tls1_2 2>nul | findstr /C:"Protocol"
) || (
echo TLS 1.2 미지원
)
echo.
echo TLS 1.3 지원 여부:
openssl s_client -connect %domain%:443 -tls1_3 2>nul | findstr /C:"Protocol" | findstr /C:"TLSv1.3" >nul && (
echo TLS 1.3 지원 중
openssl s_client -connect %domain%:443 -tls1_3 2>nul | findstr /C:"Protocol"
) || (
echo TLS 1.3 미지원
)
echo.
echo 완료되었습니다.
pause
나중에 조금 더 고도화해서 다시 한번 더 올려봐야겠다.
- 2024.03.21 -
고도화 ver1.5
변경사항
txt파일에 도메인을 저장해두면 여러개의 도메인을 앞으로 확인할 수 있습니다.
도출된 결과값은 앞으로 cmd 창에 나타나지 않으며 csv파일로 저장되어 bat파일과 같은 위치에 저장됩니다.
↓ 다운로드 링크 ↓
https://gofile.me/7hBhx/qAyNYzso0
'Red Team > 정보보안' 카테고리의 다른 글
CVSS 3.1 Calculate 및 각 명칭 별 설명 (2) | 2024.12.23 |
---|---|
[SMTP] SMTP 상태코드(에러코드)별 종류와 이유 (1) | 2024.06.04 |
[역량강화] 서브도메인 스캔과 nmap 사용법 및 OSINT (1) | 2024.06.03 |
[역량강화] Curl 이란? (0) | 2024.05.17 |
댓글
이 글 공유하기
다른 글
-
CVSS 3.1 Calculate 및 각 명칭 별 설명
CVSS 3.1 Calculate 및 각 명칭 별 설명
2024.12.23 -
[SMTP] SMTP 상태코드(에러코드)별 종류와 이유
[SMTP] SMTP 상태코드(에러코드)별 종류와 이유
2024.06.04 -
[역량강화] 서브도메인 스캔과 nmap 사용법 및 OSINT
[역량강화] 서브도메인 스캔과 nmap 사용법 및 OSINT
2024.06.03 -
[역량강화] Curl 이란?
[역량강화] Curl 이란?
2024.05.17