■ 악성 코드
● 악성 코드의 분류



■ 바이러스
● 1세대 원시형 바이러스
-
바이러스
-사용자 컴퓨터(네트워크로 공유된 컴퓨터 포함)에서 프로그램이나 실행
-가능한 부분을 몰래 수정하여 자신 또는 자신의 변형을 복사하는 것
-단순하게 자기 복제 기능과 데이터 파괴 기능만을 가짐
-
부트 바이러스
-플로피디스크나 하드디스크의 부트 섹터에 감염되는 바이러스
-MBR과 함께 PC 메모리에 저장되어 부팅 시 자동으로 동작하여 부팅 후에 사용되는 모든 프로그램을 감염
-MBR: "Master Boot Record"의 약자로, 하드 디스크의 첫 번째 섹터에 위치한 부트 섹터, MBR은 컴퓨터 부팅 프로세스를 시작하기 위한 필수적인 정보를 저장
● 부트 바이러스-부팅 순서
-
1단계: POST
-운영체제를 설치할 때 하드웨어 자체가 시스템에 문제가 없는지 기본 사항을 스스로 확인하는 POST 과정을 항상 거침
-BIOS에 의해 실행
-과거에는 문제가 발견되면 경고음 등으로 알려줬으나 최근에는 메인보드의 LED 표시를 보고 파악함
-
2단계: CMOS
-PC를 부팅할 때 esc 또는 f2를 누르면 CMOS에 들어갈 수 있음
-기본 장치에 대한 설정과 부팅 순서를 정할 수 있으며, 이러한 기본 설정 사항을 BIOS가 읽어 시스템에 적용
-
3단계: 운영체제 위치 정보 로드
-윈도우 2008 이후 버전: 윈도우 부트 매니저가 실행되는 단계
-부트 바이러스는 이 3단계에서 동작
-과거에 부트 바이러스에 감염된 플로피디스크로 운영체제를 구동하면, 바이러스가 MBR과 함께 PC 메모리에 저장되어 부팅 후에 사용되는 모든 프로그램을 감염(브레인, 몽키, 미켈란젤로 등)
● 부트 바이러스 종류
-
브레인 바이러스
-1986년에 발견된 최초의 부트 바이러스 중 하나로, MS-DOS 운영체제를 감염 시킴
-부트 섹터를 감염시키고, 감염된 시스템에 "© Brain"이라는 문자열을 삽입하는 등의 행동 수행
-
몽키 바이러스
-부트 섹터를 감염시켜 전체 디스크를 감염시키고, 화면을 검은색으로 바꾸고 오류 메시지를 출력하며 시스템을 충돌시키는 등의 악성 행위를 수행
-바이러스 코드를 부트 섹터 끝 부분에 숨기는 기법을 사용했기 때문에, 당시의 보안 솔루션에서는 쉽게 발견되지 않았음
-
미켈란젤로 바이러스
-활성화되는 날짜에 시스템을 감염시키는 부트 바이러스 중 하나
-플로피 디스크의 부트 섹터를 감염시키고, 감염된 시스템을 시작할 때 MBR를 덮어씌워 시스템이 부팅되지 않도록 만듦
● 파일 바이러스
-파일을 직접 감염시켜 바이러스 코드를 실행시키는 것
-하드디스크 부팅이 일반화되면서 부트 바이러스의 대안으로 등장
-COM, EXE와 같은 실행 파일과 오버레이 파일, 디바이스 드라이버 등에 감염
-전체 바이러스의 80% 이상을 차지

