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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
avml — 포렌식 및 침해 대응을 위한 휴대용 Linux RAM 수집 도구로, 선택적 압축 및 원격 스트리밍을 지원하며 LiME 호환 이미지를 캡처합니다. | Kitploit
도구/GitHubGitHub/microsoft/avml
Memory ForensicsForensicsDigital ForensicsIncident Response
GitHubmicrosoft/avml

avml

포렌식 및 침해 대응을 위한 휴대용 Linux RAM 수집 도구로, 선택적 압축 및 원격 스트리밍을 지원하며 LiME 호환 이미지를 캡처합니다.

저장소 보기
1.1k964일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

AVML (Linux용 휘발성 메모리 획득)

요약

Linux용 휴대용 휘발성 메모리 획득 도구.

AVML은 Rust로 작성된 X86_64 사용자 영역(userland) 휘발성 메모리 획득 도구로, 정적 바이너리로 배포되도록 설계되었습니다. AVML은 대상 OS 배포판이나 커널을 사전에 알지 못해도 메모리를 획득할 수 있습니다. 대상 시스템에서의 컴파일이나 핑거프린팅이 필요하지 않습니다.

기능

  • Azure Blob Store 또는 HTTP PUT을 통해 캡처한 이미지를 외부 위치에 저장
  • Azure Blob Storage 업로드는 Azure SDK의 기본 지수 백오프 정책을 통해 일시적 오류를 재시도합니다(최대 8회 시도, 총 경과 시간 1분으로 제한).
  • Snappy를 사용한 선택적 페이지 수준 압축
  • (압축을 사용하지 않을 때) LiME 출력 형식 사용

메모리 소스

  • /dev/crash
  • /proc/kcore
  • /dev/mem

메모리 소스가 명령줄에 지정되지 않은 경우, AVML은 메모리 소스를 순회하여 사용 가능한 소스를 찾습니다.

참고: 커널 기능 kernel_lockdown이 활성화되어 있으면 AVML은 메모리를 획득할 수 없습니다.

테스트된 배포판

  • Ubuntu: 12.04, 14.04, 16.04, 18.04, 18.10, 19.04, 19.10, 20.04, 21.04, 22.04
  • Centos: 6.5, 6.6, 6.7, 6.8, 6.9, 6.10, 7.0, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.9
  • RHEL: 6.7, 6.8, 6.9, 7.0, 7.2, 7.3, 7.4, 7.5, 7.7, 8.5, 9.0
  • Debian: 8, 9, 10, 11, 12
  • Oracle Linux: 6.8, 6.9, 6.10, 7.3, 7.4, 7.5, 7.6, 7.9, 8.5, 9.0
  • CBL-Mariner: 1.0, 2.0

하위 명령어

avml은 하위 명령어를 포함하는 단일 바이너리입니다. 각 하위 명령어는 Cargo 기능(feature)으로 제어되므로 최소 빌드에는 필요한 기능만 포함됩니다:

획득(acquire) 전용 최소 바이너리는 cargo build --release --no-default-features로 빌드합니다.

시작하기

압축된 메모리 이미지 캡처

대상 호스트에서:

root@kitploit:~
avml acquire --compress output.lime.compressed

압축되지 않은 메모리 이미지 캡처

대상 호스트에서:

root@kitploit:~
avml acquire output.lime

메모리 이미지 캡처 및 Azure Blob Store 업로드

az cli 자격 증명이 있는 보안 호스트에서 SAS URL을 생성합니다.

root@kitploit:~
EXPIRY=$(date -d '1 day' '+%Y-%m-%dT%H:%MZ')
SAS_URL=$(az storage blob generate-sas --account-name ACCOUNT --container CONTAINER test.lime --full-uri --permissions c --output tsv --expiry ${EXPIRY})

대상 호스트에서 생성된 SAS 토큰으로 avml을 실행합니다.

root@kitploit:~
avml acquire --sas-url ${SAS_URL} --delete output.lime

로컬 디스크에 쓰지 않고 메모리 이미지 스트리밍

스냅샷을 먼저 로컬 파일로 쓰는 것이 바람직하지 않은 호스트(읽기 전용 루트 파일시스템, 디스크 공간 제한, 포렌식 증거 관리(chain-of-custody) 문제)에서는 stream 하위 명령어를 사용하세요. 이 명령은 메모리 소스를 처음에 한 번 선택하고(acquire의 /dev/stdout 경로와 동일한 우선순위 순서 — /proc/kcore, 그다음 /dev/crash, 마지막으로 /dev/mem; 재정의하려면 --source를 전달) 선택한 대상에 바이트를 순차적으로 기록합니다. 스트리밍 중에는 소스를 변경할 수 없으므로 자동 소스 대체(fallback)는 없습니다.

Azure Block Blob Storage로

root@kitploit:~
avml stream blob ${SAS_URL}
  • 블록 크기는 스냅샷이 Azure의 blob당 50,000블록 제한에 맞도록 자동으로 계산됩니다. --sas-block-size(MiB)는 최소값으로 작동하며, 계산된 최소값이 더 크면 더 큰 값이 적용됩니다.
  • --sas-block-concurrency는 동시 진행 중인 stage_block 호출 수를 제한합니다. 최대 RAM 사용량은 약 (concurrency + 1) * block_size입니다.
  • 업로드 도중 스냅샷이 실패하면 스테이징된 블록은 커밋되지 않고 버려집니다. Azure는 표준 정책에 따라 이를 자동으로 삭제합니다.

