4. 4
Fred Cohen, “Computer Viruses – Theory and Experience”, 1984
– We define a computer ‘virus’ as a program can ‘infect’ other
programs by modifying them to include a possibly evolved copy
of itself. With the infection property, a virus can spread
throughout a computer system or network using the
authorizations of every user using it to infect their programs.
Every program that gets infected may also act as a virus and
thus the infection grows.
Lawrence E. Bassham & W. Timothy Polk, “Treat Assessment of
Malicious Code and Human Threats”, 1992.
– The following are necessary characteristics of a virus
• Replication
• Requires a host program as a carrier
• Activated by external action
• Replication limited to (virtual) system
1.악성코드 정의 (1/2)
5. 5
악성코드 정의
악성코드는 '악의적인 목적을 위해 작성된 실행 가능한 코드‘ 이
다.
실행 가능한 코드는 프로그램, 매크로, 스크립트 뿐만 아니라 취약
점을 이용한 데이터 형태들도 포함한다.
형태에 따라서 바이러스, 웜, 트로이 목마로 분류되고 있다.
The Malware (for "malicious software") is any program
or file that is harmful to a computer user.
Thus, malware includes computer Viruses, Worms,
Trojan Horses, and also SpyWare, programming that
gathers information about a computer user without
permission.
1.악성코드 정의 (2/2)
6. 6
2.악성코드 분류 (1/5)
바이러스 (Virus)
바이러스는 일반적으로 감염대상이 되는 프로그램 또는 코드에 바이러스
자신의 코드 및 변형 코드를 감염시키며 컴퓨터 시스템 내부에서 확산된다.
7. 7
웜 (Worm)
웜은 컴퓨터 내부의 기억장소에 코드 형태 또는 컴퓨터 내부 실행파일 형태로
존재한다. 실행 시 파일이나 코드 자체를 네트워크와 전자우편 등을 통해
다른 시스템으로 자기 복제를 시도하는 형태이다.
2.악성코드 분류 (2/5)
8. 8
트로이목마 (Trojan Horse)
트로이 목마는 자기 자신을 복제하지 않지만 악의적 기능을 포함하는
프로그램이나 악의적 목적에 적극적으로 활용되는 프로그램이나 데이터를
통칭한다.
2.악성코드 분류 (3/5)
9. 9
기타
스파이웨어 (Spyware)
유해가능 프로그램 중 사용자가 정확한 용도를 모르고 설치하여 사용자를 불편하게 하거나 사생활을
침해 할 수 있는 유형
애드웨어 (Adware)
유해가능 프로그램 중 사용자의 동의를 구하지 않고 광고를 목적으로 실행되는 유형
훅스 (Hoax)
실제로 존재하지 않지만 사용자들로 하여금 믿게 하기 위하여 정상파일을 악성코드로 속이는 유형
조크 (Joke)
장난을 목적으로 제작된 프로그램이지만 사용자에게 심리적 불안감을 조장하는 유형
2.악성코드 분류 (4/5)
10. 10
* 바이러스/트로이목마/웜 특성 비교
특성
종류
자기 복제 감염 대상 형 태 복구방법
바이러스 기생/겹침 치료
트로이목마 독립 삭제
웜 독립 삭제
※ 악성코드 분류의 기준이 점점 모호해짐
O O
X X
O X
2.악성코드 분류 (5/5)
11. 11
도스 바이러스
Brain (1988, 최초, 부트, 파키스탄, 컴퓨터 속도 저하 )
예루살렘 (파일, 13일의 금요일에 파일 삭제)
미켈란젤로 (부트, 매년 3월 6일 파일 파괴)
Win16 (Windows 3.1) 바이러스
WinVir 1.4 (1992, 최초, 비상주형, 문자열 존재 ”Virus_for_Windows v1.4” )
Win16/Tentacle, Win16/Tentacle.II (1996, 비상주형)
Win9x 계열 바이러스
Win95/Boza (1996, 최초, 비상주형)
Win95/CIH (1998, VXD 이용한 상주형, IFSMGR 함수, 롬바이오스 삭제)
Win95/Scorpion (1998, 국내제작)
Win32 계열 바이러스
Window 95 이상의 9x/NT 환경에서 동작함
Win32/FunLove, Win32/Nimda, Win32/Klez
3.악성코드 사례 (1/6)
12. 12
부트 바이러스
부트섹터 감염
Brain, Monkey, Anti-CMOS 등
파일 바이러스
COM, EXE 실행파일 감염
예루살렘, Sunday, Scorpion, Crow, Win95/CIH 등
부트 / 파일 바이러스
부트섹터, 파일 모두 감염
Invader(1990), 안락사(Euthanasia), Ebola(1998) 등
매크로 바이러스
엑셀과 워드 파일 감염
XM/Laroux
3.악성코드 사례 (2/6)
13. 13
이 름 포 트 감염 방법 취약점 비 고
CodeRed
(2001)
TCP 80 1. 인덱스 서비스 취약점 공격 CVE-2001-0500
CVE-2001-0506
매달 1-19일에는 스캔, 20일후 에는 특정사이트에 DoS
Attack
Nimda
(2001)
TCP 25
TCP 80
TCP 139
TCP 445
1. 전자 메일을 이용한 전파
2. 네트워크 공유 폴더를 이용한 전파
3. 윈도우 IIS 취약점 공격
CVE-2001-0154 1. eml 혹은 nws 파일을 생성
Slammer
(2003)
UDP 1434 1. MS-SQL의 취약점 공격
2. 메모리 상주
CAN-2002-0649 376 bytes의 한 개 Packet으로 짜여진 웜,
Header를 포함하면 404 bytes.
Blaster
(2003)
TCP 135
TCP 4444
UDP 69
1. RPC DCOM 취약점 공격
2.웜 본체 전송
3.웜 실행
CAN-2003-0352 1.IP generation
(40% 는 C클래스 로컬 IP, 60%는 랜덤)
2. Generate된 IP부터 순서적인 20개의 IP에 스캔
Sasser
(2004)
TCP 445
TCP 5554
TCP 9996
1.LSASS 취약점을 공격
2. TCP 9996 포트 오픈
CAN-2003-0533 공격 패킷으로 인한 시스템 종료 현상 발생
Korgo
(2004)
TCP 445
TCP 2041
TCP 6667
1. LSASS 취약점을 공격
2. 웜 본체 전송
3. 웜 실행
CAN-2003-0533 정상 프로세스인 Exploer.exe 에 RemoteThread 로 인젝션
되어 실행 및 외부 네트워크 공격
3.악성코드 사례 (3/6)
14. 14
35만 대 이상의 서버가 감염
약 26억 달러의 복구비용.
CodeRed (2001)
8백 3십만 대 이상의 서버가 감염
약 5억 9천만 달러의 재정 손실 발생
7000군데 이상 감염피해
Nimda (2001)
인터넷 대란 발생(2005.01.23)
한국의 주요 ISP서비스가 9시간여 동안 중단됨.
Slammer (2003)
3.악성코드 사례 (4/6)
19. 19
분석도구 사용법
기본 툴 (HexEditor, ProcessExplorer, PEID, Dependency Walker 등)
모니터링 툴 (FileMon, RegMon, TcpViewer, Analyzer, Ethereal 등)
디버깅 / 디스어셈블 툴 (OllyDbg, IDA, WinDbg, SoftIce, Wdasm 등)
운영체제 / 통신 기본지식
Process / Thread, 가상메모리, MemoryMapping, DLL, 서비스 프로세스, Kernel Object, Structured
Exception Handlling, Synchronization Object 등
TCP / UDP 프로토콜, 통신 프로그램 구조, 소켓 통신 함수 socket, bind, listen, connect accept 등
1.사전 지식 (1/7)
20. 20
Program Language
Assembly Language, Visual C++, Visual Basic, Delphi, Jscript, VBScript, ASP, Perl 등
StartUp Code
프로그램 언어 / 컴파일러 종류별 Startup Code (Assembly Language 제외)
사용자가 작성한 메인 코드부분이 실행되기
이전에 초기화 부분 담당
[메인 덧셈 프로그램]
[StartUp Code]
1.사전 지식 (2/7)
21. 21
실행파일 구조
COM, EXE, NE 등 윈도우 시스템에서 실행 가능한 PE 파일들의 구조
1.사전 지식 (3/7)
22. 22
실행압축
분석지연 및 방해, 안티 바이러스 프로그램의 진단 우회, 다양한 변형제작 목적
[실행압축 종류]
1.사전 지식 (4/7)
23. 23
실행압축
다양한 AntiDebugging 기법 적용
[실행압축 이전 OEP]
[실행압축 이후 OEP]
1.사전 지식 (5/7)
25. 25
동적 분석 정적 분석
파일유형
판단
문자열 추출
및 분석
파일 등록
정보 활용
샘플 접수
정보 활용
전 이미지
정보 수집
샘플 실행
후 이미지
정보 수집
증상 정보
분석
증상 정보
추가 분석
각종 정보
수집
로그 정보
수집 / 분석
디스어셈블 분
석
상세 디버깅
엔진 반영
여부 결정
진단시그니쳐
및 함수 작성
분석정보
작성
외형 분석 증상 분석 자료 분석 상세 분석 엔진 반영
분 석 과 정
1.사전 지식 (7/7)
56. 56
AhnLab 웹 사이트 (www.ahnlab.com)
NCSC 웹 사이트 (www.ncsc.go.kr)
KISA 웹 사이트 (www.kisa.or.kr)
KrCert 웹 사이트 (www.krcert.or.kr)
악성 모바일 코드 (윈도우 바이러스 작동원리와 퇴치) – 로저 그라이암스
The Art of Computer Virus Research and Defense - Peter Szor
윈도우 인터널즈 Fourth Edition - Mark E. Russinovich & David A. Solomon
Programming Applications for Microsoft Windows Fourth Edition - Jeffrey Ritcher
Programming the Microsoft Windows Driver Model - Walter Oney
소프트웨어 보안 – Greg Hoglund & Gary McGrew
Hacker Dissembling Uncovered - Kris Kaspersky
Hacker Debugging Uncovered - Kris Kaspersky
Reversing (Secrets of Reverse Engineering) – Eldad Eilam
4. Reference
Reference Web-Sites
Reference Anti-Virus Books
Reference Analysis Books