heartbleed-vulnerability-exploitation
설명
Heartbleed 취약점(CVE-2014-0160)에 대한 실습 조사.
요약
이 실습은 OpenSSL의 TLS 하트비트 확장 구현에서 발생한 치명적인 결함인 Heartbleed 취약점에 대한 실습 조사를 문서화한 것입니다. 목표는 취약점이 프로토콜 수준에서 어떻게 작동하는지 이해하고, 통제된 환경에서 이를 악용하여 그 영향을 관찰함으로써 SOC 분석(취약점 평가 및 영향 분석)과 직접적으로 관련된 기술을 연습하는 것이었습니다.
목표
- Heartbleed의 근본 원인 이해(OpenSSL 하트비트 확장의 부적절한 경계 검사).
- 정찰 및 스캐닝 도구를 사용하여 취약한 OpenSSL 서비스 식별.
- 통제된 실습 환경에서 취약점을 악용하여 데이터 노출 관찰.
- SOC/분석가 관점에서의 완화 전략 문서화.
환경 및 도구
- 대상: 구버전 OpenSSL을 실행하는 취약한 웹 서버(포트 443의 nginx 1.15.7), 격리된 실습용 VM.
- 공격자/분석가 머신: 리눅스 기반 분석 환경.
- 사용된 도구:
nmap - 서비스 열거 및 취약점 발견.
Metasploit - 악용을 위한 auxiliary/scanner/ssl/openssl_heartbleed 모듈.
방법론
1. 정찰
- 서비스/버전 탐지를 포함한 전체 TCP 포트 스캔 실행 (nmap -sS -vv -p- -A )
- 열린 포트 식별: 22 (SSH), 111 (rpcbind), 443 (SSL/HTTP).
- 포트 443을 SSL/TLS 상에서 nginx 1.15.7을 실행 중인 것으로 핑거프린팅(구버전 OpenSSL 후보)
2. 취약점 식별
- (nmap -sV --script vuln )를 실행하여 발견된 모든 서비스를 알려진 취약점 스크립트와 대조 확인.
- ssl-heartbleed NSE 스크립트를 통해 대상이 Heartbleed에 취약함을 확인, 고위험으로 표시됨.
3. 악용
- metasploit 프레임워크(msfconsole)를 실행하고 (search heartbleed)로 관련 모듈을 찾음.
- auxiliary/scanner/ssl/openssl_heartbleed를 선택하고 모듈 옵션을 검토.
- RHOSTS, RPORT 443, verbose true를 설정한 후 모듈을 실행.
- 모듈이 변조된 TLS 하트비트 요청을 전송하고 서버의 과대 응답을 캡처하여 인접한 프로세스 메모리를 유출함.
발견 사항
- 대상(nginx 1.15.7, 포트 443)은 nmap의 ssl-heartbleed 스크립트와 Metasploit의 openssl_heartbleed 스캐너 모두를 통해 CVE-2014-0160에 취약한 것으로 확인됨.
- 악용을 통해 서버의 힙 메모리를 성공적으로 유출했으며, 바이너리 데이터와 함께 출력 가능한 문자열을 반환함.
- 유출된 메모리에는 이전 HTTP 요청 본문의 일부가 포함되어 있었으며, "user_name, user_email, user_message" 파라미터가 포함되어 있어 Heartbleed가 인접 메모리에 우연히 존재하던 애플리케이션 계층 데이터를 노출시킬 수 있음을 보여줌.
- 취약점 악용에 인증이 필요하지 않아, 네트워크상 인접한 모든 공격자가 악용할 수 있음.
완화
- OpenSSL을 패치된 버전으로 업그레이드합니다.
- 패치 이전에 노출되었을 가능성이 있는 모든 SSL 인증서/개인 키를 폐기하고 재발급합니다.
- 취약 기간 동안 세션이 활성 상태였던 계정에 대해 비밀번호 재설정을 강제합니다.
- 즉시 패치가 불가능한 경우 heartbeat 확장을 완전히 비활성화합니다.
입증된 기술
- 전체 범위 포트 스캐닝 및 서비스 열거 (nmap).
- NSE 스크립트를 이용한 취약점 스캐닝 (vuln, ssl-heartbleed)
- Metasploit 프레임워크에서의 익스플로잇 모듈 구성 및 실행.
- 메모리 안전성 취약점의 근본 원인 분석.
- 보안 보고 및 교정 계획 수립.
참고 자료