slide-image

 

와이어샤크

[2019-1]

#03

 

와... 내내 놀다가 지금 쓰려니까 너무 힘들다.

오늘 불꽃놀이 너무 이뻤는데.....

 

어쨌든 http-disney101.pcapng파일을 와이어샤크로 연다.

해줄 일은 column에 http 호스트 필드를 추가하는 것이다. 

일반적으로 (사이트 이름)호스트 이름을 안 알려주지만, 분석할 때 편하려고 추가하려고 한다.

이렇게 만드려고 한다.

일단 HTTP를 사용하는 프레임으로 대충 프레임 15를 선택해서 패킷 상세 창의 HTTP 필드 확장 창 부분에서 Host가 있는 부분을 오른쪽 클릭해서 Apply as column을 한다. 

그럼 이렇게 생성된 것을 볼 수 있고, Host 컬럼을 누르면 정렬도 시켜준다.

와이어 샤크에서 패킷을 해석하는 과정을 알아볼 것인데, 일단 수집 엔진을 통해 수집된 패킷이나 wiretap 라이브러리에 저장된 패킷이 core engine으로 전달되어 실제 해석 작업이 시작된다. 그리고 해석기를 호출해서 byte 상태의 패킷을 사람이 해석할 수 있도록 필드별로 구분 및 변환을 한다.

많이 사용되는 해석기는 Frame 해석기, Ethernet 해석기, Ipv4 해석기, TCP 해석기, HTTP 해석기이다.

해석기의 순서는 OSI 7 layer의 순서를 따른다. 따라서 위의 해석기들이 모두 쓰인다면, Frame->Ethernet->IPv4->TCP->HTTP 순으로 쓰이는 것이다. 

 

첫 번째로 Frame Dissector은 각 프레임에 대해 추적 파일의 메타데이터(크기, 용량, 타임 스탬프 집합 등)을 해석하고, 작업이 완료되면, 어떤 프로토콜인지에 따라서 다음 해석기에 전달한다. 

밑은 아까 봤던 15번 프레임인데, 이를 토대로라면, Encapsulation type 이 이더넷이므로, 이더넷 dissector 해석기에 전달한다.

ethernet dissector도 위와 비슷하게 type field의 내용을 기반으로 헤더의 필드를 해석한다. 이더넷은 2계층이므로, 기본적으로 MAC 주소가 나와있다. Des와 Source의 MAC 주소를 알 수 있으며, 작업이 종료되면 type에 따라 다음 해석기에 패킷을 전달한다. ARP나 IPv4, IPv6 등의 dissector으로 넘어갈 수 있다.

15번 프레임은 IPv4 Dissector으로 넘어감을 알 수 있다.

protocol filed의 내용을 기반으로 IPv4헤더의 필드를 해석하고, 3계층이므로 아이피 주소가 나와있음을 알 수 있다. 작업 종료 후는 마찬가지로 프로토콜에 따라서 다음 해석기에 패킷을 전달한다.

15번 프레임은 TCP 임을 알 수 있다. 

TCP dissector은 4계층을 기반으로 하므로 포트를 기반으로 함을 추측할 수 있다. 포트는 물리적인 개념이 아닌 논리적인 개념으로 PID같은 개념이다. 데이터의 혼선을 막기 위해서 프로세스, 프로토콜을 구별하는 번호를 부여한다. 포트를 기반으로 하므로 만약, 80번 포트인 HTTP 프로토콜을 사용한다면, 클라이언트는 랜덤으로 포트를 할당받고, 서버는 80번 포트로 들어갈 것이다. (15번 프레임이 이렇다.) des의 포트를 기준으로 다음 해석기를 결정한다.

HTTP dissector은 HTTP 패킷의 필드를 해석하는데, 패킷 내 내장된 프로토콜이나 어플리케이션이 있을 경우 다음 해석기로 넘어간다. 15번 프레임은 없는 것을 확인할 수 있다.

 

그렇다면, 만약 비표준 포트 번호를 사용하는 트래픽이라면 어떨까?

어플리케이션이 의도적으로 비표준 포트를 사용하도록 설계되었을 수도 있고, 네트워크 식별을 회피하기 위해서 비표준 포트를 스스로 할당받을 수도 있다. 이럴 때에는 와이어 샤크가 트래픽에 해석기를 적용하는 방법을 알아내기 위해서 정적 방법을 사용거나, 경험적 방법을 사용한다.

 

정적 방법은 패킷 헤더를 검사해서 다음에 사용할 논리 해석기를 결정하는 것이다. 위 처럼 포트 번호, 타입 필드, 프로토콜 필드 등을 참고하는 것이다. 경험적 방법은 다음에 있어야 할 논리 해석기를 추측하는 것이다.

 

그러면 정적 방법을 사용하면, 와이어 샤크가 해당 트래픽에 잘못된 해석기를 적용할 수도 있고,  경험적 방법을 사용해서 적절한 해석기를 사용할 수도 있다. 또한 두 가지 방법 모두 사용에 적합한 해석기를 결정하지 못하면 아무런 해석기도 적용하지 못할 수 있다. 마지막 경우는 해당 필드를 해석한 이후 트래픽을 더 이상 해석하지 않으므로 마지막 필드가 TCP이다.

 

정적 방법은 알아봤으니까, 경험적 해석기의 작동 방식에 대해서 알아보자면, 경험적 방법은 일반적으로 정적 방법으로 다음 해석기를 판단하기 어려울 때 사용하며, 마찬가지로 여러 개의 경험적 해석기와 적용 순서가 존재한다.

