2015년 4월 2일 목요일

Scanner를 통한 시스템 스캔

ㅇ ㅂㅇ

Scan

 -- 주요 포트와 서비스

포트번호
----------
서비스
----------
서비스 내용
----------------------------------------------------------------
21
FTP
File Transfer Protocol
FTP 연결시 인증과 컨트롤을 위한 포트
23
Telnet
Telnet 서비스로서 원격지의 서버의 실행 창을 얻어냄
25
SMTP
Simple Message Transfer Protocol
메일을 보낼 때 사용하는 서비스
53
DNS
Domain Name Service
이름을 해석하는 데 사용하는 서비스
69
TFTP
Trivial File Transfer Protocol
인증이 존재하지 않는 단순한 파일 전송에 사용되는 서비스
80
HTTP
Hyper Text Transfer Protocol
웹 서비스
110
POP3
Post Office Protocol
메일 서버로 전송된 메일을 읽을 때 사용하는 서비스
111
RPC
Sun의 Remote Procedure Call
원격에서 서버의 프로세스를 실행할 수 있게 한 서비스
138
NetBIOS
Network Basic Input Output Service
윈도우에서 파일을 공유하기 위한 서비스
143
IMAP
Internet Message Access Protocol
Pop3와 기본적으로 같으나, 메일을 읽고 난 후에도 메일은 서버에 남는 것이 다른 서비스
161
SNMP
Simple Network Management Protocol
네트워크 관리와 모니터링을 위한 서비스

 -- 스캔이란 ?

* 스캔의 개념
 - 스캔은 서비스를 제공하는 서버의 작동 여부와 제공하고 있는 서비스를 확인하기 위한 것. TCP 기반의 프로토콜은 기본적으로 질의(Request)를 보내면 응답(Response)을 보낸다.
 - 스캐닝은 이러한 기본적인 매커니즘에 기본 하는 것으로, 열려있는 포트, 제공하는 서비스, 동작중인 데몬의 버전, 운영체제의 버전, 취약점 등 다양한 정보를 얻어 내는 것이 가능.

* Ping & ICMP Scan
 - Ping은 네트워크와 시스템이 정상적으로 작동하는 확인하기 위한 간단한 유틸리티로 개발되었다. ICMP(Internet Control Messaging Protocol)를 사용한다.
 - 각각의 네트워크는 고유한 Ping 이 존재하며, 일반적으로 알려진 Ping은 TCP/IP 네트워크에서의 Ping을 말함

 -- ICMP scan

* ICMP 스캔
 - ICMP를 이용한 스캔 방법으로는 다음의 네 가지를 생각 할 수 있다.
  > Echo Request (Type 8)과 Echo Reply(Type 0)을 이용한 방법
  > Information Request(Type 15)와 Information Reply(Type 16)을 이용한 방법
  > ICMP Address Mask Request (Type 17)와 ICMP Address Mask Reply(Type 18)을 이용한 방법

 * Ping을 이용한 Scan


 (1). 전송 패킷의 길이
 (2). 응답 패킷의 길이
 (3). 응답시간
 (4). 라우터를 지날 때 마다 최초 값으로 부터 1씩 줄어 든다.
   - 리눅스 (64), Window(128), 솔라리스(255), ....
 (5). 질의한 패킷의 개수
 (6). 응답 패킷의 개수

 -- ICMP Type

0
Echo Reply
17
Address Mask Request
1
Unassigned
18
Address Mask Reply
2
Unassigned
19
Reserved (for Security)
3
Destination Unreachable
20-29
Reserved (for Robustness Experiment)
4
Source Quench
30
Traceroute
5
Redirect
31
Datagram Conversion Error
6
Alternate Host Address
32
Mobile Host Redirect
7
Unassigned
33
IPv6 Where-Are-You
8
Echo
34
IPv6 I-Am-Here
9
Router Advertisement
35
Mobile Registration Request
10
Router Solicitation
36
Mobile Registration Reply
11
Time Exceeded
37
Domain Name Request
12
Parameter Problem
38
Domain Name Reply
13
Timestamp
39
SKIP
14
Timestamp Reply
40
Photuris
15
Information Request
41
ICMP message utilized by experimental mobility protocols such as Seamoby
16
Information Reply

 -- ICMP scan 방식

 * Timestamp Request(Type 13), TimeStamp Reply(Type 14)
- Timestamp Request는 원격지 시스템의 현재 시간을 알아 보기 위한 패킷임.
- Timestamp 패킷은 송신자가 패킷을 받은 시간(Originate Timestamp)과 수신자가 패킷을 받은 시간(Receive Timestamp), 송신가자 수신자에게 전송하는 동안 걸린 시간(Transmit Timestamp)으로 공격대상의 현재 시스템 시간을 알 수 있다.
- 하지만 Timestamp Request 패킷에 Reply 패킷을 돌려보내오는 시스템이 시간만을 알려준다고 생각할 수는 없다. 상대 시스템이 Reply 패킷이 돌아온 다는 것은 상대 시스템이 활성화 되어 있음을 말하는 것이다.
- 시간은 Recever time - Sender Time을 ms 단위로 표시

 * Information Request(Type 15), Information Reply(Type 16)
