1. 상호 배제 (Mutual Exclusion - Mutex)
Mutex는 두 개 이상의 스레드가 **공유 자원(Shared Resource)**을 동시에 접근하는 것을 막아 데이터의 일관성을 유지하기 위해 사용되는 동기화(Synchronization) 기법입니다.
📌 핵심 개념: 자물쇠 역할 🔒
- 상황: 여러 사람이 하나의 화장실(공유 자원)을 사용하려고 할 때, 동시에 들어가면 문제가 생깁니다.
- Mutex의 역할: 화장실 문에 달린 **잠금장치(Lock)**와 같습니다.
- 어떤 스레드가 자원에 접근하기 전에 Mutex를 잠그고(Acquire),
- 작업을 마친 후 Mutex를 **해제(Release)**합니다.
- 이미 잠겨 있다면, 다른 스레드는 대기해야 합니다.
🔍 악성코드 분석에서의 연결점
악성코드 분석(특히 동적 분석)에서 Mutex는 다음과 같은 용도로 사용되기 때문에 주의 깊게 살펴봐야 합니다.
- 다중 실행 방지 (Anti-reversing): 악성코드가 실행될 때, 특정 이름의 Mutex를 생성하고 잠급니다. 이후 다시 실행되면 이미 Mutex가 잠겨 있는 것을 확인하고, "아, 이미 실행 중이구나"라고 판단하여 두 번째 실행을 중단합니다. 이는 분석가가 악성코드를 여러 번 실행하거나 여러 가상 머신에서 실행하는 것을 방해하기 위한 흔한 기법입니다.
- 공격 대상 시스템 식별: 생성된 Mutex 이름 자체가 악성코드의 종류나 공격 대상을 식별하는 고유한 ID 역할을 하기도 합니다.
2. COM (Component Object Model)
COM은 마이크로소프트(Microsoft) 환경에서 서로 다른 **소프트웨어 구성 요소(Component)**들이 언어에 관계없이 서로 상호 작용할 수 있도록 정의된 표준 인터페이스 모델입니다.
📌 핵심 개념: 표준화된 플러그 규격 🔌
- 배경: 윈도우 환경에서 C++, VB, .NET 등 다양한 언어로 작성된 프로그램들이 서로의 기능을 불러서 사용해야 할 필요성 때문에 만들어졌습니다.
- 역할: 서로 다른 구성 요소들이 약속된 인터페이스를 통해서만 통신하게 합니다. 내부 구현이 바뀌어도 인터페이스만 유지되면 호출하는 쪽에서는 알 필요가 없습니다. 이는 마치 USB 포트(인터페이스)가 있으면, 제조사가 다르더라도 키보드, 마우스(구성 요소)를 연결하여 쓸 수 있는 것과 같습니다.
🔍 악성코드 분석에서의 연결점
대부분의 윈도우 기반 악성코드는 시스템의 기능을 호출하기 위해 COM을 광범위하게 사용합니다.
- 시스템 기능 우회/호출: 악성코드는 Windows Shell 또는 네트워킹 기능(WinHTTP) 등 복잡한 윈도우 API를 COM 객체를 통해 쉽게 호출하여 파일 생성, 인터넷 접속, 시스템 설정 변경 등을 수행합니다.
- 지속성 확보: 악성코드가 **작업 스케줄러(Task Scheduler)**와 같은 시스템 구성 요소를 COM 인터페이스로 호출하여 재부팅 후에도 자동으로 실행되도록 설정할 때 COM이 사용됩니다.
3. OLE (Object Linking and Embedding)
OLE는 COM 기술을 기반으로 구축된 기술로, 하나의 애플리케이션에서 만든 데이터(객체)를 다른 애플리케이션에 **포함(Embedding)**하거나 **연결(Linking)**하는 기술입니다. 주로 Microsoft Office 환경에서 사용되었습니다.
📌 핵심 개념: 문서 내의 외부 객체 🖼️
- Embedding (포함): 워드 문서 안에 엑셀 표를 '포함'시키면, 엑셀 표는 워드 파일의 일부가 됩니다. 더블클릭하면 워드 내에서 엑셀처럼 편집할 수 있습니다.
- Linking (연결): 워드 문서에 엑셀 파일의 데이터 '연결'을 생성하면, 원본 엑셀 파일이 수정되면 워드 문서의 데이터도 자동으로 업데이트됩니다.
🔍 악성코드 분석에서의 연결점
OLE는 문서형 악성코드 분석 시 가장 중요하게 봐야 할 부분입니다.
- 악성 문서: MS Office 파일(.doc, .xls, .ppt) 안에 악성 매크로 코드나 악성 실행 파일을 OLE 객체 형태로 숨겨 넣는 경우가 매우 흔합니다.
- 취약점 악용: OLE 객체 처리 과정에서 발생하는 취약점(Vulnerability)을 악용하여, 사용자가 문서를 열기만 해도 악성코드가 실행되도록 만드는 공격 기법이 있습니다.
- 정적 분석: IDA Pro로 파일을 분석할 때, OLE 객체 내부에 포함된 수상한 파일이나 코드를 분리하여 별도로 분석하는 작업이 필요합니다.
수업에서 이 세 가지를 다루는 것은 단순히 프로그래밍 기술을 넘어서, Windows 운영체제의 내부 동작 원리와 이를 악용하는 악성코드의 구조를 이해하는 데 핵심적인 지식이기 때문입니다.
Lab06-01.exe


Lab07-01.exe








Lab07-02.exe


