| | at : |


Archive

[Exploit] SSLv3 POODLE Attack 확인 및 대응방안(Check and Modify) 하훌 rwxr-xr-x 2 10/02/2015



[Exploit] SSLv3 POODLE Attack 확인 및 대응방안(Check and Modify)

Permission rw-r--r--
Author 하훌
Date and Time 10/02/2015
Label
License 크리에이티브 커먼즈 라이선스



이전에 SSL3 Version 사용 시 보안적인 이슈가 있었던 POODLE Attack에 관한 이야기입니다.
나온지도 좀 되었고, 이미 브라우저 개발사 및 서버 측에서 SSLv3 를 사용하지 않는 식으로 하여서 영향력은 많이 떨어졌지만 그래도 간단하게 정리해놓는게 좋을 것 같아 작성합니다.


[CVE-2014-3566] SSLv3 POODLE Attack 이란?

POODLE이라 하면 강아지 종류가 생각날 수도 있지만 POODLE Attack 에서 의미하는 POODLE은 좀 다른 의미의 약자입니다.
Padding Oracle On Downgraded Legacy Encryption 의 약자이며 Padding Oracle 취약점을 통해 SSL이 적용된 암호문을 해독할 수 있는 MITM(중간자공격) 입니다. Padding Oracle side-channel 공격을 통해 풀어나가죠.

영향력은 높지않아 예전에도 말이 좀 많았었습니다. CVSS2로 취약성 평가 시 점수가 높진 않네요.
AV(접근성):N
AC(복잡도):L
Au(인증):N
C(기밀성):P
I(무결성):N
A(가용성):N

Base Score: 5

테스트 방법은 이미 Poc 코드 및 Exploit 코드들이 있어 쉽게 검증이 가능합니다.
크게 Metasploit 을 통한 검증, Script 를 통한 검증정도가 있을 것 같네요.

A2SV를 이용한 확인

첨에 이 글을 작성하였을때가 작년 10월쯤인데, 그땐 현재 사용하고 있는 A2SV를 개발하기 전이여서 이 내용이 없었습니다. 추가하여 수정했으니 애용해주세요 ^^

#> git clone https://github.com/hahwul/a2sv
#> cd a2sv
#> python a2sv.py -t [TARGET]


Metasploit 을 통한 확인

MSF Console 에서 SSL-Version 에 대해 검색하시면 쉽게 찾을 수 있습니다.
SSL 버전을 확인할 수 있는 모듈은 aux/scan 하단의 http/ssl_version 입니다.

hahwul auxiliary(ssl_version) #> use auxiliary/scanner/http/ssl_version
hahwul auxiliary(ssl_version) #> hosts -R
hahwul auxiliary(ssl_version) #> run

[+] **.**.**.**:443 accepts SSLv3
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

Poc Script 를 통한 확인

웹상에서 코드를 찾아보시면 많이 나옵니다. 그 중 bash 쉘로 짜여진 간단한 코드입니다.
# ./ssl3-check.sh [TESTIP]
Testing [TESTIP]:443 for support of SSL3.0 ...
NO SSL 3.0 support detected on [TESTIP]:443 (sslv3 alert handshake failure)

# cat ssl3-check.sh
#!/bin/bash
#####################################################################################
#
# ssl3_cipher_check.sh - Determine which SSL 3.0 ciphers, if any, are supported by
#                        a targeted server.
#
# Author  - Lamar Spells (lamar.spells@gmail.com)
# Blog    - http://foxtrot7security.blogspot.com
# Twitter - lspells
#
# Copyright (c) 2014, Lamar Spells
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification,
# are permitted provided that the following conditions are met:
#
#   - Redistributions of source code must retain the above copyright notice, this
#     list of conditions and the following disclaimer.
#   - Redistributions in binary form must reproduce the above copyright notice,
#     this list of conditions and the following disclaimer in the documentation
#     and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
# OF THE POSSIBILITY OF SUCH DAMAGE.
#
#####################################################################################

if [ $# -lt 1 ] ; then
   echo "USAGE: `basename $0` <ip> [port]"
   exit 1
fi

if [ $# -eq 1 ] ; then
  SERVER=${1}:443
else
  SERVER=${1}:${2}
fi
DELAY=1

echo "Testing $SERVER for support of SSL3.0 ..."

result=`echo -n | openssl s_client -connect $SERVER -ssl3 2>&1`
if [[ "$result" =~ "New, TLSv1/SSLv3, Cipher is" ]] ; then
  echo "YES - SSL 3.0 support detected on $SERVER"
  exit 1
else
  if [[ "$result" =~ ":error:" ]] ; then
    error=`echo -n $result | cut -d':' -f6`
    echo NO SSL 3.0 support detected on $SERVER \($error\)
    exit 0
  else
    echo "ERROR:  UNKNOWN RESPONSE: $result"
    exit 255
  fi
fi

Server SSL 설정 변경을 통한 조치(Modify Server SSL Conf)

물론 SSLv3 에서 발생한 문제이니 간단하게 SSLv3 를 사용하지 않는 것으로 조치가 가능합니다.

Apache
Apache SSL 설정 파일에 적용 후 서비스 재시작(Service Restart)
# vim /etc/apache2/mods-available/ssl.conf

SSLProtocol ALL -SSLv2 -SSLv3

Nginx
nginx 설정 파일에 아래 내용을 추가한 후 서비스 재시작(Service Restart)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2

IIS
regedit(레지스트리편집)을 통해 아래 레지스트리 키 편집
HKey_Local_Machine\System\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols registry key
-> 하위 키에서 SSL 3.0에 대해 "00 00 00 00"으로 설정
(support.microsoft.com 참조 / https://support.microsoft.com/ko-kr/kb/187498)


-----------------------------------------------
수정 후 테스트하면 SSLv3 가 Disable 된 것을 확인할 수 있습니다.

SSLProtocol ALL -SSLv2 -SSLv3
hahwul auxiliary(ssl_version) #> run

[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed



Share







HAHWUL
HACKING | PENETRATION-TEST | CODING
HACKERONE : GIT : 0DAY-TODAY : EXPLOIT-DB : PACKETSTORM
GOOGLE+ | HAHWUL@GMAIL.COM | TWITTER
WWW.HAHWUL.COM






Recent Post

댓글 2개:

  1. coul you make a video tutorial how to use this exploit

    답글삭제
    답글
    1. Hi bro.

      I am sorry, i don't know exactly what you want.
      do you want the video that i exploit it or just vulnerability assessment test video?

      maybe i can make it later :)

      삭제