no image
정보보안개론 0x03
Web Security'웹' 이라는 것은 하나의 시스템과 다른 하나의 시스템 간의 통신을 위한 프로토콜을 만들어 사용했다. 하지만 회사마다 서로 다른 통신프로토콜로 인하여 다른회사와는 통신을 할수가 없었다. 그리고 이를 해결하기 위해 하나의 프로토콜을 해석한 후 다른 프로토콜로 바꾸어 다른 시스템으로 전송해주는 장치인 GateWay를 개발했다.'웹'의 정식명칭 명칭은 World Wide Web이다. 현재 웹문서로 가장 흔히 쓰이는 HTML(Hyper Text Markup Language)은 Hyper Text를 효과적으로 전달하기 위한 스크립트 언어이다. HTTP에 대한 이해 //Hyper Text Transfer Protocol웹에서는 FTP, Telnet, HTTP, SMTP, POP등 여러 프로토콜..
2015.01.13
no image
정보보안개론 0x02
Network SecurityOSI 7 Layer (Open System Interconnection) 물리계층 //시스템 간의 연결을 의미실제 장치들을 연결하기 위한 전기적, 물리적 세부사항을 정의한 계층물리 계층은 간단하지만 네트워크에서 무척 중요하다. 네트워크가 정상적으로 동작하지 않을때 가장먼저 랜케이블이나 컴퓨터나 마우스가 제대로 꼽혀 있는지 확인하는 것 또한 OSI 계층의 가장 낮은 부분부터 확인해야한다는 것을 우리는 이미 알고있다. 데이터 링크 계층Point to Point간 신뢰성 있는 전송을 보장하기 위한 계층으로, CRC 기반의 오류 제어 및 흐름제어가 필요하다.상호 통신을 위해 MAC주소를 할당 받는다. 대표적인 장비로는 스위치가 존재하며, MAC 계층에서 동작하는 대표적인 프로토콜로..
2015.01.12
정보보안개론 0x01
System Security시스템이란? 필요한 기능을 실현하기 위해 관련 요소를 어떤 법칙에 따라 조합한 집합체를 말한다. 시스템 보안은 권한 없는 사용자에 의한 파일, 폴더 및 장치 등의 사용을 제한하여 보호하는 시스템 기능을 말한다. 시스템 관련한 보안기능의 6가지 주제계정과 패스워드 관리적절한 권한을 가진 사용자를 식별하기 위한 가장 기본적인 인증 수단세션 관리사용자와 시스템 또는 두 시스템 간의 활성화된 접속에 대한 관리접근 제어시스템이 네트워크 안에서 다른 시스템으로부터 적절히 보호될수 있도록 네트워크관점에서 접근을 통제권한 관리시스템의 각 사용자가 적절한 권한으로 적절한 정보 자산에 접근할수 있도록 통제로그 관리시스템 내부나 네트워크를 통한 외부에서 시스템에 어떤 영향을 미칠 경우 해당 사항을..
2015.01.11

정보보안개론 0x03

Kail-KM
|2015. 1. 13. 23:35

Web Security


'웹' 이라는 것은 하나의 시스템과 다른 하나의 시스템 간의 통신을 위한 프로토콜을 만들어 사용했다. 하지만 회사마다 서로 다른 통신프로토콜로 인하여 다른회사와는 통신을 할수가 없었다. 그리고 이를 해결하기 위해 나의 프로토콜을 해석한 후 다른 프로토콜로 바꾸어 다른 시스템으로 전송해주는 장치인 GateWay를 개발했다.

'웹'의 정식명칭 명칭은 World Wide Web이다. 현재 웹문서로 가장 흔히 쓰이는 HTML(Hyper Text Markup Language)은 Hyper Text를 효과적으로 전달하기 위한 스크립트 언어이다.


HTTP에 대한 이해        //Hyper Text Transfer Protocol


웹에서는 FTP, Telnet, HTTP, SMTP, POP등  여러 프로토콜이 쓰이며, 그 중에서 HTTP이 가장 흔히 쓰인다. HTTP를 이용하면 사용자는 다양한 응용 프로그램에 접근할수가 있다.


<HTTP Protocol>

1.먼저 클라이언트가 웹브라우저를 이용해 서버에 연결을 요청하면, 연결 요청을 받은 서버는 클라이언트에 대해 서비스를 준비한다. 서버가 준비상태가 된다.

2.클라이언트는 읽고자 하는 문서를 서버에 요청한다.

3.서버는 웹 문서중 클라이언트가 요청한 문서를 클라이언트에 전송한다.

4.연결을 끊는다.


하지만 이러한 Connect 과정을 반복해서 거쳐야 했기 떄문에 무척 비효율적이고 오래 사용되지 못했다. 하지만 1.0 버전 부터는 한번의 Connect 후에 Request와 Response를 반복할수 있게 되었다.


<HTTP Request>

HTTP Request는 웹서버에 데이터를 요청하거나 전송할때 보내는 패킷이다.

GET 방식

GET방식은 가장 일반적인 HTTP Request 형태로 웹 브라우저에 다음과 같은 요청 데이터에 대한 인수를 URL 을 통해 전송한다.    www.wishfree.or.kr/list.php?page=1&search=test

GET방식에서는 각 이름과 값을 &로 결합하며 글자 수를 255자로 제한한다. 하지만 GET 방식은 데이터가 주소 입력란에 표시되기때문에, 최소한의 보안도 유지되지 않는, 보안에 매우 취약한 방식이다.


POST 방식

POST 방식은 URL에 요청 데이터를 기록하지 않고 HTTP 헤더에 데이터를 전송하기 떄문에 GET방식과 같은 &과 같은 부분이 존재하지 않는다. 하지만 상댖거으로 처리속도가 느리지만 URL을 통해 인수값을 전달하지 않기에 다른 이가 링크를 통해 해당 페이지를 볼수 없다는 면에서 최소한의 보안성은 갖추고 있다.


<HTTP Response>

HTTP Response는 클라이언트의 HTTP Request에 대한 응답 패킷이다.


웹 서비스에 대한 이해


웹 언어는 HTML, JavaScript, Visual Basic Script 와 같이 정적인 서비스를 제공하는 언어와 ASP, JSP, PHP 등과 같이 동적인 서비스를 제공하는 언어로 나눌 수 있다.


<HTML>

HTML은 가장 단순한 형태의 웹언어이다. 웹 서버에 HTML 문서를 저장하고 있다가 클라이언트가 특정 HTML 페이지를 요청하면 해당 HTML 문서를 클라이언트로 전송한다. 그러면 클라이언트는 이 웹페이지를 해석하여 웹 브라우저에 표현해주는데 이런 웹페이지를 정적인(Static) 웹 페이지라 한다.


<SSS>

기능상 한계가 많은 정적인 웹페이지 대신 좀더 동적인(Dynamic) 웹 페이지를 제공 할수 있는 PHP, ASP, JSP 와 같은 언어가 개발이 되었다.

ASP나 JSP와 같은 동적인 페이지를 제공하는 스크립트를 SSS(Server Side Script)라 한다. ASP의 경우 DLL이나 OCX 같은 파일을 이용하고 JSP의 경우 서블릿을 이용해 요청을 처리한다.


<CSS>

