Skip to content

Wireshark

와이어샤크(Wireshark)는 자유 및 오픈 소스 패킷 분석 프로그램이다. 네트워크의 문제, 분석, 소프트웨어 및 통신 프로토콜 개발, 교육에 쓰인다. 원래 이름은 Ethereal이었으나 2006년 5월에 상표 문제로 말미암아 와이어샤크로 이름을 바꾸었다.

와이어샤크는 크로스 플랫폼으로, GTK+ 위젯 툴킷을 이용하여 사용자 인터페이스를 제공하며, pcap을 이용하여 패킷을 포획한다. 리눅스, 맥 OS X, BSD, 솔라리스를 포함한 다양한 유닉스 계열 운영 체제와 마이크로소프트 윈도에서 동작한다. GUI가 없는 터미널 기반 버전인 티샤크(TShark)도 제공한다. 와이어샤크, 또 TShark와 같은 프로그램과 함께 배포되는 여러 프로그램들은 자유 소프트웨어로, GNU 일반 공중 사용 허가서의 조건으로 공개된다.

Categories

ETC

  • PlcGateway#pandas 패킷 로그 통계 - wireshark 로그를 분석하여 (근데 결국 text 분석임) 통계
  • Subtrace - Docker 컨테이너를 위한 Wireshark

CLI Tools

  • Wireshark 기타 유틸리티: Mergecap, Editcap, Capinfos
  • capinfos - 덤프 파일의 각종 통계(ex., 패킷 수, 전체 데이터 크기, duration, bytes/sec 등)를 산출
  • mergecap - 여러 개의 pcap/pcapng 파일을 하나의 덤프 파일로 통합해주는 도구
  • dumpcap - 명령 인터페이스 기반 패킷 수집기
  • editcap - 패킷 덤프 파일의 일부 영역을 추출하는 도구
  • reordercap - pcap/pcapng 파일에 기록된 패킷을 시간(timestamp)순으로 재정렬하는 도구

기능

와이어샤크는 tcpdump와 매우 비슷하지만 그래픽 프론트엔드에 정렬, 필터링 옵션이 몇 가지 추가된 점이 다르다.

와이어샤크는 사용자가 무차별 모드(promiscuous mode)를 지원하는 네트워크 인터페이스를 해당 모드에 추가할 수 있는 기능을 제공한다. 이로써 인터페이스의 구성 주소와 브로드캐스트/멀티캐스트 트래픽을 포함한 모든 트래픽이 해당 인터페이스에 나타난다. 그러나 네트워크 스위치 포트의 무차별 모드에서 패킷 가로채기로 말미암아 포획을 할 때 스위치를 통하는 모든 트래픽이 꼭 포획하는 포트를 거치는 것은 아니다. 그러므로 무차별 모드에서의 포획은 네트워크의 트래픽을 모두 확인하지는 못한다. 포트 미러링이나 다양한 네트워크 탭을 이용하면 네트워크 상의 어느 지점으로까지 포획 범위를 넓힐 수 있다. 단순한 수동 탭(passive tap)은 악성 코드 탬퍼링 방지 기능이 매우 뛰어나다.

리눅스, BSD, 맥 OS X에서 libpcap 1.0.0 이후 버전으로 말미암아 와이어샤크 1.4 이후부터는 와이파이 어댑터를 감시 모드에 추가할 수 있게 되었다.

Display Filter vs Capture Filter

  • Display Filter는 네트워크 상에 모든 패킷을 캡처하고 필요한 뷰를 필터링 하는 것이라면
  • Capture Filter는 캡처할 패킷 자체를 필터링함으로 캡쳐 패킷 용량을 획기적으로 줄일 수 있다.

Display Filter Expressions

지원 프로토콜

다음 위치에서 확인 가능:

"View" - "Internals" - "Supported Protocols"

Filter example

Data

