남기면 좋잖아

4장 정보 수집 상세 단계 본문

Penetration testing/Kali Linux

4장 정보 수집 상세 단계

Beautiful Hugo 2017. 5. 19. 05:00
반응형

 - Contents -



4.1 서비스 정보 수집

4.2 IDS/IPS 탐지 여부 확인





4장에서는 3장에서 이뤄진 호스트/네트워크 정보 수집 이후에 더욱 상세한 정보를 획득하는 단계 입니다.

또 웹 서비스 앞단의 IPS/IDS에 대한 작동 여부 검토, 외부 검색 페이지에서 수집된 정보를 통해 웹 서비스에 대한 위험성을 다시 한 번 확인할 수 있는 단계 입니다.





4.1 서비스 정보 수집




이번 장에서는 대상 서비스의 불필요한 포트가 오픈돼 있는지, 서비스에서 간단하게 파악할 수 있는 취약점 여부를 알아봅시다.

엔맵에 대한 내용이 아주 중요한만큼, 방대하니 이점 유의하시고 봐주시면 좋겠습니다..





4.1.1 Nmap : 서비스 취약점 정보 확인


엔맵은 보안 공부를 하면서 한 번쯤은 들어본 도구로, 포트 스캔과 취약점 진단을 위한 대표적인 도구입니다.

실무에서도 꼭 사용하게 된다고 하니, 아주 중요하지 않을 수 없겠네요.



주요 옵션 

설명 

  -sT 

TCP OPEN 스캔 

  -sS 

TCP Half Open 스캔 

 -sF

TCP FIN 스캔 

 -sN

TCP NULL 스캔 

 -sX

TCP Xmas 스캔 : FIN, PSH, URG 패킷 이용 

 -sP

Ping 을 이용한 호스트 활성화 여부확인 

 -sU

UDP 포트 스캔 

 -O

대상 호스트의 운영체제 판별 



참고로 스캔하는 대상에 단순히 로그를 남기지 않거나, 공격 대상을 속이고 자신의 위치 또한 숨기는 스캔을 Stealth 스캔 이라고합니다.
그리고 그 스캔 종류엔 Half, FIN, Xmas, Null 스캔이 있습니다

단순한 예제로, Half 스캔을 이용해 21번 포트가 open 되있는지 스캔하려면

# nmap -sS -p 21 <공격대상 IP>




로 명령어를 치시면 간략하게 결과를 출력해냅니다.
아래 패킷은 wireshark 라는 도구를 이용하여 스니핑한 정보를 같이 보여드렸구요.

half 스캔 특성상 공격자가 SYN을 보내고나서 대상으로부터 SYN,ACK 을 받으면 open 된것이고, RST,ACK 을 받으면 close 된것으로, 패킷으로 봐도 정상적인걸 확인할 수 있습니다.

-p 부분에 포트를 범위식으로 22가 아닌 1-100 으로 1번포트부터 100번포트까지 지정할 수 도있습니다.

그리고 -oA 란 옵션을 붙여서 xml 파일로도 저장하여 결과물을 저장할 수도 있습니다.

# nmap -sS -p 21 <공격대상 IP> -oA <파일명>.xml


이런 옵션들 하나하나가 실무에서 쓰이기 정말 딱 좋은것 같습니다.

이 외에도 엔맵 옵션은 자세히 설명하면 책 한 권 분량이기 때문에 여기에서 마치고 엔맵 NSE에 대해 알아보겠습니다.




4.1.2 Nmap 스크립트 엔진


엔맵은 네트워크 대역의 모든 호스트 정보와 서비스 정보를 파악하고 지속적인 모니터링을 할 때 유용하게 사용합니다.

모의 해킹 진단의 정보 수집 단계 에서는 항상 엔맵이 포함될 정도로 많이 사용하죠. 

속도가 매우 빠르며 서비스 포트 정보뿐 아니라 운영체제의 정보, 버전 정보까지 파악할 수 있습니다.

하지만 진단하는 입장이나 관리하는 입장 모두 더욱더 많은 정보 수집을 원하기 시작했고, 옵션이 늘어날 때마다 시간도 많이 소요되며 유연성이 없었습니다. 


