월간 인기 게시물

게시물 160건
   
TCP/IP 헤더 tcp[13]==2 의 의미는?
글쓴이 : 최고관리자 날짜 : 2010-10-19 (화) 13:59 조회 : 9502
글주소 :
                          

출처 : http://packetinside.com/category

tcpdump 를 이용해 패킷을 덤프하다 보면 다양한 표현식을 이용해 필터를 표현하는 경우가 많다. 많은 경우는 대략 사용되는 문자만 보더라도 의미가 파악되는 경우가 많다. 예를 들어, src 라 하면 source 인 출발지가 연상되고 host 는 말 그대로 호스트를 뜻한다. 그럼 이걸 다 연결해서 보면 src host 192.168.0.0 필터의 의미를 금방 추측해 볼 수 있다. tcpdump 에서 이용되는 필터 표현방식은 큰 어려움이 없다. 그런데 아래와 같은 경우는 무엇일까?

tcp[13] == 2

얼핏 봐서는 의미가 잘 파악이 안된다. 어렵게 느껴질 수도 있는데 TCP 헤더를 생각해 보면 의외로 쉽게 풀린다.
일단 다음의 TCP 헤더 포맷을 살펴보자.


[출처 : nmap.org]

TCP 헤더 포맷은 Options 을 제외하고는 20 바이트로 구성되어 있다. 오프셋은 0 부터 시작하고, Octet 형태로 보면 첫 라인은 0 - 3 까지이고, 두번째 라인은 4-7 이다. 그렇다 바로 위에서 13 이라는 것은 바로 이 위치인 것이다. TCP 라고 하였으니 TCP 헤더를 뜻한 것이고 뒤에 들어가는 것은 헤더의 위치 값이다.

자, 그럼 두번째 라인은 4-7 까지이고, 3번째는 8-11 까지가 된다. 네번째 라인은 12-15 가 되는데 13 위치를 보면 TCP Flags 라고 되어 있다. 그렇다 바로 플래그 값을 뜻하는 것으로 대표적인 몇 가지 값을 보면 아래와 같다:

F : FIN
S : SYN
R : RESET
P : PUSH
A : ACK

TCP 3-way Handshake 라는 것을 들어보았다면 위의 용어가 익숙할 것이다. 13 위치가 플래그 라는 것은 알았는데 TCP[13] 의 '== 2' 은 무었일까? == 는 같다는 의미로 쉽게 알 수 있고, 2는 설정된 비트 값이다. 좀더 자세히 알아보도록 하겠다. 1바이트는 8 비트로 구성되어 있다. 그래서 위 헤더의 한 라인씩은 4바이트로 이루어져 있고 13 번째 위치 부분도 1바이트 구성이다. 그럼 8비트 구성일텐데, 위 플래그들을 보면 8개이다. 즉, 각 플래그는 한 비트씩 차지하고 있는 것이다. 좀더 자세하게 표현하면 아래와 같다 :

                  |C|E|U|A|P|R|S|F|
                |---------------|
                |0 0 0 0 0 0 1 0|
                |---------------|
                |7 6 5 4 3 2 1 0|

제일 아래 부분은 0-7 까지 비트를 표현한 것이고 그 윗 부분은 Set 된 비트를 의미한다. 
S 부분이 Set 되어 있는 상태이다. .
그럼 이걸 다시 십진수로 변환해 보면 나머지는 다 0 이고 한 군데만 1 이므로 1*2 인 2가 되는 것이다.
차례로 각 계산을 세부적으로 표현하면 다음과 같아진다.


   7     6     5     4     3     2     1     0
0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 0*2 + 1*2 + 0*2  =  2

이제 느낌이 팍 오는가? SYN 값이 0x02 가 되는 것이다. 그럼 TCP[13] == 2 의 의미를 다시 정리해 보면,
TCP 헤더의 13번째 Octet 위치는 TCP Flags 를 나타내는 것이고 2 는 SYN 를 표현한 것이다.

바로 TCP 패킷중 SYN 패킷만 해당하는 것을 탐지하고자 할때 사용할 수 있는 필터가 되는 것이다.


만약 PUSH 플래그를 잡고자 한다면 8 이 된다. 알고보면 어렵지 않은 부분인데, 이런 것을 모르고 해당 문법을 보게 되면
복잡함 부터 느껴지는 것은 당연하다. 이제 각 헤더의 어떤 부분도 여러분 스스로가 탐지해 낼 수 있게 된것이다.


다음번에는 패킷분석에 기본이 되는 TCP/IP 헤더 부분을 좀더 면밀히 살펴보고자 한다. 패킷분석의 기본이 되는 부분이지만,
의외로 처음 접하는 분들에겐 힘들어 보이는 부분이다.
헤더의 구성을 알게되면 패킷이라는 것에 대해 좀더 명확히 알 수 있으며, 이해가 훨씬 빨라진다.
한 패킷을 예로들어, OSI Layer 단계부터 시작해 TCP, IP 헤더까지 껴 맞춰보며 여러분들에게 명확한 이해를 제시하고자 한다.


최고관리자 2011-07-13 (수) 13:10
tcp[tcpflags] & tcp-syn !=0   
tcp[13] = 2
이름 패스워드
비밀글 (체크하면 글쓴이만 내용을 확인할 수 있습니다.)
왼쪽의 글자를 입력하세요.
   

 



 
사이트명 : 모지리네 | 대표 : 이경현 | 개인커뮤니티 : 랭키닷컴 운영체제(OS) | 경기도 성남시 분당구 | 전자우편 : mojily골뱅이chonnom.com Copyright ⓒ www.chonnom.com www.kyunghyun.net www.mojily.net. All rights reserved.