원격 TCP 리스너로

수집 호스트에서:

root@kitploit:~
nc -l 9000 > snapshot.lime

대상 호스트에서:

root@kitploit:~
avml stream tcp collector.example.com:9000

avml은 한 번 연결하여 스냅샷을 순차적으로 기록합니다. 스트리밍 중 연결이 끊어지면 스냅샷은 중단되며 재개(resume) 기능은 없습니다. TLS가 없으므로, 필요하다면 기밀성과 무결성을 위해 SSH 터널이나 stunnel과 함께 사용하세요.

이전에 캡처한 스냅샷 업로드

root@kitploit:~
avml upload put  ./output.lime ${URL}              # HTTP PUT
avml upload blob ./output.lime ${SAS_URL}          # Azure Block Blob

VM 확장을 사용하여 Azure VM의 메모리 이미지 캡처

az cli 자격 증명이 있는 보안 호스트에서 다음을 수행합니다:

  1. SAS URL 생성(위 참조)
  2. 다음 정보가 포함된 config.json 생성:
root@kitploit:~
{
    "commandToExecute": "./avml acquire --compress --sas-url <GENERATED_SAS_URL> --delete",
    "fileUris": ["https://FULL.URL.TO.AVML.example.com/avml"]
}
  1. 지정된 config.json으로 customScript 확장을 실행합니다.
root@kitploit:~
az vm extension set -g RESOURCE_GROUP --vm-name VM_NAME --publisher Microsoft.Azure.Extensions -n customScript --settings config.json

AWS S3 또는 GCP Cloud Storage에 업로드

보안 호스트에서 S3 사전 서명 URL 또는 GCP 사전 서명 URL을 생성합니다.

대상 호스트에서 생성된 사전 서명 URL로 avml을 실행합니다.

root@kitploit:~
avml acquire --url ${URL} --delete output.lime

AVML 압축 이미지 압축 해제

root@kitploit:~
avml convert ./compressed.lime ./uncompressed.lime

압축되지 않은 LiME 이미지 압축

root@kitploit:~
avml convert --source-format lime --format lime_compressed ./uncompressed.lime ./compressed.lime

사용법

root@kitploit:~
A portable volatile memory acquisition tool for Linux

Usage: avml <COMMAND>

Commands:
  acquire  Acquire a memory snapshot to a local file (and optionally upload it)
  convert  Convert between AVML and LiME snapshot formats and a raw memory image
  upload   Upload an already-acquired snapshot file to remote storage
  stream   Stream a memory snapshot directly to remote storage, without writing it to a local file
  help     Print this message or the help of the given subcommand(s)

각 명령의 옵션을 보려면 avml <COMMAND> --help를 실행하세요.

Ubuntu에서 빌드

root@kitploit:~
# Install MUSL
sudo apt-get install musl-dev musl-tools musl

# Install Rust via rustup
curl https://sh.rustup.rs -sSf | sh -s -- -y

# Add the MUSL target for Rust
rustup target add x86_64-unknown-linux-musl

# Build
cargo build --release --target x86_64-unknown-linux-musl

# Build without upload functionality
cargo build --release --target x86_64-unknown-linux-musl --no-default-features

Azure에서 테스트

테스트 스크립트는 여러 리소스 그룹, 가상 머신 및 스토리지 계정을 생성, 사용 및 정리합니다.

  1. az cli 설치
  2. az login을 사용하여 Azure 구독에 로그인
  3. avml 빌드(위 참조)
  4. ./eng/test-on-azure.sh

기여

이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 기여 내용을 사용할 권리를 당사에 부여할 자격이 있으며 실제로 그 권리를 부여한다는 내용의 기여자 라이선스 계약(CLA)에 동의해야 합니다. 자세한 내용은 https://cla.microsoft.com을 방문하세요.

풀 리퀘스트를 제출하면 CLA-bot이 CLA 제공이 필요한지 자동으로 판단하고 적절히 PR을 처리합니다(예: 라벨, 코멘트). 봇이 제공하는 지침을 따르기만 하면 됩니다. 이 작업은 당사의 CLA를 사용하는 모든 저장소에서 한 번만 수행하면 됩니다.

이 프로젝트는 Microsoft 오픈소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있으면 [email protected]으로 문의하세요.

보안 문제 신고

보안 문제와 버그는 이메일을 통해 Microsoft 보안 대응 센터(MSRC) [email protected]로 비공개로 신고해 주세요. 24시간 이내에 응답을 받을 수 있습니다. 어떤 이유로든 응답을 받지 못한 경우, 원래 메시지를 받았는지 확인할 수 있도록 이메일로 후속 연락을 취해 주시기 바랍니다. MSRC PGP 키를 포함한 추가 정보는 Security TechCenter에서 확인할 수 있습니다.

도구 다운로드
하위 명령어기능(feature)기본값설명
acquire(항상)예메모리를 로컬 파일로 스냅샷(선택적으로 이후 업로드).
convertconvert예AVML / LiME / raw 형식 간 변환.
uploadupload예로컬 파일을 HTTP PUT 또는 Azure Block Blob으로 업로드.
streamstream예스냅샷을 로컬 파일 없이 대상으로 직접 스트리밍.