그래서 개발된 것이 NSE(엔맵 스크립팅 엔진)이며, 엔맵 4.2 버전부터 적용됐습니다. NFS, SMB, RPC 등의 상세한 서비스 정보들을 수집할 수 있으며, 도메인 검색, 다른 네트워크 대역 서버의 백도어 설치 여부, 취약점 여부 등 많은 작업을 수행할 수 있습니다.


그리고 NSE를 개발하는데 루아를 선택을 했는데요. 첫번째 이유는 사용하기 쉽고, 배우기 쉽다. 두번째 이유는 라이브러리를 모두 공개하기 때문에 어떤 플랫폼에든 반영할 수있다. 라는 이유였습니다.



이러한 NSE 라이브러리는 칼리리눅스 기준 /usr/share/nmap/nselib/ 경로에 저장돼 있고,

엔맵에서 기본적으로 지원하는 스크립트는 /usr/share/nmap/scripts/ 경로에 저장돼 있습니다. 

본인이 개발한 소스가 있다면 이 디렉터리에 저장한 후에 -script-updatedb 명령을 하면 데이터가 업데이트가 됩니다.

그리고 엔맵 버전이 올라가면서 NSE에 대한 카테고리별 항목수도 점점 늘어나고 있으니 꾸준한 업데이트 추천드리겠습니다.


버전을 확인하시려면 # nmap -v 명령을 통해 확인하시면 되겠습니다. (현재 7.40버전이 최신)



 주요 스크립트

설명 

nmap --script "default or safe" 

nmap --script "default, safe" 와 같은 표현으로, default나 safe의 카테고리 검색 

nmap --script "default and safe" 

default 와 safe의 카테고리 검색 

nmap --args =,={=},={,}

작성자가 스크립트를 직접 정의 

nmap --script "http-*"

http- 로 시작하는 모든 파일을 스캔. 

and, or 연산자도 사용가능 

nmap --script "not intrusive"

intrusive 만 제외하고 검색 

--script-trace:

--packet-trace와 같이 사용 

--script-updatedb

 scripts/script.db의 정보를 업데이트



위 옵션들은 스크립트 관련 옵션 중 대표적인 옵션으로, 이 정도의 옵션만 알면 업무에 큰 문제는 없을 것입니다.

사용은 간단하게 -sC 옵션을 사용해도되고 제공되는 카테고리, 스크립트 파일 이름, 혹은 정말 실행시키고자 하는 디렉터리의 모든 스크립트 파일들을 정해 --script 옵션을 지정해주면 됩니다.


NSE 스크립트는 auth, broadcat, brute, default, discovery, dos, exploit, external, fuzzer, intrusice, malware, safe, version, vuln 등으로 카테고리가 이뤄져 있습니다. 

한번씩 카테고리별로 각각  어떤 역할들인지 보시면 도움이 될 것같습니다.


