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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
asminject — David Buchanan의 dlinject 프로젝트를 대폭 수정한 포크입니다. ptrace를 사용하지 않고 /proc/<pid>/mem에 접근하여 임의의 어셈블리(또는 사전 컴파일된 바이너리) 페이로드를 x86-64, x86 및 ARM32 Linux 프로세스에 직접 주입합니다. 특정 포스트 익스플로잇 시나리오, 프로세스 메모리에서 콘텐츠 복구 등에 유용합니다. | Kitploit
도구/GitHubGitHub/bishopfox/asminject
ShellcodePost-ExploitationPenetration TestingPayload DevelopmentContainer Escape
GitHubbishopfox/asminject

asminject

David Buchanan의 dlinject 프로젝트를 대폭 수정한 포크입니다. ptrace를 사용하지 않고 /proc/<pid>/mem에 접근하여 임의의 어셈블리(또는 사전 컴파일된 바이너리) 페이로드를 x86-64, x86 및 ARM32 Linux 프로세스에 직접 주입합니다. 특정 포스트 익스플로잇 시나리오, 프로세스 메모리에서 콘텐츠 복구 등에 유용합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

asminject.py

asminject.py는 David Buchanan의 dlinject 프로젝트를 대폭 수정한 포크입니다. ptrace로 프로세스에 붙는 대신 /proc/<pid>/mem에 접근하여 임의의 어셈블리(또는 사전 컴파일된 바이너리) 페이로드를 x86-64, x86, ARM32 Linux 프로세스에 직접 주입합니다. 신뢰된 프로세스 변조, 특정 사후 악용(post-exploitation) 시나리오, 프로세스 메모리에서 콘텐츠 복구, 일부 보안 통제 우회에 유용합니다. 컨테이너 외부에서도 호스트에서 root 접근 권한만 있다면 컨테이너화된 프로세스에 주입할 수 있습니다.

또한 Bishop Fox 도구 페이지에서 asminject.py와 그 기원에 대해 더 자세히 읽을 수 있습니다. 이 도구에 영감을 준 작업에 대한 상세 분석도 포함되어 있습니다.

이 문서의 목차:

  • 엘리베이터 피치 또는 TLDR
  • 기원
  • 예제
  • 그런데 Yama의 ptrace_scope 제한은?
  • 향후 목표

별도의 더 상세한 문서:

  • asminject.py의 작동 방식 - 특히 메모리 주입 도구를 다뤄본 적이 없는 독자를 위해 일부 기술적 세부 사항을 깊이 있게 다루는 상위 수준의 아키텍처 논의
  • 시작하기
  • dlinject.py와의 차이점
  • 전문화된 옵션
  • 문제 해결
  • 버전 기록

엘리베이터 피치 또는 TLDR

  • "asminject.py는 dlinject와 비슷하지만, 라이브러리만 로드하는 대신 원하는 모든 페이로드를 주입할 수 있고 여러 아키텍처에서 동작합니다."
  • "asminject.py는 대략적으로 Frida와 비슷하지만, ptrace 인터페이스를 통해 붙지 않으므로 프로세스가 스스로 ptrace하여 차단할 수 없습니다."

기원

asminject.py는 Linux 환경에서의 침투 테스트에서 두 가지 주요 시나리오를 위해 작성되었습니다:

  • 호스트에 대한 root 접근 권한을 가진 공격자의 관점에서 프로세스 및 컨테이너 수준의 보안 통제를 공격
  • 다른 취약점을 성공적으로 악용한 후 탐지를 회피

예를 들어, 테스터가 많은 컨테이너를 호스팅하는 서버에 대해 root 접근 권한을 획득한 침투 테스트를 생각해 보십시오. 컨테이너 중 하나는 은행 송금을 처리하며, 그 내부에는 매우 강력한 엔드포인트 보안 제품이 설치되어 있습니다. 침투 테스터가 컨테이너 내부에서 은행 송금 데이터를 수정하려고 하면 엔드포인트 보안 소프트웨어가 이를 탐지하고 차단합니다. asminject.py는 침투 테스터가 컨테이너 외부에서 은행 소프트웨어의 프로세스 메모리나 심지어 엔드포인트 보안 제품 자체에 임의의 코드를 직접 주입할 수 있게 합니다. 데카르트의 "악마"의 희생자처럼, 컨테이너 내부의 보안 소프트웨어는 공격자가 완전히 통제하는 환경에 존재하므로 무력합니다.

원래의 dlinject.py는 Linux 공유 라이브러리를 기존 프로세스에 로드하도록 특별히 설계되었습니다. asminject.py는 원래 도구가 했던 모든 작업과 그 이상을 수행합니다. 임의의 어셈블리 코드를 실행하며 다양한 공격을 위한 템플릿을 포함합니다. 또한 라이브러리 로딩 이벤트와 같은 잠재적으로 의심스러운 활동을 기준으로 삼는 보안 메커니즘의 탐지를 피하는 데 도움이 되도록 재설계되었습니다.

