AndroWasm: an Empirical Study on Android Malware Obfuscation through WebAssembly
이 논문은 웹어셈블리 (Wasm) 를 활용하여 Android 악성코드의 정적 분석 및 시그니처 기반 탐지를 우회하는 새로운 위협 모델을 제시하고, VirusTotal 및 MobSF 와 같은 산업 표준 도구들을 회피할 수 있음을 실증적으로 입증합니다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
📱 안드로이드 악성코드의 새로운 위장술: "AndroWasm" 연구 설명
이 논문은 안드로이드 스마트폰에서 웹어셈블리 (WebAssembly, 약칭 Wasm) 라는 기술을 이용해 악성코드가 어떻게 기존 보안 프로그램들을 속이고 숨을 수 있는지를 연구한 내용입니다.
마치 치밀한 위장술을 쓴 도둑이 경찰의 눈을 피하는 방법처럼, 이 연구는 해커들이 새로운 기술을 어떻게 악용하는지, 그리고 우리가 어떻게 대비해야 하는지 설명합니다.
1. 배경: 도둑은 어떻게 숨을까? (기존의 문제)
안드로이드 앱 (APK) 은 스마트폰의 기본 언어 (자바/코틀린) 로 만들어집니다. 보안 회사들은 이 언어로 된 코드를 분석해서 "이건 나쁜 짓을 하려는 코드가 있네!"라고 잡아냅니다.
하지만 해커들은 이걸 피하기 위해 여러 가지 방법을 써왔습니다.
- 알파벳 뒤섞기 (난독화): 코드의 변수 이름을
a,b,c처럼 의미 없는 것으로 바꾸거나, 코드를 뒤죽박죽으로 섞어 사람이 읽을 수 없게 만듭니다. - 숨겨진 편지 (스테가노그래피): 악성 코드를 앱 안에 있는 사진이나 음악 파일 속에 숨깁니다.
- 가짜 옷 (패킹): 코드를 압축해서 감춥니다.
이런 방법들은 보안 회사들이 이미 많이 알고 있어서, 조금만 분석하면 "아, 이건 숨기려고 했구나!"라고 쉽게 찾아냅니다.
2. 새로운 위장술: "웹어셈블리 (Wasm)"란 무엇인가?
여기서 이 논문이 소개하는 새로운 개념이 등장합니다. 바로 웹어셈블리 (Wasm) 입니다.
- 비유: 기존 안드로이드 앱이 **"한국어로 쓴 수첩"**이라면, 웹어셈블리는 **"외계어로 쓴 수첩"**입니다.
- 원래 용도: 원래 웹어셈블리는 웹 브라우저에서 게임을 빠르게 돌리거나 복잡한 계산을 할 때 쓰는 기술입니다. "이건 웹 브라우저용 도구일 뿐, 악성코드는 아니야"라고 생각해서 보안 프로그램들이 대개 무시하거나 깊게 분석하지 않습니다.
- 해커의 아이디어: "아! 보안 프로그램들이 이 '외계어 수첩'을 잘 못 읽는구나! 그럼 내 나쁜 짓 (악성 로직) 을 이 수첩에 적어서 앱 안에 넣으면 되겠다!"
3. 실험: 안드로이드 앱에 외계어 수첩을 넣는 3 가지 방법
연구진은 안드로이드 앱 안에 이 웹어셈블리 코드를 넣는 세 가지 방법을 실험했습니다.
- 웹 브라우저 창 (WebView) 활용: 앱 안에 작은 웹 브라우저 창을 띄우고, 그 안에서 웹어셈블리를 실행합니다. (가장 쉽지만 무겁습니다.)
- 자바스크립트 엔진 활용: 앱 안에 웹 브라우저 없이도 자바스크립트를 실행할 수 있는 엔진을 넣고, 그 안에서 웹어셈블리를 실행합니다.
- 네이티브 라이브러리 (WasmEdge) 활용: 앱에 직접 웹어셈블리를 실행하는 '작은 공장'을 심어놓고, 안드로이드 앱이 그 공장에 명령을 내립니다. (가장 빠르고 정교합니다.)
4. 실제 사례: 두 가지 악성코드의 변신
연구진은 실제 악성코드를 두 가지로 변형해 실험했습니다.
🦠 사례 1: 랜섬웨어 (데이터 잠금 바이러스)
- 원래 모습: 앱 코드 (DEX 파일) 안에 "모든 파일을 암호화해라"라는 명령이 그대로 있었습니다.
- 결과: 바이러스탐색기 (VirusTotal) 가 66 개 중 27 개가 "악성코드!"라고 잡았습니다.
- 웹어셈블리 변신: "모든 파일을 암호화해라"라는 명령을 외계어 수첩 (Wasm 파일) 안에 넣었습니다. 앱 코드에는 "외계어 수첩을 꺼내서 실행해"라는 명령만 남겼습니다.
- 결과: 바이러스탐색기가 66 개 중 7 개만 잡았습니다! 대부분의 보안 프로그램은 "외계어 수첩" 내용을 보지 못해서 악성코드를 놓쳤습니다.
🕵️ 사례 2: 스파이웨어 (정보 탈취)
- 원래 모습: "사용자의 파일을 가져와서 나쁜 서버로 보내라"라는 명령과 서버 주소 (URL) 가 코드에 있었습니다.
- 결과: 보안 프로그램들이 서버 주소를 보고 "악성코드!"라고 잡았습니다.
- 웹어셈블리 변신: 서버 주소를 외계어 수첩 안에 숨겼습니다. 앱 코드는 "외계어 수첩에 있는 주소를 가져와서 보내라"라고만 했습니다.
- 결과: 보안 프로그램들은 서버 주소를 못 찾아서 악성코드를 놓쳤습니다. 다만, "파일을 읽어서 보내는 행위" 자체는 여전히 잡히긴 했지만, 어디로 보낼지 (핵심 정보) 는 완전히 숨겨졌습니다.
5. 결론: 왜 위험하고 어떻게 대비할까?
🚨 왜 위험한가요?
기존의 보안 프로그램 (VirusTotal, MobSF 등) 은 안드로이드 앱의 기본 언어 (자바/코틀린) 만 잘 분석합니다. 하지만 해커가 웹어셈블리라는 새로운 도구를 쓰면, 보안 프로그램들은 "이건 뭐지?看不懂 (이해 못 해)"라고 생각하며 넘어갑니다. 마치 경찰이 영어만 읽는데, 범인이 중국어로 쓴 편지를 들고 있는 상황과 같습니다.
🛡️ 어떻게 대비할까요? (연구진이 제안한 방법)
- 파일 확인: 앱 안에
.wasm이라는 확장자의 파일이 있는지 확인합니다. - 서명 확인: 코드 속에
00 61 73 6D같은 웹어셈블리의 고유한 마법 지문 (시그니처) 이 숨어있는지 찾습니다. - 동적 분석: 앱이 실행될 때 메모리 속에서 웹어셈블리가 어떻게 작동하는지 실시간으로 감시합니다.
💡 한 줄 요약
"해커들이 안드로이드 앱에 **'외계어 수첩 (웹어셈블리)'**을 숨겨서, 기존 보안 프로그램들이 못 보게 악성코드를 위장하고 있습니다. 이제 보안 프로그램들도 이 '외계어'를 읽을 수 있도록 업그레이드해야 할 때입니다."
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.