웹서비스에 이용되는 스크립트에는 자바스크립트나 비베스크립트 등이 있다. 이들은 서버가 아닌 클라이언트 측의 웹 브라우저에 의해 해석되고 적용되는데, 이를 CSS(Client Side Script>라 한다.

CSS는 서버가 아닌 웹 브라우저에서 해석되어 화면에 적용되기 떄문에 웹서버의 부담을 줄여주면서도 다양한 기능을 수행할수가 있다.


웹 해킹에 대한 이해


웹 해킹은 웹사이트의 구조와 동작 원리를 이해하는 것에서부터 시작한다. 기본적으로 사용되는 것이 웹스캔, 웹프록시를 이용한 패킷분석 구글해킹 등인데, 이는 웹해킹에 소요되는 대부분의 시간을 차지할 만큼 중요한 과정이다.


<웹 취약저 스캐너를 통한 정보 수집>

웹 취약점 스캐너를 통한 정보수집은 빠른 시간내에 다양한 접속 시도를 수행할수 있다는 장점이 있지만, 웹구조를 파악하고 취약점을 수집하기가 쉽지 않다는 단점이 있다. 각 페이지의 링크정보를 따라가는 것이므로 웹페이지에서 링크로 제공하지 않는 페이지는 구조 분석이 어렵다.


<웹 프록시를 통한 취약점 분석>

웹의 구조를 파악하거나 취약점을 점검할떄, 혹은 웹 해킹을 할떄는 웹 프록시라는 툴을 사용한다. 웹 프록시클라이언트에 설치되며 클라이언트의 통제를 받는다. 즉 클라이언트가 웹 서버와 웹 브라우저 간에 전달되는 모든 HTT[ 패킷을 웹 프록시를 통해서 확인하면서 수정하는 것이 가능하다.


<구글 해킹을 통한 정보 수집>

정보를 수집하기위해서는 검색 엔진을 이용하면 유용하다. 그 중에서도 구글은 다양한 고급 검색기능을 지원하기에 많은 정보를 접할수 있다.

site: 특정 사이트만을 집중적으로 선정해서 검색할떄 유용하다. 아래 검색어는 naver.com 도메인이 있는 페이지에서 admin 문자열을 찾으라는 의미이다.    site:naver.com admin

filetype : 특정 파일 유형에 대해 검색할떄 사용한다.    filetype:txt passwd

intitle : 페이지의 제목에 검색하는 문자가 들어있는 사이트를 찾는 기능으로 디렉터리 리스팅 취약점이 존재하는 사이트를 쉽게 찾을수 있기 떄문에 정보를 수집할떄 아주 유용하다. 아래 검색어를 입력하면 수많은 사이트의 디렉터리 리스팅을 확인할수 있다.    intitleindex.of admin

검색엔진의 검색을 피하는 방법 : 웹서버의 홈 디렉터리에 robots.txt 파일을 만들어 검색 할 수 없게 만드는 것이다.



웹의 주요 취약점 10가지


1.명령 삽입 취약점 

클라이언트의 요청을처리하기 위해 전송받는 인수에는 특정명령을 실행할수 있는 코드가 포함되는 경우가 있다. 명령 삽입공격은 웹서버와 연동되는 데이터 베이스에 임의의 SQL 명령을 실행하여 데이터를 수집한다.

데이터베이스에 SQL 삽입공격을 위해서는 인증이 필요하다 이를 위해서는 어떤 수단을 SQL의 결과값에 NULL이 나오지 않게, 즉 출력값이 사용자 ID가 되도록하면 로그인에 성공할수있다. 이를 위해서 자주 사용되는 방법으로는 SQL문에서 WHERE로 입력되는 조건문을 항상 참으로 만드는 방법이 있다. 바로 조건값에 'or' '='을 입력하는 것이다. 

ID : 'or''='                SELECT user_id FROM member WHERE

Passwd : 'or''='        user_id = ''or''='' AND password = ''or ''=''


SQL 삽입공격에 사용되는 SQL문은 무엇이라도 SQL 삽입 공격에 사용될수 있다.


2. XSS 취약점

XSS(Cross Site Scripting)은 공격자에 의해 작성된 스크립트가 다른 사용자에게 전달되는 것이다.

주로 임의의 XSS 취약점이 존재하는 서버에 XSS코드를 작성하여 저장한다. 일반적으로 공격자는 임의의 사용자 또는 특정인이 이용하는 게시판을 이용한다.


3. 취약한 인증 및 세션 관리

취약한패스워드 설정 :취약한 인증의 가장 기본적인 문제점은 패스워드 설정

사용자 측 데이터를 이용한 인증 : 세션 인증 값을 정상적으로 받은 후 UserNo값만 변경함으로써 다른 계정으로 로그인 한 것처럼 웹서비스를 이용할수 있게 된다.


4. 직접 객체 참조

직접객체 참조는 파일, 디렉터리, 데이터베이스 키와 같이 내부적ㅇ로 구현된 객체에 대한 참조가 노출될떄 발생

  • 디렉터리 검색

디렉터리 탐색은 웰브라우저에서 확인 가능한 경로의 상위로 탐색하여 특정시스템 파일을 다운로드하는 공격방법이다.

예를 들어 게시판등에서 첨부파일을 다운받을때 다음과 같이 down.jsp 형태의 SSS를 주로 사용한다.

www.kali-km.com/board/down.jsp?filename=사업계획.hwp

위와 같이 정상적인 다운로드 페이지를 이용해 다른 파일의 다운로드를 요청하면 어떻게 될까?

www.kali-km.com/board/down.jsp?filename=..//list.jsp

이와 같이 공격자가 상위로 올라가 특정 파일을 열람 할 수 있으므로 ..와 /문자를 필터링해야한다.


  • 파일업로드 제한부재

클라이언트에서 서버측으로 임의의 파일을 보낼수 있는 취약점은 웹서버가 가지는 가장 치명적인 취약점이다. 공격자는 웹서버에 악의적이 파일을 전송하므로 통해 웹해킹의 최종목표인 리버스텔넷과 같은 웹서버의 통제권을 얻기위해 반드시 성공해야하는 작업이다. 이떄 가장 일반적인 형태는 게시판을 이용하며 첨부파일로 업로드 하는 악성코드는 대부분 웹쉘이다.


  • 리버스텔넷(Reverse Telnet)

리버스텔넷 기술은 웹해킹을 통해 시스템의 권한을 획득한 후 해당 시스템에 텔넷과 같이 직접 명령을 입력하고 확인할수 있는 쉘을 획득하기 위한 방법으로 방화벽이 존재하는 시스템을 공격할떄 자주 사용된다.

심화된 공격을 하기위해서는 텔넷과 유사한 접근권한을 획득하는 것이 매우 중요한데, 이떄 리버스 텔넷이 유용하다.

방화벽에서 인바운드정책(외부에서 방화벽 내부로 들어오는 패킷에 대한 정책)은 80번 포트외에 필요한 포트만 빼고 다 막아 놓지만 아웃바운드정책(내부에서 욉로 나갈떄에 대한 정책)은 별다른 필터링을 수행하지 않는 경우가 많다.

웹서버에서 공격자 PC로 텔넷 연결을 허용하고 있는 상황을 공격자가 이용하는 것이 바로 리버스 텔넷이다. 하지만 그전에 웹서버에서 권한을 획득해야하며, 이를 위해 보통 파일업로드 공격을 이용하며 웹 쉘의 업로드를 통해 시스템에 명령을 입력할수 있는 명령창을 얻는 것이다. 리버스 텔넷을 위한 툴을 업로드하는데 보통 nc(netcat)라는 툴을 많이 사용한다.

리버스 텔넷을 막기위해서는 파일업로드를 먼저 막아야한다. 그리고 exe나 com 같은 실행파일의 업로드도 막아야한다. 또한 외부에서 내부로의 접속뿐만 아니라 내부에서 외부로의 불필요한 접속도 방화벽으로 막는 것이 좋다.


5. CSRF 취약점 (Cross Site Request Forgery)

CSRF는 특정 사용자를 대상으로 하지 않고, 불특정 다수를 대상으로 로그인된 사용자가 자신의 의지와는 무관하게 공격자가 위도한 행위를 하게 만드는 공격이다. CSRF는 기본적으로는 XSS 공격과 매우 유사하며 이의 발전된 형태라 보기도한다.

XSS는 악성스크립트가 클라이언트에서 실행되는데 반해, CSRF 공격은 사용자가 악성스크립트를 서버에 요청한다는 차이가 있다.


6. 보안 설정 취약점

  • 디렉터리 리스팅

디렉터리 리스팅은 웹브라우저에서 웹서버의 특정 디렉터리를 열면 그 디렉터리에 있는 파일과 목록이 모두 나열되는 것을 의미한다. 취약점으로 인한 경우에는 www.kali-km.com/%3f.jsp 와 같이 간단한 공격 코드로도 디렉터리 리스팅을 수행할수 있으므로 패치를 적용해야 한다.


  • 벡업 및 임시 파일 존재

개발자들이 웹사이트를 개발하고 난 훙 웹서버에 백업 파일이나 임시 파일들을 삭제하지 않은채 방치하는 경우가 종종 있다. 흔히 login.asp 파일이 웹서버의 편집 프로그램이 자동으로 생성하는 login.asp.bak과 같은 형태로 남는 경우를 말한다.


  • 주석 관리 미흡

일반적으로 프로그램의 주석은 개발자만 볼수 있으나, 웹 어플리케이션의 경우에는 웹 프록시를 통해 이용자도 볼수 있다. 


7. 취약한 정보 저장 방식

최근 개인정보 유출사건이 많아지는 가운데 중요한 데이터를 보호하기 위하여 암호화 로직을 사용하고, 데이터 베이스 테이블 단위에서 암호화를 수행 하여야 한다.


8. URL 접근 제한 실패

URL 접근제한 실패는 관리자 페이지가 추측하기 쉬운 URL을 가지거나 인증이 필요한 페이지에 대한 인증 미처리로 인해 인증을 우회하여 접속할수 있는 취약점이다. 

원래는 관리자로 로그인해야 관리자용 웹페이지에 접속할수 있는 것인데, 로그인 하지 않고도 특저 작업이 가능한 경우가 발생한다.

인증 우회를 막기위해서는 웹에 존재하는 중요 페이지에 세션값(쿠키)을 확인하도록 검증 로직을 입력해둬야 한다.


9. 인증 시 비암호화 채널 사용

인터넷 뱅킹과 같이 보안성이 중요한 시스템에서는 웹 트래픽을 암호화한다. 이떄 사용되는 암호화 알고리즘이 약하거나 암호화 하는 구조에 문제가 있다면 웹 트래픽은 복호화 되거나 위변조 될수 있다.


10. 부적절한 오류 처리

웹페이지의 경우 자동으로 다른페이지로 리다이렉트 하거나 포워드하는 경우가 종종 발생한다. 이떄 신뢰되지 않은 데이터를 사용하는 경우가 있는데, 적절한 확인절차가 없으면 공격자는 피해자를 피싱사이트나 악의적인 사이트로 리다이렉트 할 수 있고, 권한 없는 페이지의 접근을 위해 사용할수도 있다.


웹의 취약점 보완


1. 특수문자 필터링

웹의 취약점은 다양하지만 대부분 몇가지 보완을 통해 막을수가 있다. 가장 대표적인 것이 특수문자 필터링이다. 웹 해킹의 가장 기본적인 형태 중 하나가 인수 조작인데 인수 조작은 예외적인 실행을 유발 시키기 위해 일반적으로 특수문자를 포함하게 되어 있다. 


2. 서버 측 통제 작용

파일 업로드 취약점이나 특수문자 필터링을 수행할떄 주의할점은 자바스크립트와 같은 CSS 기반의 언어로 필터링을 하면 안된다는 것이다. CSS 기반의 언어는 웹프록시를 통해 웹브라우저에 전달되기 떄문에 웹프록시를 통해 전달되는 과정에서 변조될 가능성이 있다.

따라서 CSS 기반의 언어로 필터링 할 경우 공격자가 필터링 로직만 파악하면 쉽게 필터링이 무력화 된다. 즉 필터링 로직은 ASP, JSP 등과같은 SSS로 필터링을 수행해야 한다.


3. 지속적인 세션 관리

URL 접근 제한 실패를 막기 위해서는 기본적으로 모든 웹페이지에 세션에 대한 인증을 수행해야 한다. 모든 웹페이지에 대해 일관성 있는 인증 로직을 적요하려면 기업단위에서 또는 웹 사이트 단위에서 세션 인증로직을 표준화 하고, 모든 웹페이지를 개발할떄 해당 표준을 준수하도록 해야한다.

'Study > Book' 카테고리의 다른 글

정보보안개론 0x06  (0) 2015.01.23
정보보안개론 0x05  (0) 2015.01.22
정보보안개론 0x04  (0) 2015.01.21
정보보안개론 0x02  (0) 2015.01.12
정보보안개론 0x01  (2) 2015.01.11

정보보안개론 0x02

Kail-KM
|2015. 1. 12. 01:34

Network Security


OSI 7 Layer (Open System Interconnection)


  • 물리계층                    //시스템 간의 연결을 의미

실제 장치들을 연결하기 위한 전기적, 물리적 세부사항을 정의한 계층

물리 계층은 간단하지만 네트워크에서 무척 중요하다. 네트워크가 정상적으로 동작하지 않을때 가장먼저 랜케이블이나 컴퓨터나 마우스가 제대로 꼽혀 있는지 확인하는 것 또한 OSI 계층의 가장 낮은 부분부터 확인해야한다는 것을 우리는 이미 알고있다.


  • 데이터 링크 계층

Point to Point간 신뢰성 있는 전송을 보장하기 위한 계층으로, CRC 기반의 오류 제어 및 흐름제어가 필요하다.

상호 통신을 위해 MAC주소를 할당 받는다. 대표적인 장비로는 스위치가 존재하며, MAC 계층에서 동작하는 대표적인 프로토콜로는 이더넷이 있다. 


스위치(랜 공유기)가 존재할경우 두대의 컴퓨터를 1,2번 포트에 각각 꽂을 경우

1번포트 : 1번 PC의 MAC 주소

2번포트 : 2번 PC의 MAC 주소

이렇게 메모리 정보가 변경이 된다. 아직 2계층에서는 IP의 주소가 나타나지 않는다.


  • 네트워크 계층

3계층인 네트워크 계층은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로, 다양한 길이의 데이터를 네트워크를 통해 전달하며 그 과정에서 라우팅, 흐름제어, 세그멘테이션, 오류제어들을 수행한다.

MAC 주소를 가지고 ARP 프로토콜을 이용하여 해당 IP를 가진 시스템의 MAC 주소를 브로드캐스트를 통하여 알아내기 위한 작업을 한다. 그 후 패킷은 목적지에 도달할때까지 라우터를 만날 때마다 2계층의 정보를 갈아치우는 작업을 한다.


  • 전송 계층
End to end의 사용자 들이 신뢰성 있는 데이터를 주고 받을 수 있도록 함으로써, 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 해준다. 

전송 프로토콜 로는 TCP가 있다. TCP도 주소를 가지고 있으며 이를 Port라 한다. MAC 주소가 네트워크 카드의 고유 식별자 이고 ip가 시스템의 주소라면 포트는 시스템에 도착한 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호라 할 수 있다.

TCP는 연결지향형 프로토콜로, 수신측이 데이터를 흘려버리지 않도록 데이터 흐름 제어 및 전송중 에러가 발생할 경우 자동으로 재전송하는 에러 제어 기능을 한다. 그리고 이를 통해 데이터의 확실한 전송을 보장한다.

//TCP 3-Way HandShake


  • 세션 계층
엉 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 세션 계층은 duplex 방식, half-duplex방식, full-duplex 방식의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정들을 수행한다. 또한 TCP/IP 세션을 만들고 없애는 책임을 진다.

  • 표현 계층
표현계층은 코드간의 번역을 담당한다. 즉 사용자 시스템에서 데이터의 구조를 하나의 통일된 형식으로 표현함으로써, 응용 계층의 데이터 형식 차이로 인한 부담을 덜어준다.

  • 응용 프로그램 계층
사용자나 응용 프로그램 사이에 데이터의 교환이 가능하게 하는 계층으로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.






서비스 거부(DoS)공격

서비스 거부공격(DoS : Denial Of Service)은 다른 해킹에 비해 비교적 간단한데, 쉽게 얘기하면 일종의 훼방이라고 볼수 있다.


  • 취약점 공격형
취약점 공격은 공격 대상이 특정 형태의 오류가 있는 네트워크 패킷의 처리 로직에 문제가 있을 때, 그 문제를 이용하여 공격 대상의 오동작을 유발시키는 형태의 공격이다.

<Boink, Bonk, TearDrop 공격>
이 공격들은 오류 제어 로직을 악용하여 시스템의 자원을 고갈시키는 공격이다. TCP 프로토콜은 데이터 전달의 유효성이나 효율성을 위해 시퀀스 넘버 기반의 오류 제어 방식을 사용하여 특정 연결의 유효성을 제어한다.
TCP는 신뢰성 있는 연결을 위해 다음의 기능을 제공한다.
-패킷의 순서가 올바른지 확인
-중간에 손실된 패킷은 없는지 확인
-손실된 패킷의 재전송 요구
위 공격들은 이를 이용한 공격으로 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 시퀀스넘버를 속인다.


<Land 공격>
패킷을 전송할떄 출발지 IP와 목적지 IP 주소값을 똑같이 만들어서 공격대상에게 보내는 것이다. 물론 이때 조작된 IP 주소값은 공격대상의 IP 주소여야 한다. 

이러한 패킷으 공격대상에 보내면 시스템은 공격자가 처음보낸 SYN패킷의 출발지 주소값을 참조하여 그 응답 패킷의 목적지 주소를 SYN 패킷의 출발지 주소로 설정하여 보내게 된다. 그런데 출발지 주소는 공격대상의 주소값이므로 패킷은 네트워크 밖으로 나가지않고 자신에게 되돌아온다. 결국 이 공격법은 SYN Flooding 처럼 동시 사용자 수를 점유해 버리고 CPU 부하를 올려서 시스템이 지치도록 만든다.

  • 자원고갈 공격형
<Ping of Death 공격>
Ping of Death 공격은 네트워크 연결상태를 점검하기 위한 ping 명령을 보낼때, 패킷을 최대한 길게 해 공격대상에게 보내면 패킷은 지나가는 네트워크의 특성에 따라 수백개에서 수천개의 패킷으로 나뉘어지게 된다. 따라서 결과적으로 공격 대상 시스템은 대량의 작은 패킷을 수신하게 되고, 네트워크는 마비 된다.

이를 예방하려면 ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 ping 이 사용하는 프로토콜인 ICMP를 차단하는 방법을 사용한다.

<SYN Flooding 공격>
네트워크에서 서비스를 제공하는 시스템에는 동시 사용자 수의 제한이 있다. 이에 SYN Flooding 공격은 존재하지 않는 클라이언트가 서버별로 한정되어 있는 접속 가능한 공간에 접속한 것처럼 속여, 다른 사용자가 서버의 서비스를 제공받지 못하게 하는 것이다.

앞서 TCP에 대한 최초 연결시 클라이언트가 SYN패킷을 보내고 이를 받은 서버는 SYN+ACK 패킷을 보낸다 설명하였다. 마지막으로 클라이언트가 서버에 다시 ACK 패킷을 보내야 연결이 되는데, 보내지 않는다면 어떻게 될까? 
서버는 클라이언트가 ACK 패킷을 보내올떄까지 SYN Received 상태로 일정시간을 기다려야 하고, 그동안 공격자는 가상의 클라이언트로 위조한 SYN 패킷을 수없이 만들어 서버에 보냄으로 서버의 가용 동시 접속자 수를 모두 SYN Received 상태로 만들 수 있다. 이것이 SYN Flooding 공격의 기본 원리이다.
                                           //실제 동시 접속자수가 급증하여 접속자 폭주로도 마비가 되는 경우도 존재

대응책으로는 SYN Received의 대기 시간을 줄이는 방법으로 쉽게 해결 할 수 있다. 침입 방지 시스템(IPS)과 같은 보안 시스템을 통해서도 이러한 공격을 쉽게 차단할수 있다.


<HTTP GET Flooding 공격>

피공격 시스템에 TCP 3-Way HandShake 과정을 통해 정상적인 접속을 한뒤, 특정한 페이지를 HTTP의 GET Method를 통해 무한대로 실행하는 것이다.

공격 패킷을 수신하는 웹서버는 정상적인 TCP 세션과 함께 정상적으로 보이는 HTTP Get 요청을 지속적으로 요청하게 되므로, 시스템에 과부하가 걸린다.


<HTTP CC 공격>

HTTP 1.1 버전의 CC(Cache-Control) 헤더옵션은 자주 변경되는 데이터에 대해 새롭게 HTTP에 요청 및 응답을 요구하기 위하여 캐시 기능을 사용하지 않게 할수 있다. 서비스 거부 공격 기법에 이를 응용하기 위해 'Cache-Contril: no-store,must-revalidate' 옵션을 사용하면웹서버는 캐시를 사용하지 않고 응답해야 하므로 웹서비스의 부하가 증가하게 된다.


<동적 HTTP Request Flooding 공격>

HTTP Get Flooding 공격이나 HTTP CC 공격은 일반적으로 징정된 웹페이지를 지속적으로 요청하는 서비스 거부 공격이다. 그러나 이 둘은 방화벽을 통해 특징적인 HTTP 요청 패턴을 방어 할수 있다. 동적 HTTP Request Flooding 은 이러한 차단 기법을 우회하기 우해 지속적으로 요청 페이지를 변경하여 웹페이지를 요청하는 기법이다.


<Smurf 공격>

스머프 공격은 ICMP 패킷과 네트워크에 존재하는 임의의 시스템들을 이용하여 패킷을 확장시켜서 서비스 거부 공격을 수행하는 방법으로, 네트워크를 공격할 때 많이 사용된다.

이를 더 자세히 이해하려면 다이렉트 브로드캐스트(Direct Broadcast)를 알아야한다. 흔히 브로드캐스트는 목적지 ip 주소를 가지고 네트워크의 임의의 시스템에 패킷을 보내는 것이다. 이는 기본적으로 3계층장비, 즉 라우터를 넘어가지 못한다.

하지만 라우터를 넘어가야 하는 경우가 있는데 이런 경우 해당 네트워크에 있는 클아이언트의 IP주소 부분에 255를 채워서 원격지의 네트워크에 브로드캐스트 할수 있다. 이를 다이렉트 브로드 캐스트라 한다.

스머프 공격은 다이렉트 브로드 캐스트를 악용한 것으로 원격지의 네트워크에 다이렉트 브로드캐스트를 하면 해당 네트워크는 패킷의 위조된 시작 IP주소로 Reply를 보낸다. 결국 공격대상은 수많은 Reply를 받게 되고 Ping of Death 공격처럼 많은 패킷이 시스템을 과부하 상태로 만든다.

대응책으로는 라우터에서 다이렉트 브로드캐스트를 막는것이다.


<Mail Bomb 공격>

흔히 폭탄 메일 이라고 하는데, 스팸 메일과 같은 종류이다. 메일 서버는 각 사용자에게 일정한 양의 디스크 공간을 할당하는데, 메일이 폭주하여 디스크 공간을 가득 채우면 정작 받아야 하는 메일을 받을 수 없기 때문이다. 이런 이유로 스팸 메일은 Dos공격으로 분류된다.




분산서비스 거부 공격 ( DDoS : Distributed Denial Of Service)


DDOS 공격은 공격자가 한 지점에서 서비스 거부 공격을 수행하는 DOS 공격의 형태를 넘어 광범위한 네트워크를 이용하여 다수의 공격 지점에서 동시에 한곳을 공격하도록 하는 형태의 서비스 거부 공격이다.


  • 과거
일종의 자동화된 툴을 이용했으며, 광대한 공격 범위를 위해 최종 공격 대상 이외에도 공격을 증폭시켜주는 중간자의 역할이 필요했다.
-Attacker : 공격을 주도하는 해커의 컴퓨터
-Master : 공격자에게 직접 명령을 받는 시스템으로 여러대의 에이전트를 관리함
-Handler Program : 마스터 시스템의 역할을 수행하는 프로그램
-Agent : 공격대상에 직접 공격을 가하는 시스템
-Daemon Program : 에이전트 시스템의 역할을 수행하는 프로그램

  • 최근
최근의 DDOS 공격은 좀더 발전된 형태를 띄고 있다. 과거 형태의 경우 공격자가 상당한 시간을 두고 여러 시스템을 해킹하여 시스템에 마스터와 에이전트를 설치하고 공격 시에 해당 시스템에 공격명령을 내리는 형태였다. 시간도 오래걸리며 그 과정중에 ip 추적의 위험이 있었다. 

이런 이유로 최근에 발생하는 DDOS 공격은 악성코드와 결합하는 형태로 이뤄진다.
+ PC에서 전파가 가능한 형태의 악성코드를 작성한다.
+DDOS공격을 위해 사전에 공격대상과 스케줄을 정한뒤 이를 작성한 악성코드를 코딩한다.
+악성코드가 인터넷에 전파되면 감염된 PC 를 좀비PC라 부르며, 좀비 PC끼리 형성된 네트워크를 봇넷이라 한다.





스니핑 공격 (Sniffing Attack)

스피닝은 데이터 속에서 정보를 찾는 것이라 할수 있습니다. 스니핑 공격을 흔히 수동적 공격이라고도 하는데, 바로 공격할때 아무것도 하지않고 조용히 있는 것만으로도 충분하기 떄문입니다.


  • 스니핑의 원리
기본적으로 네트워크에 접속하는 모든시스템은 설정된 IP주소값과 고유한 MAC주소값을 가지고 있다. 통신을 할떄 이 두가지 주소값을 인식하고 자신의 버퍼에 저장할지 결정 한다. 다시 말해 네트워크카드에 인식된 2계층과 3계층 정보가 자신의 것과 일치하지 않는 패킷은 무시합니다.

스니핑을 수행하는 공격자는 자신에게 원래는 무시되어야 할 패킷을 무시하지 않는 것임으로 이러한 필터링을 해제하여야 하는데 이런 랜카드의 모드를 프러미스큐어스(Promiscuous)모드라 한다.

  • 스위치 재밍 공격
스위치에는 포트와 MAC 주소를 저장한 테이블이 존재한다. 스위치 재밍은 스위치가 MAC 주소 테이블을 기반으로 패킷을 포트에 스위칭할떄 정상적인 스위칭 기능을 마비시키는 공격을 말한다.

스위치에 랜덤한 형태로 생성한 MAC 주소를 가진 패킷을 무한대로 보내면 MAC테이블은 자연스레 저장 용량을 초과하게 되어, 스위치는 본래의 기능을 잃고 더미허브처럼 작동한다.

  • SPAN포트 태핑공격
SPAN은 스위치의 포트미러링 기능을 이용한 것으로 포트미러링이란 각 포트에 전송되는 데이터를 미러링하고 있는 포트에 똑같이 보내주는 것이다. SPAN포트는 기본적으로 네트워크 장비에서 간단한 설정으로 활성화 되지만, 포트 태핑은 하드웨어적인 장비를 이용한다.

  • 스니퍼의 탐지
스니핑공격은 네트워크에 별다른 이상 현상을 만들지 않기 때문에 사용자가 이를 인지하는 것이 어려워 능동적인 탐지를 통해서만 잡아낼수있다.

<PING 을 이용한 탐지>
대부분의 스니퍼는 일반 TCP/IP에서 동작하기에 Request를 받으면 Response를 전달한다. 이를 이용해 존재하지 않는 MAC주소를 위장하여 Ping을 보냈는데 ICMP Echo Reply를 받으면 해당 호스트가 스니핑을 하고 있는 것이다. 왜냐하면 존재하지 않는 MAC 주소를 사용했으므로 스니핑을 하지않는 호스트는 누구도 Ping Request 를 볼수 없는 것이 정상이기 때문이다.

<ARP를 이용한 탐지>
ping과 유사한 방법으로, 위조된 ARP Request를 보냈을 떄 ARP Response가 오면 프러미스큐어스 모드로 설정되어 있는 것이다.

<DNS를 이용한 탐지>
테스트 대상 네트워크로 Ping Sweep을 보내고 들어오는 Inverse-DNS lookup 을 감시하여 스니퍼를 탐지한다.

<Decoy를 이용한 탐지>
보안관리자는 가짜 ID와 Password를 네트워크에 뿌리고 공격자가 이 ID를 통하여 접속을 시도할때 스니퍼를 탐지한다.

<ARP Watch를 이용한 탐지>
ARP watch는 MAC 주소와 IP주소의 매칭 값을 초기에 저장하고 ARP 트래픽을 모니터링 하여, 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 툴이다.



스푸핑 공격 ( Spoofing Attack)


스푸핑의 사전적 의미는 '속이다'를 의미하며, 네트워크에서 스푸핑 대상은 MAC주소, IP주소 ,포트 등 네트워크 통신과 관련된 모든것이 될수 있다. 스푸핑 공격은 시스템 권한 얻기, 암호화된 세션 복호화하기, 네트워크 트래픽 흐름 바꾸기등 다양하게 사용 된다.


  • ARP 스푸핑 공격

ARP(Address Resolution Protocol)스푸핑은 MAC 주소를 속이는 것이다. 로컬에서 통신하고 있는 서버와 클라이언트의 IP 주소에 대한 MAC주소를 공격자의 MAC주소로 속임으로 상호간에 전달되는 패킷이 공격자에게 향하게 하여 랜의 통신 흐름을 왜곡 시킨다.

공격자는 서버와 클라이언트에게 본래의 IP에 해당하는 MAC주소 말고 가짜 MAC(공격자의) 주소를 알리므로 공격자에게 패킷이 전달이 된다.

윈도우에서는 arp -a 명령을 이용해 현재 인지하고 있는 IP와 해당 IP를 가지고 있는 시스템의 MAC주소 목록을 확인 할 수가 있으며 이를 ARP 테이블이라 한다.

ARP 스푸핑은 TCP/IP 프로토콜 자체의 문제로 근본적인 대책은 없다.



  • IP 스푸핑 공격

IP스푸핑은 쉽게 말해 IP 주소를 속이는 것으로, 다른이가 쓰는 IP를 강탈해 어떤 권한을 획득하는 것이다. 이는 트러스트 관계가 맺어져있는 서버와 클라이언트를 확인한후 클라이언트에 서비스 거부 공격을 하여 연결을 끊고, 공격자가 클라이언트의 IP주소를 확보하여 실제 클라이언트처럼 패스워드 없이 서버에 접근하는 것이다.


  • ICMP 리다이렉트 공격

ICMP리다이렉트는 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격이다.

가령 호스트A에 라우터A가 기본으로 설정되어 있을경우 호스트B에 보내기 위해서는 우선 라우터 A에 전달을 한후 라우터A보다 라우터 B에 가까울경우 호스트A에게 ICMP리다이렉트 패킷을 보내어 자신에게 돌아오지 않게끔한다. 호스트 A는 라우팅 테이블에 호스트 B에 대한 값을 추가하고 , 호스틑 B로 보내는 패킷은 라우터 B로 전달된다. 하지만 라우터B가 사실은 호스트였다면 지속적으로 패킷을 받을수가 있다.

간단히 말해 공격자를 라우터로 인지하고 데이터를 (공격대상이)보내는 것이다.


  • DNS스푸핑 공격

DNS스푸핑은 실제 DNS 서버보다 빨리 공격대상에게 DNS Respose 패킷을 보내 공격대상이 잘못된 IP주소로 웹접속을 하도록 유도하는 공격이다.

DNS패킷은 UDP패킷이므로 세션이 존재하지않으며 먼저 도착한 패킷을 신뢰하고 그 후에 온 패킷은 버린다. 보통 공격자는 로컬에 조냊하므로 지리적으로 DNS서버보다 가깝다. 따라서 DNS서버가 올바른 DNS Response 패킷을  보내주기 전에 클라이언트에게 위조된 DNS Response 패킷을 보낼수 있다.


세션 하이재킹 공격 ( Session Hijacking)


세션하이재킹은 '세션 가로채기'이다. 세션이 '사용자와 컴퓨터, 또는 두대의 컴퓨터 간의 활성화된 상태'이므로, 세션 하이재킹은 두 시스템 간 연결이 활성화 된 상태, 즉 로그인된 상태를 가로채는 것을 말한다.

TCP세션 하이재킹은 TCP가 가지는 고유한 취약점을 이용해 정상적인 접속을 빼앗는 방법이다. TCP는 서버와 클라이언트간 패킷의 연속성을 보장하기위해 각각 시퀀스 넘버를 사용한다. TCP 세션 하이재킹은 각각 잘못된 시퀀스 넘버를 위조해서 연결된 세션에 잠시 혼란을 준뒤 자신이 끼어들어가는 방식을 사용한다.

1. 클라이언트와 서버사이의 패킷을 통제한다. (ARP스푸핑등을 통해 통제)

2. 서버에 클라이언트 주소로 연결을 재설정하기 위한 RST(Reset)패킷을 보낸다. 서버는 클라이언트의 시퀀스 넘버가 재설정된것으로 판단하고, 다시 3-Way HandShaking을 수행한다.

3. 공격자는 클라이언트 대신 연결되어 있던 TCP 연결을 그대로 물려받는다.


세션 하이재킹을 막으려면 텔넷과 같은 취약한 프로토콜을 이용해서는 안되고 SSH와 같이 세션에 대한 인증수준이 높은 프로토콜을 이용해서 서버에 접속해야한다. 다른 대응책으로는 클라이언트와 서버간의 MAC주소를 고정시켜주는 것이다. MAC주소를 고정시키는 방법은 ARP 스푸핑을 막아주기때문에 결과적으로 세션하이재킹을 막을수 있다.


무선 네트워크 공격과 보안


기본적으로 무선랜은 Ethernet Like와 같은 개념으로, 보통 내부 네트워크의 확장으로 이용된다. 무선랜을 사용하려면 내부의 유선 네트워크에 AP(Access Point) 장비를 설치해야 한다.


AP보안

AP보호를 위한 첫번째 사항은 물리적 보호이다. AP도 스위치의 한 종류이므로 적절한 물리적인 통제가 필요하다. 또한 무선랜을 식별하기 위해 SSID를 사용한다. 해당 AP의 존재를 숨기고 싶을때 SSID 브로드캐스팅을 막고 사용자는 해당 AP에 접속하기 위해 SSID를 입력해야한다.


무선랜 통신 암호화 

<WEP의 암호화>

WEP는 무선랜 통신을 암호화 하는 가장 기본적인 방법이며 64비트와 128비트 암호화 방식을 사용하는데, 기본적으로 RC4 암호화 알고리즘을 사용한다. (보안성이 좋지않다)

<WPA & WPA-PSK의 암호화>

WPA/WPA2는 WEP의 보안 취약점이 드러난 이후 그 대안으로 나오게 되었다. WPA는 TKIP 알고리즘을 사용하며 기본적으로 WEP와 같은 RC4 키 스트림 암호화 알고리즘을 사용하지만 보안 강화를 위해 MIC라는 8바이트의 메세지 무결성 코드를 추가했고, IV 생성에서 새로운 배열 규칙을 적용했다.


'Study > Book' 카테고리의 다른 글

정보보안개론 0x06  (0) 2015.01.23
정보보안개론 0x05  (0) 2015.01.22
정보보안개론 0x04  (0) 2015.01.21
정보보안개론 0x03  (0) 2015.01.13
정보보안개론 0x01  (2) 2015.01.11

정보보안개론 0x01

Kail-KM
|2015. 1. 11. 03:52

System Security


시스템이란?

        필요한 기능을 실현하기 위해 관련 요소를 어떤 법칙에  따라 조합한 집합체를 말한다.


시스템 보안은 권한 없는 사용자에 의한 파일, 폴더 및 장치 등의 사용을 제한하여 보호하는 시스템 기능을 말한다.


시스템 관련한 보안기능의 6가지 주제

  • 계정과 패스워드 관리
적절한 권한을 가진 사용자를 식별하기 위한 가장 기본적인 인증 수단
  • 세션 관리
사용자와 시스템 또는 두 시스템 간의 활성화된 접속에 대한 관리
  • 접근 제어
시스템이 네트워크 안에서 다른 시스템으로부터 적절히 보호될수 있도록 네트워크관점에서 접근을 통제
  • 권한 관리
시스템의 각 사용자가 적절한 권한으로 적절한 정보 자산에 접근할수 있도록 통제
  • 로그 관리
시스템 내부나 네트워크를 통한 외부에서 시스템에 어떤 영향을 미칠 경우 해당 사항을 기록
  • 취약점 관리
시스템자체의 결함에 의한 것으로 이를 체계적으로 관리하는 것이 취약점 관리이다.





계정과 패스워드 관리


어떤 시스템에 로그인을 하려면 먼저 자신이 누군지를 알려야 하는데 이를 식별과정이라 합니다.

아이디만으로는 정확한 식별이 어렵기때문에 로그인을 허용하기 위한 확인, 즉 인증을 위한 패스워드를 요청


  • 운영체제의 계정관리

하나의 계정은 위에서 말한바와 같이 식별과 인증으로 접근을 허용 받을수 있다. 운영체제는 시스템을 구성하고 운영하는 가장 기본이므로 운영체제에 대한 권한을 갖는 것은 해당시스템에서 동작하는 다른 응용 프로그램에 대해서도 어느정도의 권한을 갖는 것을 의미한다.

<윈도우의 계정관리>

net localgroup administrators 명령을 사용해 관리자 그룹에 속하는 계정을 확인할수 있다.

(일반 사용자 확인하려면 net users)


//운영체제의 계정관리에서 고려할 또 한가지는 바로 그룹이다.

//윈도우의 주요그룹//

Administrators : 대표적인 관리자 그룹으로 윈도우 시스템의 모든 권한을 가지고 있다.

Power Users : 로컬 컴퓨터에서만 관리를 할수 있는 능력을 가지며, 밖의 네트워크에선 일반사용자이다.

Backup Operators : 윈도우 시스템에서 시스템 파일을 백업하는 권한을 가지고 있다.

Users : 일반사용자가 속하는 기본 그룹으로 네트워크를 통해 서버나 다른도메인 구성요소에 로그인 가능

Guests : 윈도우 시스템에서 Users 그룹과 같은 권한을 가진다.


<유닉스의 계정관리>

유닉스에서 관리자 권한을 UID와 GID로 식별합니다. 관리자 ROOT는 UID와 GID가 둘다 0 이다.

/etc/passwd 를 통하여 사용자를 확인할수 있습니다. 그룹의 경우 /etc/group를 통해 확인이 가능합니다.

계정이 보안상 문제가 되는 경우는 '계정을 가지고 있을 필요가 없는 사람이 가지는 경우뿐' 입니다. 그러므로 적절한 승인절차와 지속적인 관리가 필요하다 할수 있습니다.


  • 데이터 베이스의 계정관리

데이터베이스도 운영체제처럼 계정이 존재하며, 운영체제와 데이터베이스의 계정이 완전히 별도로 존재하기도 하지만, 일반적으로 운영체제 계정을 이용하여 데이터 베이스에 접근할 수 있다.

MS-SQL의 관리자 계정은 sa 이고 오라클의 경우 sys와 system 입니다.

불필요한 경우에는 잠금상태로 바꾸고, 그렇지 않은 경우에는 패스워드를 적절히 바꿔야 한다.


  • 응용프로그램의 계정관리

FTP와 웹서비스와 같은 응용프로그램 역시 고유의 계정을 갖기도 하고, 운영체제와 계정을 공유하기도 합니다. 운영체제와 응용프로그램의 계정이 다른 경우 응용 프로그램의 계정을 소홀히 하는 경우가 있는데 이는 보안상의 위협이 될때가 있다. 그 이유는 취약한 응용 프로그램을 통해 공격자는 운영체제에 접근해서 민감한 정보를 습득하여 운영체제를 공격하는데 이용할수 있기 때문이다.


  • 네트워크 장비의 계정 관리

네트워크 장비도 계정을 생성하여 각 계정으로 사용 할수 있는 명령어 집합을 제한 할수 있다.

  • 패스둬드관리

단순한 패스워드는 사용하지 않아야 한다.




세션 관리


세션의 의미를 한번 다시 짚고 넘어가본다면, 앞에서 말한바와 같이 '사용자와 컴퓨터 또는 두 컴퓨터 간의 활성화된 접속을 의미합니다.


컴퓨터에서 세션을 유지하기 위한 보안사항은 두가지입니다.

  1. 세션 하이재킹이나 네트워크 패킷 스니핑에 대응하기 위해 암호화를 하는 것
  2. 세션에 대한 지속적인 인증(Continuous Authentication)을 하는것 입니다.
                                                                          //1번의 경우 추후에 살펴볼것이며 2번의 경우를 살펴보자

세션에 대한 지속적인 인증

사용자가 인증절차를 통하여 시스템에 접근하는데 성공히였을 경우, 얼마후 같은 아이디로 접근하는 사용자는 처음에 인증에 성공했던 사용자가 맞는지 재인증을 하여야합니다. 하지만 명령 하나마다 이렇게 인증을 할수가 없기에 시스템에서는 이러한 문제를 세션에 대힌 타임아웃설정으로 보완 하고 있습니다.


  • 윈도에의 화면 보호기(다시 시작할때 로그온 화면 표시)
  • 리눅스에서는 일반적으로 /etc/default/login 이나 /etc/profile 에 타임 아웃 값을 명시적으로 설정
  • 데이터베이스의 경우 세션에 대한 타임아웃을 적용하지 않는다(대부분 시스템 간의 세션이기에).
  • 웹서비스를 이용할때도 '지속적인 인증'은 적용된다. 인터넷뱅킹을 할떄 공인인증서 등등



접근 제어 (Access Control)


접근제어는 적절한 권한을 가진 인가자만 특정 시스템이나 정보에 접근할수 있도록 통제하는 것으로 시스템의 보안수준을 갖추기 위한 가장 기본적인 수단이며 시스템 및 네트워크에 대한 접근 제어의 가장 기본적은 수단은 IP와 서비스 포트입니다.


  • 운영체제의 접근 제어

일반적으로 운영체제에 대한 접근 제어를 언급하면, 윈도우의 경우 터미널서비스를 생각하고 유닉스의 경우 텔넷이나 SSH에 대한 접근 제어를 생각합니다. 하지만 이에 대한 접근 제어를 수행하는 것만으로 운영체제에 대한 접근제어를 모두 수행했다고 생각하면 안됩니다. 운영체제에 대한 적절한 접근 제어를 수행하기 위해서는 가장 먼저 운영체제에 어떤 관리 인터페이스가 운영되고 있는지를 파악해야 합니다.


일반적 사용 관리 인터페이스

운영체제



서비스 이름 

사용 포트  

특징 

텔넷 

23 

암호화 되지 않음 

SSH 

22 

 SFTP가능

XDMCP 

6000 

유닉스용 GUI(Xmanager) 

FTP 

21 

파일전송 서비스 

윈도우 


터미널 서비스  

3389 

포트변경가능 

GUI 관리용 툴 

VNC,Radmin 등 

텔넷은 암호화 되지 않은 세션을 제공하며, FTP 또한 스니핑을 토해 접근 아이디와 패스워드를 획득할수 있으므로 가능하면 SSH나 XDMCP를 사용하는 것이 좋다.


운영체제에 대한 접근 목적의 인터페이스를 결정했다면, 이제 접근제어 정책을 적용해야합니다. 시스템에 대한 접근제어 정책은 기본적으로 IP를 통해 수행합니다. 유닉스의 SSH,FTP등은 TCPWrapper을 통해 접근제어가 가능 합니다.

TCPWrapper가 설치되면 inetd 슈퍼데몬은 연결을 TCPWrapper의 tcpd 데몬에 넘겨준다. tcpd데몬은 접속을 요구한 클라이언트에 적절한 접근권한이 있는지 확인후 해당 데몬에 연결을 넘겨주며 이떄 연결에 대한 로그도 실시 할수 있다.


  • 데이터베이스의 접근 제어

데이터베이스는 조직의 영업이나 운영정보를 담고 있는 핵심 응용프로그램으로, 데이터베이스에 대한 적절한 접근 제어는 필수적이다. 오라클의 경우 허용ip와 차단ip를 설정할수가 있으며 MS-SQL은 윈도우의 다른 서비스처럼 설치된 방화벽을 통해 ip접근 제어를 수행해야 한다. MS-SQL에서는 윈도우 인증모드와 함께 SQL인증을 모두 사용할수 있는 혼합인증모드도 지원한다.


  • 응용프로그램의 접근 제어

응용프로그램에 따라 접근제어를 제공하는 경우도 있고  그렇지 않은 경우도 있다. 하지만 최근의 상용 응용프로그램의 경우 IP에 대한 접근제어를 제공하는 경우가 많다.


  • 네트워크 장비의 접근 제어

네트워크 장비도 ip에 대한 접근제어가 가능하다.



권한 관리


  • 운영체제의 권한관리

<윈도우의 권한 권리>

윈도우는 NTFS(New Technology File System)을 기본 파일 시스템으로 사용한다.

모든 권한,수정,읽기 및 실행, 디렉터리 내용보기, 읽기, 쓰기


위의 권한은 다음과 같은 규칙이 적용된다.

규칙1 : 접근권한은 누적된다.

개별사용자가 여러 그룹에 속하면 특정 파일이나 디렉터리에 대한 접근 권한이 누적 된다.

규칙2 : 파일에 대한 접근 권한이 디렉터리에 대한 접근 권한보다 우선한다.

디렉터리의 권한 설정보다 파일에 대한 권한 설정이 우선한다

규칙 3 : '허용'보다 '거부'가 우선한다.

허용권한없음이 거부를 의미하지 않으며, 중첩되는 권한중 명백한 거부가 설정되어 있으면 허용보다 거부가 우선하여 적용된다.

<유닉스의 권한 권리>

drwxrwxrwx 117 root root

첫번째 인자의 경우 파일의 종류와 권한으로 나타난다.

첫번째 root의 경우 파일에 대한 소유자이며, 두번쨰 root의 경우 파일에 대한 그룹이다.


  • 데이터베이스의 권한관리

<질의문에 대한 권한 관리>

데이터베이스에 대한 권한을 관리하려면 먼저 데이터베이스에서 사용하는 질의문(Query)을 알아야 한다.

DDL (Data Definition Language) : 데이터 구조를 정의하는 질의문

DML(Data Manipulation Language) : 데이터베이스의 운영 및 사용과 관련해 가장 많이 사용하는 질의문이며 데이터의 검색과 수정들을 처리한다.

DCL (Data Control Language) : 권한 관리를 위한 질의문

DDL과 DML은 DCL에 의해 허용(Grant) 또는 거부(Deny)됩니다.

<뷰에 대한 권한 관리>

데이터베이스에 대한 중요한 보안 사항중 하나는 뷰(View)이다. 뷰는 각 사용자에 대해 참조 테이블의 각 열에 대한 권하을 설정하는 것이 불편해서 만든 가상 테이블이다.


  • 응용프로그램의 권환 관리

응용프로그램의 권한 설정은 관리자 계정고 일반 사용자 계정으로 나뉜다. 

응용프로그램에 보안상 취약점이 있을 경우 공격자는 이 취약점을 통해 해당 프로세스의 권한을 얻을수 있다.


로그 관리


Authentication(인증) : 자신의 신원을 시스템에 증명하는 과정

Authorization(인가) : 신원이 확인된 사람이 출입문에 들어가도록 허락되는 과정

Accounting : 시스템에 로그인한 후 시스템이 이에 대한 기록을 남기는활동

//AAA라 부르기도 합니다.

로그정보는 해커나 시스템에 접근한 악의적인 사용자를 추적하는데 많은 도움이 된다.


  • 운영체제의 로그 관리

윈도우의 경우 이벤트(Event)라 불리는 중앙 집중화된 형태로 로그를 수집하여 저장하지만, 유닉스는 로그를 여러곳에 산발적으로 저장한다. 그래서 윈도우의 경우 관리가 편하지만 공격자가 하나의 로그만 삭제하면 되므로 위험이 크다. 그에 반해 유닉스의 경우는 관리가 어렵지만 윈도우보다 공격자를 찾는것이 훨씬 쉽다.

<윈도우의 로그>

제어판 > 관리도구 > 로컬보안정책 > 로컬정책> 감사정책 을 통하여 로깅정책을 적용하면 제어판 > 관리도구 > 이벤트 뷰어를 통하여 쌓이는 로깅정보를 확인 할수 있다.

>윈도우의 로그 종류

개체액세스 감사            //객체 대하여 접근을 시도하거나 속성변경 등을 탐지

계정관리 감사  

계정로그인 이벤트 감사

권한사용 감사

로그인 이벤트 감사

디렉터리 서비스 액세스 감사

정책변경 감사

프로세스 추적 감사

시스템 이벤트

<유닉스의 로그>

/usr/adm , /var/adm , /var/log , /var/run 과 같은 위치에 기록한다.

-UTMP :유닉스 시스템의 가장 기본적인 로그로 로그인 계정 이름, 환경, 로그인한 디바이스, 셸의 PID 등등의 저장을 확인할수 있다. UTMP는 텍스트가 아닌 바이너리 형태로 로그가 저장되며, w, who, users, whodo, finger 등의 명령어를 사용하여 로그를 확인한다

-WTMP : 위와 비슷하게 사용자들의 로그인,아웃, 시스템의 재부팅에 대한 정보를 담으며 last 명령을통해 확인

-Secure : 파일에 원격지 접속 로그와 su 및 사용자 생성등의 보안과 직접적으로 연관된 로그가 저장된다.

-History : 명령창에서 실행했던 명령에 대한 기록이 저장

-Syslog : 시스템의 운영과 관련한 전반적인 로그로써 서비스의 동작과 에러등 다양한 로그를 남긴다.


  • 데이터베이스의 로그 관리

<MS-SQL의 로그>

MicroSoft SQL Server Management Studio에서 서버를 선택한뒤, 속성 팝업창의 [보안] 메뉴애서 일반 '로그인 감사'와 'C2 감사 추적'을 설정 할 수있다. 

C2감사추적은 상세한 정보를 로그로 남기는 것으로, 빈번한 접속이 있는 경우에는 대량의 로그를 생성할 수 있다.

<오라클의 로그>

문잠감사 : 지정된 문장을 실행시켰을 경우 기록을 남긴다.

권한감사 : 특정한 권한을 사용했을 때 기록을 남긴다.

객체감사 : 특정한 객체에 대한 작업을 했을 경우 기록으 남긴다.


  • 응용프로그램의 로그 관리

응용프로그램 중에 보안과 관련되어 가장 중요도가 높은것은 웹서버와 FTP서버이다.

웹서버의 로그 분석은 웹해킹이 일어나는 원리를 이해하짐 못하면 로그 분석 자체가 어렵다. 따라서 웹서버로그를 분석하기 위해서는 반드시 웹해킹에 대한 상세한 지식의 획득이 선행되어야 한다.

IIS 웹 서버의 로그

아파치 웹서버의 로그


  • 네트워크 장비의 로그 관리

네트워크의 경우 일반적으로 대량의 트래픽이 생성되고, 대부분의 트래픽이 일시적으로 존재했다가 사라지기 떄문에 살펴볼수 있는 로그가 다양하지는 않다. 

-네트워크 보안 시스템의 로그

침입차단, 탐지, 방지 시스템 등 다양한 보안 시스템의 로그를 확인할수 있다. 이러한 다양한 보안 시스템의 로그는 통합로그관리시스템(SIEM)에 의해 수집되고 관리되기도 한다.

-네트워크 관리 시스템의 로그

네트워크 트래픽 모니터링 시스템과 네트워크 관리 시스템의 로그를 참고 할 수 있다.

-네트워크 장비인증 시스템의 로그

대규모의 네트워크를 운영하는 곳에서는 라우터나 스위치의 인증을 일원화 하기 위해 인정 서버로 TACACS+를 사용하기도 한다.


라우터나 스위치를 제외한 대부분의 장비드에는 저장 공간이 없어 별도로 로그서버를 두고 운영한다.

각 네트워크 장비에서 생성되는 로그는 네트워크를 통해 로그서버로 전송된다. 이는 보안에도 장점이 있는데 바로 공격자가 로그를 삭제하기 위해서는 로그서버의 위치를 찾아야 하고, 이 로그서버에 대한 해킹도 성공헤애 한다는점이다.


취약점 관리


  • 패치관리

보안설정을 아무리 잘해도 시스템 자체에 취약점이 존재하면 시스템 운영자 수준에서 이를 막을 수 있는 방법은 없다.  이럴 경우 제작사가 만들어 배포하는 패치(Patch) 또는 서비스 팩을 적용해야 한다.


  • 응용프로그램별 고유 위험 관리

응용프로그램중에는 해당 응용프로그램을 통해 운영체제의 파일이나 명령을 실행시킬수 있는 것이 있다. 만약 그 해당 응용프로그램의 관리자 계정의 패스워드가 취약한 경우 그에 대한 권한 뿐만 아니라 운영체제에 대한 접근 권한도 노출 될수 있다.


  • 응용프로그램을 통한 정보수집 제한

응용프로그램이 운영체제에 직접적인 영향을 미치지 않아도 응용 프로그램의 특정 기능이 운영체제의 정보를 노출시키기도 한다.


*본 게시글은 정보보안개론(한빛미디어)을 참고하여 복습차원에서 만든 것임을 밝힙니다.


'Study > Book' 카테고리의 다른 글

정보보안개론 0x06  (0) 2015.01.23
정보보안개론 0x05  (0) 2015.01.22
정보보안개론 0x04  (0) 2015.01.21
정보보안개론 0x03  (0) 2015.01.13
정보보안개론 0x02  (0) 2015.01.12