네트워크 패킷 분석의 기본 – TCP/IP 7계층, 4계층

 

역분석과 보안 분야에 중요 분야라 할 수 있는 패킷 분석은 실제 네트워크로 전송되는 패킷을 잡아서 해당 패킷이 의미하는 의미를 파악하고 목적을 알아내는데 큰 역할을 한다.

네트워크 패킷에 대해서는 좀금 전 데이터 수집 항목에 없었다. 그도 그럴것이 서버에 모든 데이터를 항시 실시간 패킷을 수집하는 곳은 거의 없다. 보통 패킷 분석은 분석을 완료하고, 증명 단계 자료를 만들기 위해 진행하거나, 문제점 재발 가능성이 있는 경우 별도의 머신을 설치하고 수집 작업을 진행하기 때문에, 최조 사고 발생에서는 사용되지 않고, 추가 분석시 사용된다. 그래서 수집 방법과 분석 방법에 대해서 이 장에 함께 정리하였다.

네트워크 역분석에서 이용되는 패킷 분석은 진행하는 데 있어 유념해야 할 부분은 네트워크에서는 ISO 7계층과 TCP/IP 4계층의 이해가 중요하다. 여러 시스템에 대한 데이터 전송시 표준을 정하지 않으면, 데이터를 제대로 수신할 수가 없기 때문에, 네트워크 전송시 데이터 표준을 정리한 것이 바로 ISO 7계층이며, 이 이론을 실제 사용하는 인터넷 표준이 TCP/IP 4계층이다.

각 계층은 담당하는 위치마다 처리 역할을 구분하여 진행함으로써, 서로 간의 간섭을 최소화 하여 사용의 편리성을 높혔다.

네트워크 패킷 분석의 기본 – TCP/IP 7계층, 4계층

[그림] ISO7계층과 TCP/IP 4계층

우리가 분석하는 패킷은 위 계층 방식에 따라 구분된 패킷을 분석하는 것으로, 단계별 헤더 정보를 통해 패킷을 분석하게 된다. 그럼 실제 많이 사용되는 TCP/IP 4계층에 대해 알아보자.

여기서는 와이어샤크를 이용하여 패킷을 계층 부분을 함께 표시하였다(패킷 수집 도구는 TCP/IP 4계층 설명 이후 포스팅 하겠다).

패킷을 캡쳐할 때 와이어샤크를 실행해야 할까? 이 질문에 답을 하자면, 패킷 분석과 별도로 패킷 생성만을 진행할 수 있는 전문적인 도구들이 따로 존재한다. 와이어 샤크는 분석에 특화된 도구로서 수집 용도로 사용해도 무방하지만, 대용량을 수집해야 하는 환경에서는 부적절하다. 이를 위해 전문적인 패킷 수집 도구를 이용하여 수집 활동을 진행하자.

TCP/IP 4계층

응용 계층(Application)

ISO 7계층에서 5,6,7계층에 해당되며, 프로그램에서 소켓을 생성하여 원하는 메시지 혹은 데이터를 전송하게 되는데, 이를 응용 계층이라고 한다. 즉 프로그램은 소켓 생성을 운영체제에 요청하게 되고, 해당 요청을 운영체제에서 처리하게 된다. 용용 계층은 정해지지 않고, 응용프로그램에 따라 구조체를 다르게 가지고 있어, 일관성있는 구조를 제공하지 않고 각 서비스에 필요한 필드로 구성된다.

[그림 19-15] 패킷의 응용 계층 부분

전송 계층(Transport)

ISO 7계층의 3,4계층에 해당되며, 자료의 송수신을 담당하게 된다. TCP/UDP에 대한 구분을 하고 데이터에 대한 제어정보가 여기에 포함된다.

