글
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 |
RECENT COMMENT