반응형
| 구분 | 컴퓨터 바이러스 | 트로이목마 | 웜 |
| 자기 복제 | 없음 | 없음 | 매우 강함 |
| 형태 | 파일이나 부트섹트 등 감염 대상 필요 |
유틸리티 안에 코드 형태로 삽입 | 독자적으로 존재 |
| 전파 경로 | 사용자가 감염된 파일을 옮김 | 사용자가 내려 받음 | 네트워크를 통해 스스로 전파 |
| 주요 증상 | 시스템 및 파일 손상 | PC 성능 저하, 좀비 PC | 네트워크 성능 저하 |
1. 바이러스(Virus)
- 다른 프로그램을 변형시켜 감염(Infect) 시키는 프로그램 단편이며, 자신을 변형시켜 실행 가능한 형태
- 파일 사이즈 증가, 갱신 타임스탬프 변경, 저장장치 잔여공간이 단시간 내에 변경, 디스크 접근횟수 증가 등 현상 발생
- 변형이란 원래 프로그램에 루틴을 주입하여 바이러스 프로그램의 복제를 만들어냄
- 일시적 바이러스, 상주 바이러스와 구분됨
- 1세대 원시형 바이러스(Primitive Virus)
- 프로그램 구조가 단순하고 분석이 쉬운 바이러스
- 변형이나 변화 없이 고정된 크기를 가지며, 기억장소에 상주하며 루트 영역이나 파일을 감염
- 2세대 암호화 바이러스(Encryption Virus)
- 프로그램의 일부 또는 대부분을 암호화시켜 저장함
- 실행 시작점 부분에 위치하는 암호해독 데이터는 항상 일정함
- 3세대 은폐형 바이러스(Stealth Virus)
- 기억장소에 존재하면서 감염된 파일의 길이가 증가하지 않은 것처럼 보이게 함
- 백신 프로그램에게 감염되기 전의 내용을 보여줘 바이러스를 은폐함
- 4세대 갑옷형 바이러스(Armour Virus)
- 여러 단계의 암호화와 다양한 기법을 동원하여 바이러스 분석을 어렵게 함
- 5세대 메크로 바이러스(Macro Virus)
- MS 워드나 엑셀 등에 붙어서 그 파일이 열릴 때 실행됨
- 플랫폼과 무관하게 사용되며, 문서를 감염시키고 코드의 실행부분은 감염되지 않음
- 전자메일 등을 통해 쉽게 퍼짐
- PDF 문서는 자바스크립트 같은 다양한 형태에 스크립트를 포함시킬 수 있어 취약할 수도 있음
2. 바이러스 방지책
- 안티 바이러스 방법
- 탐지(Detection) : 감염되면 바이러스가 있는지 판단하고 위치를 파악
- 식별(Identification) : 탐지되면 프로그램을 감염시킨 특정 바이러스를 식별
- 제거(Removal) : 바이러스를 모든 감염된 시스템에서 제거하여 2차 피해 방지
- 안티 바이러스 필터링 방법(Antivirus Filtering Method)
- 시그니쳐 탐지(Signature Scanning) : 바이러스만 가진 특별 시그니쳐 식별, 이진 스트링, 명령어의 나열로 나타냄
- 행위 기반 탐지(Behavioral Virus Scanning) : 바이러스가 수행 중에 어떤 행동을 보이는지 추적하는 방
3. 웜(Worm)
- 자신의 복제본을 네트워크를 통해 전송, 하나의 컴퓨터에 도착하면 바로 복제를 하고 확산
- 다른 시스템에 직접적인 영향을 끼치지 않는다는 점에서 트로이목마와 구분
- 다른 프로그램에 기생하지 않는다는 점에서 바이러스와 구분
- 공격자가 시스템의 접근 권한을 확보하기 위해 버퍼 오버프로우, 포맷 스트링 등 시스템의 취약점을 이용
- 시스템의 권한이 확보되면, 좀비 및 봇 프로그램을 다운로드 등을 하여 웜을 설치함
4. 웜 방지책
- 네트워크 기반 웜 방어
- 웜 모니터링 소프트웨어를 이용해 방어
- 진입 모니터(Ingress Monitors) : 엔터프라이즈 네트워크와 인터넷 사이의 경계에 위치하며 진입 필터링 착수
- 진출 모니터(Ingress Monitors) : 나가는 트래픽에서 스캐닝의 흔적이나 기타 의심스런 행동을 모니터링
5. 트로이목마(Trojan Horse)
- 자신의 실체를 드러내지 않으며 다른 프로그램의 한 유형인 것처럼 활동하는 프로그램
- 원격 조정, 패스워드 가로채기, 키보드 입력 가로채기, 시스템 및 데이터 파일 파괴 등을 시도
- 패치 파일, 상용 SW 등으로 가장하여 설치를 유도해 침투하는 악성 소프트웨어
- 프로그램이 실행되는 순간, 시스템은 공격자에게 시스템을 통제할 수 있는 권한이 부여됨
- 스파이웨어(Spyware)
- 민감한 정보를 수집하여 원격지의 특정한 서버에 보내는 프로그램
- 어떤 사람이나 조직에 관한 정보를 수집하는 데 도움을 주는 기술을 뜻함
6. 트로이목마 방지책
- 신뢰할 수 없는 파일을 설치하지 않음
- 안티 트로이목마 도구 사용 및 최신 상태의 시스템 유지
7. 쿠키 및 세션 보안 취약점
- XSS(Cross-Site-Scripting)
- 사용자의 컴퓨터에서 실행되는 자바스크립트를 직접 실행하여 공격
- "document.cookie" 라는 명령어로 쿠키값을 얻어 공격함
- 스니핑(Sniffing) 을 이용한 공격
- 쿠기 값을 암호화하지 않고 전송한다면 네트워크 스니픙을 통해 쿠키 값 탈취 가능
- HTTP 세션 하이재킹(Session ID Hijacking)
- 매번 동일한 세션을 사용하거나 세션 타임아웃을 너무 길게 설정한 경우 등 사용
- 공격자가 다른 사용자의 세션을 재사용하여 해당 사용자의 권한을 탈취하는 취약점
8. 버퍼 오버플로우(Buffer Overflow, Buffer Overrun)
- 프로세스 메모리 구조 및 스택 프레임

