Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-5548 — CVE-2025-5548 취약점에 대한 기술적 연구 | Kitploit
도구/GitHubGitHub/cryptomachio/cve-2025-5548
Vulnerability AnalysisExploitationReverse EngineeringShellcodeDebuggersPenetration TestingLearning & EducationPayload DevelopmentBinary ExploitationLabs & Practice
GitHubcryptomachio/cve-2025-5548

CVE-2025-5548

4개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-5548 취약점에 대한 기술적 연구

저장소 보기

CVE-2025-5548 취약점의 기술적 분석

서론

본 연구에서는 FreeFloat FTP Server v1.0에 존재하는 **스택 버퍼 오버플로(stack buffer overflow)**와 관련된 CVE-2025-5548 취약점을 분석한다. 이 실습의 주요 목표는 취약한 애플리케이션이 조작된 입력에 어떻게 반응하는지 이해하고, 통제된 환경에서 검증 오류가 결국 프로그램의 실행 흐름에 어떤 영향을 미칠 수 있는지 관찰하는 것이다.

이 저장소의 개발은 최종 결과만 보여주는 데 그치지 않고, 환경 준비, 도구 선택, 오류 관찰, 메모리 분석, 취약점의 실제 영향 검증 등 연구의 전체 과정을 담고 있다.


내용 구성

본 연구는 서로 구분되는 두 개의 블록으로 구성된다.

실습 환경 준비

이 섹션에서는 실습 환경을 어떻게 구성했는지, 어떤 운영 체제를 사용했는지, 취약한 애플리케이션이 무엇인지, 분석을 수행하는 데 필요한 도구가 무엇인지 설명한다.

분석 수행

두 번째 부분은 실습에 중점을 둔다. 여기서는 오류를 탐지하고, 메모리 손상을 확인하고, 레지스터 덮어쓰기를 연구하고, 취약점을 어떻게 악용할 수 있는지 검증하는 과정을 설명한다.


1. 사용된 실습 환경

사용된 시스템

실습은 Windows 11 Pro 25H2 (Build 26200.6584) 가상 머신에서 수행되었다. 선택된 취약한 애플리케이션은 FreeFloat FTP Server v1.0으로, 최신 프로그램에 일반적으로 존재하는 많은 보호 기능이 없어 이러한 유형의 실습에 적합한 오래된 소프트웨어이다.

가상 머신의 네트워크는 NAT 모드로 구성되었으며, 이를 통해 종속성을 설치하고 도구를 다운로드하며 실습 환경의 기본 연결을 유지할 수 있는 인터넷 접근이 가능했다.

주요 도구

분석의 모든 단계를 수행하려면 여러 유틸리티가 필요했다. 일부는 환경을 준비하는 데 사용되었고, 다른 일부는 바이너리를 검토하거나 오류 발생 시 프로세스의 동작을 관찰하는 데 사용되었다.

기본 유틸리티

Git

리포지토리를 다운로드하고, 특정 리소스를 체계적으로 정리하며, 연구 중 사용된 자료의 관리를 용이하게 하기 위해 사용되었다.

Nmap

연결성을 확인하고, 노출된 서비스를 식별하며, 대상이 예상 포트에서 올바르게 응답하고 있는지 확인하는 지원 도구로 사용되었다.

Windows SDK

Windows 시스템 내에서 저수준 분석 및 디버깅 작업에 유용한 라이브러리, 헤더 및 도구를 제공하기 위해 설치되었다.

편집기 및 개발 환경

Notepad++

빠른 편집, 스크립트 검토 및 문자열이나 테스트 데이터의 간단한 조작에 사용되었다.

Visual Studio Code

스크립트 작성, 자동화 테스트, 코드 작업을 보다 체계적으로 수행할 수 있는 편리한 환경으로 사용되었다.

PyCharm Community

특히 더 긴 스크립트를 검토하거나 페이로드 구성과 관련된 로직을 디버깅해야 할 때 유용했다.

필요한 종속성

Python

두 가지 버전이 고려되었다:

  • Python 3, 현대적인 스크립팅 및 자동화를 위한 주요 옵션.
  • Python 2.7, 이러한 유형의 실습에 사용되는 일부 클래식 디버깅 도구와의 호환성 때문에 필요.

Java JDK

Ghidra를 실행하는 데 필요했는데, 이 도구는 Java 기반으로 개발되었기 때문이다.

분석 및 리버싱 도구

Immunity Debugger

실행 중 프로그램의 상태를 관찰하고, 레지스터를 확인하고, 메모리를 검토하며, 오류가 발생하는 정확한 지점을 분석하는 데 사용되었다.

IDA Free

바이너리를 검토하고 보안 관점에서 의심스러운 함수를 찾기 위해 정적 분석 단계에서 사용되었다.

Ghidra

취약한 프로그램의 내부 로직을 디컴파일하고 더 잘 이해하기 위한 보조 도구로 사용되었다.

Mona

이 플러그인은 패턴 생성, 오프셋 계산 및 페이로드의 문제가 되는 문자 식별과 같은 작업을 용이하게 했다.

취약한 애플리케이션

실습의 주요 구성 요소는 개념 증명(PoC) 내에서 대상 시스템 역할을 하는 FreeFloat FTP Server v1.0이었다. 이 소프트웨어가 흥미로운 이유는 고전적인 스택 버퍼 오버플로 취약점을 포함하고 있어 교육적 분석에 매우 적합한 사례라는 점이다.

일반적 관찰

