일반적인 사회 통념상의 보안보다 정보보안의 범위가 넓고 그 공격유형이 다양하기 때문에 정보보안이 어려운 것은 사실이다.
크게 보아 정보보안은 컴퓨터 시스템에 대한 보안이라고 보면 된다. 컴퓨터 시스템을 공격하는 해킹은 시스템, 네트워크 그리고 코드를 대상으로 한다고 볼 수 있다.
시스템은 하드웨어적인 컴퓨터와 운영체제를 대상으로 하는 것이고, 네트워크는 통신이 이루어지는 네트워크 회선과 장비 그리고 프로토콜이 그 대상이다. 그리고 코드 보안은 실제로 사용자가 사용하는 프로그램에 대한 보안을 말한다.
시스템 보안
시스템이라는 용어는 컴퓨터 업계에서는 하드웨어 적인 의미로 주로 사용된다. 예를 들어 컴퓨터 시스템이라는 말은 하드웨어로 구성된 컴퓨터 서버와 그 서버를 구동하는 운영체제를 의미한다.
따라서 시스템 보안이란 공격자의 허가되지 않능 불법적인 시스템 접근을 막아 시스템에 저장된 정보와 시스템의 정상적인 운용을 보호하는 활동을 말한다.
기본적으로 시스템의 사용자 관리, 파일 시스템 관리, 로그 관리 등과 같은 기본 관리 등이 철저히 이루어져야 한다. 시스템을 공격하는 방법으로는 패스워드 크래킹, 백도어, 버퍼 오버플로우 등이 있다.
1. 패스워드 크래킹
현재 고급 사양의 PC를 사용하여 패스워드 크래킹을 할 경우, 영어 단어를 사용한 패스워드라면 수분에서 수 시간 내에 알아내고, 영어 문자와 숫자 및 기호 등을 섞어서 8자 이상을 사용하여 만든 경우에는 수개월이 걸린다고 한다. 패스워드를 복잡하게 만들어야 하는 이유다.
2. 백도어
백도어랑 공격자가 자신만이 알도록 시스템에 몰래 설치해 놓은 비밀 출입구를 말한다. 백도어는 정상적인 로그인 절차를 거치지 않으므로 시스템의 로그에 기록되지 않는다. 따라서 공격자는 시스템의 관리자나 사용자가 모르게 시스템을 출입하거나 그 시스템을 원격 접속하여 사용할 수 있게 된다. 백도어는 컴퓨터 웜을 통하거나 운영체제의 취약점 등을 통해 설치될 수 있다.
연구자들은 새롭게 발견되는 백도어가 있을 때 이의 감염경로와 작동 원리에 대해 연구하고 이를 막거나 감염된 시스템을 치료하는 백신 프로그램을 개발하거나 백도어 제거를 위해 수동으로 취할 수 있는 방법을 연구하여 인터넷 등을 통해 대중에게 발표하고 있다.
3. 버퍼 오버플로우
버퍼 오버플로우 또는 버퍼 오버런은 메모리를 처리할 때 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점이다. 컴퓨터 보안과 프로그래밍에서 이는 프로세스가 데이터를 버퍼에 저장할 때 프로그래머가 지정한 곳 바깥에 저장하는 것이다. 벗어난 데이터는 인접 메모리를 덮어 쓰게 되고 다른 데이터가 포함되어 있을 수도 있는데, 손산을 받을 수 있는 데이터는 프로그램 변수와 프로그램 흐름 제어 데이터도 포함된다. 이로인해 잘못된 프로그램 이상이 나타날 수 있으며, 메모리 접근 오류, 잘못된 결과, 프로그램 종료, 또는 시스템 보안 누설이 발생할 수 있다.
원래 운영체제는 하나의 프로세스가 그에게 허용된 메모리 공간에서만 동작하도록 해야 한다. 즉, 특정 프로세스는 그 프로세스에 할당되어 사용이 허가된 특정 메모리 영역 내에서만 읽고 쓰기를 할 수 있어야 한다. 그런데 소프트웨어를 만드는데 사용된 어떤 함수들은 이 부분이 허술하게 작성되어 있어서 할당된 영역 밖의 메모리 공간에도 쓰기를 하는 경우가 있다. 이때 공격자는 이를 교묘히 이용하여 악성코드가 시스템의 관리자 권한으로 실행되게 하는 등의 공격을 실행할 수 있다.
시스템에 대해 발생할 수 있는 공격들은 위의 내용보다 더 여러 종류가 존재하며 시스템을 안전하게 설정하는 방법은 운영체제마다 다를 수밖에 없고 내용도 매우 복잡하고 많아서 시스템 보안의 연구 영역은 매우 방대하다고 할 것이다.
네트워크 보안
네트워크 보안은 일반적으로 근거리전산망 즉, 랜의 조직 경계에서 블랙해커, 스크립트키드 등의 침입자로부터 근거리 전산망을 보호하는 기능을 제공한다.
즉, 권한을 갖지 않은 사용자 혹은 네트워크가 자신의 네트워크로 불법 접속하여 자원에 접근하려할 때 네트워크 관리자가 사용하는 보안 방식을 말한다.
예전에는 시스템과 운영체제를 노리는 시스템 공격이 대세였으나 최근에는 디도스와 같은 분산 서비스 거부 공격처럼 네트워크와 서버를 같이 공격하는 유형이 많아졌다.
1. 디도스 공격
동시에 수많은 컴퓨터가 특정 웹사이트에 접속하여 비정상적으로 트래픽을 늘려 해당 사이트를 마비시키는 해킹 방법이다. 트래픽을 많이 발생시킬 때 서버에 접속하는 좀비 터미널을 많이 확보하여 특정서버를 마지시키는 원리를 가지기 때문에 분산이라는 단어를 사용하여 분산서비스 거부 공격이라고 부른다.
디도스 공격은 기존 바이러스나 고전적 해킹처럼 특정 컴퓨터에 침투해 자료를 삭제하거나 훔쳐가는 것이 아니라 타깃 서버가 다른 정당한 신호를 받지 못하게 방해하는 작용을 한다. 다시 말하면 수많은 좀비 컴퓨터가 동시에 접속하여 해당 컴퓨터를 마비시키는데 특정 사이트를 공격하기 위해 해커가 서비스 공격을 위한 도구들을 여러 컴퓨터에 심어 놓고 목표 사이트의 컴퓨터 시스템이 처리할 수 없는 엄청난 분량의 패킷을 동시에 범람시키면 네트워크 성능 저하나 시스템 마비를 가져온다. 그 결과 시스템 과부하고 정상고객들이 접속을 할 수 없는 상태가 되는 것이다.
단순한 예로 한 전화번호에 집중적으로 전화가 걸려오면 일시적으로 통화가 안되는 현상과 같다. 일반적으로 인터넷상의 개인 컴퓨터들이 디도스 공격에 동원되는데, 대부분 사용자가 열어본 이메일이나 파일 등을 타고 들어온 악성코드에 의하여 감염된 컴퓨터이다. 컴퓨터 사용자는 악성코드에 감염된 사실을 전혀 인식하지 못한 채 웹서핑 등 일상적인 용도로 컴퓨터를 사용하게 되고, 악성코드에 감염된 컴퓨터는 마치 좀비처럼 스스로 멀리 있는 공격명령 서버의 명령에 따라 특정 사이트를 지속적으로 접속하여 그 사이트를 마비시키게 된다.
2. 디도스 공격의 역할 분담
디도스 공격에는 서버가 마비될 정도로 많은 컴퓨터가 필요하다. 하지만 그 많은 PC를 동시에 제어하거나 명령 내리는 것은 불가능하다. 공격자들은 마스터와 같은 중간단계의 자동화 프로그램을 통해 여러 PC에 명령을 송신하거나 공격 개시 시간을 사전에 지정해 놓는다. 이를 위해 공격자들은 사전에 몰래 다른 사람들의 PC에 악성코드를 설치해 원격에서 제어가 가능하게 만들어 놓는다. 이 악성코드에 감염된 PC는 주인의 의사와는 상관없이 공격자들의 명령에 따라 좀비처럼 움직인다고 해서 좀비PC라고 불린다. 공격 툴과 방법마다 명칭과 구조가 약간씩 다르지만 근본적으로 다음과 같은 역할 분담을 하고 공격을 실시한다.
(1) 공격자 : 공격을 주도하는 해커의 컴퓨터
(2) 마스터 : 공격자에게서 직접 명령을 받는 시스템, 여러 대의 에이전트(좀비)를 관리한다.
(3) 핸들러 프로그램 : 마스터 시스템의 역할을 수행하는 프로그램
(4) 에이전트(좀비) : 공격 대상에 직접 공격을 가하는 시스템
최초의 디도스 공격은 1999년 8월 17일 미국 미네소타 대학에서 발생한 것으로 알려지고 있다. 야후, NBC, CNN 서버의 서비스를 중지시켜서 피해가 상당히 심각하였으며 이에 대한 확실한 대책 역시 없고 공격자의 위치와 구체적인 발원지를 파악하는 것도 거의 불가능에 가까웠다. 더구나 공격자들은 사람들이 눈치 채지 못하도록 공격강도나 트래픽의 강도를 조절하기 때문에 자신의 PC가 좀비PC가 된 것도 뒤늦게 깨닫게 된다. 디도스 공격은 좀비 PC를 공격하는 게 아니라 특정 웹 사이트를 마비시키는데 목적이 있다. 다라서 좀비 PC가 된다고 해서 큰 피해를 입는 일은 드물다. 하지만 공격자들이 마음만 먹는다면 좀비 PC까지 피해를 기칠 수 있다. 하드디스크를 손상시키거나 PC 안의 정보를 빼낼 수도 있기 때문에 좀비 PC임이 감지되면 백신 프로그램 등으로 검색하여 즉시 악성코드를 치료하는 것이 좋다.
3. 디도스 종류
디도스는 목표물인 서버 컴퓨터가 감당할 수 없는 네트워크 요구와 기능요구로 그 기능을 수행할 수 없도록 하는 보안위협이다. 많이 사용되는 디도스의 종류는 크게 다음과 같다.
(1) Ping of Death (죽음의 핑)
핑(Ping)이란 인터넷에서 상대 컴퓨터가 살아있는가를 체크하는 프로그램이다. 그런데 이 프로그램은 상대에게서 나의 존재여부를 묻는 핑 패킷을 받게 되면 똑같은 크기의 핑 패킷을 그 상대에게 전송하여 나의 존재를 알려야 한다. 이 특성을 이용한 것이 죽음의 핑이다. 핑 패킷을 최대한 길게 하여(최대 65,500바이트) 수 만개의 좀비 PC가 공격 대상에게 핑 패킷을 보내면 상대 서버는 이 패킷에 응답하다가 자기의 기능을 수행하지 못하고 다운되고 만다.
(2) SYN Flooding (SYN 홍수)
네트워크에서 서비스를 제공하는 시스템에는 동시 사용자 수에 대한 제한이 있다. SYN Flooding은 존재하지 않는 클라이언트가 서버에 접속한 것처럼 속여, 정상적인 다른 사용자가 서비스를 받지 못하게 하는 공격이다.
(3) Land
패킷을 전송할 때 출발지 IP주소와 목적지 IP주소값을 똑같이 만들어서 공격 대상에게 보내는 공격이다. 이 때 조작된 IP 주소값은 공격 대상의 IP 주소여야 한다. 이 공격을 받게 되면 서버는 발신자 IP를 분석하다가 다운된다.
(4) Mail Bomb (폭탄 메일)
스펨 메일도 여기에 해당된다. 메일 서버는 각 사용자에게 일정한 양의 디스크 공간을 할당 하는데, 메일이 폭주하여 디스크 공간을 가득 채우면 받아야 하는 메일을 받을 수 없게 되고 시스템의 성능도 타격을 받게 된다. 이런 이유로 스팸 메일도 서비스 거부 공격이 될 수 있다.
코드 보안
실제로 미국 가트너 그룹의 보고서에 의하면 네트워크와 시스템 그리고 코드 보안 중에서 약 75%가 코드 보안 관련 공격이라고 한다. 예를 들어 어떤 사이트에 로그인을 할 때 아이디와 패스워드를 입력하면 응용 프로그램은 이 아이디와 패스워드를 가지고 데이터베이스에 접속하여 인가된 사용자의 경우에만 메인 페이지로 이동하게 조치를 한다.
그런데 이때 아이디 란에 Admin이라는 아이디가 올 경우 패스워드의 진위를 조회하지도 않고 메인 페이지로 이동하게 되는 오류가 있을 경우 이 프로그램은 심각한 위협이 되게 된다.
마이크로소프트의 윈도우 XP에서도 비슷한 사례가 있었다. 부팅시 F8키를 눌러서 안전모드로 부팅하게 되면 Administrator계정의 패스워드를 물어보지 않고 정상적으로 윈도우 시스템에 로그인이 되는 버전이 존재했었다.
출처 : "정보보안 및 인터넷해킹과 방어기술"
'99. 기타' 카테고리의 다른 글
인터넷 보안위협과 모바일 보안위협 (0) | 2016.11.14 |
---|---|
컴퓨터 보안위협 - 바이러스와 웜 (0) | 2016.11.12 |
국내 대표적인 해킹 사례 (0) | 2016.11.11 |
세계 10대 해킹 사건 (0) | 2016.11.10 |
정보보안이란? (0) | 2016.11.10 |