heartbleed-vulnerability-exploitation
설명
Heartbleed 취약점(CVE-2014-0160)에 대한 실습 조사.
요약
이 실습은 OpenSSL의 TLS heartbeat 확장 구현에서 발생한 치명적인 결함인 Heartbleed 취약점에 대한 실습 조사를 문서화한 것입니다. 목표는 프로토콜 수준에서 취약점이 어떻게 작동하는지 이해하고, 통제된 환경에서 이를 악용하여 영향을 관찰함으로써 SOC 분석(취약점 평가 및 영향 분석)에 직접적으로 관련된 기술을 연습하는 것이었습니다.
목표
- Heartbleed의 근본 원인 이해(OpenSSL의 heartbeat 확장에서의 부적절한 경계 검사).
- 정찰 및 스캐닝 도구를 사용하여 취약한 OpenSSL 서비스 식별.
- 통제된 실습 환경에서 취약점을 악용하여 데이터 노출 관찰.
- SOC/분석가 관점에서의 완화 전략 문서화.
환경 및 도구
- 대상: 구버전 OpenSSL 버전을 실행하는 취약한 웹 서버(포트 443의 nginx 1.15.7), 격리된 실습 VM.
- 공격자/분석가 머신: Linux 기반 분석 환경.
- 사용된 도구:
nmap - 서비스 열거 및 취약점 발견.
Metasploit - 악용을 위한 auxiliary/scanner/ssl/openssl_heartbleed 모듈.
방법론
1. 정찰
- 서비스/버전 탐지를 포함한 전체 TCP 포트 스캔 실행 (nmap -sS -vv -p-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 heartbeat 요청을 보내고 서버의 과대 응답을 캡처하여 인접 프로세스 메모리를 유출시킴.
발견 사항
- 대상(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 프레임워크에서의 익스플로잇 모듈 구성 및 실행.
- 메모리 안전성 취약점의 근본 원인 분석.
- 보안 보고 및 완화 계획.
참고 자료