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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
AsmLdr — 정교한 탐지 회피 기능을 갖춘 동적 셸코드 로더 | Kitploit
도구/GitHubGitHub/0xninjacyclone/asmldr
Payload GenerationIDS/IPS EvasionShellcodePost-ExploitationRed TeamingPayload Development
GitHub0xninjacyclone/asmldr

AsmLdr

정교한 탐지 회피 기능을 갖춘 동적 셸코드 로더

저장소 보기
3465110개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AsmLdr: Windows x64용 동적 셸코드 로더

개요

AsmLdr은 Windows x64 환경을 위해 설계된 x64 어셈블리 언어로 구현된 고급 셸코드 로더입니다. 주요 목적은 고급 안티바이러스 소프트웨어, 엔드포인트 탐지 및 대응(EDR) 시스템, 샌드박스, 디버거에 의한 탐지를 최소화하면서 암호화된 페이로드를 실행하는 것입니다. 이는 모듈, API 및 시스템 호출을 런타임에 동적으로 해석하여 임포트 테이블이나 하드코딩된 주소와 같은 정적 의존성을 제거함으로써 달성됩니다. 이 접근 방식은 탐지 프로필이 낮은 컴팩트한 바이너리를 생성합니다.

로더는 모듈 스톰핑을 사용하여 기존 DLL의 실행 가능 섹션에 셸코드를 배치하고, 메모리에서 페이로드를 복호화한 후 스택 스푸핑이 적용된 간접 시스템 호출로 실행합니다. 안티디버깅 조치, 정상적인 애플리케이션 패턴을 모방하는 타이밍 조정, Windows 이벤트 추적(ETW) 우회 등의 회피 기능을 포함합니다. 이러한 기능 덕분에 레드 팀 운영 및 보안 연구용 도구로 활용될 수 있습니다.

윤리적 고지사항: 이 프로젝트는 교육 및 연구 목적으로만 제공됩니다. PEB 탐색, 익스포트 테이블 파싱, 시스템 호출 언후킹, 메모리 보호 조작 등 Windows 저수준 내부 동작을 시연합니다. 통제된 환경(예: VM)에서만 사용하세요. 악의적인 활동에 오용하는 것은 불법이며 비윤리적입니다. 작성자는 모든 오용에 대한 책임을 부인합니다.

주요 기능

AsmLdr은 은밀한 페이로드 실행과 회피를 위한 다양한 기능을 제공합니다. 각 기능에 대해 아래에서 그 역할과 이점을 중심으로 설명합니다:

초기화 및 부트스트래핑

  • PEB 및 ntdll 탐색: 로더는 탐지를 피하기 위해 표준 접근 방식 없이 PEB를 찾습니다.
    • 기본 방법(스택 스캐닝): 스택 복귀 주소를 검사하여 PEB로 이어지는 유효한 포인터를 식별합니다. 찾으면 모듈 목록에서 ntdll의 기본 주소를 검색하고 시스템 호출 처리를 설정합니다.
    • 대체 방법(PE 헤더 스캐닝): 기본 방법이 실패하면 메모리에서 PE 파일 시그니처를 검색하여 ntdll.dll을 찾은 다음 시스템 호출을 사용하여 PEB 위치를 확인합니다.

동적 해석 메커니즘

  • PEB 탐색을 통한 모듈 해석: 로더는 PEB의 모듈 체인을 따라 실행 중인 모듈을 나열합니다. 유니코드 비교를 통해 모듈 이름을 일치시켜 원하는 DLL의 기본 주소를 찾아 반환합니다. 이 방법은 표준 로딩 함수를 우회하여 가로채임 위험을 낮춥니다.

  • 익스포트 테이블에서 API 해석: 로더는 DLL의 익스포트 디렉터리를 검사하여 함수를 찾습니다. 해싱 또는 선택적으로 길이 검증이 포함된 직접 이름 확인을 사용하여 API를 일치시키므로 유사한 함수 이름 간의 혼동을 방지합니다. 이를 통해 사전 연결된 임포트에 의존하지 않고 함수 주소를 얻을 수 있습니다.