예제

이 저장소의 practice 디렉터리에는 콘솔에 타임스탬프와 루프 반복 횟수를 출력하는 기본 루프 코드가 포함되어 있어 통제된 환경에서 다양한 유형의 코드 주입을 연습할 수 있습니다. 이러한 연습용 루프는 나머지 예제에서 참조됩니다.

asminject.py를 호출하는 기본 구문은 다음과 같습니다:

root@kitploit:~
# python3 ./asminject.py <target_process_id> <payload> \
  --arch [x86-64|x86|arm32] --relative-offsets-from-binaries --stop-method "slow" \
  --var <payload_variable_1_name> <payload_variable_1_value> \
  # ... \
  --var <payload_variable_n_name> <payload_variable_n_value>

대부분의 경우 예제에서 사용된 페이로드는 지원되는 모든 아키텍처에서 실행됩니다.

  • 기본 예제 - 예를 들어 기존 프로세스가 사용자를 대신해 파일을 복사하도록 만드는 간단한 페이로드
  • Python 코드 주입
  • PHP 코드 주입
  • Ruby 코드 주입
  • 셸코드/스테이저 주입
  • 공유 라이브러리 주입

그런데 Yama의 ptrace_scope 제한은?

대부분의 Linux 배포판에는 다른 프로세스에 대해 ptrace 기능을 사용하는 접근을 제어하는 Yama라는 커널 보안 모듈이 포함되어 있습니다. asminject.py는 디버거 인터페이스에 붙지 않지만 여전히 ptrace 기능을 사용할 권한이 필요합니다. 이 기능과 관련된 오류가 발생하면 /proc/sys/kernel/yama/ptrace_scope의 내용을 확인하십시오. 값이 2로 설정된 경우 root로 다음 명령을 실행하십시오:

root@kitploit:~
echo 1 > /proc/sys/kernel/yama/ptrace_scope

3 이상의 값은 재부팅 없이는 해제할 수 없습니다. 그러나 누군가 실수로 /proc/sys/kernel/yama/ptrace_scope를 3으로 설정한 Linux 시스템의 권한 있는 관리자이거나 해당 값이 설정된 환경에 대한 권한 있는 침투 테스트를 수행 중인 경우 ptrace_scope_kernel_module 디렉터리에서 재부팅이 필요 없는 잠재적 해결 방법을 확인하십시오.

향후 목표

  • ARM64(Aarch64) 지원 추가.
  • 파일에서 읽는 현재 방식 외에도 stdin을 통해 셸코드를 전달할 수 있도록 허용.
  • OS 수준의 gcc 명령을 호출하는 대신 셸코드 어셈블리에 Keystone 사용을 조사.
  • 실행을 위해 컴파일된 바이트코드를 전달하는 API(사람이 읽을 수 있는 스크립트 코드의 eval 스타일 실행과 대조)가 있는 Python 및 기타 스크립트 인터프리터의 경우, 이 기능을 활용하여 더욱 은밀하게 동작하는 페이로드를 제공.
  • 가능하다면 JNI를 통해 Java 프로세스에 Java 코드를 주입.
  • dlinject.py에서 물려받은 현재의 "다음 syscall 후킹" 기법의 대안으로 특정 메서드(또는 주소 등)를 후킹하는 옵션 추가.
  • 준디버깅 용도로 도구를 사용할 수 있는 방법 제공, 예: 함수를 후킹하고 호출될 때마다 전달된 인수를 출력.
    • asminject.py를 사용하여 Frida를 주입하는 방법을 찾는 것이 더 합리적일 수 있습니다 - 더 많은 연구가 필요합니다.
  • 대화형 페이로드 개발, 예: Python 프로세스에 특정 Python 스크립트 코드 줄을 주입하는 대신, asminject.py가 운영자에게 주입할 코드 줄을 요청하고, 주입한 다음 결과 출력을 반환하고, 다시 운영자에게 다른 코드 줄을 요청할 수 있습니다.
    • Frida가 일시적으로 디버거 인터페이스를 호출해야 하는 필요성을 피하는 방식으로 asminject.py를 사용하여 프로세스에 Frida를 주입할 수 있다면, 이것도 Frida로 처리하는 것이 더 합리적일 수 있습니다.
  • asminject.py가 실행 중인 프로세서 아키텍처와 일치하지 않는 프로세서 아키텍처에서 실행 중인 대상 프로세스와 상호 작용하는 방법 제공. 예: PCI leech와 같은 하드웨어를 사용하여 원격 장치와 상호 작용, NFS 공유를 통해 root로 접근 가능한 /proc/mem이 있는 장치와 같은 극단적인 모서리 사례 악용 등.
  • 더 정교한 난독화 조각 추가.
도구 다운로드