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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Shinigami — 동적 언패킹 도구 | Kitploit
도구/GitHubGitHub/buzzer-re/shinigami
Dynamic Analysis (Sandboxing)Reverse EngineeringShellcodeMalware AnalysisBinary Analysis
GitHubbuzzer-re/shinigami

Shinigami

동적 언패킹 도구

저장소 보기
1521262년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Shinigami

Build Release

이미지 설명

Shinigami는 프로세스 할로잉 또는 일반적인 패커 루틴을 통해 주입되는 악성코드 임플란트를 탐지하고 언패킹하도록 설계된 실험적 도구입니다.

작동 원리

이 도구는 프로세스 할로잉과 관련된 NT 함수를 후킹하고 새로 실행 가능해진 메모리 페이지에 페이지 가드 비트를 표시하는 방식으로 작동합니다. 이 기법을 통해 Shinigami는 일반적으로 셸코드나 언패킹된 코드로 인해 발생하는 간접 흐름 변경을 탐지할 수 있으며, 이는 종종 악성코드를 나타냅니다. Shinigami는 대상 실행 파일을 일시 중단된 상태로 생성하고 "Ichigo"라는 DLL 라이브러리를 주입합니다. 이 라이브러리는 임플란트를 탐지하고 추출하는 데 필요한 모든 함수를 자동으로 후킹합니다. 아티팩트가 완전히 추출되면 도구는 프로세스를 종료합니다.

Shinigami의 효과는 대상으로 하는 특정 악성코드에 따라 달라질 수 있습니다. 그러나 악성코드 분석 툴킷에 유용한 추가 도구이며, 프로세스 할로잉이나 일반적인 패커 루틴을 사용하는 악성코드를 탐지하고 분석하는 데 유용할 수 있습니다.

중요: 이 도구는 동적 언패킹 도구이므로 개인용 머신이나 정적 분석 랩에서 실행해서는 안 됩니다

현재 언패킹 방법

프로세스 할로잉

Shinigami가 프로세스 할로잉으로 주입된 임플란트를 추출하는 핵심 방법은 NtResumeThread와 NtWriteVirtualMemory라는 두 NT 함수를 후킹하는 것입니다. 작동 방식은 다음과 같습니다:

  • NtResumeThread 후크

    • Shinigami는 NtAllocateVirtualMemory를 통해 이전에 할당된 모든 메모리를 탐색하여 DOS 헤더 시그니처가 포함되어 있는지 확인합니다. 발견되면 원격 PE 파일을 추출하고, 섹션이 정렬되도록 패치한 뒤 filename_dumped.bin 형식으로 디스크에 저장합니다.
  • NtWriteVirtualMemory 후크

    • Shinigami는 NtWriteVirtualMemory를 후킹하여 실행 파일이 원격 프로세스에 PE 파일을 쓰려고 하는지 감지합니다. PE 파일이 발견되면 Buffer 포인터를 사용하여 추출하고 filename_before_written.bin으로 디스크에 저장합니다. 이 옵션은 --stop-at-write 플래그가 전달된 경우에만 사용됩니다.

일반 언패커

Shinigami의 일반 언패커 모듈은 새로 할당된 메모리 영역에 PAGE_GUARD 비트를 표시하며, 기존 메모리 영역의 보호 속성이 실행 가능한 속성으로 교체된 경우에도 이 비트를 적용합니다. 가드 페이지를 사용하여 셸코드나 PE 이미지를 할당하는 데 사용될 메모리 영역을 추적할 수 있습니다.

감지된 각 셸코드에 대해 Shinigami는 원시 셸코드 자체를 디스크에 저장합니다. 또한 해당 메모리 영역을 스캔하여 PE 파일을 찾으면 그것들도 저장합니다. Shinigami는 각기 다른 셸코드 실행을 새로운 스테이지로 취급하므로, 작업이 끝나면 작업 디렉터리에 filename_shellcode_STAGENUM.bin or .exe라는 이름의 파일들이 생성됩니다.

사용법

이 도구에는 몇 가지 옵션이 있습니다:

root@kitploit:~
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

몇 가지 중요한 옵션은 다음과 같습니다:

-o, --output: 추출된 아티팩트를 덤프할 디렉터리를 지정합니다. 기본적으로 추출된 아티팩트는 현재 작업 디렉터리의 output이라는 디렉터리에 저장됩니다. 인수로 경로를 전달하여 다른 디렉터리를 지정할 수 있습니다.

--stop-at-write: 이 인수는 할로잉된 프로세스의 언패킹 중에 사용됩니다. Shinigami가 PE 파일이 할로잉된 프로세스에 쓰여지는 것을 감지하면 실행을 중지하고 추출된 PE 파일을 저장합니다. 이 옵션은 할로잉된 프로세스 전체를 실행하지 않고 언패킹된 코드만 추출하려는 경우 유용할 수 있습니다.

--verbose: 상세 출력을 표시합니다. 디버깅하거나 Shinigami의 내부 동작을 이해하는 데 유용할 수 있습니다.

사용 예시:

Unhollow

Dridex에 대한 테스트

추출이 완료되면 프로세스가 종료되고 (바라건대) 추출된 PE를 얻을 수 있습니다:

덤프된 임플란트

감지된 임플란트는 탐지 방법 섹션에 설명된 형식에 따라 덤프됩니다

언패킹

여기에 설명된 임의의 로더 언패킹

위 예시에서 Shinigami는 일반 로더의 동작을 자동으로 감지하고 그 안에서 실행된 모든 셸코드와 이미지를 추출했으며, 언패킹 루틴을 활성화하거나 비활성화하기 위한 특별한 스위치가 필요하지 않았습니다. 이는 Shinigami가 Gancho 라이브러리가 제공하는 공유 후크를 사용하여 Unhollow 모듈과 일부 기능을 공유하기 때문에 가능했습니다.

Emotet

Emotet DLL 언패킹

Shinigami는 DLL도 지원하며 분리된 DOS 헤더를 사용하여 주입된 바이너리를 재구성할 수 있습니다. 특히 Emotet과 같은 악성코드 샘플은 이 기술을 사용하여 인메모리 PE 스캐너를 회피합니다. Shinigami는 이러한 누락된 부분(DOS 헤더)을 감지하고 휴리스틱을 사용하여 이를 재구성합니다.

설치

Release 페이지에서 원하는 버전을 받으세요.

빌드 및 개발

이 프로젝트에 도움을 주신다면 정말 감사하겠습니다. 원하시면 아래에 의존성과 단계를 정리해 두었습니다.

  • C++ 워크로드가 포함된 Visual Studio 2019 이상을 설치합니다.
  • Zydis는 빠르고 가벼운 x86/x86-64 디스어셈블러로, 이를 설치하세요. vcpkg 방식을 사용하는 것을 권장합니다.
    • Zydis는 API 후킹을 더 정밀하게 만들고 복사 시 opcode가 손실되지 않도록 보장하는 데 사용됩니다.
  • Visual Studio에서 Shinigami.sln 솔루션 파일을 열고 프로젝트를 빌드/코딩하세요.

변경하고 싶은 사항이 있으면 이슈 또는 풀 리퀘스트를 열어 주세요.

결론

이 멋진 마스코트 이미지는 Bleach에서 영감을 받아 Dall-E로 생성되었습니다.

도구 다운로드