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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-9491_POC — Windows 바로가기 파일(.lnk)의 인수에 보이지 않는 문자를 사용하는 CVE-2025-9491의 개념 증명 | Kitploit
도구/GitHubGitHub/amperclock/cve-2025-9491_poc
ExploitationPenetration TestingBinary AnalysisLearning & EducationRed TeamingPayload Development
GitHubamperclock/cve-2025-9491_poc

CVE-2025-9491_POC

Windows 바로가기 파일(.lnk)의 인수에 보이지 않는 문자를 사용하는 CVE-2025-9491의 개념 증명

저장소 보기
184310개월 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-9491 LNK 난독화 PoC

Windows 바로가기(.lnk) 파일 취약점(ZDI-CAN-25373/CVE-2025-9491)을 시연하기 위한 개념 증명 도구입니다. 이 도구는 공백 문자 패딩을 활용하여 악성 명령줄 인수를 .lnk 파일 내에 숨길 수 있는 방법을 보여줍니다.

이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다. 허가 없이 컴퓨터 시스템에 접근하는 것은 불법입니다. 이 도구는 본인이 소유하거나 명시적 테스트 허가를 받은 시스템에서만 사용하십시오.


목차

  • 설명
  • 취약점 세부정보
  • 설치
  • 사용법
    • 생성 모드
    • 난독화 모드
    • 파싱 모드
  • 크레딧

설명

이것은 CVE-2025-9491 취약점을 시연하기 위해 Windows .lnk (바로가기) 파일을 생성 및 조작하는 개념 증명 도구입니다. 이 도구는 사용자에게 다음과 같은 기능을 제공합니다.

  1. 생성 처음부터 난독화된 LNK 파일 생성
  2. 난독화 기존 LNK 파일의 인수에 패딩 추가
  3. 파싱 LNK 파일의 내용 검사

이 취약점은 Windows가 바로가기 파일 속성을 표시하는 방식을 악용하여, 공격자가 바로가기를 검사하는 사용자로부터 악성 명령줄 인수를 숨길 수 있게 합니다.


취약점 세부정보

CVE-2025-9491은 .lnk (바로가기) 파일에 영향을 미치는 Windows UI 오표시 취약점입니다. Trend Micro의 ZDI(Zero Day Initiative)에 의해 발견되었으며(ZDI-CAN-25373), 적어도 2017년부터 국가 지원 APT 그룹에 의해 악용되었습니다(자세한 내용은 크레딧 참조).

이 취약점은 Windows 바로가기 UI의 고정 크기 "대상" 필드를 이용합니다. 인수에 공백 문자(공백, 탭, 줄 바꿈, 캐리지 리턴)를 패딩함으로써 악의적인 행위자는 악성 명령을 숨기고 숨겨진 페이로드를 실행할 수 있습니다. 또한, 사용자가 바로가기를 검사할 때 실제 명령이 아닌 패딩된 공백만 보이게 되어 탐지를 회피하는 데 사용될 수도 있으며, EDR(엔드포인트 탐지 및 대응) 원격 측정에 매우 긴 명령줄이 기록되고, 충분히 길 경우 일반적인 EPP(엔드포인트 보호 플랫폼)나 안티바이러스는 모두 읽기를 포기하게 됩니다.


설치

Python 3.7 이상이 필요합니다.

  1. 저장소를 클론 또는 다운로드합니다:

    root@kitploit:~
    git clone https://github.com/amperlcock/CVE-2025-9491_POC.git
    cd CVE-2025-9491_POC
    
  2. 의존성을 설치합니다:

    root@kitploit:~
    빠르고 간단한 방법입니다. 가상 환경(venv) 사용을 권장합니다.
    pip install -r requirements.txt
    
  3. 도구를 실행합니다:

    root@kitploit:~
    python main.py --help
    

사용법

도구에는 create, obfuscate, parse 세 가지 주요 모드가 있습니다.

생성 모드

처음부터 난독화된 LNK 파일을 생성합니다.

구문:

root@kitploit:~
python main.py create -t TARGET -a ARGUMENTS -o OUTPUT [옵션]

필수 인수:

  • -t, --target - 대상 실행 파일의 경로
  • -a, --arguments - 대상 실행 파일에 전달할 인수
  • -o, --output - 출력 LNK 파일 대상

