2022.12.06. 최초 작성
Wireshark는 1998년 Ethereal이라는 이름의 프로그램으로 시작되었다가 2006년에 프로젝트 이름을 와이어샤크로 변경하였다.
와이어샤크는 GNU Public License인 오픈소스로 홈페이지에서 무료로 다운로드 받아 설치할 수 있다.
Wireshark · Go Deep.
What is SharkFest? SharkFest™, launched in 2008, is a series of annual educational conferences staged in various parts of the globe and focused on sharing knowledge, experience and best practices among the Wireshark® developer and user communities. Shar
www.wireshark.org
패킷을 캡처하려면 Capture --> Options 메뉴에서 인터페이스를 선택한다.

컴퓨터의 네트워크가 연결된 인터페이스를 선택해야 한다.
보통 무선일 경우 Wi-Fi이고 유선일 경우 로컬영역연결 중 트래픽에 시그널이 잡히는 인터페이스를 선택하고 Start 버튼을 클릭한다.

promiscuous mode 활성화에 체크가 되어있다.
promiscuous mode는 네트워크 카드가 패킷을 무조건 수용하는 설정으로 패킷의 목적지에 상관없이 모든 패킷을 처리할 수 있다.
다양한 패킷들이 캡처되므로 불필요한 패킷도 캡처될 수 있다. 그렇게 되면 용량이 커지고 분석하기 번거롭다. 캡처 필터를 적용하면 원하는 패킷만을 필터링하게 된다.
캡처 필터의 는 기본적으로 몇 가지 저장되어있는데 초록색 책갈피 모양을 클릭하면 내용을 확인할 수 있다.
Manage Capture Filters 메뉴에서 저장된 필터를 편집하거나 추가할 수 있다.
캡처 필터의 문법은 와이어샤크의 위키 페이지에 정리되어있다.
https://wiki.wireshark.org/CaptureFilters
CaptureFilters
CaptureFilters An overview of the capture filter syntax can be found in the User's Guide. A complete reference can be found in the expression section of the pcap-filter(7) manual page. Wireshark uses the same syntax for capture filters as tcpdump, WinDump,
wiki.wireshark.org
캡처 필터는 libpcap/WinPcap에 의해 BPF(Berkeley Packet Filter) 구문을 사용한다. BPF 구문은 패킷 스니핑 프로그램에서 일반적으로 많이 사용한다.
BPF구문을 사용해 작성된 필터를 표현식이라한다. 표현식은 하나 이상의 프리미티브(Primitive)로 구성된다. 프리미티브는 표현식에서 가장 기본적인 단위로 하나이상의 한정자와 ID로 구성된다.
한정자 | 설명 | 예제 |
Type | ID 이름이나 번호를 식별한다. | host, net, port |
Dir | ID 이름이나 번호에 대한 전송 방향을 지정한다. | src, dst |
Proto | 특정 프로트콜에 대해 일치하는 것을 제한한다. | ether, ip, tcp, udp, http, ftp |
IBM의 보안 프로그램인 QRadar 문서에 BPF에 대해 소개되어 있다.
https://www.ibm.com/docs/ko/qsip/7.4?topic=queries-berkeley-packet-filters
BPF(Berkeley Packet Filter)
BPF(Berkeley Packet Filter)는 침입 감지 분석을 위한 강력한 도구를 제공합니다. BPF 필터링을 사용하면 특정 유형의 트래픽을 기반으로 필터링하여 대용량 패킷 캡처를 감소된 결과 세트로 빠르게 줄
www.ibm.com
캡처 필터의 구조는 프리미티브를 논리 연산자로 결합하여 확장할 수 있다.
아래 예제는 목적지가 192.168.1.10이고 발신지 또는 목적지 포트가 80인 패킷 필터이다.

기본적으로 ip, port, host를 출발지나 목적지로 분류해서 필터 할 수 있다.
ip src 10.10.10.10
tcp port 1234
host 172.18.5.4
네트워크 영역을 필터 할 수도 있다.
net 192.168.0.0/24
net 192.168.0.0 mask 255.255.255.0
논리연산자와 (and, or, not) 괄호도 가능하다.
host www.example.com and not (port 80 or port 25)
host www.example.com and not port 80 and not port 25
비교연산자와 범위도 가능하다.
(tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)
tcp portrange 1501-1549
캡처 필터 문법에 오류가 있으면 입력 칸의 색깔이 붉게 변해서 바로 알 수 있다.

보안에서 와이어샤크를 유용하게 사용하면 해킹 시도와 악성코드 활동을 감지할 수 있다.
아래는 와이어샤크 공식 홈페이지에 소개된 패킷 필터링의 유용한 사용 예이다.
웜 | 패킷 필터링 |
블래스터 웜 | dst port 135 and tcp port 135 and ip[2:2]==48 |
웰치아 웜 | icmp[icmptype]==icmp-echo and ip[2:2]==92 and icmp[8:4]==0xAAAAAAAA |
그 외 많은 웜들 | dst port 135 or dst port 445 or dst port 1433 and tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0 and src net 192.168.0.0/24 |
취역점 공격 | 패킷 필터링 |
하트블리드 | tcp src port 443 and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4] = 0x18) and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4 + 1] = 0x03) and (tcp[((tcp[12] & 0xF0) >> 4 ) * 4 + 2] < 0x04) and ((ip[2:2] - 4 * (ip[0] & 0x0F) - 4 * ((tcp[12] & 0xF0) >> 4) > 69)) |
취약점을 공격하는 해킹 시도나 악성코드 활동 외에 디지털 포렌식에서도 와이어샤크를 이용해 정보를 수집할 수 있다.
적당히 필요한 만큼 캡처가 되면 캡처를 중지한다. Capture --> Stop 메뉴를 클릭한다.

캡처가 완료되면 아래 그림처럼 나타난다.
패킷 리스트 창은 패킷의 목록을 나열한 것으로 원하는 줄을 클릭하면 해당 패킷에 대한 디테일 정보가 패킷 디테일 창에 나타난다.
패킷 바이트 창에는 패킷을 바이트 단위로 나타냈는데 표현 형식은 16진수이다.

여기까지가 패킷을 캡처하는 내용이다.
패킷을 분석하는 글은 따로 정리할 예정이다.
'네트워크' 카테고리의 다른 글
wireshark를 이용한 TCP 프로토콜 분석하기 2 (3 Way Handshake) (0) | 2022.12.13 |
---|---|
wireshark를 이용한 TCP 프로토콜 분석하기 1 (Window Size Scaling) (0) | 2022.12.13 |
분석용 패킷 샘플 제공 사이트 소개 (0) | 2022.12.12 |
wireshark를 이용한 패킷 분석하기 2(Endpoints Map) (0) | 2022.12.09 |
wireshark를 이용한 패킷 분석하기 1(디스플레이 필터) (0) | 2022.12.08 |