풋프린팅(Footprinting)과 스캔(Scan)

2010. 10. 12. 01:58카테고리 없음


풋프린팅 (Footprinting)

- 풋프린트는 발자국을 뜻하며, 풋프린팅은 그 발자국을 살펴보는 것이다.
- 해킹을 하기위해 모든 정보들을 체계적이고 조직적으로 모으기 위해 풋프린팅은 반드시 필요하다.

스캔 (Scan)

- 서비스를 제공하는 서버의 작동여부와 그 서버가 제공하고 있는 서비스를 확인하기 위한것이다.
- TCP 기반의 프로토콜의 경우 3Way-Handshaking 등으로 요청(Request)를 보내면 응답(Response)를 전달한다.
- 이것을 통해 요청을 하여 응답을 받아 동작여부를 확인하고 서비스 등을 확인하여 정보수집을 하는것이다.

1. ICMP의 유틸리티 Ping을 이용한 스캔

- 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 ICMP(Internet Control Message Protocol)프로토콜의 유틸리티
- 기본적으로 TCP/IP 네트워크에서 사용된다.
- 운영체제별 ICMP Reply Packet 최대TTL : 리눅스(64), 솔라리스(255), 윈도우2000이상(128)



2. TCP와 UDP를 이용한 스캔

- TCP와 UDP를 이용한 스캔은 시스템 자체의 활성화 여부가 아닌 포트 스캔을 하는 것이다.
- TCP 프로토콜은 기본적으로 3way-handshaking을 이용한 스캔을 한다.
- UDP는 포트가 닫혀있는 경우 공격대상은 ICMP 패킷을 보내지만 열려있는 경우에는 ICMP 패킷을 보내지 않는다.

2-1. TCP Open 스캔

- Open 스캔은 3way-handshaking 을 거치는 과정에서 상대방 시스템에 로그 기록이 남는다.
- 먼저 동작 예상 포트에 세션을 생성하기 위한 SYN 패킷을 보낸다.
- 포트가 열려 있는 경우에는 서버에서 SYN + ACK 패킷이 돌아오고 공격자는 다시 ACK 패킷을 보낸다.
- 포트가 닫혀 있는 경우에는 공격자가 SYN패킷을 보내몀 RST + ACK패킷이 돌아오고 공격자는 아무 패킷도 보내지 않는다



3. 스텔스 (Stealth) 스캔

- 스텔스 스캔은 세션을 완전히 성립하지 않고 공격대상 시스템의 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에
  로그 정보가 남지 않는다.
- 따라서 공격 대상의 시스템 관리자는 어떤 IP를 가진 공격자가 자신의 시스템을 스캔하였는지 확인할 수 없다.

3-1. TCP Half Open 스캔

- 스텔스 스캔의 대표적인 형태로서 완전한 세션을 성립하지 않고 포트의 활성화 여부만을 확인하기 때문에 로그가 남지 않는다.
- 먼저 SYN 패킷을 보내고 포트가 열려 있을경우 서버는 SYN + ACK 패킷을 보내고 공격자는 즉시 연결을 끊는 RST(Reset)패킷
   을 보낸다.



3-2. FIN, NULL, XMAS 스캔

- FIN의 경우 FIN(Finish) 패킷을 보내는 것으로 포트가 열린경우 응답이 없고, 포트가 닫힌 경우에만 RST 패킷이 되돌아온다.
- NULL은 플래그(flag)값을 설정하지 않고 보낸 패킷이며 FIN과 같은 결과가 나온다.
- XMAS는 ACK, FIN, RST, SYN, URG 플래그들의 조합(크리스마스 선물 꾸러미)을 모두 설정하여 보낸 패킷으로 FIN과 같은 결   과이다.



3-3. UDP 스캔

- TCP와는 달리 UDP는 3way-handshaking을 하지 않는다.
- 포트가 닫힌 경우에는 공격대상이 ICMP Unreachable을 보내지만, 열린 경우에는 보내지 않는다.
- 그러나 응답이 없다고 해서 열려있는 포트라고 확신할 수는 없다. UDP는 라우터나 방화벽을 지나 손실되는 경우도 있기 때문에



 fping, nmap, sing을 이용한 스캔

- sing : 상대 시스템의 활성화 여부를 확인하기 위해 ICMP 프로토콜을 이용하여 스캔할수 있다.
- fping : 네트워크에 활성화된 IP 보기 ex) #fping -g 192.168.10.0/24 > /fping.txt
- nmap 
#nmap -sT -P0 -p 1-1024 -T3 192.168.10.190    //   Open스캔, Connect() 스캔
(-p 옵션 : 포트를 지정(없으면 모든 포트 스캔, -T 옵션 : 0(paranoid)/1(sneaky)/2(polite)/3(normal)/4(aggressive)/5(insane)
#nmap -sS -P0 -p 1-1024 -T3 192.168.10.190   //    Half Open스캔, SYN 스캔
#nmap -sF -P0 -p 1-1024 -T3 192.168.10.190   //    FIN 스캔
#nmap -sN -P0 -p 1-1024 -T3 192.168.10.190   //    NULL 스캔
#nmap -sX -P0 -p 1-1024 -T3 192.168.10.190   //    XMAX 스캔
#nmap -sA -P0 -p 1-1024 -T3 192.168.10.190   //    ACK 스캔
#nmap -sW -P0 -p 1-1024 -T3 192.168.10.190   //    Window 스캔 (Window 크기 분석)
#nmap -sS -P0 -p 1-1024 -D 192.168.11.11 -T3 192.168.10.190   //    Decoy 스캔
#nmap -sU -P0 -p 1-1024 -T3 192.168.10.190   //    UDP 스캔

운영체제 탐지

- 운영체제 시스템을 확인하는 방법으로 배너그래빙(Banner Grabbing)을 이용한다.
- 배너는 시스템에 대한 간단한 역할이나 기관등을 서술한 안내문과 비슷한 것이다.
- 배너그래빙을 통해 상대 시스템의 배너를 확인하여 그 시스템에 대한 정보를 얻어오는 것이다.
- 넷크래프트를 통해 배너그래빙 하기 : www.Netcraft.com 사이트를 통해 어떤 사이트가 어떤종류의 서버와 개발툴을 써서
  사용중인지 알아 낼수 있다.
- FTP에 대해 배너그래빙하기
 1. telnet [공격대상 IP] [공격대상 포트번호]와 같이 입력한다.
 2. 현재 공격대상은 FTP 서비스를 하고 있는 상태이다
 3. 서버로스를 이용하여 FTP 포트를 사용하고 있음을 알수 있고 공격을 해야한다면 서버로스의 약점을 이용해야 할것이다.