- information Request와 Reply 패킷은 메인 프레임의 터미널과 같이 부팅할 때 자신의 디스크가 없는 시스템에 스스로 설정할 수 있도록 하는 패킷으로, 자신의 네트워크를 찾기 위해 개발 되었다.
- 기본 목적은 RARP, Bootp, DHCP 와 같은 프로토콜과 같으나 다른 프로토콜을 이용한 방법에 비해 원시적이라고 할 수 있다.
- Timestamp 패킷과 마찬가지로 죽어있는 시스템이 Reply 패킷을 보내오지는 않는다.

 * ICMP Address Mask Request(Type 17), ICMP Address Mask Reply(Type 18)
- ICMP Address Mask Request와 Reply 패킷은 Information Request 패킷과 같이 터미널이 부팅될 때 자신이 속해 있는 네트워크의 서브넷 마스크를 알기 위해서 보내는 프로토콜이다.
- 위의 두 가지 방법과 마찬가지로 Reply 패킷을 돌려보내오는지 확인함으로써, 상대 시스템의 활성화 여부를 확인한다.

TCP scan

 * TCP나 UDP를 이용한 Scan은 호스트를 대상으로 하는 것이 아니라 포트를 대상으로 한다.
 * TCP Open Scan
- 포트가 열려있을 경우, 세션이 성립되며, 포트가 닫혀 있을 경우에는 RST+ACK 패킷을 받게 된다.


> RST : 시퀀스 번호, ACK 번호를 초기화 하는 신호
> SYN : 3 handshaking 때 서버에 접속을 하겠다는 신호
> ACK : 보낸 신호를 정상적으로 잘 받았다는 응답 신호

 * TCP Open Scan - Reverse Ident
- 세션 수립 후 데몬의 프로세스의 소유자를 확인하기 위해 113번 포트를 통해 통신 하는 것


 * Stealth Scan - TCP Half Open
- 3W HS 과정에서 RST 패킷을 이용 포트를 확인하고 connect는 생성하지 않음
- 세션을 확정하지 않기 때문에 로그정보를 남기지 않는다.
- 일반적인 stealth Scan은 로그를 남기지 않는 것 뿐 아니라 자신을 숨기는 모든 scan을 통칭함.


 * Stealth Scan - FIN, NULL, XMAS 패킷을 이용한 scan
- 열린 포트에 FIN 패킷을 보내면 응답하지 않지만(응답 할 것이 없다.) 닫힌 포트는 RST 패킷을 응답한다.
- 이외 flag를 모두 비운 null 패킷이나 모두 채운 xmas 패킷도 동일하게 반응함.


 * Stealth Scan - ACK 패킷을 이용한 scan
- 모든 포트에 ACK 패킷 전송
  열린 포트 : TTL은 64 이하, Rwin size는 0 보다 큰 RSST 패킷 응답
  닫힌 포트 : TTL은 큰 값(OS에 따라 다름), Rwin size는 0인 RST 패킷
- 현재 까지 매우 유용한 방법


 * Stealth Scan - 시간차 공격
- 공격의 차단을 피하거나, 탐지를 회피하기 위해 특정한 시간 간격으로 스캔 패킷을 보내는 기법
 Paranoid : 5분이나 10분 간격
 Sneaky : WAN에서는 15초 단위로, LAN에서는 5초 단위
 Polite : 0.4초 단위
 Normal : 정상
 Aggressive : 호스트 타임 아웃 : 5분, 패킷 당 1.25초 까지 응답을 기다린다.
 Insane : 호스트 타임 아웃 : 75초, 패킷 당 0.3초까지 응답을 기다린다.

 -- UDP scan

* UDP는 3W HS하지 않음으로 열린 포트의 경우 응답이 없지만 닫힌 경우 ICMP unreachable 패킷을 반송함


 -- 다양한 스캐너 설치

 * 스캐너 : fping, hping3, sing, nmap
 * OS 지원(리눅스 yum)

nmap
fping
sing
hping3
Fedora
지원
지원
지원
지원
CentOS
Install
미지원
미지원
미지원
Sulinux
Install
미지원
미지원
미지원
Win
지원
?
?
?

 * Fedora는 yum을 이용 설치하고 나머지 리눅스는 직접 컴파일 한다.
  - hping은 ping of death 공격에 이용한다.

 -- fping

* http://www.fping.com/
* fping을 이용한 시스템 스캔

 #fping -h
 #fping ip ip ip ...
 #fping -g ip/netmask

ex)
#fping 1.1.1.2 1.1.1.3 1.1.1.4
#fping -g 1.1.1.0/24

 -- sing

* http://sourceforge.net/project/sing/files/
* ICMP를 이용 다양한 정보 scan

# sing -h
# sing IP -c [패킷수] -[tstamp, info, maks]

ex)
# sing -c 1 -tstamp 192.168.10.1

주의) 실습 전 각 리눅스 시스템 간에 시간을 일치 시킨다.
# rdate -s time.bora.net

 -- nmap

* www.nmap.org
* 다양한 방법으로 scan을 제공한다.
#nmap [-옵션]

ex)
#nmap -sS 192.168.10.1
 > TCP 하프 연결을 이용해서 Stealth 모드로 스캔한다.
#nmap -sU 192.168.10.1
 > UDP 스캔
#nmap -sP -PO -PS 192.168.10.0/24
 > C 클래스 전체에 Ping Sweeping(ICMP ping 금지, TCP SYN 사용)


댓글 없음:

댓글 쓰기