(https://nmap.org/nsedoc/lib/nmap.html)





위 그림은 vuln 으로 설정하여 진단한 예시 입니다. 이렇게 카테고리에 포함된 것만으로도 많은 정보를 획득할 수 있습니다.



4.1.3 Nmap과 웹 서비스의 자동 스크린샷 기능 활용


웹 서비스에서 응답한 결과를 PDF 형식이나 이미지 형식으로 변환해주는 도구 wkhtmltox 와 엔맵 NSE를 결합해 네트워크를 진단할 때 활용할 수 있는 도구를 소개하겠습니다.


칼리리눅스에는 기본적으로 설치되있지 않기때문에 건너뛰셔도 무방하지만, 생각보다 유용하기 때문에 한번쯤 해보시면 괜찮을 것같아요. 먼저 wkhtmltox 최신 버전을 설치하셔야 됩니다.


1. 다운로드

# wget https://downloads.wkhtmltopdf.org/0.12/0.12.4/wkhtmltox-0.12.4_linux-generic-amd64.tar.xz


2. 압축해제

# xz -d wkhtmltox-0.12.4_linux-generic-amd64.tar.xz

# tar -xf wkhtmltox-0.12.4_linux-generic-amd64.tar


3. 명령어 /usr/local/bin 에 옮기기

# cd wkhtmltox/bin/

# cp wkhtmltoimage /usr/local/bin


여기까지 wkhtmltoimage 라는 도구가 셋팅이 되셨습니다. 그리고 이 도구를 이용할 nmap 스크립트를 받습니다.


1. Nmap-Tools 다운

# git clone git://github.com/SpiderLabs/Nmap-Tools.git


2. 스크립트 수정

# cd ./Nmap-Tools/NSE

# vi ./http-screenshot.nse


이 스크립트가 2012년 정도에 올라온것 같은데요. 그 당시 wkhtmltoimage 도구가 wkhtmltoimage-i386 인 이름으로 사용되고있어서 현재 도구이름이 매칭이 안되기때문에 스크립트 그대로 쓰게되면 도구가 실행이 안됩니다. 


local cmd = "wkhtmltoimage-i386 -n ~~" 이 부분의 '-i386'을 지우고 local cmd = "wkhtmltoimage -n ~~" 이렇게 바꿔줍시다.


3. 스크립트 복사하여 경로 설정

# cp ./http-screenshot.nse /usr/share/nmap/scripts/


4. Nmap 스크립트 업데이트

# nmap --script-updatedb


현재 책에서는 wkhtmltoimage 다운로드 사이트도 현재와는 다르고 스크립트 내용도 다르기 때문에 잘 안되실수 있습니다.

다운로드 받기전에 직접 검색하여 들어가보고 확인후에 받는 걸 추천드리고 싶습니다..


자 여튼 모든 준비는 끝났으니 한번 테스트 해보도록 하겠습니다.




취약 서버에 default와 http-screenshot 기능을 동시에 써서 -oA 옵션으로 결과물 저장을 해봤습니다.

그랬더니 80번 포트와 8180포트에 웹 서비스가 동작하는 것까지 보여주고 그에 대한 스크린샷까지 떠왔습니다.

나머지 gnmap, nmap, xml 파일은 제가 지정해놓은 디렉터리에 결과물들이 저장이 잘 되었구요. 

스크린샷들은 명령어를 실행시킨 위치에 저장 되었습니다. 그래서 제가 따로 이미지 파일들만 옮겨놓았습니다.


성공적인 테스트였고 이를 잘 활용하면 수동으로 하나하나 접근하지 않더라도 결과까지 이미지로 만들어주니 진단할때 매우 편리할 것같습니다.







4.2 IDS/IPS 탐지 여부 확인




이제까지 대상 서비스의 불필요한 포트가 오픈돼 있는지, 서비스에서 간단하게 파아갈 수 있는 취약점 여부를 알아봤습니다.

이번엔 서비스에 접근하기 전에 네트워크 장비 앞에서 추가적인 정보를 획득하는 방법을 살표보겠습니다.




4.2.1 wafw00f : 웹 방화벽 방어 여부 확인


wafw00f는 파이썬 스크립트로 웹 서버가 웹 애플리케이션 방화벽으로 보호받고 있는지 탐지하는 도구입니다.

이 도구를 사용함으로써 방화벽의 존재 유무를 탐지하면 테스트 전략을 더욱 발전시킬수 있을 뿐만 아니라, 웹 방화벽을 우회할 수 있는 고급 우회 기술도 개발할 수 있습니다.


간단하게 테스트를 해보자면


# wafw00f <대상 도메인>



이런식으로 결과를 보여줍니다.


처음 www.example.com 에 테스트를 했을경우엔 방화벽이 존재한 경우이고, 

두번째 192.168.0.11 (취약서버) 인 경우엔 방화벽의 보호를 받지 않는 경우로 보시면 됩니다.









이번 4장에서는 진단자 입장에서 네트워크 앞단에서 상세하게 정보를 수집할 수 있는 방법을 소개했습니다.

정보 시스템에 대한 작동 여부를 확인하는 작업과 웹 서비스에서 확인하는 것을 통해 위험성을 확인할 수 있었네요..

5장에서는 이제까지 획득한 정보로 어떤 취약점을 도출해내는지 살펴보겠습니다.

다들 좋은 하루되세요~~

반응형
Comments