(2) 악성코드의 분류
- 동작에 의한 분류: 악성코드가 설치, 전파되는 동작방식에 따라 구분
: 바이러스/ 웜/ 트로이목마/ PUP
- 목적에 의한 분류: 다운로더/ 드로퍼/ 런처/ 애드웨어/ 스파이웨어/ 랜섬웨어/ 백도어/ 익스플로잇/ 봇/ 스캐어웨어 등
- 악성코드에 감염되면 다음과 같은 증상이 나타남:
시스템 정보 변경/ 정보 파괴/ 속도 저하/ 종료 및 실행/ 네트워크 속도 저하/ 정보유출/ 특정 포트 오픈/ 하드디스크 포맷/ 파일 생성/ 파일 삭제/ 파일 암호화/ 이상화면 출력 등
(1) 1세대 원시형 바이러스
- 자가복제 기능과 데이터 파괴 기능만 가지고 있음
- 부트 바이러스: 플로피디스크나 하드디스크의 부트 섹터를 감염시키는 바이러스
메모리에 저장되어 부팅시 자동으로 동작해 부팅 후 사용되는 모든 프로그램을 감염시킴- 파일 바이러스: 파일을 직접 감염시키는 바이러스
=> 피해를 줄이기 위해 백신 프로그램 등장
(2) 2세대 암호형 바이러스
- 바이러스 코드를 암호화하여 쉽게 파악하거나 제거할 수 없음
1세대 바이러스와 달리 특정 패턴이 없기 때문에 백신만으로는 파악이 어려워짐=> 바이러스가 동작하면서 메모리에 올라오면 암호가 풀리기 때문에 이를 이용해 추가 백신을 제작함
(3) 3세대 은폐형 바이러스
- 바이러스에 감염된 파일이 일정 기간의 잠복기를 가짐
=> 실제로 동작하기 전까지 존재를 파악하기 어렵기 때문에 확산이 쉬움
(4) 4세대 다형성 바이러스
- 백신을 피하기 위해 만들어진 바이러스
일반적인 백신 프로그램은 바이러스 파일 안의 특정한 식별자로 바이러스 감염여부를 확인하는데, 특정 식별자를 피하기 위해 다형성 바이러스 이용- 코드 조합을 다양하게 할 수 있는 조합 프로그램을 덧붙여 감염시키기 때문에 프로그램이 실행될 때마다 코드 자체가 바뀜
(5) 5세대 매크로 바이러스
- 다양한 응용프로그램과 사무용 프로그램이 개발되며 스크립트형태의 실행환경을 이용해 전파되는 바이러스 등장
- 주로 MS 오피스 프로그램의 매크로기능을 통해 감염되는 바이러스
비주얼 베이직 스크립트로 주로 제작됨
엑셀, 워드같은 문서파일의 매크로기능을 이용해 파일을 열 때 감염됨- 주요 증상:
문서가 정상적으로 열리지 않거나 암호가 걸려있음
문서내용에 깨진 글자나 이상한 문구가 포함되어있음
매크로 메뉴를 실행할 수 없음
엑셀, 워드 작업중 비주얼 베이직 편집기의 디버그모드가 실행됨
(6) 차세대 바이러스
- 인터넷과 네트워크가 빠르게 발전하며 다양한 형태의 바이러스가 등장함
=> 바이러스의 종류를 한 세대로 분류하기 어려워짐- 최근에는 매크로 바이러스에서 나타난 스크립트 형태의 바이러스가 더욱 활성화되고있음 (네트워크와 메일을 이용해 전파)
데이터를 파괴하고 다른 파일을 감염시킴 + 사용자의 정보를 빼내거나 시스템을 장악하는 웜의 형태로 진화
(1) 매스메일러형 웜
- 자기 자신을 포함하는 대량 메일을 발송하여 확산
제목이 없는 메일이나 특정 제목의 메일을 전송하고, 사용자가 메일을 읽으면 감염
=> 치료하지 않으면 웜이 기생하며 시스템 내부에서 메일 주소를 수집하고, 계속 전송함- 주요 증상:
감염된 시스템이 많으면 TCP 25번 포트의 네트워크 트래픽이 증가
변형된 종류에 따라 시스템에 임의의 파일 생성
베이글 웜의 경우 웜 파일을 실행할 때 가짜 오류 메시지를 출력
넷스카이 웜은 윈도우 시스템 디렉터리 밑에 CSRSS.exe 실행파일 생성
(2) 시스템 공격형 웜
- 운영체제 고유의 취약점을 이용하여 내부 정보를 파괴하거나, 컴퓨터를 사용할 수 없는 상태로 만들거나, 외부의 공격자가 시스템 내부에 접속할 수 있도록 악성코드를 설치
- 주요 증상:
전파시 과도한 TCP/135,455 트래픽 발생
시스템 파일에 SVCHOST.EXE 파일을 설치
공격 후 특정 포트를 열어 외부 시스템과 통신
시스템 파일 삭제 또는 정보 유출 가능
(3) 네트워크 공격형 웜
- 특정 네트워크나 시스템에 대해 SYN 플러딩이나 스머프와 같은 DoS 공격 수행
** 플러딩: 악의적으로 한꺼번에 많은 양의 데이터를 보내 상대방의 서비스를 운용할 수 없게 만드는 서비스 거부 공격
** 스머프: 네트워크를 마비시키기 위해 대량의 ICMP요청을 보내는 분산 서비스 거부 공격- DDoS 공격을 위한 봇 형태로 발전중
- 주요 증상:
네트워크가 마비되거나 급격히 느려짐
네트워크 장비가 비정상적으로 동작
: 악성 루틴이 숨어있는 프로그램
겉보기에는 정상적인 프로그램같지만 사용자가 실행하면 악성 코드가 실행됨
어떤 악성코드도 포함 가능하며, 시스템을 파괴하거나 스파이웨어 또는 랜섬웨어로 동작도 가능함
** 랜섬웨어: 사용자의 컴퓨터를 장악하거나 데이터를 암호화한 다음 정상적인 작동을 위한 암호키를 대가로 금품을 요구하는 유형의 악성코드
+) 백도어: 운영체제나 프로그램을 생성할 때 정상적인 인증과정을 거치지 않아도 접근 가능하게 만든 통로. 일반적으로는 악성코드를 지칭하는 말로, 트로이목마와 혼용됨
: 사용자에게 직간접적으로 동의를 구하긴 하지만 용도를 파악하기 어려운 상태에서 설치되는 프로그램
ex) 컴퓨터를 오래 사용하다 제어판의 [프로그램 제거 또는 변경]에서 발견하게 되는 프로그램
- 악성코드에 의해, 포르노 사이트에서, 크랙 사이트에서 설치되는 경우 존재
(최근에는 특정 프로그램을 설치하며 같이 설치되는 경우가 많음)
- 사용자에게 치명적인 악영향을 주진 않지만 광고를 지속적으로 보여주거나,
웹 브라우저의 시작페이지를 특정 페이지로 강제 변환하거나,
사용하고 싶지 않은 백신을 강제로 사용하게 할 수 있음
(1) 네트워크 상태 점검하기
- 상당수의 악성 코드는 외부에 있는 해커나 악성 코드 작성자와 통신하기 위해 서비스 포트를 생성함
=> 특이한 포트 번호가 있다면 확인 (프로그램 이용)
(2) 정상적인 프로세스와 비교하기
- 윈도우와 유닉스 시스템의 기본 정상적인 프로세스를 외워두면 비정상적인 프로세스를 식별하는 데 도움이 됨
=> 현재 동작중인 정상적인 프로세스를 확인할 것
- 악성코드가 주로 사용하는 서비스명: csrss/ svchost
(3) 악성코드의 실제 파일 확인하기
- 네트워크 상태와 프로세스 분석을 통해 파악한 악성코드의 실제 파일 확인
: 윈도우 탐색기는 윈도우 운영체제와 많은 라이브러리를 공유하고 있어 탐색기 자체가 악성코드의 공격 대상이 되기도 하기 때문에 독립적으로 동작하는 파일 탐색기를 사용하는 것이 좋음 (total commander...)
(4) 시작프로그램과 레지스트리 확인하기
- 악성코드의 경우 레지스터를 이용하는 경우가 많으므로 악성코드를 삭제할 때 시작 프로그램과 레지스트리의 내용을 확인하는 것이 중요드의 경우 레지스터를 이용하는 경우가 많으므로 악성코드를 삭제할 때 시작 프로그램과 레지스트리의 내용을 확인하는 것이 중요
** 레지스터: CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 저장장치
(5) 악성코드 제거하기
- 악성코드 프로세스 중지
-> 악성코드 파일 삭제
-> 레지스트리 삭제
- 암호문: 비밀을 유지하기 위해 당사자만 알 수 있도록 꾸민 약속 기호 <-> 평문
암호는 암호문이 노출되더라도 정보를 숨길 수 있어야 함- 암호화: 평문을 암호문으로 바꾸는 것
복호화: 암호문을 평문으로 바꾸는 것- 암호화 알고리즘: 암호화, 복호화를 수행할 때 양쪽이 알고 있어야 할 수단
암호화 키: 암호화, 복호화를 수행할 때 양쪽이 약속한 규칙- 전치법: 메시지에 들어있는 문자의 위치를 바꾸는 방법
미리 정해놓은 문자 배열 규칙에 따라 암호화와 복호화를 수행
ex) apple -> palpe
문제: 암호화하려는 문자 자체를 숨길 수 없어 적절한 배열을 찾으면 복호화할 수 있음- 대체법: 메시지의 글자를 다른 글자로 대체하여 암호화하는 방법 다른 글자로 대체하여 암호화하는 방법
- 단일 치환: 알파벳 한 글자를 다른 한 글자로 대체하는 방식
- 시저 암호화: 알파벳을 3~4글자씩 오른쪽으로 이동한 뒤 해당되는 글자로 변환하여 암호화하는 것
암호화가 가능한 경우의 수가 26으로 매우 적기 때문에 보안에 취약
- 모노 알파베틱 암호화: 알파벳을 각각 다른 알파벳에 대응시켜 시저 암호화보다 좀 더 복잡하게 알파벳을 암호화하는 것
암호화가 가능한 경우의 수는 26!으로 비교적 보안성이 높음
- 다중 치환: 암호화 키와 매핑하여 알파벳 하나가 여러가지 다른 알파벳으로 대체되는 방식
- 비즈네르 암호화: 26x26의 알파벳 대칭표를 이용하여 암호화하고자 하는 평문과 암호화 키를 매핑하고 암호화와 복호화를 수행
- 플레이페어 암호화: 2개로 이루어진 문자 쌍을 다른 문자 쌍으로 대체하는 암호화 방법
주어진 평문을 2개씩 묶은 문자 쌍으로 만들고 플레이페어 암호화 테이블을 이용
- 하나의 알파벳을 다른 알파벳 여러개로 바꿀 수 있다는 점에서는 다중 치환 방식이지만 2개의 알파벳을 묶어서 본다는 점에서는 단일 치환 방식이라고도 할 수 있음
- 보안성이 높은 암호화를 위해서는 혼돈과 확산 성질을 이용
혼돈: 암호문의 통계적 성질과 평문의 통계적 성질의 관계를 난해하게 만드는 것
확산: 평문 비트와 키 비트가 암호문의 모든 비트에 영향을 주는 성질
+) 단일 대칭 암호화 방식은 혼돈과 확산 정도가 낮음
- 64비트의 블록 암호화 알고리즘을 사용해 56비트 크기의 암호화 키로 암호화
생성 가능한 암호화키는 최대 2^56 (약 7200조)
하나의 블록인 64비트를 32비트 두개로 나눈 뒤 둘 중 하나를 암호화 키로 생성한 S-box를 통해 함수를 만들어 치환하고, 다른 하나의 32비트와 논리합한 뒤 나머지의 위치를 바꾸는 두가지 기본 변환을 통해 암호화함머지의 위치를 바꾸는 두가지 기본 변환을 통해 암호화함
- DES 암호화 키를 2개 이용하여 두번의 암호화와 한번의 복호화 or 두번의 복호화와 한번의 암호화 실행
=> 기본 DES 암호화에 비해 강도가 두배 높음
- 128비트 암호화 블록, 128/ 192/ 256비트 길이의 키를 가진 알고리즘
- 전자상거래, 금융, 무선 통신 등에서 전송되는 개인정보같은 중요한 정보를 보호하려는 목적으로 개발
128 비트와 256 비트를 지원하며 국내에서 개발되었지만 현재는 ISO/ IEC에서도 인증받아 사용하고있음
- 전자 정부 구현 등에 따라 다양한 환경에 맞는 암호화 알고리즘이 필요해 개발됨
128/ 192/ 256 비트 암호화 키 지원
- 파장이나 진폭 등으로 통신하는 일반적인 통신과 달리 광자 하나하나의 단위로 신호를 실어 나름 (광자 단위로 편광, 위상차를 이용해 신호를 전송하며 송신측에서도 편광 패드나 간섭계를 사용하여 측정)
- 양자역학의 복제 불가능성 원리, 측정 후 붕괴라는 특이 현상을 이용
-> 단일 광자는 한번만 정확하게 측정이 가능한데, 이러한 특성 덕에 보안성이 높음
- IDEA 알고리즘/ RC5 알고리즘/ Skopjack 알고리즘/ LEA 알고리즘
https://raonctf.com/essential/study/web/asymmetric_key
- 기본적인 정수론인 소수를 이용, 중요 정보를 소수 2개로 표현한 후 소수의 곱을 힌트와 함께 전송하여 암호로 사용하는 것
- 각 개인이 공개키와 개인키를 소유하는 구조
메시지의 암호화 키와 복호화 키는 다름,
한 쌍의 개인 키와 공개 키로 암호화와 복호화가 이루어지기 때문에 개인 키로 암호화 된 메시지는 공개 키로만 복호화됨 (개인 키로 복호화 되었다면 공개 키로만 복호화 됨)
- 기밀성: 중간에서 메시지를 빼앗겨도, 공격자가 읽을 수 없음: 매우 높음
수신자의 공개 키로 암호화하여 송신
- 부인 방지: 데이터의 전달 과정에서의 오염 발생 여부를 쉽게 찾을 수 있어짐
발신자의 개인 키로 암호화하여 송신
: 하나의 문자열을 이를 상징하는 더 짧은 길이의 값이나 키로 변환하는 것 (암호화와 다름)
암호가 정보를 숨기기 위한 장치라면, 해시는 정보의 위조/ 변조를 확인하기 위한 장치 (무결성 확인)
- 평문의 길이에 상관없이 해시 결과에 나타나는 길이는 모두 같음
평문이 아주 조금만 달라도 결과를 추측하기 불가능할 정도로 다른 값이 나타남
- 충돌: 데이터의 값이 다르지만 해시 결과 값은 같은 현상
(데이터는 사실상 무한에 가깝기 때문에 발생)
충돌이 자주 일어난다면 해시가 무의미해질 수 있음
- 해시는 사실 데이터베이스를 효과적으로 탐색하기 위해 만들어진 것
- MD5 알고리즘: 공개 키 기반 구조를 만들기 위해 개발되었으며 32비트 컴퓨터에 최적화
- SHA: 160비트의 값을 생성하는 해시 함수로, 512비트의 블록으로 입력