ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [와이어샤크 #3] 와이어샤크 해석기, 각종 설정 및 기능
    EVI$ION/Wireshark 2019. 5. 6. 12:13

    이번 시간에는 와이어샤크의 여러 기능에 대해 배웠다. 실습은 http-disney101.pcapng 파일로 진행했다.

     

    [Column에 HTTP 호스트 필드 추가]

    와이어샤크에서는 분석 시간 단축을 위해 열의 추가 및 정렬이 중요하게 사용된다. 이 기능은 많은 네트워크 패킷들을 보기 편하게 정렬해준다.

     

    HTTP 프로토콜을 사용하는 프레임 15의 패킷 상세 창에서 HTTP의 Host를 선택한 후 우클릭하여 Apply as Column 메뉴를 클릭하면, Host 열이 추가된다.

    Host 열에는 클라이언트에게 요청을 보낸 모든 호스트, 즉 클라이언트와 통신한 모든 호스트의 정보가 출력된다.

    Host 열이 추가된 화면

     

    [와이어샤크 해석기]

    와이어샤크에서는 먼저 수집 엔진을 통해 수집된 패킷이나 Wiretab 라이브러리에 저장된 패킷을 Core Engine으로 전달한다. Core Engine은 패킷 변환이나 해석 작업을 수행하는 곳으로, 이 곳에서 해석기를 호출하여 byte 상태의 패킷을 사람이 해석할 수 있도록 필드별로 구분 및 변환한다.

     

    이 과정에서 많이 사용되는 해석기로는

    ① Frame 해석기, ② Ethernet 해석기, ③ IPv4 해석기, ④ TCP 해석기, ⑤ HTTP 해석기 등이 있다.

    해석 작업은 여러 개의 해석기로 진행되며, 보통 이 순서로 해석기가 적용되며 패킷이 해석된다.

     

    ① Frame 해석기: 각 프레임에 대해 추적 파일의 메타데이터(타임스탬프 집합 등)를 해석하고, 작업이 완료되면 Ethernet 해석기에 패킷을 전달한다.

    Frame 해석기가 해석한 내용 (프레임 15)

     

    ② Ethernet 해석기: Type Field의 내용을 기반으로 Ethernet II 헤더의 필드를 해석한다. 작업이 종료되면 Type에 따라 다음 해석기에 패킷을 전달한다. 여기서 타입이란, 이더넷을 통해 MAC 주소를 받은 뒤에 이를 어떤 프로토콜로 전송할 것인지를 명시한 것이다. 타입의 종류로는 IPv4 또는 IPv6, ARP 등 다양하지만 주로 IPv4가 많이 사용되므로 IPv4 해석기로 전달된다.

    (OSI 2계층, 데이터링크 계층의 내용을 보여준다.)

    Ethernet 해석기가 해석한 내용 (프레임 15)

     

    ③ IPv4 해석기: Protocol Field의 내용을 기반으로 IPv4 헤더의 필드를 해석한다. 작업이 종료된 뒤에는 Protocol에 따라 다음 해석기에 패킷을 전달한다.

    (OSI 3계층, 네트워크 계층의 내용을 보여준다.)

    IPv4 해석기가 해석한 내용 (프레임 15)

    ④ TCP 해석기: Port Field의 내용을 기반으로 TCP 헤더의 필드를 해석한다. 작업이 종료된 후에는 사용하는 Port에 따라 다음 해석기에 패킷을 전달한다.

    프레임 15에서 Src Port는 클라이언트 포트이고, Dst Port는 서버 포트인데, Dst Port가 80이라는 것은 HTTP로 통신하겠다는 것을 의미한다. 즉, 프레임 15는 80번 포트를 통해 HTTP로 서버에 요청을 보내는 과정을 나타낸 것이고, 프레임 16은 80번 포트를 통해 HTTP로 이에 대한 응답을 전송하는 과정을 나타낸 것이다. 

    (※ 참고: 프레임 15은 HTTP 헤더를 가지고 있지만, 프레임 16은 HTTP 헤더를 따로 갖고 있지 않다. 원래 포트가 구분되어 있는 이유가 데이터를 주고받을 때 충돌이나 혼선이 없도록 하기 위해서인데, 요청에서 이미 80번 포트를 사용한다고 명시했기 때문에 응답에서 굳이 헤더를 두지 않는 것이라고 추측된다. (궁예라서 확실하진 않다...))

    (OSI 4계층, 전송 계층의 내용을 보여준다.)

    TCP 해석기가 해석한 내용 (프레임 15)
    TCP 해석기가 해석한 내용 (프레임 16)

     

    ⑤ HTTP 해석기: HTTP 패킷의 필드를 해석한다. 패킷 내에 내장된 프로토콜이나 애플리케이션이 있을 경우 다음 해석기에 패킷을 전달한다.

    (OSI 7계층, 응용 계층의 내용을 보여준다.)

    HTTP 해석기가 해석한 내용 (프레임 15)

     

     

    [비표준 포트 번호를 사용하는 트래픽 분석]

    각 프로토콜에는 정해진 포트 번호가 있다. 그런데 가끔 악성코드가 자신을 쉽게 탐지할 수 없도록 하기 위해 의도적으로 비표준 포트 번호를 스스로 할당하는 경우가 있다. 예를 들면 악성코드가 HTTP 통신을 할 때, 원래 정해진 표준 포트 번호인 80번을 사용하지 않고 아예 다른 번호를 할당해 사용하는 것이다. 와이어샤크에서는 이러한 비표준 포트 번호를 사용하는 트래픽을 해석기에 적용할 수 있는 방법을 두 가지 제시한다.

     

    1) 정적 방법

    : 패킷 헤더를 검사하여 다음에 사용할 논리 해석기를 결정한다. 사용하는 포트 번호, 타입 필드, 프로토콜 필드 등을 참고하여 결정한다.

     

    2) 경험적 방법

    : 해당 패킷 다음에 있어야 할 논리 해석기를 추측한다. 지금까지의 비표준 포트를 사용했던 트래픽들의 분석하여 다음에 어떤 논리 해석기가 오는지 경험적인 데이터를 토대로 추측하는 것이다.

     

     

    어떤 트래픽이 비표준 포트를 사용할 때, 정적 방법을 사용할 경우 와이어샤크가 해당 트래픽에 잘못된 해석기를 적용할 수 있다는 단점이 있다. 이 경우 경험적 방법을 사용하면 적절한 해석기를 적용할 수 있다. 그러나 가끔 정적 방법과 경험적 방법, 두 가지 방법 모두 적합한 해석기를 찾는데 실패하는 경우가 있다. 이러한 경우, 해당 필드를 해석한 이후의 트래픽을 더 이상 해석하지 않는다. 결국 적합한 해석기를 찾는데 실패하면 해석은 중단되고, 이 때 마지막 필드는 항상 TCP이다.

     

     

    경험적 해석기의 작동 방식

    앞에서 설명했듯이, 경험적 방법은 정적 방법으로 다음 해석기를 판단할 수 없을 때 사용된다. 경험적 방법에서 사용되는 경험적 해석기는 여러 가지가 있으며, 해석기마다 적용 순서가 존재한다.

    정적 방법을 사용할 수 없는 경우, 각 경험적 해석기에게 패킷이 차례로 넘어가면서 패킷에서 인식할 수 있는 패턴을 탐지해 어떤 유형의 통신이 포함되어 있는지를 판단한다. 만약 경험적 해석기가 탐색에 실패하면 와이어샤크에게 실패 표시를 반환하고, 와이어샤크는 다음 해석기에게 패킷을 전달한다. 이러한 과정을 탐색에 성공할 때까지 반복한다. 즉, A 해석기가 탐색에 실패하면 해당 패킷이 B 해석기로 넘어가서 B 해석기가 탐색을 다시 시도하고, B에서도 실패하면 C 해석기로 넘어감으로써 탐색 과정을 반복한다. 만약 모든 탐색기가 탐색에 실패하면, 해당 패킷에는 더 이상 적용할 수 있는 프로토콜이 존재하지 않는다는 뜻이므로, 데이터로 분류해 지정한다.

     

     

    수동으로 해석기를 강제 적용하는 경우

    만약 비표준 포트가 이미 해석기와 연관되어 있어서 와이어샤크가 잘못된 해석기를 적용한 경우나, 해당 트래픽 유형에 대한 경험적 해석기를 갖고 있지 않은 경우, 사용자가 수동으로 해석기를 강제 적용할 수 있다.

     

    해석기 강제 적용 방법

    1) 패킷 목록 창에서 해석할 수 없거나 잘못 해석된 패킷을 선택해 우클릭

    2) Decode As 클릭

    3) Value 열에서 강제로 해석하려는 포트 선택

    4) Current 열에서 원하는 해석기 선택

     

    해석기 설정 해제

    1) 메인 메뉴의 Analyze 클릭

    2) Decode As 클릭

    3) 사용한 해석기 선택한 후 삭제(-) 클릭

     

     

    선호도 설정을 이용한 해석 조절

    특정 프로토콜이 어떤 비표준 포트를 통해 적용된 사례가 다수 발견된 경우, 프로토콜 Preference 설정에 추가할 수 있다.

     

    선호도 설정 방법

    Edit  Preferences  Protocols  원하는 프로토콜 선택 (HTTP, IPv4/6 등)  TCP Ports에 해당 포트 추가

    HTTP에 81번 포트를 추가하는 경우

     

     

    [그 외 기능들]

    특정 트래픽 유형에 대한 디스플레이 변경

    1) 사용자 인터페이스 설정: Edit  Preferences  Appearance

    2) 캡처 설정: Edit → Preferences → Capture

    캡처 설정

    • 무차별 모드(Promiscuous Mode)로 패킷 캡처: 로컬 하드웨어 주소 뿐만 아니라 모든 하드웨어 주소에 대해 패킷을 캡처하여 전달한다. (필수 기능)
    • pcapng 형식으로 캡처: .pcapng 형식으로 직접 캡처한 추적 파일은 수집 필터에 대한 메타데이터를 포함한다.
    • 실시간 패킷 목록 업데이트: 패킷이 캡처되는 동안에 캡처한 패킷을 해석하여 출력한다.
    • 실시간 캡처에서 자동 스크롤: 패킷 목록 창을 스크롤해 가장 최근에 캡처한 패킷을 자동으로 확인한다. 트래픽이 적은 경우에 유용하게 사용할 수 있다.

     

     

    Filter Expression 버튼 지정

    - 더 빠르게 적용하고자 하는 필터를 지정한다.

    - Edit → Preferences → Filter Expressions

     

     

    이름 변환 설정 지정

    - 주소 및 포트 변환 처리 방법을 변경하여 패킷 주소 정보를 더 쉽게 알아볼 수 있게 해준다.

    - Edit → Preferences → Name Resolution

    이름 변환 설정

    • MAC 이름 변환: MAC 주소의 첫 3바이트를 와이어샤크 내의 MANUF 파일을 통해 사람이 알아보기 편리한 이름으로 변환한다. (기본 기능)
    • Transport 이름 변환: 포트 번호를 해당 포트를 사용하는 프로토콜 이름으로 변환한다. services라는 파일을 사용하여 변환한다.
    • IP 주소 변환: 서버의 경우, IP 주소 대신 호스트 이름으로 변환하여 출력해준다.
    • SNMP 변환 옵션: 기본적으로 MIB(Management Information Base)/PIB(Policy Information Base) 객체를 변환하는 기능이 있다. 필요한 경우 추가 PIB, MIB 모듈을 사용하거나 경로를 추가할 수 있다.
    • GeoIP 데이터베이스 디렉토리: GeoIP 데이터베이스 파일을 사용하여 세계 지도에 IP 주소를 표기할 수 있다. MaxMind에서 Geo.dat 파일을 다운로드하여 사용한다.

     

    ※ IP 주소 변환 시 추가적인 환경 설정 옵션

    • 캡처된 DNS 패킷 데이터를 사용해 주소 변환: 추적 파일의 모든 변환 가능한 패킷을 검사하고, 패킷의 정보를 사용하여 호스트 이름으로 변환한다.
    • 외부 네트워크 이름 변환기 사용: DNS 캐시 등으로 호스트 이름을 얻을 수 없는 경우, DNS 포인터를 조회하면 추가 트래픽으로서 추적 파일에 표시된다. DNS 서버에 대한 추가 작업을 생성할 수 있다.
    • 동시 DNS 이름 변환 활성화: 와이어샤크에 여러 DNS 조회를 보내서 이름 변환 속도를 향상시킨다. 외부 이름 변환이 가능한 경우에만 이 기능을 활성화시킬 수 있다.
    • 최대 동시 요청 수: DNS 서버로 동시에 보낼 수 있는 요청의 개수가 표기된다. 숫자가 작을수록 DNS 서버의 로드가 감소한다.
    • 프로파일 'hosts' 파일만 사용: DNS 정보를 통해 변환할 수 없는 내부 호스트의 이름을 변환할 때 사용한다. IP 주소와 이름이 냐열된 hosts 파일을 생성해야 한다.

     

     

     

Designed by Tistory.