악성코드 패커 (Malware Packer)
한 줄 정의: 악성코드 실행 파일을 압축 또는 암호화하여 원본 코드를 숨기고, 실행 시점에만 메모리상에서 복원해 동작하도록 만드는 도구 또는 기법입니다.
쉽게 풀면
패커는 물건을 포장지로 겹겹이 싸서 겉모습만으로는 안에 무엇이 들었는지 알아보기 힘들게 만드는 것과 비슷합니다. 원래의 실행 파일을 압축하거나 암호화한 형태로 감싸두고, 실제로 프로그램이 실행될 때만 메모리 안에서 원래 모습으로 풀어내 동작시킵니다. 디스크에 저장된 파일 자체를 열어봐도 실제 악성 코드 내용이 보이지 않기 때문에 백신 프로그램이 파일만 검사해서는 정체를 파악하기 어렵습니다.
왜 중요한가
패커는 악성코드 탐지를 회피하는 가장 널리 쓰이는 기법 중 하나이기 때문에 정적 분석의 한계를 보여주는 사례로 정보보안학 연구에서 자주 다뤄집니다. 패커 사용 여부와 종류를 식별하는 것 자체가 악성코드 계열 분류와 위협 인텔리전스 연구의 출발점이 되기도 합니다.
논문에서는 이렇게 쓰입니다
"수집한 악성코드 표본의 상당수가 상용 패커로 압축되어 있어, 정적 시그니처 기반 탐지의 탐지율이 저하되는 것으로 나타났다."
패커 사용이 정적 탐지의 정확도를 떨어뜨리는 현상을 설명하는 문장입니다.
"본 연구에서는 언패킹 과정에서의 메모리 덤프를 분석하여 원본 실행 코드를 추출하는 자동화 기법을 제안한다."
패킹된 악성코드에서 원본 코드를 복원하는 언패킹 연구를 소개하는 문장입니다.
조금 더 깊게 보면
패커는 크게 공개적으로 배포되는 범용 패커와 공격자가 자체 제작한 맞춤형 패커로 나눌 수 있습니다. 실행 시 패커의 스텁(stub) 코드가 먼저 동작해 압축된 원본 코드를 메모리에 복원한 뒤 제어권을 넘기는 구조가 일반적입니다. 분석가는 이 복원 시점을 포착해 메모리에서 원본 코드를 덤프하는 언패킹 기법을 활용해 실제 동작을 분석합니다.
주의할 점
패커는 정상 소프트웨어에서도 파일 크기 축소나 역공학 방지 목적으로 흔히 사용되므로, 패킹 여부만으로 악성 여부를 판단하기보다는 실행 후의 행위까지 함께 살펴봐야 합니다.