- 버퍼 또는 데이터 저장 역에 할당된 용량보다 많은 입력을 주어 다른 정보를 변경하는 공격
- 공격자는 해당 공격으로 시스템을 중지시키거나 스택 버퍼에 실행 코드를 주입하여 시스템에 제어를 가짐
9. 스택 버퍼 오버플로우(Stack Buffer Overflow)
- 주로 SetUID가 설정된 루트 권한의 프로그램을 공격 대상으로 함
- 스택 반환주소 버퍼를 오버플로우 시켜 반환 주소를 임의의 공격 코드로 덮어씌움 으로써 루트 권한을 얻음
- 경곗값 체크와 파리미터 체크를 통해 방지하고, 최소 권한으로 프로그램 실행
10. 힙 오버플로우(Heap Overflow)
- 힙에 요청되는 메모리는 레코드의 연결리스트와 같은 동적 데이터 구조를 위해 사용됨
- 만약 이런 레코드가 오버플로우에 취약한 버퍼를 가지고 있다면 연속된 메모리가 손상될 수 있음
- 할당된 공간이 함수에 대한 포인터를 갖고 있다면 공격자는 이 주소를 변경하여 겹쳐 쓴 버퍼에 셸코드를 가르킬 수 있음
11. 버퍼 오버 플로우 공격 대응책
- 컴파일 시간 방어
- 프로그램을 컴파일할 때 검사하여 버퍼 오버플로우를 방지하거나 발견
- 가장 기본적인 방법은 Java, ADA, Python과 같이 현대화 된 프로그래밍 언어를 사용하는 것
- C나 C++과 같이 메모리 접근에 높은 자유도를 가진 프로그래밍 언어는 할당왼 버퍼의 크기를 초과하지 않도록 해야함
- 스택 보호 매커니즘(Stack Guard)
- 함수의 진입(entry)과 종료(exit) 코드를 조사하고 함수의 스택 프레임에 손상이 있는지를 검사
- gcc 컴파일러의 확장 버전으로 추가적인 함수 진입과 종료 코드를 삽입
- 호출 ret 앞에 canary(밀고자) 값을 주입하고, 종료 ret 앞에 cannary 값 변조 여부를 확인
- 스택 쉴드(Stack Shield)
- 함수 시작 시 복귀 주소를 Global RET 라는 특수 스택에 저장해 두었다가 함수 종료 시 비교
- 실행 시간 방어
- 대부분의 컴파일 시간 기법은 기존의 프로그램을 다시 컴파일 해야함
- 실행 시점 대응책은 실행가능 주소 보호 기법과 주소 공간 임의화 기법(ASLR), NOP sled을 포함
- 실행가능 주소 보호 기법은 실행 코드가 메모리상의 특정 위치에서만 실행되게함
- 주소 공간 임의화 기법은 스택 버퍼가 위치하는 주소 공간을 메모리 내에서 임의적으로 배치하여 예측할 수 없게함
- NOP sled
- NOP(No Operation)는 아무 기능도 수행하지 않는 명령어를 의미하며, 빈 공간을 채우는 용도로 사용, 0x90
- 스택 버퍼의 맨 끝 부분에 셸 코드를 위치시켜 버퍼의 앞부분에 의도적으로 NOP를 채움
- NOP로 인해 정확한 주소를 알기 어렵게 함
12. 포맷 스트링 공격(Format String Attack)
- printf와 같은 포맷 스트링을 사용하는 함수를 사용하는 경우, 입출력 함수의 포맷 문자열로 그대로 사용할 때 발생하는 취약점
- 공격자는 포맷 문자열을 이용하여 취약한 프로세스를 공격하거나 메모리 내용을 읽거나 쓸 수 있음 →프로세스 권한 취득
- 예를 들어 %s 로 출력해야 할 변수를 %x와 같은 다른 포맷 스트링을 지정하여 RET 영역으로 이동 후 악성코드 실행
- 대응책
- %n이나 %hn과 같은 포맷 스트링을 변경할 수 있는 구조로 프로그램을 쓰지 않음
13. 레이스 컨디션 공격(Race Condition Attack)
- 레이스 컨디션 : 둘 이상의 프로세스나 스레드가 공용자원에 동시에 접근할 때 접근하는 순서에 따라 비정상적인 결과가 발생
- 실행되는 프로세스에서 만들어지는 임시 파일을 중간에 끼어들어 악의적인 프로그램으로 심볼릭 링크하는 행위
- 파일의 소유자가 root이고 SetUID 비트를 가져야 하는 과정이 있어야 한다는 조건이 있음
- lsof 명령어로 특정 파일에 접근하는 프로세스 목록들을 확인할 수 있음
- 대응책
- 임시 파일에 접근하기 전에 심볼릭 링크 설정 여부 및 권한 검사
- umask를 최하 022 정도로 유지하며 임시로 생성한 파일이 공격자에 의해 악의적으로 삭제되지 않도록 함
14. 백도어(Back Door)
- 시스템의 보안이 제거된 비밀통로로, 접근 편의를 위해 만들어 놓은 통로
- 백 오피리스라는 악의적인 목적으로 만들어진 통로도 있으며, 트로이목마 바이러스로 분류
- 대응책
- 현재 동작 중인 프로세스 확인, 웜/바이러스나 백도어가 가장 애용하는 것은 Csrss와 Svchost 프로세스
- H-IDS(호스트 기반 IDS)을 사용하여 의심스러온 포트의 활동을 탐지
15. 기타 공격
- 익스플로잇(Exploit) : CSRF 공격, XSS 공격, BOF 공격과 같이 취약점을 이용하는 공격
- Hoax : 남을 속이거나 장난을 목적으로 퍼트리는 가짜 바이러스
- 논리 폭탄(Logic Bomb) : 특정한 사건이 발생하면 프로그램이나 일련의 코드를 실행하는 것
- 루트킷(Rootkit) : 시스템 침입 후 루트 수준의 접근 허락을 얻기 위해 사용하는 해커 도구 모음
- 지능형 지속 위협(APT) : 특정 대상을 겨냥해 다양한 공격 기법을 이용해 장기간 지속적으로 공격하는 것
- 스피어 피싱(Spear Phishing) : 목표지향적인 피싱 공격으로, APT 공격의 초기 단계
- 드라이브-바이-다운로드 : 사용자도 모르게 악성SW를 설치하는 기법, 웹브라우저(Plugin)의 취약점을 이용
- 워터링 홀(Water Hole) : 공격 대상이 주로 방문하는 웹사이트의 제로데이 취약점을 이용하여 대상을 공격
반응형
'IT Dictionary > 정보보안산업기사' 카테고리의 다른 글
| 윈도우 및 리눅스 로그 관리 (0) | 2025.12.23 |
|---|---|
| 유닉스 서버 보안(Unix Server Security) (0) | 2025.12.16 |
| 윈도우 서버 보안(Windows Server Security) (0) | 2025.12.14 |
| 보안 운영체제(Secure OS) (0) | 2025.12.04 |
| 접근통제 보안위협 및 대응책 (0) | 2025.12.02 |