정보보안개론 (4)

송예원·2024년 9월 23일
0

보안

목록 보기
7/11

6. 악성코드

1) 악성코드

(1) 악성코드의 역사

(2) 악성코드의 분류

- 동작에 의한 분류: 악성코드가 설치, 전파되는 동작방식에 따라 구분
: 바이러스/ 웜/ 트로이목마/ PUP
- 목적에 의한 분류: 다운로더/ 드로퍼/ 런처/ 애드웨어/ 스파이웨어/ 랜섬웨어/ 백도어/ 익스플로잇/ 봇/ 스캐어웨어 등
- 악성코드에 감염되면 다음과 같은 증상이 나타남:
시스템 정보 변경/ 정보 파괴/ 속도 저하/ 종료 및 실행/ 네트워크 속도 저하/ 정보유출/ 특정 포트 오픈/ 하드디스크 포맷/ 파일 생성/ 파일 삭제/ 파일 암호화/ 이상화면 출력 등

2) 바이러스

: 가장 기본적인 형태의 악성코드로, 사용자의 컴퓨터에서 프로그램이나 실행 가능한 부분을 몰래 수정하여 자신 또는 자신의 변형을 복사함

(1) 1세대 원시형 바이러스

- 자가복제 기능과 데이터 파괴 기능만 가지고 있음
- 부트 바이러스: 플로피디스크나 하드디스크의 부트 섹터를 감염시키는 바이러스
메모리에 저장되어 부팅시 자동으로 동작해 부팅 후 사용되는 모든 프로그램을 감염시킴
- 파일 바이러스: 파일을 직접 감염시키는 바이러스
=> 피해를 줄이기 위해 백신 프로그램 등장

(2) 2세대 암호형 바이러스

- 바이러스 코드를 암호화하여 쉽게 파악하거나 제거할 수 없음
1세대 바이러스와 달리 특정 패턴이 없기 때문에 백신만으로는 파악이 어려워짐
=> 바이러스가 동작하면서 메모리에 올라오면 암호가 풀리기 때문에 이를 이용해 추가 백신을 제작함

(3) 3세대 은폐형 바이러스

- 바이러스에 감염된 파일이 일정 기간의 잠복기를 가짐
=> 실제로 동작하기 전까지 존재를 파악하기 어렵기 때문에 확산이 쉬움

(4) 4세대 다형성 바이러스

- 백신을 피하기 위해 만들어진 바이러스
일반적인 백신 프로그램은 바이러스 파일 안의 특정한 식별자로 바이러스 감염여부를 확인하는데, 특정 식별자를 피하기 위해 다형성 바이러스 이용
- 코드 조합을 다양하게 할 수 있는 조합 프로그램을 덧붙여 감염시키기 때문에 프로그램이 실행될 때마다 코드 자체가 바뀜

(5) 5세대 매크로 바이러스

- 다양한 응용프로그램과 사무용 프로그램이 개발되며 스크립트형태의 실행환경을 이용해 전파되는 바이러스 등장
- 주로 MS 오피스 프로그램의 매크로기능을 통해 감염되는 바이러스
비주얼 베이직 스크립트로 주로 제작됨
엑셀, 워드같은 문서파일의 매크로기능을 이용해 파일을 열 때 감염됨
- 주요 증상:
문서가 정상적으로 열리지 않거나 암호가 걸려있음
문서내용에 깨진 글자나 이상한 문구가 포함되어있음
매크로 메뉴를 실행할 수 없음
엑셀, 워드 작업중 비주얼 베이직 편집기의 디버그모드가 실행됨

(6) 차세대 바이러스

- 인터넷과 네트워크가 빠르게 발전하며 다양한 형태의 바이러스가 등장함
=> 바이러스의 종류를 한 세대로 분류하기 어려워짐
- 최근에는 매크로 바이러스에서 나타난 스크립트 형태의 바이러스가 더욱 활성화되고있음 (네트워크와 메일을 이용해 전파)
데이터를 파괴하고 다른 파일을 감염시킴 + 사용자의 정보를 빼내거나 시스템을 장악하는 웜의 형태로 진화

3) 웜

: 인터넷 또는 네트워크를 통해 컴퓨터에서 컴퓨터로 전파되는 프로그램
다른 컴퓨터의 취약점을 이용해 스스로 전파되거나 메일로 전파되며 자신을 증식하는 것이 목적

(1) 매스메일러형 웜