-바이러스가 프로그램 뒷부분에 위치한다면 백신의 바이러스 스캔으로부터 자신의 존재를 숨기기 위함
-파일 바이러스 종류에는 예루살렘 바이러스, 선데이, 스코피온, 크로, FCL, CIH 바이러스 등이 있음
-
예루살렘 바이러스
-**실행 파일이나 시스템의 부팅 섹터를 감염시키고, 감염된 시스템에서는 실행 파일의 크기를 확장하거나 파일을 삭제하는 등의 악성 행위를 수집
-
선데이
-플로피 디스크의 부트 섹터를 감염시키고, 감염된 시스템을 시작할 때 MBR를 덮어씌워 시스템이 부팅되지 않도록 만듦
-인터넷을 통해 전파될 때 사용자가 이메일을 열거나 악성 웹사이트를 방문할 필요 없이, 인터넷 연결된 시스템들을 스캔하고 자동으로 전파될 수 있음
-
스코피온
-파일을 암호화하거나 삭제하는 등의 악성 작업 수행
-감염된 시스템에서 실행 파일들을 감염시키는 방식으로 작동하며, 이후에 시스템을 재부팅하면 바이러스 코드가 실행되어 파일을 암호화 하거나 삭제하는 등의 악성 작업을 수행
-
크로
-암호화 기술을 이용하여 파일을 암호화하고 사용자로부터 금전적 부상을 요구하는 랜섬웨어의 한 종류
-감염된 시스템에 있는 파일을 암호화한 후, 사용자에게 복호화 키를 제공하는 대신 금전적 보상을 요구함, 이러한 방식으로 사용자가 파일을 다시 사용할 수 있도록 해 주는 것이 목적
-
FCL
-감염된 시스템에서 실행 파일들을 감염시키며, 실행되는 파일의 크기를 약간 늘리고 바이러스 코드를 실행하는 방식으로 작동
-감염된 시스템에서 실행 파일들을 감염시켜 다른 시스템으로 전파되는 것이 목적
-
CIH 바이러스
-감염된 시스템의 BIOS와 하드웨어를 파괴하는 것이 목적
-감염된 실행 파일은 정상적으로 실행되지 않거나 시스템이 강제로 종료되는 등의 오작동을 일으켰으며, 바이러스가 삽입된 실행 파일이 다른 시스템으로 전파되면 해당 시스템도 마찬가지로 감염됨
● 2세대 암호형 바이러스
- 바이러스 코드를 쉽게 파악하여 제거할 수 없도록 암호화한 바이러스
- 바이러스 동작 시 메모리에 올라오는 과정에서 암호화가 풀리므로 백신은 이를 이용하여 메모리에 실행되어 올라온 바이러스와 감염 파일을 분석하고 치료

● 3세대 암호형 바이러스
- 바이러스에 감염된 파일이 일정 기간 잠복기를 가지도록 만든 것
- 바이러스가 확산되기도 전에 활동하기 시작하면 다른 시스템으로 전파되기 힘들기 때문
● 4세대 암호형 바이러스
- 백신 프로그램은 바이러스 파일 안의 특정한 식별자로 바이러스 감염 여부 판단
- 이 기능을 우회하기 위해 사용하는 것이 다형성 바이러스
- 코드 조합을 다양하게 할 수 있는 조합 프로그램을 암호형 바이러스에 덧붙여 감염시키므로 프로그램이 실행될 때마다 바이러스 코드 자체를 변경하여 식별자를 구분하기 어렵게 함

