본문 바로가기

IT/네트워크 보안과 해킹

풋프린팅과 스캐닝


1. 풋프린팅(Footprinting)

A. 사회 공학(social engineering)

 

2. 스캔

A. ping과 ICMP 스캔

ICMP를 이용해 공격 대상 시스템의 활성화 여부를 알아보는 방법은 다음 네 가지가 있다.

 ㄱ) Echo Request(Type 8)와 Echo Reply(Type 0)를 이용한 방법

 ㄴ) Timestamp Request(Type 13)와 Timestamp Reply(Type 14)를 이용한 방법

 ㄷ) Information Request(Type 15)와 Information Reply(Type 16)를 이용한 방법

 ㄹ) ICMP Address Mask Request(Type 17)와 ICMP Address Mask Reply(Type 18)를 이용한 방법

 

가장 일반적인 방법은 Echo Request(Type 8)와 Echo Reply(Type 0)를 이용한 것, 옵션 없이 ping유틸리티를 이용

 

ping 192.168.0.7

 - ICMP 패킷 길이에 대한 정보도 나온다. 운영체제마다 보내는 바이트 길이가 다르다

 - 윈도우 시스템은 32바이트 ICMP Echo Request 패킷을 생성하여 보낸다.

 - 유닉스와 리눅스 같은 운영체제는 대부분 56바이트. 각 바이트의 내용은 의미 없는 알파벳으로 채워진다.

 

 - 공격 대상에서 보내온 ICMP Echo Reply 패킷의 크기도 볼 수 있다. 공격자가 보낸 패킷과 크기가 같다.

  - TTL값도 나온다. 세계 어느 곳에 있는 시스템일지라도 보통 20여 개 이상을 지나는 경우는 드물다.

 

라우터나 방화벽 등에서 ICMP Echo Request 패킷을 막는 경우

 ㄱ) Timestamp Request 패킷 이용

       - Reply 패킷이 돌아오면 상대 시스템이 활성화되어 있음을 말해준다.

  ㄴ) Information Request 패킷 이용

       - 메인 프레임의 단말기처럼 부팅할 때 자신의 디스크가 없는 시스템이 스스로 IP를 설정할 수 있도록 하는 패킷

       - Reply 패킷이 돌아오면 상대 시스템이 활성화되어 있음을 말해준다.

  ㄷ) ICMP Address Mask Request와 Reply 패킷을 이용

       - 단말기가 부팅될 때 자신이 속한 네트워크의 서브넷 마스크를 알기 위해 보내는 것

- Reply 패킷이 돌아오는지 확인함으로써 상대 시스템의 활성화 여부 확인

 

- ICMP 패킷을 이용한 앞의 세 가지 방법이 모든 운영체제에서 작동하지는 않는다.

- Information과 Timestamp는 많은 운영체제 지원

- ICMP를 이용한 여러 가지 ping은 시스템 하나를 조사하기에 적절, 큰 네트워크에서 활성화 시스템을 찾는 데는 효과적이지 않다.

- 네트워크 전체에서 활성화 시스템을 찾는 일을 스위핑(sweeping)이라고 한다.

- 스위핑 툴로는 fping이 있다

 

B. TCP와 UDP를 이용한 스캔

 - 포트 스캔(port scan) 방법

 - TCP open scan, TCP Open Ident scan, stealth scan( TCP half scan, fin null xmas scan)

 

 - 방화벽을 피하기 위해 시간차 공격 개발

 - 아주 짧은 시간 동안 많은 패킷을 보내는 방법과 아주 긴 시간 동안 패킷을 보내는 방법이 있다

 - Paranoid : 5분이나 10분 간격으로 패킷을 하나씩 보낸다.

 - Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위로 패킷을 보낸다

 - Polite : 패킷을 0.4초 단위로 보낸다

 - Normal : 정상적인 경우

 - Aggressive : 호스트에 대한 최대 타임아웃은 5분이며, 패킷당 1.25초까지 응답을 기다린다

 - Insane : 호스트에 대한 최대 타임아웃은 75초, 패킷당 0.3촊지 응답을 기다린다.

 

실습 6-1 다양한 방법으로 스캔하기

 fping, hping, sing, nmap을 이용하여 시스템의 홀성화와 포트에 대한 여러 가지 스캔을 수행해본다.

 

공격자 시스템 : 윈도우 XP와 리눅스

공격 대상 시스템 : 윈도우 서버 2003

필요 프로그램 : fping, hping3, sing, nmap

 

- 설치하려는 툴, 패키지 라이브러리 검색은 list 명령 이용

- 설치는 install 명령

- yum list [패키지 명칭, * 사용 가능]

- 예 : yum list fping*

 

fping -g 192.168.0.0/24

 - 스캔 전에 네트워크의 시스템 목록 확인할 때 사용

 - 특정 네트워크 내에 활성화되어 있는 시스템들을 확인할 수 있다 (빠르게)





sing -c 1 -tstamp 192.168.0.100

 - 위는 ICMP의 Timestamp를 이용한 스캔

 - 상대 시스템의 활성화 여부 확인 위해 ICMP를 이용한 다양한 스캔 수행

 


nmap

 - 포트 스캔을 위해 가장 흔하게 사용하고 가장 강력한 툴


