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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/rad9800/pmd
Reverse EngineeringShellcodeMalware AnalysisBinary AnalysisLearning & EducationRed TeamingShellcode GenerationPayload DevelopmentLabs & Practice
GitHubrad9800/pmd

PMD

실용적인 Windows 악성코드 개발 과정: API hashing, DLL sideloading, shellcode execution, PE manipulation, payload hosting 및 delivery labs.

159141년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

실전 악성코드 개발

실습 1 - 환경 설정

  1. 하이퍼바이저 내에 Windows 가상 머신을 설정합니다. a. 기본 설치의 스냅샷을 반드시 생성하세요.
  2. Visual Studio 2022를 다운로드하여 설치합니다 - https://visualstudio.microsoft.com/vs/ a. 설치 시 Desktop development with C++ 워크로드를 선택합니다.
  3. 다음 항목을 다운로드하여 설치합니다:
    • DebugView++ - https://github.com/CobaltFusion/DebugViewPP
    • PE Bear - https://github.com/hasherezade/pe-bear
    • ProcMon - https://learn.microsoft.com/en-us/sysinternals/downloads/procmon
    • Ghidra - https://www.ghidra-sre.org/
    • Everything - https://www.voidtools.com/

추가로 (선택 사항) 더 완전한 리버싱 환경을 위해 심볼을 설정합니다:

setx _NT_SYMBOL_PATH c:\Symbols;srv*c:\Symbols*https://msdl.microsoft.com/download/symbols

mkdir \symbols

  1. Visual Studio에서 PMD.sln을 엽니다.

  2. setup 프로젝트를 선택하고 다음을 수행할 수 있는지 확인합니다:

    a. 프로젝트를 컴파일합니다.

    b. DebugView++에서 디버그 출력 문을 확인합니다.

실습 2 - PE 속성 이해하기

  1. IAT 항목과 기타 PE 속성을 조작하기 위해 template 프로젝트의 컴파일러 및 링커 플래그를 수정합니다.

    a. 동적 API 해석 및 MSDN 문서에 익숙해집니다.

    b. 눈에 띄는 다른 속성이 있나요? 바이너리에 대해 Strings.exe를 실행하면 특별히 눈에 띄는 문자열이 있나요?

    c. 그것들을 제거하거나 업데이트할 수 있나요?

실습을 완료하려면 원하는 도구를 사용하세요 (예: dumpbin/PE Bear). scripts\props.py 아래에 pefile용 래퍼가 제공되어 있습니다 (요구 사항을 설치했는지 확인하세요).

  1. VXUG에서 악성코드 샘플을 다운로드합니다.

    a. 정상(양성) 실행 파일과 악성 실행 파일의 주요 차이점은 무엇인가요?

    b. 우리 바이너리와 정상 실행 파일 간의 주요 차이점은 무엇인가요?

추가 자료

  • https://learn.microsoft.com/en-us/cpp/build/reference/dumpbin-reference?view=msvc-170
  • https://learn.microsoft.com/en-us/windows/win32/debug/pe-format
  • https://learn.microsoft.com/en-us/previous-versions/ms809762(v=msdn.10)
  • https://cloud.google.com/blog/topics/threat-intelligence/tracking-malware-import-hashing/
  • https://github.com/rad9800/misc/blob/main/generic/fix-entropy.cpp
  • https://github.com/rad9800/misc/blob/main/generic/stack-strings.cpp

실습 3 - 컴파일 타임 API 해싱

현재 사용되는 API 해싱 알고리즘은 fnv1a입니다.

  1. solution 프로젝트를 열고 API 해싱 프레임워크를 사용하여 MessageBoxA를 호출합니다.
  2. 다른 해싱 알고리즘을 사용하고 여전히 MessageBoxA를 호출할 수 있는지 확인합니다.

추가 자료

  • https://github.com/vxunderground/VX-API/tree/main/VX-API
  • https://learn.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-messageboxa

실습 4 - DLL 하이재킹 찾기 및 활용

  1. Cisco Webex를 다운로드합니다 (https://www.webex.com/downloads.html)

  2. CiscoCollabHost를 찾아 어떤 DLL이 로드되는지 확인합니다.

    • Procmon/PE Bear/Ghidra 또는 원하는 도구를 사용하세요!
  3. Ghidra에서 CiscoCollabHost를 열고 사이드로딩을 통해 코드 실행을 달성하는 다양한 방법을 식별합니다.

  4. dll_template을 수정하여 대상 바이너리를 사이드로드합니다. DebugView++에서 디버그 문자열을 볼 수 있는지 확인합니다.

  5. dll_template.dll의 LastWriteTime 및 CreationTime을 대상 DLL과 일치하도록 업데이트합니다.

추가 자료

  • https://hijacklibs.net/
  • https://github.com/sadreck/Spartacus

실습 5 - 셸코드 실행

  1. 유틸리티 프로젝트를 컴파일하고 실행합니다.

    a. 추가로, 호스트 시스템에서 실행하는 것도 고려해 보세요.

  2. 식별된 DLL을 x64/{Debug,Release} 디렉터리에 복사하고 로더 코드를 업데이트합니다.

  3. API 해싱 프레임워크에서 다른 함수로 셸코드를 실행하도록 execute_sc를 업데이트합니다.

추가 자료

  • https://github.com/Wra7h/FlavorTown

실습 6 - 모두 통합하기

  1. 새 DLL 프로젝트를 만들고 다음을 통합합니다: a. DLL 사이드로딩 b. 사이드로드에서의 셸코드 실행
  2. PE 속성이 예상대로인지 확인합니다.
  3. 페이로드를 Release로 컴파일하고 전달에 적합한 형식으로 패키징합니다.

실습 7 - 페이로드 호스팅

  1. 클라우드 스토리지 제공업체에 가입합니다 (예: AWS/CloudFlare)

  2. 페이로드를 패키징하고 업로드합니다.

    a. 추가로, 다운로드 액세스를 제한/감사하는 방법을 조사합니다.

  3. VM의 스냅샷을 생성합니다.

  4. 기본 VM으로 되돌리고 전체 "전달" 시나리오를 실행합니다.

    • 예: 사용자를 URL로 안내하여 다운로드하게 합니다. 잘 작동하는지 확인합니다.

실습 8 - Github Actions로 페이로드 빌드

  1. 이 프로젝트의 내용으로 Git 리포지토리를 생성합니다.
  2. Action을 실행할 수 있고 아티팩트가 작동하는지 확인합니다.
  3. 시간을 절약하기 위해 원하는 대로 추가 전/후 처리를 수행하도록 .github\workflows\build.yml을 업데이트합니다. 몇 가지 아이디어는 다음과 같습니다:
    • props.py를 실행하고 출력을 검증/포함합니다.
    • Python을 사용하여 페이로드 패키징을 자동화합니다.
    • 대상과 일치하도록 LastWriteTime 및 CreationTime 업데이트를 자동화합니다.
도구 다운로드