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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
vol-rs — Volatility 3를 Rust로 포팅했습니다. 동일한 출력, 훨씬 더 빠른 속도. | Kitploit
도구/GitHubGitHub/daffainfo/vol-rs
Memory ForensicsVulnerability AnalysisForensicsMalware AnalysisDigital ForensicsIncident Response
GitHubdaffainfo/vol-rs

vol-rs

Volatility 3를 Rust로 포팅했습니다. 동일한 출력, 훨씬 더 빠른 속도.

저장소 보기
692173일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

vol-rs

Volatility 3 메모리 포렌식 프레임워크를 Python에서 Rust로 포팅한 것입니다. 동일한 메모리 이미지를 읽고, 동일한 옵션으로 동일한 플러그인을 실행하며, 동일한 출력을 바이트 단위로 훨씬 더 빠르게 출력합니다.

라이선스

이 프로젝트는 Volatility 3의 포팅이므로 Volatility Software License 1.0에 따른 "Addition"에 해당하며, 동일한 라이선스로 배포됩니다. 전문은 LICENSE에 있으며 온라인 https://www.volatilityfoundation.org/license/vsl-v1.0 에서도 확인할 수 있습니다. 모든 소스 파일에는 파생 출처를 기록하는 고지가 포함되어 있습니다.

이 프로젝트는 Volatility Foundation과 제휴하거나 보증하지 않습니다. Volatility라는 이름은 이것이 무엇의 포팅인지 설명하는 데만 사용됩니다.

빌드

Rust 1.85 이상이 필요하며, 그 후:

root@kitploit:~
cargo build --release

바이너리는 target/release/vol-rs에 생성됩니다. 추가로 필요한 것은 없습니다. 심볼 압축 해제, RC4, DES, AES, YARA 매칭, x86 디스어셈블리, PNG 작성 및 tar 아카이브는 모두 내장되어 있으며, Python 버전이 pycryptodomex, yara-python, capstone 및 pillow에 의존하는 부분을 대체합니다.

사용 방법

root@kitploit:~
./target/release/vol-rs -f memory.raw windows.pslist.PsList
./target/release/vol-rs -f memory.lime linux.bash.Bash
./target/release/vol-rs -f memory.raw -r csv windows.netscan.NetScan
./target/release/vol-rs windows.malfind.Malfind --help
./target/release/vol-rs --list-plugins

Python 버전이 받는 모든 옵션은 동일한 이름과 동일한 기본값으로 여기서도 지원됩니다. 여기에는 -o, -r, -s, -c, -e, --filters, --hide-columns, --save-config, --stackers 및 --single-swap-locations가 포함됩니다. 각 플러그인의 자체 옵션도 동일하게 일치하며, 도움말 페이지에서 확인할 수 있습니다. 총 197개 모두 Python 버전과 문자 단위로 동일합니다.

심볼

심볼 팩은 $XDG_DATA_HOME/vol-rs/symbols에 들어가며, 해당 변수가 설정되지 않은 경우 ~/.local/share/vol-rs/symbols에 들어갑니다. 다른 위치의 팩은 --symbol-dirs 또는 VOLRS_SYMBOL_PATH 환경 변수로 지정합니다. Windows 심볼은 Microsoft 심볼 서버에서 요청 시 가져와 ~/.cache/vol-rs에 캐시됩니다.

검증된 사항

양쪽 모두 동일한 캡처에 대해 실행되고 diff되었으며, 헤더 프레이밍과 끝의 줄바꿈까지 포함합니다:

검사 항목결과
인수 없는 Windows 플러그인100개 중 99개 동일
인수 없는 Linux 플러그인57개 중 56개 동일
인수를 받는 실행43개 중 43개 동일

동일하게 비교되지 않은 8개 파일은 아래 알려진 차이점에 나열된 두 가지 경우입니다. 7개는 Python 버전이 덤프할 수 없다고 보고한 후 디스크에 남기는 부분 파일로, 이 포팅에서는 생성되지 않으며, 1개는 내용은 일치하지만 타임스탬프가 각 실행 시점을 기록하는 tarball입니다.

이러한 수치에서 누락된 두 플러그인은 Python 버전이 테스트 머신에서 완료할 수 없는 것들입니다. windows.memmap.Memmap은 780만 줄 이후 OOM(메모리 부족) 킬러에 의해 종료되고, linux.pscallstack.PsCallStack은 끝나기 전에 종료됩니다. 두 경우 모두 Python 버전이 먼저 작성한 모든 줄은 정확히 재현됩니다.

인수 없이 실행되는 모든 플러그인에서 Windows 스윕은 여기서 273초가 걸리는 반면 Python은 5723초, Linux 스윕은 68초가 걸리는 반면 Python은 3130초가 걸립니다.

속도

인수 없이 실행되는 모든 플러그인 중 각 캡처에서 가장 큰 격차를 보이는 10개:

Windows

Linux

BENCHMARKS.md에는 나머지가 있습니다: 두 캡처의 모든 플러그인, 인수를 받는 실행, 그리고 수치를 측정한 머신에 대한 정보입니다.