nmap -sT 192.168.0.0

 - TCP SYN open 스캔

 - 스캔에 성공한 포트가 하나씩 나타날 것

 - -sS SYN 스텔스 스캔

 - 특정 포트를 스캔하려면 -p 옵션 사용


그림 1. -sS옵션을 적용하였을 때

 

nmap -sF -p 21, 23 192.168.0.200

 - 21번과 23번 포트에 FIN 패킷을 이용한 스캔

 

nmap -f -sS 192.168.0.200

 - 목적지 포트를 숨겨서 방화벽을 통과하기 위한 패킷은 -f 옵션을 준다.

 - 이 패킷은 처음 패킷이 16바이트, 뒤의 패킷이 4바이트로 나누어진다.

 

nmap의 실행 옵션

-sT : connect() 함수를 이용한 Open 스캔

-sS : 세션을 성립시키지 않는 SYN 스캔

-sF : FIN 패킷을 이용한 스캔

-sN : NULL 패킷을 이용한 스캔

-sX : XMAS 패킷을 이용한 스캔

-sP : ping을 이용한 호스트 홀성화 여부 확인

-sU : UDP 포트 스캔

-sR : RPC 포트 스캔

-sA : ACK 패킷에 대한 TTL 값의 분석

-sW : ACK 패킷에 대한 윈도우 크기 분석

-b : FTP 바운스 스캔

-f : 스캔할 때 방화벽을 통과할 수 있도록 패킷을 조각낸다.

-v : 스캔의 세부 사항을 표시

-P0 : 스캔 전 ping을 하지 않는다. ICMP Request를 허용하지 않는 호스트에 대한 스캔을 할 때 설정해야 된다.

-PT : ping의 대용으로 ICMP 패킷을 이용하지 않고, TCP 패킷을 이용하여 해당 시스템이 작동 중인지 검사한다.

-PS : TCP의 SYN 패킷만을 보내 시스템의 활성화 여부를 검사

-PI : 시스템의 활성화 여부를 ICMP로 검사

-PB : TCP와 ICMP 둘 다 사용해서 호스트의 활성화 여부 검사

-O : 시스템의 운영체제를 추정

-I : Ident 프로토콜(RFC 1413)을 사용해 열려 있는 프로세스가 어떤 사용자에 의한 것인지 검사

-n : DNS 룩업(lookup)을 하지 않는다.

-R : DNS 룩업(lookup)을 한다.

-T : 시간차를 이용한 스캔을 하기 위한 것으로 Pranoid, Sneaky, Polite, Normal, Aggressive, Insane이 각각 0에서부터 5까지의 숫자를 갖는다.


윈도우용 nmap

 - 예 : Zenmap


C. 운영체제의 탐지

배너그래빙

 - 텔넷처럼 원격지 시스템에 로그인하면 뜨는 안내문과 비슷한것


TCP/IP에 대한 반응을 살펴보기


telnet 192.168.0.2 21

 - FTP 데몬에 대한 정보(예 :  vsFTPd 2.2.2)를 알 수 있다.

telnet 192.168.0.2


다른 서비스에 대해서도 비슷한 정보를 얻을 수 있다.


SMTP의 예

telnet 127.0.0.1 25


SSH(22), POP3(110), IMAP4(143) 등에 대해서도 각 서비스에 대한 정보를 확인할 수 있다.

telnet 127.0.0.1 22

telnet 127.0.0.1 110

telnet 127.0.0.1 143


D. 방화벽과 침입 탐지 시스템의 탐지

- 방화벽은 1차 방어선

- IDS는 방화벽이 막을 수 없거나 차단에 실패한 공격을 탐지, 관리자에게 알려주는 역할


- 시스템에 침투하려면 방화벽과 IDS를 탐지하는 일이 매우 중요하다

- traceroute(or tracert)의 사용은 기본적인 방화벽 탐지법


VisualRoute 프로그램

 - 패킷의 전달 경로와 서버의 위치를 보여준다.


- 일단 방화벽이 확인되면 어떤 종류인지 확인해야 한다.

- 방화벽과 IDS는 각각 관리나 작동상의 이유로 열린 포트가 있다


방화벽 열린 포트


IDS 열린 포트


- 일반적인 스캔 방법으로는 포트를 확인할 수 없다.

- 포트를 찾아내려면 해당 포트에 대한 집중적인 스캔 작업이 필요

- firewalk 사용


firewalk의 원리

 - traceroute와 비슷


1. 방화벽이 탐지되면 방화벽까지의 TTL보다 1만큼 더 큰 TTL 값을 생성하여 보낸다

2. 방화벽이 패킷을 차단할 경우 아무 패킷도 돌아오지 않는다.

3. 방화벽이 패킷을 그대로 보낼 경우 패킷은 다음 라우터에서 사라지며, 라우터는 traceroute 과정처럼 ICMP Time Exceeded 메시지를 보낸다.

4. 공격자는 ICMP Time Exceeded 메시지의 여부를 받은 포트에 대해 열린 포트임을 추측할 수 있다.


'IT > 네트워크 보안과 해킹' 카테고리의 다른 글

스니핑  (0) 2016.06.24
시스템의 목록화  (0) 2016.06.22