Host Scan (Host Discovery)

*** 타인의 Host를 스캔하는 것은 불법이라네요. 자신 소유의 Host에서만 테스트를 하여야 합니다 ***

(1) 정의

- 공격 대상 네트워크에서 작동중인 시스템을 찾아 공격 대상 시스템을 결정하기 위한 방법. ICMP Echo Request Packet을 이용하여 구현함 (쉽게 말하자면 Ping 을 사용하였다는 의미)

(2) ICMP (Internet Co0ntrol Message Protocol)

- TCP/IP protocol 에서 IP 네트워크의 IP상태 및 오류 정보를 공유하게 하며 Ping 에서 사용된다.

 

[그림 1-1] ICMP messages encapsulated within an IP datagram

 

a. ICMP Message 형식 : 8byte로 구성된다.

[그림 1-2] ICMP Message 형식

 

- Type : ICMP의 업무, 즉 어떠한 용도로 사용되는 ICMP를 나타냄

 

[그림 1-3] ICMP Message Type

 

- Code : ICMP Type의 세부 내용을 나타내며 이 부분은 Type과 조합을 이루어 ICMP 메시지의 목적과 용도를 나타냄

 

 

[그림 1-4] ICMP Message Code

- Checksum : ICMP 메시지의 이상 유무 판단

(3) 구현

- ICMP Echo Request/Reply 를 이용하여 Host가 살아 있는지 확인한다. (방화벽을 사용 중이면, 기본적으로 PING에 대한 응답을 허용하지 않을 수 있음.)

- Echo Request/Reply 동작은 [그림1-5]와 같다.

 

[그림 1-5] ICMP Request/Reply Flow

 

- ICMP Message Header

struct icmp_header
{
 u_char type; // 1 byte
 u_char code; // 1 byte
 u_short checksum; // 2 bytes
 u_short id; // 2 bytes
 u_short seqno; // 2bytes
};

 

- Echo Request Message

 

void CHostScanIcmp::FillICMPData(char *icmp_data, int datasize)
{
 icmp_header *icmp_hdr = NULL;
 char *datapart = NULL;
 icmp_hdr = (icmp_header*)icmp_data;
 icmp_hdr->type = ICMP_ECHO; // Request an ICMP echo
 icmp_hdr->code = 0;
 icmp_hdr->id = (USHORT)GetCurrentProcessId();
 icmp_hdr->checksum = 0;
 icmp_hdr->seqno = 0;
 datapart = icmp_data + sizeof(icmp_header);
 //
 // Place some junk in the buffer
 //
 memset(datapart,'E', datasize - sizeof(icmp_header));
}

 

 

'Biz > Network' 카테고리의 다른 글

NetBIOS, nbtstat.exe  (0) 2013.10.10
IIS web site 생성 실습  (0) 2013.10.09
해킹, 침입탐지 그리고 탐지결과 보고 (1)  (0) 2012.10.13
by JNexOnSoft 2013. 10. 6. 22:11