
사이버 보안 회사 ‘시큐어 오피스’. 이곳엔 자타공인 범인(악성 앱) 추리 전문가 YARA 요원이 있었습니다. YARA는 마치 예리한 탐정처럼 앱에 남겨진 희미한 흔적만 보고도 범인의 소속을 척척 밝혀내는 것으로 유명했죠.
흠, 이건 그 악명 높은 다크코더(DarkCoder) 패밀리 짓이군
YARA의 눈부신 활약 덕분에 수많은 디지털 악당들이 덜미를 잡혔습니다. 그야말로 시큐어 오피스의 해결사였습니다! 그런데 말입니다… 요즘 악당(악성 앱)들이 상상 이상으로 교묘해지기 시작했습니다. 특히 안드로이드 네이티브 라이브러리(.so)라는 최신 유행(?) 갑옷을 입고 나타난 녀석들은 YARA를 당황하게 만들기도 했습니다.
이전에는 악당의 스타일(시그니처)만 봐도 몽타주를 그려냈는데, 이 신종 갑옷은 워낙 교묘해서 범행 현장에 지문 하나 남기지 않는 수준이라 YARA의 예리한 눈마저 속수무책일 때가 많았습니다.
대체 넌 누구냐… 그리고 무슨 꿍꿍이냐?!
바로 그때, 구원투수처럼 CAPA 요원이 등장했습니다.
CAPA는 YARA와는 다른 종류의 능력을 갖춘 전문가였어요. CAPA는 문제의 안드로이드 네이티브 라이브러리(.so) 갑옷을 엑스레이처럼 투시해서 그 안에 숨겨진 비밀 병기 목록과 작동 방식(예: 개인정보 탈취 기능)을 속속들이 파헤칠 수 있었습니다!
정체조차 파악하기 힘든 악당들, 그들의 갑옷에는 어떤 놀라운 능력이 숨겨져 있을까요? 오늘 우리는 바로 이 비밀을 파헤치는 CAPA 요원에 대해 알아보고자 합니다. CAPA가 과연 무엇인지, 어떻게 사용되며 어디에 활용할지 함께 가볍게 짚어보겠습니다.
CAPA 요원 스펙 파헤치기 (CAPA 소개)
CAPA는 Mandiant의 FLARE 팀에서 개발한 오픈 소스 도구로 PE 파일, ELF 파일, .NET 모듈, Shell Code, 샌드박스 리포트에 대해서 악성코드의 행위(capabilities)를 자동으로 식별해주는 정적 분석 도구입니다.
서두에서 CAPA가 악당의 비밀 병기 목록과 작동 방식을 엑스레이처럼 투시한다고 했죠? 딱 그 역할입니다.
CAPA는 실행 파일의 내부 구조와 코드를 분석해서 이 프로그램이 ▲파일을 암호화하는 기능 ▲키보드 입력을 훔쳐보는 기능 ▲네트워크로 특정 서버와 통신하는 기능 등 구체적으로 어떤 악성 행위를 수행할 능력(Capability)이 있는지를 식별해 냅니다. 복잡한 코드 속에 숨겨진 악당의 진짜 속셈을 밝혀내는 거죠.
YARA 형님과는 뭐가 다른데? (YARA vs CAPA)
YARA와 CAPA는 둘 다 악성코드를 분석하는 데 유용하지만 각자의 전문 분야가 확실히 다릅니다. 우리 시큐어 오피스의 두 요원을 떠올려 보면 이해하기 쉬워요.
- YARA (범인 추리 전문가): YARA는 파일의 특정 흔적(문자열)을 보고 이미 알려진 악성코드 조직이나 그룹과의 연관성(Identity) 을 찾아내는 데 강합니다. 즉, 범인의 정체나 소속을 밝히는 데 특화된 탐정이죠. “누구냐, 넌?” 질문에 답하는 역할입니다.
- CAPA (능력 분석 전문가): CAPA는 파일의 정체보다는 그 파일이 가진 실제 능력(Capability) 에 집중합니다. 코드를 분석해서 구체적인 기능과 행위를 알려주죠. 정체를 알든 모르든, 그 악당이 ‘무엇을 할 수 있는지’, ‘어떤 위협을 가할 수 있는지’ 를 분석하는 전문가입니다. “그래서 뭘 할 수 있는데?” 질문에 답하는 역할이죠.
결론적으로 YARA와 CAPA는 경쟁자가 아니라 서로의 부족한 점을 채워주는 환상의 짝꿍입니다. YARA로 범인의 몽타주(정체)를 그리고, CAPA로 그 범인이 가진 위험한 무기와 기술(능력)을 파악할 때 비로소 완전한 그림을 그릴 수 있는 거죠.
CAPA, 너의 능력은 어떻게 쓰는 거니? (CAPA 활용법과 규칙)
CAPA가 악당의 능력을 꿰뚫어 볼 수 있는 비결은 바로 CAPA 룰(Rule) 덕분입니다. 이 룰들은 CAPA의 분석 능력을 가능하게 하는 핵심 지식 베이스이자 분석 엔진이라고 할 수 있어요.
CAPA 룰이란?
수많은 전문가가 악성코드들이 특정 기능을 수행할 때 나타내는 코드상의 특징(API 호출, 특정 어셈블리 명령어 사용 패턴, 문자열 등)을 정의해 놓은 규칙들의 모음입니다. 마치 CAPA 요원이 참고하는 악성 행위 탐지 매뉴얼과 같아요.
이 매뉴얼에는 “이런 이런 코드가 보이면 정보 유출 기능으로 의심해!” 또는 “저런 저런 함수 호출이 있으면 파일 암호화 기능이 있는 거야!” 와 같은 수많은 지침이 담겨 있습니다. 이 룰들은 MITRE ATT&CK 프레임워크와 같은 표준화된 공격 기술 분류 체계와 연결되는 경우가 많아서 분석 결과를 이해하고 공유하기에도 편리합니다.
CAPA 룰 예시: 안드로이드 SMS 발송 기능 탐지
rule:
meta:
name: send SMS on Android
namespace: communication/sms
authors:
- "@mr-tz"
scopes:
static: function
dynamic: unsupported # requires offset features
# att&ck:
# - Mobile::SMS Control [T1582]
features:
- and:
- os: android
# ... = (*env)->FindClass(env, "android/telephony/SmsManager");
- string: "android/telephony/SmsManager"
- optional:
- or:
- and:
- arch: i386
- offset: 0x30 = (*env)->FindClass
- and:
- arch: amd64
- offset: 0x1C = (*env)->FindClass
# ... = (*env)->GetMethodID(env, ..., "sendTextMessage" ...);
- string: "sendTextMessage"
CAPA 요원, 실전 투입! (CAPA 실제 사용 예시)
자, 이제 이론은 충분히 알았으니 CAPA 요원을 실제 현장에 투입해 봅시다! CAPA를 직접 사용하여 의심스러운 파일의 능력을 분석하는 기본적인 과정을 살펴보겠습니다.
(이 파트에서 사용된 CAPA 룰은 api(함수)과 string(문자열)만 사용했습니다. 이 외에도 mnemonic(어셈블리 명령어), operand(인자 지정)와 같은 패턴을 지정하는 다양한 기능이 존재하니 응용해서 사용해 보세요.)
기본 분석 명령
명령은 생각보다 간단해요. 터미널 창을 열고 capa
명령어 뒤에 분석할 악당 파일의 경로를 적어주면 됩니다. 우리의 CAPA 요원은 웬만한 파일(PE, ELF, .NET 등등)은 척 보고 알아서 분석을 시작하죠.
하지만 좀 더 똑똑하게 명령을 내리고 싶다면 옵션을 활용할 수 있어요. 예를 들어, 특별히 참고할 룰북 경로(-r
)나, 파일 형식(-f
), 또는 사용할 분석 도구(-b
, 예를 들어 IDA Pro를 쓴다면 ida
)를 콕 집어 알려줄 수도 있습니다.
# Example - Windows (PE 파일 분석)
capa C:\\malicious\\malware.exe
# Example - Linux (Linux .so 파일 분석, rules 폴더 참조, IDA 백엔드 사용)
capa libmalicious.so -r ./rules -f elf -b ida
분석 결과 확인 및 해석
명령을 내리면 잠시 후 CAPA 요원이 분석 결과를 브리핑해 줍니다. “이 녀석, 이런 능력을 갖췄습니다!” 하고 말이죠. 마치 엑스레이 사진처럼 파일이 가진 기능(Capabilities) 목록과 그 기능이 속한 분야(Namespace)를 깔끔하게 보여주죠.
예를 들어, 분석 결과가 이렇게 나왔다 칩시다.
이런 식으로 악당의 속셈과 위험성을 금방 눈치챌 수 있게 되는 거죠.
상세 보고 요청
CAPA 요원에게 좀 더 자세히 보고를 듣고 싶다면 -v
나 -vv
옵션을 사용할 수 있어요.
-vv
옵션을 사용하면 위에서 확인된 각 기능이 파일 속 어떤 함수, 어떤 오프셋 주소에서 발견되었는지, 심지어 어떤 증거(특정 문자열, API 호출 등)를 근거로 판단했는지까지 아주 상세하게 보고해 줍니다.
이걸 단서 삼아 직접 코드 속으로 뛰어들어 악당의 은밀한 계획을 탈탈 털어볼 수 있는 거죠.
CAPA 요원을 영입하면 뭐가 좋은데? (CAPA 도입의 장점)
우리 ‘시큐어 오피스’에 CAPA 요원이 합류하면서 큰 변화가 있었던 것처럼 실제 보안 환경에 CAPA를 도입하면 여러 가지 장점이 있습니다.
- 분석 시간 단축 (스피드 UP!): 악성코드 하나를 처음부터 분석하려면 많은 시간이 걸립니다. CAPA는 이 초기 분석 단계를 자동화해서 어떤 기능을 가졌는지 빠르게 파악해 주므로 분석 시간을 획기적으로 줄여줍니다.
- 신속한 위협 판단 (조기 경보!): 파일의 정체를 알기 전이라도 CAPA를 통해 “이 파일은 랜섬웨어 기능이 있다!” 또는 “키로깅 기능이 의심된다!“와 같은 핵심 위협을 빠르게 파악하고 우선순위를 정해 대응할 수 있습니다. 서두의 이야기처럼 YARA가 몽타주를 못 그려도 일단 위험성을 알 수 있죠!
- 알려지지 않은 위협 대응 (미지의 적 분석!): 시그니처가 없는 신종 또는 변종 악성코드 분석에 특히 유용합니다. YARA가 놓치더라도 CAPA는 그 코드의 행동을 분석하여 잠재적 위험을 알려줄 수 있습니다.
- 분석 결과 표준화 (소통 원활!): 많은 CAPA 룰이 MITRE ATT&CK 프레임워크와 연동되어 있어 분석 결과를 팀원이나 다른 조직과 공유하고 이해하기 쉽습니다. “T1582 (SMS Control) 기능 발견!” 이런 식으로요.
- 자동화 시스템 연동 (대량 처리 가능!): 대량의 샘플을 처리해야 하는 자동화된 분석 시스템에 CAPA를 통합하여 효율성을 극대화할 수 있습니다.
마무리하며
지금까지 악성코드의 숨겨진 능력을 파헤치는 도구, CAPA에 대해 알아보았습니다. CAPA는 단순히 악성코드를 식별하는 것을 넘어 그것이 ‘무엇을 할 수 있는지’ 그 실질적인 위협과 의도를 파악하게 해주는 강력한 도구입니다.
특히 점점 더 교묘해지고 정체를 숨기는 데 능숙해지는 현대의 사이버 위협 환경 속에서 CAPA는 YARA와 같은 기존 도구들과 환상적인 시너지를 발휘하며 우리의 방어력을 한 단계 끌어올리는 데 핵심적인 역할을 할 잠재력을 지니고 있습니다.
다만, 현재 CAPA는 안드로이드 네이티브 라이브러리(.so)와 같은 특정 유형의 파일에 대한 분석 지원이 아직은 부족한 면이 있습니다.
이에 따라 해당 파일 분석이 중요한 일부 실무 환경에서는 당장 전면적으로 도입하기에는 제한이 따를 수 있습니다. 그런데도, 악성 행위자들의 잠재적 의도를 미리 파악하고 한발 앞서 대응 전략을 수립하는 것은 매우 중요합니다. 따라서 지속적인 업데이트와 기능 개선을 지켜보며 앞으로 안드로이드 네이티브 라이브러리(.so) 지원 등이 강화되어 실무 적용성이 높아지는 시점을 기대해 볼 필요가 있습니다.
CAPA와 같은 도구의 발전은 우리가 더욱 안전한 디지털 세상을 만들어가는 데 중요한 기여를 할 것입니다.