이러한 유형의 실습을 위해 이미 준비된 가상 머신이 존재하지만, 이 경우에는 환경을 문서화하고 사용된 도구를 정당화하기로 선택했다. 이를 통해 각 애플리케이션이 실습 환경의 일부인 이유와 분석 중 수행하는 역할을 더 잘 이해할 수 있다.


2. 취약점 분석

초기 정찰

첫 번째 단계는 FTP 서비스에 접근 가능하고 올바르게 작동하는지 확인하는 것이었다. 연결이 확인되면 정적 분석 도구를 통해 바이너리를 검토하여 문자열 처리와 관련된 잠재적 취약점을 찾았다.

이 검토 중에 strcpy 및 strcat과 같은 안전하지 않은 함수가 나타나 서비스가 과도하게 긴 입력에 취약할 수 있다는 의심을 강화했다. 또한 사용자가 제어하는 데이터를 수신할 수 있는 여러 FTP 프로토콜 명령을 검토하여 그중 하나를 테스트의 주요 후보로 선택했다.

이를 바탕으로 프로세스를 디버거에 로드하여 실행 중 동작을 관찰했다.


증가하는 입력을 통한 확인

다음 단계는 프로그램이 더 이상 올바르게 응답하지 않는지 확인하기 위해 점점 더 긴 문자열을 보내는 것이었다. 이 절차를 통해 특정 크기 이상에서 서비스가 실패하고 결국 메모리 변경을 초래한다는 것을 검증할 수 있었다.

이러한 동작은 단순한 표면적 검증 오류가 아니라 프로세스 흐름에 영향을 미치는 실제 메모리 손상임을 확인시켜 주었다.


덮어쓰기 지점의 정확한 위치 파악

오류를 발생시킨 후, 복귀 주소(return address)에 도달하는 데 필요한 바이트 수를 정확히 계산해야 했다. 이를 위해 비반복 시퀀스를 사용하여 크래시 순간 EIP에 반영된 값이 전송된 입력 내의 정확한 위치와 연관될 수 있도록 했다.

이 절차를 통해 제어 레지스터를 덮어쓰는 데 필요한 정확한 오프셋을 얻을 수 있었다.


실행 제어 검증

오프셋을 확인한 후, 복귀 주소를 쉽게 식별할 수 있는 값으로 대체하는 새로운 테스트를 준비했다. 목표는 프로그램이 EIP를 통제된 방식으로 수정할 수 있는지 확인하는 것이었다.

테스트는 성공적이었으며, 디버거는 레지스터에 정확히 입력된 값이 포함되어 있음을 보여주었다. 이는 실행 흐름을 변경하고 선택한 주소로 리디렉션할 수 있음을 증명했다.


문제가 되는 문자 검토

이 지점에 도달한 후, 어떤 바이트가 페이로드를 방해할 수 있는지 분석했다. 이러한 유형의 취약점에서는 특정 문자가 잘림, 예기치 않은 변경 또는 문자열의 조기 종료를 유발하는 것이 일반적이다.

메모리에서의 연속적인 비교를 통해 여러 bad characters가 식별되었으며, 그중에는 다음이 포함된다:

  • \x00
  • \x0a
  • \x0d

이를 탐지하는 것은 취약한 프로그램의 동작과 호환되는 안정적인 최종 페이로드를 구성하는 데 중요했다.


메모리에서 유용한 참조 주소 검색

다음 단계는 실행을 페이로드가 저장될 메모리 영역으로 리디렉션할 수 있는 적절한 주소를 찾는 것이었다. 이 분석은 운영 체제와 활성 보호 기능을 고려하여 수행해야 했는데, 일부 주소는 실행 간에 안정적이지 않기 때문이다.

실습 환경 내에서 흐름 덮어쓰기를 공격자가 제어하는 입력과 연결할 수 있는 유효한 참조 주소를 찾았다.


페이로드 준비

흐름 제어가 검증된 후, 이전에 발견된 제약 조건과 호환되는 shellcode를 구성했다. 또한 예상 위치에 약간의 편차가 있더라도 CPU가 페이로드 시작 부분에 안전하게 도달할 수 있도록 중립 명령 영역을 추가했다.

이 단계는 실행의 신뢰성을 높이는 데 중요했다.


최종 실행 및 영향 확인

마지막 단계에서는 공격자 머신에서 listener를 실행한 상태로 취약한 서비스에 전체 페이로드를 전송했다. 그 결과 대상 시스템과의 원격 연결이 수립되었으며, 이는 취약점이 단순히 프로그램을 중단시키는 것뿐만 아니라 제어된 실행을 얻을 수 있음을 확인시켜 주었다.

이는 오류의 실제 영향을 입증하며 공격적 및 방어적 보안 관점에서 그 중요성을 정당화한다.


결론

CVE-2025-5548에 대한 연구는 현대적인 보호 메커니즘이 없는 오래된 애플리케이션이 메모리 손상에 기반한 고전적인 악용 기술에 취약할 수 있음을 명확히 보여준다.

실습 전반에 걸쳐 환경 준비, 오류의 초기 관찰, 버퍼 오버플로 검증, 실행 레지스터 제어, 페이로드 디버깅, 최종 결과 확인 등 여러 핵심 단계를 수행했다.

기술적 테스트를 넘어, 이 사례는 안전하지 않은 함수의 사용과 보호 조치의 부재가 레거시 소프트웨어에서 여전히 중요한 위험인 이유를 이해하는 데 도움이 된다. 따라서 이러한 유형의 실습은 통제된 환경에서 리버싱, 취약점 분석 및 악용에 대한 지식을 강화하는 데 특히 유용하다.

도구 다운로드