선택적 인수:

  • -c, --charset - 패딩에 사용할 사용자 정의 문자 집합 (16진수 형식)

    • 기본값: 20,09,0A,0B,0C,0D (공백, 탭, LF, VT, FF, CR)
    • 형식: 쉼표로 구분된 16진수 값 (0x 접두사 없음)
  • -s, --padding_size - 패딩 문자 수

    • 기본값: 128 (알려진 제한 없음)
    • 유형: 정수
  • -p, --pattern_type - 패딩 패턴 스타일

    • 1 (기본값): 무작위 패턴 - 문자 집합에서 무작위 선택
    • 2: 단일 패턴 - 첫 번째 문자 집합 요소 반복
    • 3: 순환 패턴 - 문자 집합 요소 순환
  • -i, --icon - 바로가기에 사용할 사용자 정의 아이콘 경로

    • 기본값: 없음 (기본 아이콘 사용)
  • -d, --description - 바로가기에 표시할 설명

    • 기본값: 없음
  • -v, --verbose - 상세 출력 활성화

    • 기본값: 비활성화

예제:

root@kitploit:~
python main.py create -t C:\Windows\System32\cmd.exe -a "/c whoami" -o output.lnk -s 256 -v

난독화 모드

기존 LNK 파일의 인수에 패딩을 추가합니다.

구문:

root@kitploit:~
python main.py obfuscate -i INPUT -o OUTPUT [옵션]

필수 인수:

  • -i, --input - 난독화할 기존 LNK 파일의 경로
  • -o, --output - 출력 LNK 파일 대상

선택적 인수:

  • -c, --charset - 패딩에 사용할 사용자 정의 문자 집합 (16진수 형식)

    • 기본값: 20,09,0A,0B,0C,0D
    • 형식: 쉼표로 구분된 16진수 값
  • -s, --padding_size - 패딩 문자 수

    • 기본값: 128
    • 유형: 정수
  • -p, --pattern_type - 패딩 패턴 스타일

    • 1 (기본값): 무작위 패턴
    • 2: 단일 패턴
    • 3: 순환 패턴
  • -v, --verbose - 상세 출력 활성화

    • 파일 로딩, 패딩 생성, 저장 작업 표시

예제:

root@kitploit:~
python main.py obfuscate -i benign.lnk -o obfuscated.lnk -s 256 -p 3 -v

파싱 모드

기존 LNK 파일의 내용을 표시합니다.

구문:

root@kitploit:~
python main.py parse -i INPUT

필수 인수:

  • -i, --input - 파싱하여 표시할 LNK 파일의 경로

예제:

root@kitploit:~
python main.py parse -i output.lnk

예제

예제 1: 간단한 난독화된 바로가기 생성

root@kitploit:~
python main.py create \
  -t "cmd.exe" \
  -a "/c powershell -Command Get-Process" \
  -o malicious.lnk \
  -s 200 \
  -p 1 \
  -v

이 명령은 cmd.exe에 대한 바로가기를 생성하며, 200개의 무작위 패딩 문자 뒤에 숨겨진 PowerShell 명령이 포함됩니다.

예제 2: 기존 바로가기 난독화

root@kitploit:~
python main.py obfuscate \
  -i "legitimate.lnk" \
  -o "obfuscated.lnk" \
  -s 512 \
  -c "20,09,0A" \
  -p 2

이 명령은 기존 바로가기에 공백과 탭을 사용한 단일 패턴으로 512개의 패딩 문자를 추가합니다.

예제 3: LNK 파일 검사

root@kitploit:~
python main.py parse -i "suspicious.lnk"

출력에는 숨겨진 인수를 포함한 모든 속성이 표시됩니다.

예제 4: 사용자 정의 문자 집합 패턴

root@kitploit:~
python main.py create \
  -t "powershell.exe" \
  -a "-NoProfile -ExecutionPolicy Bypass -Command 'Get-ChildItem'" \
  -o output.lnk \
  -c "20,09,0A,0B,0C,0D" \
  -s 1024 \
  -p 3 \
  -d "My Document"

크레딧

  • 취약점 발견: Trend Micro Zero Day Initiative ZDI-CAN-25373
  • pylnk3 라이브러리: Strayge 및 기여자
  • 원본 pylnk 라이브러리: tim-erwin
도구 다운로드