필드 길이 설명
출발지 포트 2바이트 보내는 프로그램의 포트
도착지 포트 2바이트 상대 프로그램의 포트
시퀀스 번호 4바이트 송신측에서 몇번째 바이트까지 보냈는지, 수신에 알림
ACK 번호 4바이트 수신측에서 데이터가 몇 바이트째 까지 도착지에 도착 하였는지 송신측에 알림
헤더 길이 4비트 해더의 전체 크기를 나타낸다.
플래그 12비트 통신 제어 비트로 앞 3장에서 나온다.
윈도우 크기 2바이트 송신측에 윈도우크기를 보내, 바로 처리 가능한 크기를 알림
체크섬 2바이트 오류 유무를 검사하기 위한 값
긴급 포인터 2바이트 긴급하게 처리할 데이터의 위치를 나타냄, UGR플래그와 함께 사용됨

[표] 전송 계층의 구성 필드

전송 계층의 패킷을 와이어샤크로 확인해 보면 아래와 같이 전송에 필요한 정보들을 확인할 수 있다.

[그림] 패킷의 전송 계층 부분

인터넷 계층(Internet)

ISO에서 3계층에 해당하며, 논리적 주소인 IP를 이용한 노드간 전송과 라우팅 기능을 처리하게 된다. 네트워크 상 최종 목적지까지 정확하게 연결되도록 연결성을 제공하게 된다. 라우터가 이 계층에 해당 된다.

필드 길이 설명
버전 4비트 IP 프로토콜 버전으로 IPv4, IPv6가 대표적으로 많이 사용된다.
헤더 길이 4비트 IP 헤더의 길이
서비스 타입 1바이트 패킷의 우선 순위
전체 길이 2바이트 IP 메시지 전체 길이
ID 정보 2바이트 개개의 패킷의 식별 번호, 일렬 번호라고도 함
플래그 3비트 프래그먼트된것인지 아닌지 유무를 알림
프래그먼트 오프셋 13비트 플래그 세팅되지 않으면, 프래그먼트 된것으로 여기에 선두로부터 몇번째 인지 나타낸다.
생존 기간 1바이트 네트워크 장비를 통과할 수 있는 홉수로 TTL 값이 여기 존재
프로토콜 번호 1바이트 TCP, UDP, CMP인지를 구분한다.
헤더 체크섬 2바이트 오류 검사용 데이터
출발지 IP 주소 4바이트 출발지 IP 주소
도착지 IP 주소 4바이트 도착지 IP 주소

[표] 인터넷 계층의 구성 필드

인터넷 계층의 패킷 데이터를 와이어샤크로 확인해 보면 아래와 같다. 응용프로그램 데이터 전달전의 패킷 정보를 담고 있다.

[그림] 패킷의 인터넷 계층 부분

네트워크 엑세스 계층(Network access)

OSI 7계층의 1,2 계층에 해당되며, 물리적 주소인 MAC주소를 이용하여 패킷을 보낼 곳을 판단하게 된다. 여기에 사용되는 프로토콜로 ARP 등이 해당하며, 스위치와 허브등이 이 계층에 해당된다. 스위치와 라우터의 차이는 바로 계층에서도 나타난다고 볼 수 있다. 라우터는 IP를 이용한 3계층에서 동작하는 장비이고, 스위치는 MAC을 이용한 2계층 장비이다.

필드 길이 설명
도착지 MAC 주소 6바이트 보낼 상대의 MAC 주소
출발지 MAC 주소 6바이트 이 패킷을 보내는 측의 MAC 주소
이더넷 타입 2바이트 사용하는 프로토콜 종류를 표시한다.

[표] 네트워크 엑세스 계층의 구성 필드

[그림] 패킷의 네트워크 엑세스 계층 부분

그럼 이제 실제 전송되는 패킷을 통해 계층별로 구분하면 다음과 같다.

위치 TCP/IP 계층 구분
00h 네트워크 엑세스
0Eh 인터넷
22h 전송
35h 응용

[표] 패킷 데이터에서 TCP/IP의 각 계층 offset

실제 물리적 데이터를 통해 각 계층별 데이터를 나누어 보면 아래 그림처럼 구분할 수 있다.

[그림] 패킷의 헥사 코드 분류

Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.