강의 정리/화이트해-카

액티브 스캐닝 (Active Scanning) (2)

네른 2019. 4. 18. 21:01

지난 글에 이어서, 액티브 스캐닝의 종류에 대해 언급하고자 한다!

 

Nmap을 통한 포트 스캐닝

지난 번에, nmap을 이용하여 살아있는 호스트를 확인하는 법에 대해 알아보았다.

이번에는, 특정 호스트에 살아있는 서비스, 즉, 열린 포트의 정보를 얻는 법을 확인해보자.

내 호스트의 경우, /etc/services와 같은 경로에 포트별 정보를 확인할 수 있다.

  - 포트가 열려있다는 것은 해당 포트를 사용하는 서비스가 동작중임을 나타내며, 주로 사용하는 포트인 경우 서비스를 예측해 볼 수 있다.

  - 예로, 80번 포트가 열려있는 경우 웹이 열려있을 확률이 매우매우매우높다. 포트는 한 서비스가 해당 포트를 이용중인경우 중복으로 사용할 수 없기 때문이다.

 

본격적으로 nmap의 사용법에 대해 알아보자.

  - nmap ip_addr 만 입력하더라도 포트에 대한 정보는 확인할 수 있다. 

  - 위 명령어는 connect scanning으로, -sT (TCP SCAN)과 동일하다. 이는 TCP handshake 과정을 거쳐 스캐닝을 진행하기에 로그가 남는다.

  - 만약 로그가 남는 것을 원치 않는다면! -sS (stealth scan) 옵션을 사용하면 된다. 명령어 전체를 root 계정으로 수행하면 자동으로 -sS로 실행된다고 한다.

  - -sU는 UDP scanning으로, udp 스캐닝은 보낸 패킷에 응답이없으면 일정 시간을 기다린 후 닫혀있는 것으로 확인하기에 오래걸릴 뿐 아니라 오탐이 많다.

  - p 옵션을 통해 범위를 지정해 줄 수 있다. -p 20-40 이런식으로 입력하면 20~40번 포트만 스캐닝을 수행한다.

  - 스캐닝 결과에 open | filtered 라는 결과가 나오면, 이는 방화벽 등으로 인해 정확한 결과를 얻지 못한 것이다.

  - -O 옵션은 대상의 OS 정보(OS fingerprinting)를, -sV 옵션은 서비스의 버전 정보를 함꼐 출력한다. 

  - 물론, 이 모든 것을 한번에 수행해주는 옵션도 있다. nmap -a ip_addr 를 이용하면 된다.

 

nmap의 경우, 이러한 기본적인 옵션 외에도, 사용자가 직접 스크립트를 생성하고 이를 사용할 수 있다.

이를 nmap scripting engine이라고 부르며, 이를 이용해 호스트에 공격을 수행하거나 정보를 수집할 수 있다.

기본적으로, /usr/share/nmap/scirpts (kali linux 기준)에 일부 스크립트가 존재한다.

  - 이를 사용하기 위해 nmap ip_addr -p port_num --script=스크립트이름 을 사용하면 된다.

 

SMTP를 이용한 정보 수집

SMTP 포트가 열린 경우, VRFY 명령어를 통해 해당 SMTP 서비스에 어떤 유저(계정)가 존재하는지 있다.

VRFY 명령어의 경우, 계정이 있는경우 계정 정보를 돌려주며 없는 경우 정보가 없다는 메시지가 출력된다.

이 명령어를 이용하여 brute force, dictionary attack 등을 수행하면 계정 정보를 획득 할 수 있다.

물론, 이를 해주는 툴도 당연히 존재한다. smtp-user-enum이라는 프로그램으로, 특정 파일 혹은 입력을 이용하여 SMTP에 VRFY 공격을 수행해준다.

  - smtp-user-enum -U filename -t ip_addr 을 이용하면 입력한 파일을 사용하여 호스트에 VRFY를 수행해본다.

  - kali linux에는 물론 이러한 계정 리스트가 이미 입력되어있다. /usr/share/wordlists/metasploit/namelist.txt 에는 사용자 계정명으로 사용할법한 이름들이 나열되어있다.

 

Nikto를 이용한 웹서버의 정보 수집

Nikto란, 웹서버에 대한 여러 정보를 수집하거나 취약점을 테스트해볼 수 있는 대표적인 도구이다.

사용법은 간단하다. -h 옵션이 help가 아니니, -help 를 이용해야 하는 것에 주의하여야 한다.

  - nikto -h ip_addr -p port_num 과 같은 형식으로 사용하면 된다. 포트의 경우 웹서버는 대부분 80포트를 사용하기에 정보를 입력하지 않으면 자동으로 80 포트에 대해 스캐닝을 수행한다.

 

추가. 위에서 이야기한 모든 것을 한번에 해주는 도구도 있다. sparta라는 도구로, gui를 통해 이를 매우 간단하게 수행할 수 있도록 돕는다.