- 자기 자신을 포함하는 대량 메일을 발송하여 확산
제목이 없는 메일이나 특정 제목의 메일을 전송하고, 사용자가 메일을 읽으면 감염
=> 치료하지 않으면 웜이 기생하며 시스템 내부에서 메일 주소를 수집하고, 계속 전송함
- 주요 증상:
감염된 시스템이 많으면 TCP 25번 포트의 네트워크 트래픽이 증가
변형된 종류에 따라 시스템에 임의의 파일 생성
베이글 웜의 경우 웜 파일을 실행할 때 가짜 오류 메시지를 출력
넷스카이 웜은 윈도우 시스템 디렉터리 밑에 CSRSS.exe 실행파일 생성

(2) 시스템 공격형 웜

- 운영체제 고유의 취약점을 이용하여 내부 정보를 파괴하거나, 컴퓨터를 사용할 수 없는 상태로 만들거나, 외부의 공격자가 시스템 내부에 접속할 수 있도록 악성코드를 설치
- 주요 증상:
전파시 과도한 TCP/135,455 트래픽 발생
시스템 파일에 SVCHOST.EXE 파일을 설치
공격 후 특정 포트를 열어 외부 시스템과 통신
시스템 파일 삭제 또는 정보 유출 가능

(3) 네트워크 공격형 웜

- 특정 네트워크나 시스템에 대해 SYN 플러딩이나 스머프와 같은 DoS 공격 수행
** 플러딩: 악의적으로 한꺼번에 많은 양의 데이터를 보내 상대방의 서비스를 운용할 수 없게 만드는 서비스 거부 공격
**
스머프: 네트워크를 마비시키기 위해 대량의 ICMP요청을 보내는 분산 서비스 거부 공격
- DDoS 공격을 위한 봇 형태로 발전중
- 주요 증상:
네트워크가 마비되거나 급격히 느려짐
네트워크 장비가 비정상적으로 동작
=> 시스템 공격형 웜, 네트워크 공격형 웜은 버퍼 오버플로나 포맷 스트링과 같은 시스템 취약점을 이용해 확산 및 공격하는 경우가 많음

4) 트로이목마

: 악성 루틴이 숨어있는 프로그램
겉보기에는 정상적인 프로그램같지만 사용자가 실행하면 악성 코드가 실행됨
어떤 악성코드도 포함 가능하며, 시스템을 파괴하거나 스파이웨어 또는 랜섬웨어로 동작도 가능함
** 랜섬웨어: 사용자의 컴퓨터를 장악하거나 데이터를 암호화한 다음 정상적인 작동을 위한 암호키를 대가로 금품을 요구하는 유형의 악성코드

+) 백도어: 운영체제나 프로그램을 생성할 때 정상적인 인증과정을 거치지 않아도 접근 가능하게 만든 통로. 일반적으로는 악성코드를 지칭하는 말로, 트로이목마와 혼용됨

5) PUP

: 사용자에게 직간접적으로 동의를 구하긴 하지만 용도를 파악하기 어려운 상태에서 설치되는 프로그램
ex) 컴퓨터를 오래 사용하다 제어판의 [프로그램 제거 또는 변경]에서 발견하게 되는 프로그램

- 악성코드에 의해, 포르노 사이트에서, 크랙 사이트에서 설치되는 경우 존재
(최근에는 특정 프로그램을 설치하며 같이 설치되는 경우가 많음)

- 사용자에게 치명적인 악영향을 주진 않지만 광고를 지속적으로 보여주거나,
웹 브라우저의 시작페이지를 특정 페이지로 강제 변환하거나,
사용하고 싶지 않은 백신을 강제로 사용하게 할 수 있음

6) 악성코드 탐지 및 대응책

(1) 네트워크 상태 점검하기

- 상당수의 악성 코드는 외부에 있는 해커나 악성 코드 작성자와 통신하기 위해 서비스 포트를 생성함
=> 특이한 포트 번호가 있다면 확인 (프로그램 이용)

(2) 정상적인 프로세스와 비교하기

- 윈도우와 유닉스 시스템의 기본 정상적인 프로세스를 외워두면 비정상적인 프로세스를 식별하는 데 도움이 됨
=> 현재 동작중인 정상적인 프로세스를 확인할 것

- 악성코드가 주로 사용하는 서비스명: csrss/ svchost

(3) 악성코드의 실제 파일 확인하기

