학부 시절 가장 재미있게 했던 공부 중에 포렌식을 빼면 무조건 악성코드 분석이라고 말할 수 있다. 아마 4학년 때 악성코드 제작 및 분석 실무 수업에서 진행해서 흥미가 생겼던 거 같다. 악성코드 분석을 진행하면서 읽은 책이 있는데 수업 때 사용했던 책과 교수님이 추천해 주신 책들을 잠시 소개하려고 한다.
실전 악성코드와 멀웨어 분석, 리버싱 핵심 원리, 파이썬 오픈소스 도구를 활용한 악성코드 분석 이렇게 3권의 책이 있다. 우선 리버싱 핵심 원리 책은 무조건 읽어봐야 한다. 그리고 실전 악성코드와 멀웨어 분석은 책이 오래되긴 했지만 실제로 예제가 있고 해설도 잘 되어 있어 기초부터 실제로 해보기까지 좋은 책이다.
우선 책을 보고 진행하기 전에 멀웨어가 뭔지 알아야 한다. 멀웨어는 악성 소프트웨어의 합성어이다. 바이러스, 웜, 트로이목마, 랜섬웨어, 스파이웨어 등 각종 유해 소프트웨어를 총칭하는 용어이다. 이러한 디지털 버그는 종종 우리가 알지 못하는 사이에 우리 장치에 침투해 손상 혹은 방해하도록 설계가 되어 있다.
그렇다면 우리는 왜 악성코드를 분석해야 하냐는 질문에는 간단하다 적을 이해하기 위해서이다 악성코드를 분석하고 그 목적, 자동 상태 및 잠재적으로 배후에 있는 사람을 밝힐 수 있다. 또한 분석하고 공부하면서 얻은 경험을 통해 효과적인 대응책을 개발하고 시스템을 보호하며 다음에 있을 공격을 대비하고 범인을 추적하는 데 도움을 줄 수 있다.
정적분석 동적분석
악성코드 분석은 정적 및 동적인 두 가지 유형으로 크게 분류할 수 있다.
정적분석: 정적분석은 악성코드에 대한 부검을 수행하는 것과 같다. 악성코드를 실행하지 않고 검사하는 작업이 포함된다. 기술에는 파일 구조 검사, 코드 분석 및 관심 있는 문자열 추출이 포함된다. 정보를 수집하는 안전하고 빠른 방법이지만 악성코드의 전체 기능을 드러내지 않을 수 있다.
정적 분석은 동적 분석과 달리 소프트웨어(맬웨어 등)를 실행하지 않고 평가하는 프로세스이다. 이러한 유형의 분석은 비런타임 환경에서 수행되며 주로 소프트웨어의 코드, 바이너리 및 기타 리소스에 중점을 둔다. 그중에서도 주요한 측면이 있다. 자세한 설명은 어렵지만 디스어셈블리, 디컴파일, 리버스 엔지니어링, 코드 검토, 시그니처 일치, 휴리스틱 분석, 문자열 분석 등이 있다. 그러나 정적 분석에는 고유한 문제가 있다. 최신 뭘웨어는 종종 코드 난독과 혹은 암호화 같은 복잡한 안티 분석 기술이 포함된다. 또한 정적 분석은 크거나 복잡한 소프트웨어 부분에서 시간이 많이 소요 될 수 있다. 특히 어셈블리 언어 분석 및 리버스 엔지니어링에 대한 높은 이해도와 전문 지식이 필요하다.
동적 분석: 동적 분석은 통제된 환경(예: 샌드박스)에서 악성코드를 실행하고 그 동작을 관찰하는 것이 포함된다. 기술에는 모니터링 시스템 상호 작용, 네트워크 트래픽 및 파일 또는 레지스트리 변경이 포함된다. 더 위험하고 시간이 오래 걸리는 접근 방식이지만 악성코드 동작에 대한 포괄적인 보기를 제공할 수 있다.
동적 분석은 코드 검토 및 리버스 엔지니어링과 같은 기술을 통해 실행하지 않고 소프트웨어(이 컨텍스트에서는 맬웨어)를 분석하는 정적 분석과 대조된다. 정적 분석은 유용한 통찰력을 제공하고 잠재적인 위협을 발견할 수 있지만, 특히 분석 방지 기술을 포함할 수 있는 복잡한 고급 맬웨어의 경우 전체 그림을 나타내지 못할 수 있다. 다음은 동적 분석의 몇 가지 주요 구성 요소 및 단계이다. 안전환 환경 설정, 모니터링 도구, 악성코드 실행, 데이터 수집 및 분석, 보고 동적 분석 또한 고유한 문제와 한계가 있다. 고급 악성코드는 분석 환경에서 실행되고 있음을 감지하고(샌드박스 감지) 분석을 방해하도록 동작을 변경할 수 있다. 이러한 문제에도 불구하고 동적 분석은 사이버 보안 도구 상자에서 중요한 기술로 남아 있다.
악성코드 분석가가 사용하는 몇 가지 도구가 있다. 실제로 실전 악성코드와 악성코드 분석 서적에는 이러한 도구들이 소개되고 많이 사용한다. 우선 IDA Pro 및 OllyDbg와 같은 디스 어셈블러 및 디버거는 악성코드 코드를 검사하는 데 사용된다. Cuckoo Sandbox와 같은 샌드박싱 도구는 악성코드를 안전하게 실행하고 관찰하는 데 사용된다. Wire shark와 같은 네트워크 분석 도구는 네트워크 트래픽을 분석하는 데 사용된다. 물론 프로그래밍 및 운영 체제에 대한 확실한 이해는 우선적으로 해야 하고 필수이다.
악성코드 분석은 까다롭지만 보람 있는 분야이다. 매일 새로운 악성코드 변종이 등장한다. 앞으로 인력이 정말 많이 필요할 분야이다. 매일 새로운 악성코드랑 싸우다 보면 지칠 수도 있지만 인내심과 호기심 그리고 꾸준함으로 분석하면 분명 좋은 결과가 있을 거 같다. 따라서 고수 분석가든 호기심 많은 초보자이든 상관없이 다 분석해서 조금 더 안전한 환경을 구축할 수 있길 생각해 봅니다.