1. 악성 소프트웨어 (악성 코드)
1-1. 악성 소프트웨어
의도적으로 보안속성을 침해할 목적으로 작성된 프로그램
- 독립형과 기생형
- 독립형: 웜, 좀비 등은 독자적으로 실행 가능함
- 기생형: 바이러스, 논리폭탄, 백도어 등은 호스트 프로그램이 필요함
- 자기 복제 여부
- 바이러스성: 웜, 바이러스 등은 자기 복제를 함
- 비-바이러스성: 트로이목마, 백도어는 자기 복제를 하지 않음
- 악성 프로그램의 비교
바이러스 | 트로이목마 | 웜 | |
자기 복제 | O | X | O (매우 강함) |
형태 | 감염 대상(숙주) 필요 | 유틸리티로 위장 | 독자적으로 존재 |
전파 경로 | 사용자가 감염된 파일을 옮김 | 사용자가 다운로드함 | 네트워크로 스스로 전파 |
증상 | 무결성 침해 시스템 및 파일 손상 |
기밀성 침해 정보 유출, 좀비 PC |
가용성 침해 네트워크 성능 저하 |
1-2. 바이러스
자신을 복제하는 명령 코드가 내장되어 있으며,
다른 프로그램을 감염시키는 프로그램
- 세대별 분류
제1세대 원시형 바이러스 | 고정된 크기를 가진 간단한 구조의 바이러스 |
제2세대 암호화 바이러스 | 프로그램이 암호화된 바이러스 |
제3세대 은폐형 바이러스 | 길이가 증가하지 않은 것처럼 보이고, 백신에게 감염 전 내용을 보여주는 바이러스 |
제4세대 갑옷형 바이러스 | 백신의 분석 및 개발을 지연시키는 바이러스 |
제5세대 매크로 바이러스 | 매크로 기능이 있는 프로그램에서 활동하는 바이러스 |
- 매크로 바이러스
- 플랫폼과 무관하게 사용되고, 문서를 감염시킴
- 실행 파일을 다룰 때보다 부주의한 경향이 있어 피해가 큼
- 방지책
- 예방
- 신뢰성 있는 업체에서 SW를 구매
- 바이러스 스캐너를 정기적으로 업데이트 및 사용
- ActiveX, 윈도우 스크립트 호스트, JavaScript 등을 비활성화
- 보안 정책과 교육 수립
- 안티 바이러스 필터링
- Signature Scanning (Misuse): 특정 바이러스의 유일한 형태의 signature를 찾음, 새로운 바이러스에는 대처가 어려움
- Behavioral Scanning (Anomaly): 바이러스의 행동을 추적, 새로운 바이러스에 대한 대처 가능 (제로데이 공격 방어)
- 예방
1-3. 웜
네트워크 연결을 통해 다른 컴퓨터로 확산되는 악성 프로그램
- 특징
- 트로이목마와 다르게 시스템에 직접 영향을 미치지 않음
- 바이러스와 달리 프로그램에 기생하지 않음
- 웜 확산 모델
- 3단계로 구성 (서서히 시작, 빠른 확산, 종료)
- 웜 실행
- 전파된 시스템에서 자신을 실행시키기 위해 버퍼 오버플로우, SQL 삽입 등의 시스템 취약점 이용
- 접근 권한이 확보되면 의도된 기능을 수행 (봇, 키로거, 좀비 등 다운로드)
- 대응책
- 안티 바이러스 SW로 감지 가능
- 네트워크 기반 방어
- 진입 모니터: 경계 라우터 등에 위치한 진입 필터링 SW
- 진출 모니터: 나가는 트래픽에서 스캐닝 혹은 의심스러운 행동의 출처를 잡아냄
1-4. 트로이목마
다른 프로그램을 가장해 시스템에 침투하는 악성 SW
- 특징
- 원격 조정, 입력 및 패스워드 가로채기, 데이터 파괴 등을 수행
- Back Orifice: 백도어로 이용할 수 있도록 개발
- 대응책
- 신뢰할 수 없는 파일을 설치하지 않아야 함
- 안티-트로이목마 도구 사용 및 최신 상태의 시스템 유지
- 스파이웨어: 민감한 정보를 수집해 원격지의 특정 서버에 보냄
1-5. 기타 악성코드
논리폭탄 | 조건이 충족되면 트리거가 작동됨 |
백도어 (트랩도어) | 허가받지 않은 접근을 허용하는 프로그램 |
모바일 코드 | 다른 플랫폼에서도 실행 가능한 이동성 명령어 |
Exploit | 여러 취약점을 노리는 코드 |
Downloaders | 공격 받은 컴퓨터에 다른 아이템을 설치 |
스패머 프로그램 | 대량의 전자우편물을 보냄 |
Rootkit | 루트 권한을 얻기 위한 도구 모음 |
플러더 | 대량의 자료를 보내 DoS 공격 |
좀비 | 피해자 컴퓨터로 다른 컴퓨터에 대한 공격 전개 |
브라우저 하이재커 | 홈페이지, 툴바, 검색 등을 통제하고 조작 |
조크 | 심리적 위협이나 불안 조장 |
hoax | 허위 바이러스 경고 메일 |
2. 인터넷 활용 보안
2-1. 웹브라우저 보안
- 아래 영역처럼 사이트에 따라 서로 다른 보안 요구사항을 설정 가능
- 인터넷: 아래 세 가지 영역에 포함되지 않은 웹사이트 영역
- 로컬 인트라넷: 사용자와 인트라넷 상에 있는 웹사이트 영역
- 신뢰할 수 있는 사이트: 안전한 콘텐츠를 갖고 있다고 신뢰하는 페이지
- 제한된 사이트: 신뢰할 수 없거나 보안 페이지로 설정할 수 없는 페이지
2-2. 쿠키 (Cookie)
HTTP의 stateless 특성을 보완하는 수단으로,
웹 사이트에 접속할 때 사용자의 신분을 알리는 4KB 이하의 파일
- 쿠키를 이용한 통신
- 웹 사이트에 방문하면 사용자 컴퓨터에 쿠키 생성 (서버가 Set-Cookie 응답 헤더 이용)
- 사용자가 컴퓨터에 있는 쿠키를 웹 서버로 전송 (사용자가 Cookie 요청 헤더 이용)
- 용도
- 개인화, 장바구니, 이용 방식 추적, 타깃 마케팅
- 구조
- name, expires, domain, path, secure
- path, domain: 지정한 path 이하 혹은 도메인 단위로 쿠키 데이터 공유 가능
- 관련 보안 속성 (Set-Cookie 응답 헤더)
- httpOnly: 스크립트를 통해 해당 쿠키에 접근하는 것을 차단 (XSS 공격 대응)
- secure: HTTPS 통신일 때만 쿠키를 전송 (기밀성 보장)
- 특징
- 텍스트 파일이므로 바이러스 전파 불가
- 실행 파일이 아니므로 시스템에 피해를 끼칠 수 없음
- 다른 웹 사이트에서 읽을 수 없음
- 취약점
- XSS (Cross-Site Scripting) 공격: JS는 사용자의 컴퓨터에서 실행되는 점을 악용해 쿠키 값을 유출시킴
- Sniffing 공격: 쿠키 값을 암호화하지 않고 전송한다면 탈취될 수 있음
- 공용 PC의 쿠키값 유출
2-3. 세션 (Session)
개별 클라이언트의 상태 정보를 서버에 저장하는 기술
- 세션 ID
- 클라이언트 세션의 식별자, 세션 쿠키로 주고 받을 수 있음
- 세션 ID를 탈취 당하면 정상 사용자로 위장한 HTTP 세션 하이재킹이 가능해짐
- 안전한 세션 ID 관리
- 안전한 서버에서 예측 불가능한 값으로 생성
- URL Rewrite 기능 사용 금지
- 주기적으로 세션 ID 재할당