참고: http://kali-km/tistory.com/entry/악성코드-분류    -악성코드 분류



악성코드란?

악성 행위를 위해 개발된 디바이스 상에서 동작하는 모든 실행 가능한 형태

보통 악성코드라 하면 EXE와 같은 실행파일을 생각할 수 있으나, JS와 같은 스크립트 등의 형태도 존재


악성코드의 목적

사회 기반 시설에서부터 산업 기밀 자료를 탈취하기 위한 특수적 목적

기업 대상 개인 정보 수집변조 및 신분 절도 등을 위한 목적

사회적 이슈인 랜섬웨어와 같은 금전 요구 목적

광고 노출 및 홍보를 위한 목적 등


악성코드 분류

1) 동작에 의한 분류

많은 악성코드가 존재하지만, 동작하는지에 따라 크게 네 가지로 분류 가능


1. Virus

- 프로그램을 통해 감염되는 악성코드

- 바이러스 실행 시 새로운 매개체(파일)를 찾고, 바이러스는 대상의 PE* 구조를 변경하거나 코드를 삽입하는 등의 방식으로 자신이 가지고 있는 악의적인 행위를 다른 파일 또한 하도록 조작

- 일반적 파일들만 감염시키는 것이 아닌 플로피 디스크와 하드디스크 파티션의 VBR, MBR 등을 감염

2. Worm

- 컴퓨터의 취약점을 찾아 네트워크를 통해 스스로 감염되는 악성코드

- 바이러스와 달리 스스로 전달 가능하며, 컴퓨터의 파일만을 손상시키는 바이러스와 달리 네트워크를 손상시키고 대역폭 잠식

3. PUP(Potentially Unwanted Program)

- 대개 악성코드는 사용자가 동의하지 않고 설치되지만, PUP의 경우 사용자의 동의가 포함됨

- 로그인할 때마다 광고하고자 하는 웹 사이트의 바로가기를 바탕화면에 생성하거나, 웹 브라우저의 기본 페이지 변경, 광고 노출 등

4. Trojan

- 트로이 목마도 마찬가지로 공격자가 의도하는 바를 위하여 대상을 속인 다음 실행되었을 경우 숨겨져 있던 기능을 수행

- 바이러스와 같이 다른 파일을 변조하지 않고, 웜과 같이 네트워크를 통한 전파나 자가 복제가 이루어지지 않으며, 마지막으로 PUP와 같이 사용자의 동의가 이루어지지 않았을 때 'Trojan'으로 분류 (네 가지중 가장 많이 사용)


PE*: Portable Executable은 윈도우 운영체제에서 사용되는 실행파일, DLL 등을 위한 파일 형식. PE 포맷은 윈도우 로더가 실행 가능한 코드를 관리하는데 필요한 정보를 캡슐화한 데이터 구조


2) 목적에 의한 분류

1. Downloader

- 다운로드 기능이 있는 프로그램 자체가 악의적인 것이 아님. 악성코드 제작자들은 안티바이러스 제품이 다운로드 기능을 막는 것이 아닌 것을 알기 때문에 이를 이용하는 것으로, 차단되지 않고 존재하고 있는 프로그램을 사용자가 실행하였을 경우 외부로부터 추가적인 악성코드를 받기 때문에 이후의 동작을 위한 목적이라 볼 수 있음

2.  Dropper

- 다운로더가 외부에서 파일을 다운받는 것에 반해 드롭퍼의 경우 자기 자신 안에 존재하고 있는 데이터들을 통해 새로운 파일 생성

3.  Launcher

- 1.2 번이 새로운 파일을 생성하였다 하더라도, 추가적인 악성 행위를 하기 위해선 새로운 파일 또한 실행 되어야함. 그렇기에 이들을 실행하기 위한 기능을 수행

4.5.6.7. Adware, Spyware, Ransomware, Scareware

- Adware는 광고를 이용, Spyware는 패스워드 스틸러나 키로거와 같이 세분화 될 수 있음. Ransomware는 요새 가장 핫한 파일 암호화를 통한 몸값 지불 방식(비트코인 사용), Scareware는 겁주기 위한 목적

8. Backdoor

- '뒷문'의 뜻으로 공급 단계에서나, 시스템 침투 이후 '몰래' 시스템에 들어오기 위한 파일을 심어둠

9. Rootkit

- 루트킷은 컴퓨터에 접근하거나 일반적으로 허용되지 않는 영역에 접근할 수 있도록 설계. 일반적으로 악성코드가 시스템에 설치된 후, 들키지 않고 계속 남아 악의적인 기능을 수행


그 외 봇넷, 익스플로잇 등이 있음....


악성코드의 분석

1.초기 분석

- 수집된 악성코드를 처음으로 분석하는 방법. 따로 실행하지 않고, 그 외형을 보고 분석을 하는 단계


- Virustotal을 이용한 정적 속성 분석


- 패킹 여부 확인


- 언패킹을 통한 문자열 확인


좌측은 UPX로 패킹이 되어 문자열이 전부 보이지 않지만, 오른쪽의 경우 언패킹을 하여 확인 결과, 더 많은 API 문자열을 확인할 수 있다.


위와 같이 악성코드 파일을 실행하지 않고, 파일의 외형이나 간단히 들여다 볼 수 있는 정보들을 이용하여 악성코드의 동작 방식을 유추할 수 있는 단계를 초기 분석이라고 한다.





2.동적 분석

악성코드를 분석환경에서 실행시킨 직후부터 순간순간 시스템의 변화를 분석하는 단계

(네트워크/프로세스/파일시스템/레지스트리 조작 행위들에 대한 분석)



1) 네트워크 행위 확인

  (외부 시스템과의 통신 여부 확인)


Wireshark를 통한 네트워크 행위 확인


TCPView를 통한 행위 확인




2) 프로세스 행위

  (추가로 생성하는 프로세스 존재 여부)

  (프로세스 자가 종료 여부)


Process Explorer를 통한 비정상 프로세스 확인

   -주요 프로세스 확인

   -사용자 관련 프로세스 확인

    (explorer.exe 프로세스 하위에 동작하는 프로세스 확인)

   -의심 프로세스 정보 확인

    (Description, Company Name, Version, TCP/IP, Strings )



Process Monitor를 통한 boot logging 확인

   - 프로세스 상관관계 분석

   - 인젝터 존재유무 확인

   - 은닉 프로세스 확인

   - 의심 프로세스 행위 분석

    (e.g. 지속적인 DNS Cache DATA 초기화, 특정 폴더 복사 등)


3) 파일시스템 행위 (위 내용들을 통해 해결 가능)

- 추가 파일 dropping 여부 확인

- 파일 삭제 및 조작 여부 확인



4) 레지스트리* 조작 행위
   (
레지스트리*: 시스템, 애플리케이션과 사용자와 관련된 환경설정 정보 및 각종 프로파일링 정보를 담고있는 일종의 데이터베이스)

- 레지스트리의 자동실행 관련 포인트 조작 여부 (~~\Services\, ~~\Runs, ~~\SSODL )


Autoruns를 통한 자동실행 지점 확인







3.정적 분석

정적 분석은 악성코드 파일을 디스어셈블하여 세부적인 동작을 분석하는 단계


ollydbg를 통한 메모리 분석


ida를 통한 정적 분석



+ Recent posts