1. 스캔에 대한 이해


스캔은 서비스를 제공하는 서버의 작동 여부와 서버가 제공하는 서비스를 확인하기 위한 작업이다. TCP 기반의 프로토콜은 기본적으로 요청을 보내면 응답을 전달해 준다. 스캔은 ㄴ방화벽과 IDS( 침입 탐지 시스템 )을 우회하기 위해 발전한 스캔은 종류가 무척 다양하다.



2. Ping


서버의 동작 여부를 알아보는 가장 기본적인 스캔은 ping을 이용하는 것이다. 검사하고자 하는 네트워크에서 동작하는 서버를 찾아내는 일은 공격 대상 네트워크에서 공격 대상의 IP 주소를 결정하는 데 무척 중요하다.

ping은 네트워크와 시스템이 정상적으로 작동하는지 확인하기 위한 간단한 유틸리티로, ICMP를 사용하며, 기본적으로 TCP/IP 네트워크에서 사용된다.

넷웨어와 같이 다른 프로토콜 체제를 쓰는 네트워크에서는 ping 유틸리티도 다르며, 모든 네트워크에 ping이 있는 것은 아니다. 


* 넷웨어 : 가장 광범위하게 설치되었던 노벨의 네트워크 서버 운영체제다. 초기 넷웨어는 대기업이나 중소기업용 근거리 통신망에서 노벨의 제품 간 통신에 주로 사용했다. 그후 대규모 네트워크의 필요성이 커지자 새롭게 설계되었다.

* ICMP : 호스트 서버와 인터넷 게이트웨이 사이에서 메시지를 제어하고 오류를 알려주는 프로토콜이다.


3. ICMP 스캔


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


Ⅰ Echo Request( Type 8 )와 Echo Reply( Type 0 ) 이용하기

Ⅱ Timestamp Request( Type 13 )와 Time Reply( Type 14 ) 이용하기

Ⅲ Information Request( Type 15 )와 Information Reply( Type 16 ) 이용하기

Ⅳ ICMP Address Network Request( Type 17 )와 ICMP Address Network Reply( Type 18 ) 이용하기


가장 일반적인 방법은 Ⅰ을 이용하는 것이며, 일반적으로 옵션 없이 ping 유틸리티를 사용하면 된다.




① ICMP 패킷의 길이를 나타내는 것으로, 운영체제마다 보내는 바이트의 길이가 다르다. 유닉스와 리눅스와 같은 시스템은 위 그림처럼 대부분 56바이트 ICMP Echo Request 패킷을 생성하여 보낸다. 윈도우 시스템은 32바이트이다. 각 바이트의 내용은 의미없는 알파벳으로 채워진다.

② 공격 대상에서 보내온 ICMP Echo Reply 패킷의 크기이다.

③ TTL( Time To Live ) 값으로, 라우팅 정보가 잘못되어 패킷이 네트워크를 무한대로 돌아다니지 않도록 최초 라우터를 제외한 라우터를 지날 때마다 값이 1씩 줄어든다. TTL 값도 운영체제에 따라 조금씩 다르다.

운영체제 

 ICMP Request 패킷 TTL 

 ICMP Reply 패킷 TTL 

 리눅스 커널 2.6 

 64

 64

 리눅스 커널 2.2 - 2.4

 255

 64

 리눅스 커널 2.0

 64

 64

 우분투

 128

 128

 FreeBSD

 255

 255

 솔라리스

 255

 255

 HP-UX

 255

 255

 윈도우 95

 32

 32

 윈도우 98

 128

 128

 윈도우 NT

 128

 128

 윈도우 서버 2003, 2008, 2012

 128

 128

위도우 10 

 64

 64