정적 방법을 사용할 수 없으므로, 각 경험적 해석기에게 패킷이 차례로 넘어가면서 패킷에서 인식할 수 있는 패턴을 탐지하여 어떤 유형의 통신이 포함되어 있는지 판단한다. 이런 탐색이 실패하면 와이어샤크에게 실패 표시가 반환되고, 다음 해석기에 패킷이 전달되는 과정이 반복된다. 최후 모든 탐색기가 탐색에 실패하면 해당 패킷은 데이터로 지정된다.

 

하지만 아무리 봐도 데이터가 아닐 때 수동으로 해석기를 강제 적용할 수 있다.

이럴 때에는 비표준 포트가 이미 해석기와 연관되어 있어 와이어 샤크가 잘못된 해석기를 적용했거나, 해당 트래픽 유형에 대한 경험적 해석기를 갖고 있지 않는 경우이다. 따라서 패킷 목록 창에서 이런 패킷을 오른쪽 클릭하여 Decode As를 선택해  Value 열에서 해석하려는 포트(Source 포트인지 Dest 포트인지)를 선택하고, Current 열에서 원하는 해석기(프로토콜)을 선택하면 된다.

이건 제대로 해석된 프레임이지만 그냥 해보았다.
여기서 설정하면 된다.

설정 해제시 Analyze>Decode As>해석기 선택>삭제(-) 클릭을 하면 된다.

 

그리고 선호에 따라서 해석기를 설정할 수 있는데, 만약 포트 81번으로 들어오는 패킷도 HTTP로 해석했더니 해석이 잘 되었고, 이런 일이 많이 발생할 경우에 자동적으로 81번으로 들어온 패킷을 HTTP로 해석하도록 설정하고 싶어질 수 있다.

그럴 때 Edit > Preferences > Protocols > HTTP(선택) > 해당 포트 추가

의 과정을 거치면 된다.

그리고 특정 트래픽 유형에 대한 디스플레이도 변경할 수 있다.

Edit > Preferences > Appearance에서 인터페이스를 변경할 수 있고, Capture에서는 캡처 관련된 설정을 할 수 있다...

Premiscuous Mode로 패킷을 캡쳐라면, 로컬 하드웨어 주소 뿐만 아니라 모든 하드웨어 주소에 대해서 패킷을 캡쳐한다(필수)

pcapng형식으로 캡쳐하면 직접 캡쳐한 추적 파일은 수집 필터에 대한 메타데이터를 포함하게 된다.

실시간 패킷 목록 업데이트를 하게되면, 패킷이 캡처되는 동안에 캡처한 패킷을 해석하고 출력해준다.

실시간 캡처에서 자동 스크롤을 설정하면 패킷 목록 창을 스크롤해서 가장 최근에 캡처한 패킷을 자동으로 확인할 수 있다. 이 사항은 트래픽이 적은 경우에 유용하다.

 

 

Filter Expressions은 filter expression 버튼을 지정하며, 더 빠르게 적용하고자 하는 필터를 설정할 수 있다.

Name Resolution은 이름 변환 설정을 지정하며, 주소나 포트를 변환해서 패킷 주소 정보를 알아보기 쉽게 한다. 

MAC 이름 변환을 하면, MAC 주소 첫 3바이트를 와이어 샤크 내 MANUF 파일을 이용해 사람이 알아보기 편리한 이름으로 변환한다.(디폴트)

 

Transport 이름 변환을 사용하면 포트 번호를 servieces 파일을 사용해 해당 포트를 사용하는 프로토콜 이름으로 변환한다.

 

IP 주소 변환을 이용하면, 서버의 IP 주소 대신 호스트 이름으로 변환해 출력한다.

이 때의 추가적인 환경 설정 옵션 5가지가 있는데, DNS에 대한 내용으로, 캡쳐된 DNS 패킷 데이터를 사용해서 주소를 변환한다면, 추적 파일의 모든 변환 가능한 패킷을 검사하고 패킷의 정보를 사용해서 호스트 이름으로 변환하는 것이다. 

외부 네트워크 이름 변환기를 사용한다면, DNS 캐시 등으로 호스틑 이름을 얻을 수 없는 경우에 DNS 포인터를 조회하여 추가 트래픽이 발생하고 이게 추적 파일에 표시된다. 

동시 DNS 이름 변환 활성화 기능을 사용한다면 와이어샤크에서 여러 DNS 조회를 보내 이름 변환 속도를 향상시키는 것이다. 하지만 외부 이름 변환이 가능한 경우만 사용 가능하다.

최대 동시 요청 수 기능을 사용한다면, DNS 서버로 동시에 보낼 수 있는 요청의 개수 상한선을 표시한다. 

프로파일 'hosts'파일만 사용한다고 설정하면, DNS 정보를 통해 변환할 수 없는 내부 호스트의 이름을 변환 시에 IP 주소와 이름이 나열된 hosts 파일을 만들어야 한다.

 

SNMP 변환 옵션은 기본적으로 MIB(Management Information Base)나 PIB(Policy Information Base)객체를 변환하는 기능이 있고, 필요 시에 사용할 수 있다.

 

GeoIP 데이터 베이스 디렉토리는 GeoIP 데이터 베이스 파일을 사용해서 세계 지도에 IP 주소를 표기할 수 있도록 한다. MaxMind에서 Geo.dat 파일을 다운로드하여 사용한다.

 

 

'EVI$I0N > 2019-1' 카테고리의 다른 글

[웹보안] #04  (0) 2019.05.13
[디지털포렌식] #03  (0) 2019.05.13
[딥러닝] #03  (0) 2019.05.06
[웹보안] #03  (0) 2019.04.29
[딥러닝] #02  (0) 2019.04.08