본문으로 바로가기
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

3. 네트워크 해킹과 보안


5) OPEN SSL & 하트블리드


▣ OPEN SSL란?

- 네트워크 암호화 프로토콜인 TLS와 SSL의 오픈소스 구현판이다.  =>  무료

- C언어로 작성되어 있는 중심 라이브러리에 기본적인 암호화 기능 및 여러개 유틸리티 함수들이 구현되어있음.


하트블리드란?

- OPEN SSL에서 사용자가 웹사이트에 정보를 보내지 않더라도 연결을 유지하기 위해 하트비트라는 프로토콜을 사용.

- 여기서 취약점이 발생한 것을 심장이 피가 흐른다는 이름을 붙여 하트 블리드로 명명.


- 취약점 코드 : CVE-2014-0160

☞ OpenSSL TLS/DTLS Heartbeat Extension 취약점.

☞ OpenSSL 1.0.1 ~ 1.0.1f, 1.0.2-beta1 버전이 취약함.

Log 남기지 않음.

☞ ID / PW 갈취

- 원리

☞ HAT과 500 LETTERS를 비교했었더라면 이러한 취약점이 생기지않았을 것이다...


▣ 하트비트 취약 코드

- n2s 매크로

☞ 변수 "p"의 2바이트 값을 "payload" 변수로 복사.

☞ 변수 "p"의 값은 heartbeat 서버가 클라이언트로 응답할 데이터의 길이.

☞ SSL 클라이언트가 값을 지정하여 서버에 요청.

☞ 단순히 우리가 입력한 값을 memcpy에 넘겨준다고 생각하면 됨.


- memcpy(dst 메모리 공간 bp, src 메모리 공간 pl, 크기 payload) 함수

☞ 변수 pl은 heartbeat 서버 내부의 메모리를 지정하는 포인터.

☞ 포인터로부터 payload 길이의 데이터를 bp 변수에 담아 클라이언트에 전송.


▣ 하트블리드 점검도구

- 32745.py

- PYTHON 언어로 작성.

- 취약한 함수를 사용하는 서버에서 64KB만큼의 힙 메모리 영역을 덤핑하여 비밀키 등 민감한 정보를 획득 가능.

- 정말 단순히 Heartbeat Request를 보내고 응답으로 돌아오는데 그 속에 민감정보가 포함되어 있는 것임.


▣ 보안대책

- 내가 입력한 문자열과 보내는 크기를 확인하고 예외사항으로 처리.







i2sec 대구지점 23기 수료생.