● 5세대 매크로 바이러스
- MS 오피스 프로그램의 매크로 기능으로 감염되는 바이러스
- 비주얼 베이직 스크립트(VBS)로 많이 제작됨
- 증상
-문서가 정상적으로 열리지 않거나 암호가 설정되어 있음
-문서 내용에 깨진 글자나 이상한 문구가 포함되어 있음
-매크로 메뉴가 실행할 수 없게 잠겨 있음
-엑셀이나 워드 작업 중 VB 편집기의 디버그 모드가 실행됨
● 차세대 바이러스
- 스크립트 형태의 바이러스가 더욱 활성화되어 대부분 네트워크와 메일을 이용하여 전파
- 단순히 데이터를 파괴하고 다른 파일을 감염시키는 것에서 나아가 사용자 정보를 빼내거나 시스템 장악을 위한 백도어 기능을 가진 웜의 형태로 진화
- 백도어
-시스템의 보안 설정을 우회하여 시스템에 접근하거나 외부에서 시스템에 접근할 수 있는 문을 열어 놓는 기능
-보통은 악성 코드나 해커들이 시스템에 침입하여 백도어를 설치
- 백도어 기능을 가진 웜
-네트워크 상의 다른 시스템에 악성 코드를 전파하는 동시에 시스템에 취약점을 악용하여 백도어를 설치하고, 이를 통해 원격에서 해당 시스템에 접근하거나 제어할 수 있는 악성 코드
■ 웜
● 웜의 개념
- IT 분야에서는 인터넷 또는 네트워크를 통해 컴퓨터에서 컴퓨터로 전파되는 프로그램을 의미
- 스스로 증식하는 것이 목적이므로 파일 자체에 이런 기능이 있거나 운영체제에 자신을 감염시킴
- 웜은 이메일의 첨부 파일 형태로 확산되거나, 운영체제 또는 프로그램의 보안 취약점을 이용하여 스스로 침투하는 형태
● 매스메일러형 웜
- 자기 자신을 포함하는 대량 메일을 발송하여 확산
- 제목 없는 메일이나 특정 제목의 메일을 전송하고 사용자가 이를 읽었을 때 감염
- 주요 특징과 증상
-메일로 전파되며 감염된 시스템이 많으면, SMTP 서버(TCP 25번 포트)의 네트워크 트래픽이 증가
-출처나 내용이 확인되지 않은 메일을 열었을 때 확산되는 경우가 많음
-베이글 웜은 웜 파일을 실행할 때 “Can’t find a viewer associated with the file”과 같은 가짜 오류 메시지를출력
-넷스카이 웜은 윈도우 시스템 디렉터리 밑에 CSRSS.exe 실행 파일을 만듦
-두마루 웜은 취약한 서버나 PC를 탐색해 접속한 후 악성코드를 설치하고, 원격 제어를 통해 악성 행위를 수행
-소박 웜은 사용자가 이메일 첨부 파일을 열어서 실행하는 경우에 감염. 감염된 컴퓨터에서 주소록을 수집하고, 해당주소록에 있는 이메일 주소로 스팸 이메일을 대량 발송함. 또한, 이 웜은 감염된 컴퓨터에서 다른 컴퓨터로 자가 복제하는 기능을 가지고 있음
-변형된 종류에 따라 시스템에 임의의 파일을 생성
● 시스템 공격형 웜
- 운영체제 고유의 취약점을 이용하여 내부 정보를 파괴하거나, 컴퓨터를 사용할 수 없는 상태로 만들거나, 외부의 공격자가 시스템 내부에 접속할 수 있도록 악성 코드를 설치하는 형태
- 간단한 패스워드 크래킹 알고리즘을 포함하고 있어 패스워드가 취약한 시스템을 공격하는 웜도 있음
- 주요 특징과 증상
-전파할 때 과다한 TCP/135,445 트래픽이 발생
-windows, windows/system32, winnt, winnt/system32 폴더에 SVCHOST.EXE 파일을 설치
-공격 성공 후 UDP/5599 등의 특정 포트를 열어 외부 시스템과 통신
-시스템 파일 삭제 또는 정보 유출(게임 CD의 시리얼 키 등)이 가능
-종류에는 아고봇, 블래스터 웜, 웰치아 등이 있음

● 네트워크 공격형 웜
- 특정 네트워크나 시스템에 대해 SYN 플러딩이나 스머프와 같은 서비스 거부(DoS) 공격을 수행하는 것
- 네트워크 공격형 웜은 분산 서비스 거부 공격을 위한 봇 형태로 발전
- 주요 증상
-네트워크가 마비되거나 급격히 느려짐
-네트워크 장비가 비정상적으로 동작
-대표적인 네트워크 공격형 웜은 클레즈
-이 유형의 웜은 적은 수의 시스템이 감염되어도 파급 효과가 크므로 안정적인 네트워크 설계와 시스템
취약점에 대한 지속적인 패치 관리가 중요함

