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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
POC-CVE-2017-8464-OpenCalculator — .lnk 취약점과 explorer.exe 및 USB 드라이브와 관련된 운영 체제 처리 메커니즘을 악용합니다. | Kitploit
도구/GitHubGitHub/playboisk8/poc-cve-2017-8464-opencalculator
Vulnerability AnalysisExploitationBinary AnalysisPayload DevelopmentBinary Exploitation
GitHubplayboisk8/poc-cve-2017-8464-opencalculator

POC-CVE-2017-8464-OpenCalculator

.lnk 취약점과 explorer.exe 및 USB 드라이브와 관련된 운영 체제 처리 메커니즘을 악용합니다.

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
11일 전아직 검토되지 않음

CVE-2017-8464 / 연구 + PoC

바로가기(Shortcut) 1개 + 악성 payload가 포함된 .DLL 1개를 생성 => USB에 넣어 피해자에게 전송 => 피해자가 USB를 열면 => Payload가 자동으로 실행됩니다!

CVE-2017-8464.gif

근본 원인

  1. 먼저 우리는 이 버그가 정확히 어디서 발생하는지 알아야 합니다! 이는 Plug-and-Play(플러그 앤 플레이) 기능 때문입니다. OS가 장치를 자동으로 감지하고, 리소스를 할당하며, 재부팅 없이 즉시 작동하도록 적절한 드라이버를 로드합니다. USB를 꽂고 Windows Explorer explorer.exe로 폴더를 열면, 운영체제는 사용자에게 해당하는 아이콘 이미지를 표시하기 위해 파일을 스캔합니다!

  2. 오래된 Windows 버전부터 Microsoft는 Control Panel 기능(본질적으로 .cpl 또는 .dll 파일)을 가리키는 바로가기(.lnk)가 유연하게 동적 아이콘을 표시할 수 있기를 원했습니다. 따라서 Windows의 핵심 인터페이스 관리 라이브러리인 shell32.dll에는 CPL_LoadCPLModule이라는 함수가 설계되었습니다.

  3. 맹목적인 LoadLibrary 사용: Control Panel Applet 구조 파일에서 아이콘을 가져오기 위해, 운영체제는 단순한 정적 이미지 파일을 읽지 않고 LoadLibraryW 함수를 사용하여 해당 동적 링크 라이브러리 전체를 explorer.exe 프로세스의 메모리 공간에 직접 로드합니다. 로드한 후에야 화면에 그릴 아이콘을 가져오기 위해 CPlApplet이라는 표준 내보내기 함수를 호출합니다.

LoadLibraryW.png

LoadLibraryW가 실제로 위의 익스플로잇 체인과 관련이 있음을 증명하려면:

1/ 관리자 권한으로 x64dbg를 실행하세요

2/ explorer.exe에 Attach(연결)하세요

3/ 명령어 bp LoadLibraryW를 입력하세요

4/ F9를 눌러 explorer.exe가 계속 실행되게 하세요

5/ USB를 꽂으면 즉시 hit breakpoint가 발생합니다!

PoC 문제 & 해결 방법

저는 익스플로잇 체인이 완전히 조용하다는 문제에 직면했습니다. 아무리 확인하고 디버그해 봐도 해결 방법을 찾을 수 없었습니다! 그 후 다른 사람의 PoC를 찾아 실행해 봤지만 역시 실패했습니다!

예시: https://github.com/3gstudent/CVE-2017-8464-EXP

하지만 점심을 먹고 돌아와 다시 집중력과 침착함을 되찾은 후, 저는 질문을 던지기 시작했습니다. "이 녀석의 PoC는 왜 동작하는데 내 컴퓨터에서는 동작하지 않는 걸까?" 그래서 그 녀석의 .lnk와 .dll을 가볍게 리버스 엔지니어링해 보니 두 가지를 발견했습니다!

1 / 내 .dll이 그 녀석의 것보다 길었습니다! 하지만 그건 문제가 되지 않았습니다!

2 / .lnk를 HxD에 넣어 문자열(strings)을 읽어보니, 그 녀석은 상대 경로가 아닌 절대 경로를 사용한다는 것을 발견했습니다!

상대 경로: ../example.dll

절대 경로: O:/example.dll

him.png

좋습니다. 이제 해결 방법은 이렇습니다. USB를 피해자의 컴퓨터에 꽂으면 자동으로 어떤 드라이브 문자로 할당되는지 알아야 합니다. 그런 다음 절대 경로를 지정하면 성공할 것입니다. 제 Win7에서는 USB를 꽂으면 항상 F 드라이브로 인식되었기 때문에, 제 빌드 명령어는 다음과 같습니다:

root@kitploit:~
python Make_PoC.py FakeGoogleChrome F:\Pwned.dll

Microsoft는 이 아키텍처를 어떻게 패치했는가?

이 버그는 메모리 오버플로우가 아닌 시스템 아키텍처 설계 결함(Logic/Architecture Flaw) 에 속하기 때문에, Microsoft는 Control Panel 처리 방식을 완전히 변경해야 했습니다:

  • 디지털 서명 (Code Signing): 최신 운영체제는 시스템 프로세스가 로드하는 .cpl 또는 .dll 파일에 Microsoft의 유효한 디지털 서명이 있거나 (System32 같은) 엄격하게 보호되는 시스템 디렉터리에 위치하도록 강제합니다. 이는 USB를 통한 "Binary Planting" 오류를 방지하기 위함입니다.
  • 프로세스 격리 (Process Isolation): 중요한 프로세스인 explorer.exe [cite: 1058]에 직접 로드하는 대신, 새로운 Windows 버전은 Control Panel 애플릿을 격리된 중간 프로세스(예: dllhost.exe 또는 rundll32.exe)를 통해 실행합니다. DLL이 크래시되거나 악성 코드를 포함하더라도 해당 중간 프로세스만 중단될 뿐, 전체 사용자 인터페이스 시스템을 장악할 수는 없습니다.

참고자료

베트남 연구 자료

  • https://github.com/TrG-1999/DetectPacket-CVE-2017-8464

PoC

  • https://github.com/3gstudent/CVE-2017-8464-EXP

vul .lnk 빌드 도구

  • https://github.com/nixawk/labs/blob/master/CVE-2017-8464/exploit_CVE-2017-8464.py
도구 다운로드