알려진 차이점

일치할 수 없는 몇 가지 사항이 있으며, 각각은 의도적인 것입니다:

  • linux.pagecache.RecoverFs는 작성하는 tarball의 모든 파일에 플러그인이 실행된 시점의 타임스탬프를 기록하므로, 두 번의 실행이 일치하지 않습니다. Python 실행 두 번도 마찬가지입니다. 테이블은 일치하며 압축 해제된 트리도 일치합니다.
  • --save-config 및 timeliner --record-config는 이미지를 설명하는 모든 설정을 기록하지만, Python 버전이 가져온 구성 요소가 충분히 새로운지 확인하는 검사는 기록하지 않습니다. 이 포팅에는 기록할 그러한 검사가 없기 때문입니다.
  • linux.mountinfo --mount-format은 Python set을 결합하므로 두 Python 실행 간에 열 순서가 변경됩니다. 이 포팅은 마운트 옵션을 먼저 나열하고 파일시스템 옵션을 그 다음에 커널이 보유한 순서로 나열합니다.
  • frameworkinfo 및 isfinfo는 이미지가 아닌 도구를 설명하므로 이 포팅 자체의 레이어, 플러그인 및 심볼 파일을 보고합니다.
  • windows.dumpfiles는 Python 버전이 읽을 수 없다는 것을 발견하기 전에 생성하는 부분 파일을 남기지 않습니다. 테이블은 일치하지만 디렉터리는 해당 파일만큼 다릅니다.
  • --help에서 캐시 디렉터리 이름을 지정하는 줄은 이 포팅 자체의 캐시를 지정합니다.

할 일

아래의 모든 것은 포팅되어 빌드되지만 아직 실제 증거에 대해 실행되지 않았습니다:

  • 실제 Mac 캡처에 대해 23개의 macOS 플러그인을 테스트합니다. 23개 모두 Python 소스에 대해 줄 단위로 읽혔으며, 이들이 접촉하는 모든 타입, 멤버 및 심볼은 10.10~10.15를 다루는 129개의 게시된 Darwin 심볼 파일에 대해 확인되었으므로 버전 폴백이 완전한 것으로 알려져 있습니다. 남은 것은 실행할 실제 Mac 이미지입니다.
  • 32비트 이미지를 테스트합니다. 지금까지의 모든 검증은 64비트 캡처를 사용했으므로 Intel32 및 PAE 페이징 경로는 단위 테스트 범위만 있습니다.
  • 다른 이미지 형식을 테스트합니다. VMware 및 LiME 캡처만 사용되었으므로 crash dump, AVML, QEMU, ELF core 및 Xen 레이어는 실제 파일에서 아직 검증되지 않았습니다.
  • 더 많은 커널 버전을 테스트합니다. Windows 10 19045 하나와 Linux 6.8 캡처 하나는 좁은 기반이며, 버전별 구조를 읽는 플러그인이 포팅이 가장 많이 어긋날 수 있는 곳입니다.
  • arrow 및 parquet 렌더러를 추가합니다. 명령줄에서 허용되지만 거부되는데, 이는 테이블 라이브러리가 없을 때 Python 버전이 하는 것과 같습니다.

크레딧

Volatility 3는 Volatility Foundation과 그 기여자들의 작업입니다. 이것은 그들의 설계, 플러그인 세트 및 출력 형식을 포팅한 것이며, 그 작업이 공개되어 있기 때문에 존재할 수 있습니다.

도구 다운로드
추출 플러그인이 작성한 파일
1,747개 비교, 두 도구가 작성한 모든 파일이 동일
플러그인 도움말 페이지197개 중 197개 동일
플러그인RustPython배속
windows.malware.suspicious_threads.SuspiciousThreads0.47 s281.6 sx599
windows.suspicious_threads.SuspiciousThreads0.50 s259.1 sx518
windows.malware.hollowprocesses.HollowProcesses0.52 s257.9 sx496
windows.suspended_threads.SuspendedThreads0.090 s42.0 sx467
windows.malware.malfind.Malfind0.52 s236.5 sx455
windows.hollowprocesses.HollowProcesses0.59 s263.0 sx446
windows.debugregisters.DebugRegisters0.090 s37.0 sx411
windows.malfind.Malfind0.65 s239.7 sx369
windows.vadinfo.VadInfo0.99 s329.7 sx333
windows.verinfo.VerInfo0.99 s150.7 sx152
플러그인RustPython배속
linux.library_list.LibraryList1.99 s788.7 sx396
linux.kallsyms.Kallsyms2.41 s161.6 sx67
linux.netfilter.Netfilter0.89 s56.3 sx63
linux.lsof.Lsof0.89 s55.6 sx62
linux.sockstat.Sockstat1.60 s97.2 sx61
linux.check_idt.Check_idt0.82 s49.7 sx61
linux.malware.netfilter.Netfilter1.07 s62.0 sx58
linux.pagecache.Files1.67 s93.4 sx56
linux.kthreads.Kthreads0.87 s47.2 sx54
linux.proc.Maps2.53 s135.4 sx54