1. 개요
4차 산업혁명이 일어나고 나서 개인, 공공, 정부, 군사를 대상으로 한 사이버 공격이 수 차례 계속 증가하고 있다.
공격은 가치 있는 정보를 갖고 있는 개인이나 기관을 대상으로 잡고 있다. 사이버 공격 대다수는 공격 목표를 감염시키고자 악성 소프트웨어 (악성코드)를 사용하여 공격을 시도하고 있다. 악성 코드 분석을 하는데 필요한 지식, 기술, 도구는 악성 소프트웨어를 공격을 탐지하거나 분석, 방어하는데 필수적인 요소이다.
2. 악성코드란 무엇인가?
악성코드 (악성 소프트웨어)는 악의저인 행위를 하는 코드이다. 실행파일, 스크립트, 코드 또는 다른 유형의 소프트웨어 형태가 되고 발전하고 있다. 공격자는 악성코드를 사용해 민감 정보를 홈치거나 감염된 시스템을 감시하거나 시스템 제어 권한을 가져가는 공격의 형태를 취하고 있다.
악성코드의 종류에 대한 특징을 알아보자.
- 바이러스 또는 웜 : 자가 복제하고 다른 컴퓨터로 확산하는 기능을 가진 악성코드이다. 바이러스는 사용자와 상호작용이 필요하지만 웜은 사용자와의 상호작용 없이 확산하는 기능을 가지고 있다.
파일을 손상시키거나 삭제하고 네트워크 성능을 저하시키는 행위를 한다. - 트로이 목마 : 일반 프로그램으로 위장하고 있다가 사용자가 자신의 컴퓨터에 설치하도록 유도하는 악성코드이다. 즉 트로이 목마는 유용한 소프트웨어처럼 보이지만 실제로는 악성코드를 포함하고 있는 프로그램이다.
사용자의 데이터를 홈치거나, 원격제어를 허용하는 행위 백도어를 설치하여 또 다른 악성코드를 침투하게 만드는 행위를 한다. - 랜섬웨어 : 랜섬웨어는 파일이나 데이터를 암호화하며 사용자의 접근을 차단하고 차단을 해제하기 위해 금전적인 대가를 요구하는 악성코드이다.
주로 이메일을 통한 첨부파일, 다운로드링크, 악성 광고 등을 통해 전파가 된다. - 애드웨어 : 사용자에게 원치 않은 광고를 노출하는 악성코드이며 일반적으로 무료다운로드를 통해 배포되며 사용자 시스템에 설치하도록 강요한다.
- 스파이웨어: 스파이웨어는 사용자의 동의 없이 설치되며 사용자의 활동을 모니터링하고 정보를 수집하는 악성코드이다. 정보 스틸러에 포함된다.
주로 웹사이트 방문기록, 키보드 입력, 로그인 정보등을 수집하여 공격자에게 전송한다. 개인정보 유출 및 금용사기 등 다양한 피해를 발생시키는 악성코드이다. - 루트킷 : 루트킷은 시스템의 Root 접근 권한을 얻어 자신을 숨기고 시스템의 정상적인 운영을 방해하거나 통제하는 악성코드이다,
운영체제의 핵심부분에 침투하여 감염되었는지 구분하기 힘들게 하고 백도어를 설치하여 외부 공격자가 시스템을 제어할 수 있도록 한다.
3. 악성코드 분석이란 무엇인가
악성코드 분석은 악성코드의 행위를 연구하는 것. 주요 목적으로는 악성코드의 동작을 이해한 후 탐지하고 분석하여 삭제하는 방법을 파악하는 것이다.
악성코드의 분석의 종류
- 정적 분석 (Static Analysis)
정적분석은 악성코드를 실행하지 않고 바이너리를 분석하는 방법이다. 가장 쉽게 수행할 수 있는 방법으로 그 코드를 직접 검사하거나 악성 코드의 동작과 기능을 파악하는 분석기법이다. - 동적 분석 (Dynamic Analysis)
동적분석은 격리된 환경에서 악성코드를 실제로 실행하여 그 동작을 관찰하고 실행 중 발생하는 행위를 분석하는 기법이다. - 코드 분석 (Code Analysis)
코드 분석은 악성코드의 소스 코드 또는 디스어셈블된 바이너리 코드를 세부적으로 검토하여 악성 행위를 이해하고 분석하는 기법이다. 이 기술은 정적 분석이나 동적 분석으로 파악이 불가능한 정보를 얻거나 알아낼 수 있다.
코드 레벨에서 악성 코드가 사용하는 알고리즘, 제어흐름, 데이터흐름 등을 자세하게 분석하는 방법이다. - 메모리 분석 (Memory Analysis)
메모리 분석은 악성코드가 실행되는 동안 메모리에 로드되는 데이터 실행 중인 프로세스, 네트워크 연결 정보 등을 조사하고 메모리 상에서만 존재하는 악성코드의 흔적을 찾는다. 일반적으로 포렌식 기술이지만 악성코드 분석에 활용하여 행위를 이해하는데 도움을 준다.
악성코드는 무엇인지 악성코드 분석 방법에 대하여 간단하게 정리하고 요약하는 시간을 가졌다 다음 글에서는 정적 및 동적 분석에 대한 실습환경 구축 및 분석하는 법에 대해서 글을 작성 할 예정이다.