data.len > 0
Application Protocol Data가 0 보다 큰 패킷 필터 하기
프로토콜 헤더만 존재하는 패킷들을 제외하는 목적으로 주로 사용됨
data[4] == 0x11 and data[10] != 0x01
Data 특정 영역에 특정 값을 가지는 패킷 필터
Application Protocol의 Data 4번째 바이트의 값이 0x11이고 10번째 바이트 값이 0x01이 아닌 패킷 필터링 (특정 식별자를 가지는 패킷만 필터링 하는 경우 사용)
data contains 0A:0B:0C:0D
Data에 특정 바이트 배열 값을 포함하는 패킷 필터
Application Protocol의 Data에 16진수로 0A0B0C0D 값을 포함하는 패킷 필터링
data contains "\"hello\""
Data에 특정 문자열 값을 포함하는 패킷 필터
Application Protocol의 Data에 "hello"라는 문자열(쌍따옴표 포함)을 포함하는 패킷 필터링 (역슬러쉬 ('\') 문자는 Escape 문자로 동작해서 쌍따움표('"')를 문자값으로 인식하도록 한다)

Ethernet Protocol

eth.addr == 00:12:34:56:78:9A
eth source & destination 둘 중 하나라도 해당 MAC 주소일 경우
eth.src == 00:12:34:56:78:9A
eth source MAC address
eth.dst == 00:12:34:56:78:9A
eth destination MAC address

IP Protocol

ip.addr == 10.1.0.1
출발지나 목적지 IP주소로 검색
ip.src == 10.1.0.1
출발지 IP주소로 검색
ip.dst == 13.107.4.50
목적지 IP주소로 검색

TCP/UDP Protocol

tcp.port == 8080
TCP 출발지나 목적지 포트 번호로 검색
tcp.srcport == 8080
TCP 포트 출발지 포트 번호로 검색
tcp.dstport == 8080
TCP 포트 목적지 포트 번호로 검색
tcp or udp
TCP 또는 UDP 프로토콜
tcp.flags.syn == 1 or tcp.flags.fin == 1 or tcp.flags.reset == 1
TCP 연결 or 연결해제 or TCP 서버 포트가 닫혀 있을 때 서버 응답

HTTP Protocol

http.host == lng1982.tistory.com
도메인으로 검색

필터 구문을 몰라서 추가하지 못하는 경우 (확인하는 방법)

특정 프로토콜의 특정 필드 값을 필터에 사용하고 싶은데 관련된 필터 구문을 알지 못한다면 아래와 같이 확인이 가능하다.

  1. Packet Details 창에서 프로토콜의 특정 필드를 마우스 오른쪽 클릭
  2. Apply as Filter 선택
  3. 해당 필드 필터링 위한 구문 확인 가능
  4. Selected, Not Selected 등을 통해 필터 구문 자동입력 역시 가능

Wireshark_-_apply_as_filter_menu.png

Frame 의 Arrival Time (도착 시간) 컬럼 추가

컬럼이 있는 곳에 마우스 오른쪽 버튼 클릭하면 팝업이 출력되는데 "Column Preferences..." 를 클릭하자.

Wireshark_-_Column_Preferences.png

그럼 Wireshark 의 Column Preferences 화면이 출력되는데 여기서 "+" 버튼을 클릭하여 Type 이 "Absolute date, as YYYY-MM-DD, and time" 라고 적힌 항목을 선택하면 된다.

Wireshark_-Column_Preferences-_Arrival_Time.png

editcap

editcap는 Wireshark에서 제공하는 명령줄 도구로, PCAP 파일을 여러 개로 나눌 수 있습니다.

1시간 단위로 나누기

PCAP 파일을 1시간 단위로 나누려면 아래 명령어를 사용합니다.

editcap -i 3600 input.pcap output.pcap
  • -i 3600 - 3600초(1시간) 간격으로 파일을 자릅니다.
  • input.pcap - 원본 PCAP 파일 경로.
  • output.pcap - 생성할 파일의 이름. output_00000.pcap, output_00001.pcap 등으로 자동으로 생성됩니다.

복잡한 방법

복잡한 방법은 tshark를 사용해야 할듯.

트래픽 분석 기초

서버 패킷 분석

Tcpdump#서버 패킷 분석 항목 참조.

Troubleshooting

HTTP가 IPA로 출력되는 현상

수집된 패킷 중에 프로토콜 필드가 IPA로 표시된 패킷들이 종종 있다. 이 패킷들은 아래의 설정을 통해 HTTP 패킷으로 확인할 수 있다.

wireshark -> analyze -> enabled protocol -> GSM over IP (disable)

Ubuntu 설치 직후 정상적으로 실행되지 않는 상황

아래와 같은 경고 대화상자가 출력될 수 있다.

Wireshark-ubuntu-install-alert.png

메시지와 같이, 권한 설정 및 그룹 추가를 진행하면 된다.

$ sudo dpkg-reconfigure wireshark-common
## 질문에 대해 <YES>를 입력하면 된다.

$ sudo usermod -a -G wireshark $USERNAME

See also

Favorite site

References


  1. Meetup_TOAST_Cloud_-_Analyze_my_protocol_with_Wireshark.pdf