- 네트워크 상태와 프로세스 분석을 통해 파악한 악성코드의 실제 파일 확인
: 윈도우 탐색기는 윈도우 운영체제와 많은 라이브러리를 공유하고 있어 탐색기 자체가 악성코드의 공격 대상이 되기도 하기 때문에 독립적으로 동작하는 파일 탐색기를 사용하는 것이 좋음 (total commander...)

(4) 시작프로그램과 레지스트리 확인하기

- 악성코드의 경우 레지스터를 이용하는 경우가 많으므로 악성코드를 삭제할 때 시작 프로그램과 레지스트리의 내용을 확인하는 것이 중요드의 경우 레지스터를 이용하는 경우가 많으므로 악성코드를 삭제할 때 시작 프로그램과 레지스트리의 내용을 확인하는 것이 중요
** 레지스터: CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 저장장치

(5) 악성코드 제거하기

- 악성코드 프로세스 중지
-> 악성코드 파일 삭제
-> 레지스트리 삭제

7. 암호의 이해

1) 암호의 개념과 원리

(1) 암호화와 복호화
- 암호문: 비밀을 유지하기 위해 당사자만 알 수 있도록 꾸민 약속 기호 <-> 평문
암호는 암호문이 노출되더라도 정보를 숨길 수 있어야 함
- 암호화: 평문을 암호문으로 바꾸는 것
복호화: 암호문을 평문으로 바꾸는 것
- 암호화 알고리즘: 암호화, 복호화를 수행할 때 양쪽이 알고 있어야 할 수단
암호화 키: 암호화, 복호화를 수행할 때 양쪽이 약속한 규칙
- 전치법: 메시지에 들어있는 문자의 위치를 바꾸는 방법
미리 정해놓은 문자 배열 규칙에 따라 암호화와 복호화를 수행
ex) apple -> palpe
문제: 암호화하려는 문자 자체를 숨길 수 없어 적절한 배열을 찾으면 복호화할 수 있음
- 대체법: 메시지의 글자를 다른 글자로 대체하여 암호화하는 방법 다른 글자로 대체하여 암호화하는 방법
(2) 단일 치환 암호화
- 단일 치환: 알파벳 한 글자를 다른 한 글자로 대체하는 방식

- 시저 암호화: 알파벳을 3~4글자씩 오른쪽으로 이동한 뒤 해당되는 글자로 변환하여 암호화하는 것
암호화가 가능한 경우의 수가 26으로 매우 적기 때문에 보안에 취약

- 모노 알파베틱 암호화: 알파벳을 각각 다른 알파벳에 대응시켜 시저 암호화보다 좀 더 복잡하게 알파벳을 암호화하는 것
암호화가 가능한 경우의 수는 26!으로 비교적 보안성이 높음
(3) 다중 치환 암호화
- 다중 치환: 암호화 키와 매핑하여 알파벳 하나가 여러가지 다른 알파벳으로 대체되는 방식

- 비즈네르 암호화: 26x26의 알파벳 대칭표를 이용하여 암호화하고자 하는 평문과 암호화 키를 매핑하고 암호화와 복호화를 수행

- 플레이페어 암호화: 2개로 이루어진 문자 쌍을 다른 문자 쌍으로 대체하는 암호화 방법
주어진 평문을 2개씩 묶은 문자 쌍으로 만들고 플레이페어 암호화 테이블을 이용
- 하나의 알파벳을 다른 알파벳 여러개로 바꿀 수 있다는 점에서는 다중 치환 방식이지만 2개의 알파벳을 묶어서 본다는 점에서는 단일 치환 방식이라고도 할 수 있음

2) 대칭 암호화 방식

- 보안성이 높은 암호화를 위해서는 혼돈과 확산 성질을 이용
혼돈: 암호문의 통계적 성질과 평문의 통계적 성질의 관계를 난해하게 만드는 것
확산: 평문 비트와 키 비트가 암호문의 모든 비트에 영향을 주는 성질
+) 단일 대칭 암호화 방식은 혼돈과 확산 정도가 낮음
(1) DES 알고리즘
- 64비트의 블록 암호화 알고리즘을 사용해 56비트 크기의 암호화 키로 암호화
생성 가능한 암호화키는 최대 2^56 (약 7200조)
하나의 블록인 64비트를 32비트 두개로 나눈 뒤 둘 중 하나를 암호화 키로 생성한 S-box를 통해 함수를 만들어 치환하고, 다른 하나의 32비트와 논리합한 뒤 나머지의 위치를 바꾸는 두가지 기본 변환을 통해 암호화함머지의 위치를 바꾸는 두가지 기본 변환을 통해 암호화함

