Kant's IT/Issue on IT&Security

Rust 기반 악성코드 개발과 C/C++ 비교 분석

Kant Jo 2025. 5. 7. 09:30

Researchers Compare Malware Development in Rust vs C and C++

 

Researchers Compare Malware Development in Rust vs C and C++

The research cites a 2023 study from Rochester Institute of Technology that confirmed several technical advantages of Rust for malware development.

gbhackers.com

 

  • Rust 언어의 악성코드 개발 활용 증가
    • Bishop Fox의 Nick Cerne 연구원은 Rust 언어가 C/C++ 대비 리버스 엔지니어링 난이도 증가, 서명 기반 탐지 회피 측면에서 악성코드 개발에 유리하다고 분석
    • Rust, Go, Nim은 고급 난독화, 디버깅 회피, 정적 분석 혼란화를 자연스럽게 지원함
  • Rust 컴파일러(rustc)의 최적화 특성
    • Rust 컴파일된 바이너리는 C/C++보다 바이너리 크기가 크고 복잡한 어셈블리 출력을 생성
      • 예시: 동일 기능을 수행하는 쉘코드 로더
        • C 버전 크기: 71.7KB
        • Rust 버전 크기: 151.5KB
    • Ghidra, IDA Free 등 리버스 엔지니어링 도구가 Rust 바이너리에서 함수 경계, 변수 추적, 메모리 흐름 분석에 취약
  • 자동 분석 우회 효과
    • Rust 악성코드는 정적 분석 도구에서 FP/FN(오탐/미탐) 발생률이 높음
    • 최적화된 LLVM 기반 어셈블리 출력은 일반적인 분석 흐름 해석을 방해
  • 실무 적용: 파일 매핑 주입(File Mapping Injection)
    • VirtualAlloc 계열 API 대신 CreateFileMapping, MapViewOfFile, MapViewOfFileNuma2 등 비감시 API 사용
    • 테스트 시나리오
      • Rust 악성코드 드로퍼가 calc.exe 쉘코드를 notepad.exe에 주입
      • 이후 Sliver C2 프레임워크 기반 HTTPS C2 페이로드 연결로 확장
  • 개발자 환경 노출 가능성
    • Rust는 디버깅 정보에 절대 경로 포함
      • OPSEC 측면에서 개발 환경 정보 노출 가능성 존재
      • 빌드 시 --remap-path-prefix 옵션 등으로 대응 필요
  • 결론
    • Rust는 기술적 분석 회피 효과, 비표준 API 활용 용이성, C2 통신의 유연한 암호화 적용성 등으로 악성코드 제작에 매력적인 플랫폼으로 부상
    • 보안 솔루션은 Rust, Go, Nim 기반 악성코드의 비정형 바이너리 특징과 메모리 기반 행동 분석 강화가 필수