■ 트로이 목마
- 악성 루틴이 숨어 있는 프로그램
- 겉보기에는 정상적인 것 같지만 사용자가 실행하면 악성 코드가 실행됨
- 사회공학 기법 형태로 퍼짐
- 어떤 악성 코드도 포함될 수 있어서 시스템 파괴, 스파이웨어나 랜섬웨어로의 동작 등 어떤 형태든 가능하지만 주로 백도어로 사용됨
- 다른 파일에 삽입되거나 스스로 전파되지 않음
■ PUP(potentially unwanted program)
- 사용자에게 직간접적 동의를 구하지만 용도를 파악하기 어려운 상태에서 설치되는 프로그램
- 설치되는 경우
-포르노 사이트나 크랙 사이트 등에 접속할 때 설치되는 경우
-악성 코드에 의해 설치되는 경우
-특정 프로그램을 설치할 때 함께 설치되는 경우
-설치를 진행하는 과정에서 특정 프로그램이 부가적으로 설치되는 경우

■ 악성 코드 탐지 및 대응책
● 악성 코드 탐지 예시

● 네트워크 상태 점검하기

- netstat 명령으로 열려 있는 포트 확인 가능
- netstat 명령만으로 확인하기 어려운 경우 CPorts 같은 프로그램으로 서비스 포트별로 사용하는 응용 프로그램을 확인할 수 있음
- BackDoor-DVR 실행한 뒤 CPorts에서 활성화된 네트워크 항목을 살펴보면 특이한 연결을 발견할 수 있음

● 정상적인 프로세스와 비교하기

- 윈도우 에서는 ctrl + alt로 작업 관리자 실행하여 현재 실행 중인 프로세스 확인 가능
- ctrl + shift + esc

- 윈도우 시스템이 동작하기 위한 기본 프로세스
- 이 중 악성 코드가 주로 사용하는 서비스명은 csrss와 svchost

- 좀 더 자세한 프로세스 정보를 알고 싶다면 Process Explorer를 사용

- 2368번 프로세스를 Process Explorer를 통해 확인 했을 때 ‘C:\User\diyang\AppData\ Roaming\Bifrost\logg.dat를 제외하고는 의심할 만한 값이 없음
- 정상적인 인터넷 익스플로러를 실행하여 상세 창에서 해당 프로세스를 살펴보면, 비정상적인 인터넷 익스플로러 프로세스와 상당히 다름
● 악성 코드의 실제 파일 확인하기

- 악성 코드의 실제 파일을 확인하는데 total commander와 같은 툴을 사용
- 환경설정 - 옵션 - 화면에서 숨김/시스템 파일 표시 옵션 활성화

- 파일을 찾을 땐 Process Explorer에서 확인한 파일명을 검색하는 방법을 사용할 수 있음
- BackDoor-DVR의 경우 Bifrost 폴더를 먼저 탐색
- 파일 확인 과정에서 반드시 확인할 폴더는 C:\Windows\system32 -> 이 폴더에는 주요 DLL과 운영체제의 기본 실행 파일이 있는데 대부분의 악성 코드는 이 폴더를 공략
● 시작 프로그램과 레지스트리 확인하기

- 악성코드의 내용이 레지스터에 기록될 수 있으므로 악성 코드를 삭제할 때는 레지스터에서도 관련 내용을 확인
- 시작 프로그램 목록은 msconfig 명령을 통해 확인할 수 있음
● 악성 코드 제거하기
1.악성 코드 프로세스 중지하기
- 2368 프로세스를 kill process tree로 중지
2.악성 코드 파일 삭제하기
- Bifrost 폴더에서 확인한 파일 삭제
- C:\Windows\system32 폴더에서 확인한 파일을 삭제
- C:\Program Files\MisoFile 폴더에서 확인한 파일을 삭제
3.레지스트리 삭제하기
- 시작 프로그램에서 확인한 사항을 삭제
- regedit로 레지스트리 경로를 확인한 뒤 레지스트리에서 해당 항목을 삭제