https://m.blog.naver.com/username1103/222111226039

(2) 트리플 DES 알고리즘
- DES 암호화 키를 2개 이용하여 두번의 암호화와 한번의 복호화 or 두번의 복호화와 한번의 암호화 실행
=> 기본 DES 암호화에 비해 강도가 두배 높음
(3) AES 알고리즘
- 128비트 암호화 블록, 128/ 192/ 256비트 길이의 키를 가진 알고리즘
(4) SEED 알고리즘
- 전자상거래, 금융, 무선 통신 등에서 전송되는 개인정보같은 중요한 정보를 보호하려는 목적으로 개발
128 비트와 256 비트를 지원하며 국내에서 개발되었지만 현재는 ISO/ IEC에서도 인증받아 사용하고있음
(5) ARIA 알고리즘
- 전자 정부 구현 등에 따라 다양한 환경에 맞는 암호화 알고리즘이 필요해 개발됨
128/ 192/ 256 비트 암호화 키 지원
(6) 양자 암호
- 파장이나 진폭 등으로 통신하는 일반적인 통신과 달리 광자 하나하나의 단위로 신호를 실어 나름 (광자 단위로 편광, 위상차를 이용해 신호를 전송하며 송신측에서도 편광 패드나 간섭계를 사용하여 측정)

- 양자역학의 복제 불가능성 원리, 측정 후 붕괴라는 특이 현상을 이용
-> 단일 광자는 한번만 정확하게 측정이 가능한데, 이러한 특성 덕에 보안성이 높음
(7) 기타 대칭형 알고리즘
- IDEA 알고리즘/ RC5 알고리즘/ Skopjack 알고리즘/ LEA 알고리즘

3) 비대칭 암호화 방식

: 암호화 키를 전달해야한다는 대칭 암호화방식의 약점을 보완하기 위해 개발됨
(대칭 암호화 방식으로 평문을 암호화하면 복호화하는 사람도 암호화 키를 가지고 있어야 하는데, 이는 암호문을 만든 사람이 복호화할 사람에게 암호화 키를 보내야 한다는 것이고 따라서 보안성이 떨어짐)

https://raonctf.com/essential/study/web/asymmetric_key

(1) 비대칭 암호화 방식의 발견
(2) RSA 알고리즘
- 기본적인 정수론인 소수를 이용, 중요 정보를 소수 2개로 표현한 후 소수의 곱을 힌트와 함께 전송하여 암호로 사용하는 것
(3) 비대칭 암호화의 구조
- 각 개인이 공개키와 개인키를 소유하는 구조
메시지의 암호화 키와 복호화 키는 다름,
한 쌍의 개인 키와 공개 키로 암호화와 복호화가 이루어지기 때문에 개인 키로 암호화 된 메시지는 공개 키로만 복호화됨 (개인 키로 복호화 되었다면 공개 키로만 복호화 됨)
(4) 비대칭 암호화의 기능
- 기밀성: 중간에서 메시지를 빼앗겨도, 공격자가 읽을 수 없음: 매우 높음
수신자의 공개 키로 암호화하여 송신

- 부인 방지: 데이터의 전달 과정에서의 오염 발생 여부를 쉽게 찾을 수 있어짐
발신자의 개인 키로 암호화하여 송신

4) 해시

: 하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것 (암호화와 다름)
암호가 정보를 숨기기 위한 장치라면, 해시는 정보의 위조/ 변조를 확인하기 위한 장치 (무결성 확인)
(1) 해시의 특징
- 평문의 길이에 상관없이 해시 결과에 나타나는 길이는 모두 같음
평문이 아주 조금만 달라도 결과를 추측하기 불가능할 정도로 다른 값이 나타남
- 충돌: 데이터의 값이 다르지만 해시 결과 값은 같은 현상
(데이터는 사실상 무한에 가깝기 때문에 발생)
충돌이 자주 일어난다면 해시가 무의미해질 수 있음
(2) 해시의 역할
- 해시는 사실 데이터베이스를 효과적으로 탐색하기 위해 만들어진 것
(3) 해시의 종류
- MD5 알고리즘: 공개 키 기반 구조를 만들기 위해 개발되었으며 32비트 컴퓨터에 최적화
- SHA: 160비트의 값을 생성하는 해시 함수로, 512비트의 블록으로 입력

0개의 댓글

관련 채용 정보