줄어든 TTL 값으로 원격지 시스템이 라우터 몇 개를 거쳐서 도달했는지 알 수 있다. 세계 어느 곳에 있는 시스템일지라도 20여개 이상을 지나는 경우는 드물다. 보통 기본 TTL이 64라고 생각하는데, TTL 값이 55라면 자신의 경계라우터를 포함해 라우터 12개를 지나 목표 시스템에 도달한 것이다.

④ Echo Request 패킷을 보낸 후 Reply 패킷을 받기까지의 시간이다.

⑤ Request 패킷의 개수, Reply 패킷의 개수, 손실된 패킷의 개수를 보여준다.

⑥ Request 패킷을 보낸 후 Reply 패킷이 오기까지의 시간 정보를 알려준다.


라우터나 방화벽 등에서 ICMP Echo Request 패킷을 막는 경우가 있는데, 이때 이용할 수 있는 방법으로 세 가지를 생각할 수 있다.


첫 번째 방법은 Ⅱ를 이용하는 것이다. Timestamp Request 패킷은 원격지 시스템의 현재 시각을 알아보기 위한 것이다. 송신자가 패킷을 보낸 시각과 수신자가 패킷을 받은 시각, 송신자가 수신자에게 전송하는 동안 걸린 시간으로 공격 대상의 현재 시스템 시각을 알 수 있다. 하지만 Timestamp Request 패킷에 Reply 패킷을 돌려보내는 시스템이 시간만 알려준다고 생각할 수는 없다. 상대 시스템의 Reply 패킷이 돌아온다는 것은 상대 시스템이 활성화 되어 있음을 말하는 것이다.


두 번째 방법은 Ⅲ을 이용하는 것이다. 원래 Information Request와 Reply는 메인 프레임의 단말기처럼 부팅할 때 자신의 디스크가 없는 시스템이 스스로 IP를 설정할 수 있도록 하는 패킷으로, 자신이 네트워크를 찾기 위해 개발되었다. 기본 목적은 RARP, DHCP와 같은 프로토콜과 같지만 다른 프로토콜을 이용한 방법에 비해 원시적이라고 할 수 있다.


마지막으로 Ⅳ를 이용하는 것이다. 이 패킷 역시 Information Request 패킷처럼 단말기가 부팅될 때 자신이 속한 네트워크의 서브넷 마스크를 알기 위해 보낸다.


ICMP 패킷을 이용한 앞의 세 가지 방법이 모든 운영체제에서 작동하지는 않는다. 운영체제에 따라 일부만 지원하므로 지원 여부를 살펴보면 다음과 같다.


 운영체제 

 Information 

 Timestamp 

 Address Mask 

 리눅스 커널 2.2 - 2.6 

 X 

 O 

 X 

 FreeBSD 

 X 

 O 

 X 

 솔라리스 

 X

 O

 O 

 HP-UX 

 O 

 O 

 X 

 AIX v4 

 O 

 O 

 X 

 윈도우 98 

 X 

 O 

 O 

 윈도우 NT sp4 

 X 

 X 

 X 

 윈도우 2000 이상 

 X 

 O 

 X 


ICMP를 이용한 여러 가지 ping은 시스템 하나를 조사하기에는 적절하지만 큰 네트워크에서 활성화 시스템을 찾는 데는 그다지 효과적이지 않다. 네트워크 전체에서 활성화 시스템을 찾는 일을 스위핑( Sweeping )이라고 한다. 스위핑은 검색하고자 하는 네트워크에 브로드캐스트 ping을 보내거나 자동화 도구를 이용해 특정 범위의 네트워크에 ping을 보낸다.

'NCS보안3기 > 네트워크 해킹' 카테고리의 다른 글

[Network Hacking] 스푸핑 공격  (0) 2017.04.30
[Network Hacking] 스니핑  (0) 2017.04.30
[Network Hacking] TCP 스캔  (0) 2017.04.30
[Network Hacking] DNS( Domain Name System )  (0) 2017.04.24
[Network Hacking] OSI 7계층  (0) 2017.04.23
Posted by Imp3rio