악성 코드
악성 코드 malicious code는 의도적으로 다른 사용자 또는 서버 등에 피해를 주기 위해 제작된 악의적 목적을 가진 프로그램(+ 매크로, 스크립트 등)등 으로 컴퓨터에서 작동할 수 있는 실행 가능한 모든 형태의 프로그램을 의미합니다.
악성 코드의 분류
악성 코드의 종류가 다양해지고 구분이 모호해짐에 따라 악성 코드를 체계화하여 분류하게 되었습니다. 다양한 분류 방법이 있으나 이 포스트에서는 동작과 목적에 의한 악성 코드의 분류를 소개합니다.
분류 되었다고 악성 코드가 딱 하나로 정의되는 것이 아니라 여러 특성을 가져 복합적으로 나타나는 경우가 많습니다.
동작에 대한 분류
동작에 대한 분류는 악성 코드의 설치 및 전파 동작 방식에 따라 구분합니다.
바이러스
- 사용자의 컴퓨터 내에서 프로그램이나 실행 가능한 부분을 몰래 변형하여 자신 또는 자신의 변형을 복사
- 복제와 감염이 가장 큰 특성이며, 다른 네트워크의 컴퓨터로 스스로 전파되지 않습니다.
웜
- 인터넷 또는 네트워크를 통해 컴퓨터에서 다른 컴퓨터로 전파되는 악성 프로그램
- 윈도우 또는 응용 프로그램의 취약점을 이용하거나 이메일 또는 공유 폴더를 통해 전파되며, 공유 프로그램(P2P)를 통해 전파되기도 합니다.
- 바이러스와 다르게 스스로 전파됩니다.
트로이 목마
- 바이러스나 웜처럼 컴퓨터에 직접적인 피해를 주지는 않지만, 악의적인 공격자가 침투하여 사용자의 컴퓨터를 조종하는 프로그램
- 고의적으로 만들어졌다는 점에서 프로그래머의 버그와는 다르다.
- 자기 자신을 다른 파일에 복사하지 않고 인터넷 또는 네트워크를 통해 전파되지 않는 다는 점에서 바이러스/웜과 구분됩니다.
PUP (Potentially Unwanted Program)
- 잠재적으로 원하지 않는 불필요한 프로그램이라는 의미로 사용자에게 치명적인 피해를 주지는 않으나 불편함을 준다.
- 프로그램 설치 시 사용자에게 직간접적 동의를 구하지많 용도를 파악하기 어렵게 한다.
- 스파이웨어나 광고가 포함된 악성 코드 제거 프로그램, 웹 사이트 바로가기 생성 프로그램 등이 있다.
목적에 의한 악성 코드 분류
다운로더 downloader
- 네트워크를 통해 어떤 데이터나 프로그램 등을 내려받는 것이 목적으로, 내려받은 프로그램이 추가 공격을 위한 악성 코드이거나 공격자의 명령 집합이다.
- 무언가를 내려받는 것 자체는 흔한 동작이라 백신 모니터링 시 놓치기 쉽다.
드로퍼 dropper
- 자신 내에 존재하는 데이터로부터 새로운 파일을 생성하여 공격을 수행
- 드로퍼가 생성하는 파일은 압축되어 있어 실행하지 않고서는 확인이 어렵다.
런처 launcher
- 다운로드나 드로퍼 등으로 생성된 파일을 실행하기 위한 관련 기능들을 포함하고 있다.
애드웨어 adware
- 광고가 포함된 소프트웨어로, 자체에 광고를 포함하거나 같이 묶어서 배포된다.
- 압축 또는 동영상 재생 프로그램과 같은 프리웨어 설치 시 동의 항목에 포함되어 같이 설치되는 경우가 많다.
- 사용자의 인식 없이 설치된 애드웨어는 인터넷 시작 페이지 변경, 광고와 관련된 알림 창 띄우기, 바탕화면에 광고 페이지 바로가기 지속 생성이 목표이다.
스파이웨어 spyware
- 개인이나 기업의 정보를 몰래 수집해 동의없이 다른 곳으로 송신하는 것이 목적이다.
- 자신의 존재를 숨기고 사용자의 조작 방해, 지켜보기, 사용자 정보 수집을 한다.
- 스파이웨어는 패스워드 스틸러, 키로거 등으로 세분화된다.
랜섬웨어 ransomware
- 인질의 몸값인
ransom과 software의 합성어로 랜섬웨어가 실행되면 파일 암호화가 진행되어 사용자가 실행하거나 읽을 수 없게 한 뒤 돈 등을 요구한다.
- 암호화된 파일은 복구가 거의 불가능하므로 백업과 같은 사전 대비가 중요하다.
백도어 backdoor
- 원래 시스템의 유지보수, 문제 해결을 위해 시스템 관리자가 보안 설정을 우회하고 시스템에 접근할 수 있도록 만든
백도어를 악의적인 목적의 공격자가 시스템에 칩입하는데 이용할 수 있는 경우를 의미한다.
- 비인가된 접근을 허용해 인증 등의 절차를 거치지 않고 프로그램이나 시스템에 접근할 수 있도록한다.
- 공격자가 백도어를 만드는 경우도 있고 프로그래머가 만들었던 백도어를 삭제하지 않거나 방치하여 악용이 발생하는 경우가 있다.
익스플로잇 exploit
- 운영체재나 특정 프로그램의 취약점을 이용해 공격한다.
- 초기에는 공격자가 직접 공격을 수행했으나 최근에는 악성 코드로 제작 및 배포하여 자동으로 공격 확산을 수행하는 형태가 많아지고 있다.
봇 bot
- DDoS 공격 시 지정된 공격을 수행하도록 하는 악성 코드이다.
- 수많은 봇이 모여 대규모 DDoS 공격을 수행하는 봇넷을 구성한다.
스캐어웨어 scareware
- 사용자를 놀라게하거나 겁주어 목적을 달성하는 형태이다.
- 악성 코드에 감염된 상태가 아님에도 감염되었다고 겁 주어 자신의 안티바이러스 프로그램 등을 설치하도록 유도한다.
악성 프로그램 감염 증상
악성 프로그램에 감염되면 시스템, 네트워크, 하드디스크, 파일, 특이점에 대해 다음과 같은 증상들이 나타납니다.
-
시스템
- 시스템 설정 정보 변경: 레지스트리 값을 변경하여 시스템 정보를 변경한다.
- FAT 파괴: 파일 시스템을 파괴한다.
- CMOS 변경: CMOS 내용을 변경하여 부팅 시 오류를 발생시킨다.
- CMOS 정보 파괴: CMOS의 일부를 파괴한다.
- 기본 메모리 감소: 시스템의 기본 메모리를 줄인다.
- 시스템 속도 저하: 시스템의 속도를 저하시킨다.
- 프로그램 자동 실행: 레지스트리 값을 변경하여 부팅 시 특정 프로그램을 자동 실행한다.
- 프로세스 종료: 특정 프로세스를 강제로 종료시킨다.
- 시스템 재부팅: 시스템을 재부팅 시킨다.
-
네트워크
- 메일 발송: 특정 사용자에게 메일을 발송한다.
- 정보 유출: 사용자 정보를 네트워크를 통해 공격자의 컴퓨터로 전송한다.
- 네트워크 속도 저하: 감염된 컴퓨터 속한 네트워크가 느려진다.
- 메시지 전송: 네트워크를 통해 다른 컴퓨터로 메시지를 전달한다.
- 특정 포트 오픈: 특정 백도어 포트를 연다.
-
하드디스크
- 하드디스크 포맷: 하드디스크를 포맷한다.
- 부트 섹터 파괴: 하드디스크의 특정 부분을 파괴한다.
-
파일
- 파일 생성: 특정 파일(주로 백도어)을 생성한다.
- 파일 삭제: 특정 파일/디렉토리를 삭제한다.
- 파일 감염: 특정 파일을 바이러스에 감염시킨다.
- 파일 손상: 특정 파일이 바이러스가 겹쳐 쓰기로 감염되어 손상된다.
- 파일 암호화: 파일이 임의로 암호화되어 접근할 수 없게 된다.
-
특이점
- 이상 화면 출력: 출력 화면에 특정 내용이 나타난다.
- 특정 음 발생: 컴퓨터에서 특정 음이 발생한다.
- 메시지 상자 출력: 출력 화면에 특정 메시지 상자가 나타난다.
- 증상 없음: 별다른 증상이 없다.
대표적인 악성 코드 세 가지 바이러스, 웜, 트로이 목마에 대해서 추가적으로 알아보겠습니다.
바이러스
바이러스는 악성 코드 중 가장 기본적인 형태이며, 사용자의 컴퓨터에서 프로그램이나 실행 가능한 부분을 몰래 수정해 자신 또는 자신의 변형을 복제하는 형태입니다.
1세대 원시형 바이러스
원시형 바이러스는 가장 원시적인 형태로 단순한 자기 복제와 데이터 파괴 기능만을 가지고 있습니다. 원시형 바이러스는 크게 부트 바이러스와 파일 바이러스로 분류됩니다.
부트 바이러스
플로피 디스크나 하드 디스크 등의 부트 섹터에 감염되는 바이러스로 MBR과 함께 PC 메모리에 저장되어 부팅 시 자동으로 동작하고, 부팅 후 사용되는 모든 프로그램을 감염시킵니다.
최근에는 하드 디스크나 SSD를 이용해 부팅을 하고 다른 PC를 부팅할 때 디스크를 이동시키지 않기 때문에 영향력이 크지 않습니다.
대표적인 부트 바이러스에는 브레인, 몽키, 미켈란젤로 바이러스가 있습니다.
파일 바이러스
파일 바이러스는 파일을 직접 감염시키는 것으로 부트 바이러스의 대안으로 등장한 바이러스입니다. .com, .exe와 같은 실행 파일, 오버레이 파일, 디바이스 드라이버 등에 감염되며 전체 바이러스의 80% 이상을 차지합니다.
이후에 나오는 세대 바이러스도 대부분이 파일 바이러스에서 변형된 형태입니다.
대표적인 파일 바이러스에는 예루살렘, 선데이, 스코피온, 크로, FCL, CIH 등이 있습니다.
2세대 암호형 바이러스
암호형 바이러스는 바이러스 코드를 쉽게 파악하여 제거할 수 없도록 암호화한 바이러스를 말합니다. 1세대 바이러스는 특정한 패턴들이 있어서 백신 프로그램에 의해 쉽게 감지되고 치료되었기에 이를 우회하고자 패턴(코드)를 암호화하는 방식을 이용하기 시작했습니다.
바이러스가 동작해 메모리에 올라오는 순간 암호화가 해제되어 감염이 시작됩니다.
대표적인 암호형 바이러스에는 슬로, 캐스케이드, 원더러, 버글러 등이 있습니다.
3세대 은폐형 바이러스
은폐형 바이러스는 바이러스에 감염된 파일이 일정 기간의 잠복기를 가진 후 발현되도록 만들어진 바이러스입니다. 이 방식은 감염이 되더라도 바이러스가 동작하기 전까지 그 존재를 알기가 어렵습니다.
대표적인 은폐형 바이러스에는 브레인, 조시, 512, 4096 등이 있습니다.
4세대 다형성 바이러스
백신 프로그램은 바이러스 파일 내의 특정 식별자로 감염 여부를 판단합니다.
다형성 바이러스는 코드 조합을 다양하게 할 수 있는 조합 프로그램을 암호형 바이러스에 덧붙여 감염시켜, 프로그램이 실행될 때 마다 바이러스 코드를 변형시켜 식별자를 구분하기 어렵게 만듭니다. 제작 및 감지가 어렵습니다.
5세대 매크로 바이러스
기존 바이러스들은 실행할 수 있는 파일을 통해 감염시켰습니다. 매크로 바이러스는 엑셀 또는 워드와 같은 문서 파일의 매크로 기능을 이용해, 해당 문서들을 열 때 감염됩니다.
매크로 바이러스의 증상은 다음과 같습니다.
- 문서가 정상적으로 열리지 않거나 암호 설정이 되어있다.
- 문서 내용에 깨진 글자나 이상한 문구가 포함되어 있다.
- 매크로 메뉴가 실행할 수 없게 잠겨 있다.
- 엑셀이나 워드 작업 중 Visual Basic 편집기의 디버그 모드가 실행된다.
차세대 바이러스
최근에는 매크로 바이러스의 스크립트 형태 바이러스가 활성화 되어 네트워크 및 메일을 통한 전파 방식이 활발하게 이루어지고 있습니다. 또한 바이러스는 데이터 파괴 및 감염 형태에서 벗어나 정보 탈취, 시스템 장악 목적의 백도어 기능을 가진 웜의 형태로 발전하고 있습니다.
웜
웜 Worm은 네트워크를 통해 컴퓨터에서 컴퓨터로 전파되는 프로그램을 의미합니다. 컴퓨터의 취약점을 통해 스스로 전파되거나 메일로 전파됩니다.
웜은 이메일 첨부 파일, 운영체제/프로그램의 보안 취약점, mIRC 채팅 프로그램, P2P 파일 공유 프로그램, 이메일 관련 스크립트, 네트워크 공유 기능 등의 허점을 이용해 확산 및 증식하는 경우가 많습니다.
웜은 전파 형태에 따라 다시 매스메일러, 시스템 공격, 네트워크 공격 웜으로 분류됩니다.
매스메일러 mass mailer
매스메일러 웜은 자기 자신을 포함하는 대량 메일을 발송하여 확산됩니다. 사용자가 매스메일러 웜이 포함된 메일을 읽었을 때 감염됩니다. 이를 치료하지 않으면 계속 기생하며 시스템 내부에서 메일 주소를 수집하고 메일을 계속 보내게 됩니다.
시스템 공격
시스템 공격 웜은 운영체재 고유의 취약점을 이용하여 내부 정보를 파악하거나, 컴퓨터를 사용할 수 없는 상태로 만들거나, 외부의 공격자가 시스템 내부에 접속할 수 있는 백도어를 설치합니다.
네트워크 공격
네트워크 공격 웜은 특정 네트워크나 시스템에 대해 SYN 플러딩, 스머프 공격과 같은 DoS(서비스 거부)공격을 수행합니다. 네트워크 공격 웜은 DDoS 공격을 위한 Bot 형태로 발전하고 있습니다.
트로이 목마
트로이 목마는 겉으로 보기에는 정상적인 것으로 보여지지만 사용자가 실행하면 악성 코드가 실행되는 형태입니다. 바이러스와 웜과는 다르게 다른 파일에 삽입되거나 스스로 전파되지 않습니다.