네트워크/시스템 취약점 스캔/분석 기술(1)

|

1) 취약점 분석의 의미

취약점 분석은 자신의 취약점 데이터베이스(or 지식, 기술, 경험)를 참조해 대상 시스템에 존재하는 취약점을 검색/나열하는 것을 일컫는다.

운영체제마다 사용하는 네트워크 구현 방식이 다르기 때문에 네트워크로 특정 데이터를 보냈을 때의 반응은 각기 다르게 응답하게 된다. 이런 고유한 형태의 응답은 취약점 스캔/분석의 단계를 통해 운영체제 버전 정보, 패치정보 등을 알아내는 데 사용하는 Fingerprint 역활을 하는데 도움을 준다.

여기에 (무료/상용)취약점 스캐너는 주어진 정보를 활요해 원격 시스템 로그인에 필요한 사용자 자격 증명을 설정하거나, 소프트웨어를 오픈하거나, 서비스의 패치 여부까지 판별해 낼 수 있는 수준이 되었다. 취약점 스캐너는 이렇게 얻은 결과로 시스템에서 탐지된 모든 취약점 보고서를 작성할 수 있으며, 이렇게 발견된 취약점 목록은 추후 Penetration Test에 활용되기도 한다.

 

2) 취약점 스캐너를 이용한 취약점 스캐닝

취약점 스캐너는 일반적으로 대량의 네트워크 트래픽(부정한)을 생성하게 된다. 이 때문에 모의해킹을 수행할 때 탐지되지 않아야 하는 테스트가 필요한 경우는 사용하지 않는 것이 좋다. 하지만 숨길 필요가 없는 테스트를 진행할 때에 이러한 취약점 스캐너는 시스템의 패치 수준과 취약점 식별을 수동으로 조사하는 것보다 시간을 절약할 수 있게 해준다.

자동화된 스캐너를 사용하든 수동으로 스캐닝을 진행하든지 간에 스캐닝은 모의 해킹 단계에서 가장 중요한 단계 중 하나이며, 철저하게 수행할수록 고객에게 가치있는 결과를 제공할 수 있게 된다는 사실을 명심하자.

 

# 일반적이 수동 스캐닝방법

가장 기본적인 수준에서 스캔이 어떻게 수행되는지 생각해보자.

예를 들어, nc(netcat)을 사용하여 대상시스템을 배너 그래빙(banner grabbing)하면, 아래와 같은 형태로 정보를 획득할 수 있을 것이다.

( 배너 그래빙: 원격 네트워크 서비스에 접속하고 반환되는 서비스 배너(확인) 문구를 살펴보고 추측 것으로, 웹, 파일 전송, 메일 서버 같은 다양한 네트워크 서비스는 원격으로 접속하자마자 즉시 배너를 반환하거나 특정 명령의 응답으로 배너를 반환하는 성질을 이용한 기술 )

 

- 대상 시스템: metasploitable v2 ( 192.168.100.2 )

- 스캔 시스템: bt5 r3 ( 192.168.100.9 )

위 결과는, TCP PORT 80 웹 서버에 접속하고, 응답으로 원격 서버에서 반환되는 헤더 정보를 확인하기 위해 "GET HTTP /1.1"을 요청한 결과이다.

반환된 정보를 통해 TCP PORT 80을 이용하는 대상시스템은 Apache/2.2.8을 사용하는 Ubuntu 기반의 웹 서버라는 사실을 알 수 있다. 이 정보는 향후 모의 해킹을 시도할 때 도움이 될 수 있을 뿐만 아니라, 자동화된 취약점 스캐닝을 이용할 때에도 상당한 도움이 될 수 있다.

 

다만, 위 내용은 기본적인 수준에서 보여주기 위한 내용으로 실전에서 이와같은 스캐닝은 그렇게 간단하지 않다.

이러한 취약점 스캔은 시스템과 애플리케이션 구성의 미묘한 차이로 인해 생각지 못한 오탐(false positive)와 미탐(false negative)이 발생될 수 있다. 따라서, 수동으로 수행하든 자동으로 수행하든 결국에는 발견된 취약점을 어떻게 확인하고 판단할지는 스캔을 수행하는 담당자의 몫이 아닐까 생각한다.

 

서두는 위의 글로 마치고, 다음에는 실제로 서비스되고 있는 몇 가지 자동화된 취약점 스캐너들을 이용하는 방법과 결과들을 정리하는 글을 써봐야겠다.^^

 

And