회피 기법

  • 안티디버깅 보호: 로더는 여러 검사를 통해 디버깅을 감지하며, 어느 하나라도 분석을 나타내면 깔끔하게 종료합니다.

    • Kernel32 API 검사: 디버거 존재 여부와 원격 연결을 조회하고, 감지되면 종료합니다.
    • PEB 플래그 검사: 디버그 모드 활성화 등 디버깅 징후가 있는지 프로세스 플래그를 검토하고, 설정되어 있으면 중단합니다.
    • 하드웨어 중단점 탐지: 설정된 중단점이 있는지 스레드의 디버그 레지스터를 검색하고, 활성화된 중단점이 있으면 중지합니다.
    • 디버그 포트 조회: 프로세스에 연결된 디버그 포트가 있는지 검사하고, 존재하면 종료합니다.
    • 탐지 시 종료: 어떤 경고가 발생하면 스택을 복원하고 조기에 반환하여 동작이 노출되는 것을 방지합니다.
  • 분석 저항을 위한 정크 코드 생성: 로더는 필수적이지 않은 작업 시퀀스를 실행하여 디스어셈블리에 혼란스러운 패턴을 만들어 런타임 효율성에 영향을 주지 않으면서 정적 분석을 더 어렵게 만듭니다.

  • 타이밍 및 동작 정규화: 로더는 시스템 속도를 측정하여 정상적인 애플리케이션 패턴에 맞는 시뮬레이션 워크로드를 실행함으로써 합법적인 프로세스와 혼합될 수 있게 합니다. 또한 주요 작업 전에 잠시 일시 중지하여 실행 타이밍을 정규화합니다.

  • ETW 로깅 우회: 로더는 ETW 로깅 API에 하드웨어 중단점을 설정하여 이벤트 로깅 호출을 가로채고 건너뜀으로써 시스템 로그에 흔적이 남지 않게 합니다.

시스템 호출 처리

  • 다중 계층 언후킹: 로더는 함수를 직접 확인하거나, 후킹된 경우 주변 코드를 스캔하거나, ntdll의 패턴을 세어 추정한 후 알려진 예외를 조정하여 유효한 시스템 호출 번호(SSN)를 동적으로 검색합니다.

    사용된 기법:

    • Hell's Gate
    • (Halo's/Tartarus) Gate
    • Veles' Reek
  • 간접 시스템 호출 및 스택 스푸핑: 로더는 시스템 호출을 위해 ntdll에서 깨끗한 코드 경로를 찾아 최대 32개의 작업을 연결하고 호출 스택을 숨겨 추적을 회피합니다. 완료 후에는 원래 상태를 복원합니다.

페이로드 주입 및 실행

  • DLL 할로잉: 로더는 대상 DLL을 가져와 해당 코드 섹션에 임시로 쓰기를 허용하고, 암호화된 셸코드를 삽입한 뒤 복호화하고, 보호를 실행 전용으로 재설정합니다.

  • 인메모리 복호화: 로더는 주입된 메모리에 직접 반복 키 패턴을 적용하여 셸코드를 복호화합니다.

  • 유틸리티 함수: 로더에는 문자열 길이 측정, 문자열 비교(표준 또는 와이드 문자), 조회용 이름 해싱, 메모리 포인터 검증, 타이밍 제어용 타임스탬프 읽기 도구가 포함되어 있습니다.

추가 기능

  • 스텔스성을 위해 RWX 메모리 권한을 사용하지 않고 RW와 RX 사이에서만 전환합니다.
  • 후킹과 정적 분석을 피하기 위해 IAT가 없으며, 단일 정적 연결 API조차 없습니다.
  • AsmLdr은 콘솔이나 의심스러운 요소를 표시하지 않고 백그라운드에서 조용히 실행됩니다.
  • 필요한 모든 API 호출은 난독화를 위해 해시를 사용하여 해석됩니다.

셸코드 준비 방법론

Python 스크립트 generate.py는 원시 셸코드 파일을 암호화합니다. 정렬을 위한 패딩을 추가하고 키를 생성하거나 사용하며, 각 바이트를 반복 주기로 키와 XOR 연산합니다. 출력 파일 shellcode.asm은 크기, 암호화된 데이터 및 키 배열, 런타임에 데이터를 로드하는 루틴을 정의합니다. 로더의 복호화는 메모리에서 이 과정과 일치합니다. 키가 길수록 대기 시간이 늘어납니다.

사용법

준비

원시 셸코드 바이너리(예: payload.bin)를 준비합니다. python generate.py payload.bin [optional_key]를 실행하여 shellcode.asm을 생성합니다.

사용자 지정

urlmon.dll과 같은 대체 DLL을 사용하려면 evader.asm의 szDllName(유니코드 16진수 워드)을 수정합니다. str_hash 로직을 사용하여 새 API에 대한 DJB2 해시를 다시 계산합니다. 디버깅을 위해 매크로(예: KILL_DEBUGGERS)를 주석 처리합니다.

제한 사항 및 고려 사항

AsmLdr은 Windows 10 및 11 x64에 최적화되어 있습니다. 커널 업데이트로 인해 오프셋(예: PEB+0x18)이나 NTDLL 패턴(예: 0xb8d18b4c)이 변경될 수 있으므로 검증이 필요합니다. 오류 처리는 NTSTATUS 반환 값(예: <0 실패)에 의존하며, 내장된 로깅은 없습니다. 정크 및 가짜 작업은 CPU 사이클을 소비하므로 제한된 시스템에서는 리소스 모니터에 경고를 유발할 수 있습니다. 통제된 환경에서만 사용하세요.

도구 다운로드