[인프런] IT보안을 위한 와이어샤크 네트워크 패킷 분석 실전 :: 섹션 0. 와이어샤크(Wireshark) 기본 활용법 이해

[인프런] IT보안을 위한 와이어샤크 네트워크 패킷 분석 실전 :: 섹션 0. 와이어샤크(Wireshark) 기본 활용법 이해
https://www.inflearn.com/course/wireshark_boanproject/dashboard
[무료] IT보안을 위한 와이어샤크 네트워크 패킷 분석 실전 - 인프런 | 강의
침해사고 분석과 취약점 분석을 할 때 네트워크 패킷 분석은 필수다. 그 중에서 와이어샤크를 제일 많이 활용하고 있으며, 이 강의에서는 와이어샤크 완벽한 활용법과 침해사고 분석 사례를 다
www.inflearn.com
1. 와이어샤크 인터페이스 살펴보기
2. 와이어샤크로 패킷 캡처해보기
3. 와이어샤크 필터링 기능 이해하기
4. 와이어샤크 패킷필터 사용하기
5. 와이어샤크 화면필터 사용하기
6. 와이어샤크 컬러링 마크 기능 사용하기
7. 와이어샤크 패킷 검색 기능 활용하기
8. 와이어샤크 상태 요약(Statistics) 기능 사용하기
[1] 와이어샤크 인터페이스 살펴보기
1. 와이어 샤크(Wireshark)란? : 와이어 샤크는 네트워크 패킷을 분석할 때 가장 많이 사용되는 오픈 소스 도구이다.
2. 사용처:
- 침해대응 분석 및 모니터링: 네트워크에서의 침입 시도나 이상 행위를 탐지하고 분석한다.
- IPS/IDS 패킷 샘플 분석: 침입 탐지 시스템이나 침입 방지 시스템에서 감지한 패킷을 분석한다.
- 모의해킹 시나리오: PC에서 서버로의 통신을 시뮬레이션하여 시스템의 취약점을 찾는다.
- 애플리케이션 패킷 분석: 네트워크를 통해 전송되는 애플리케이션 데이터를 분석한다.
- 포렌식 분석: 침해 사고 발생 시, 해당 사건을 추적하고 분석하여 증거를 확보한다. 개인정보 노출 사고의 조사와 분석에도 사용된다.
3. 설치:
- 와이어샤크 공식 홈페이지 (https://www.wireshark.org/) 에서 운영체제에 맞는 버전을 다운로드하여 설치한다.
- 설치가 완료되면 프로그램을 실행한다.
- 설치 과정에서는 'winpcap'이 함께 설치되어야 하는데, 이는 패킷 드라이버로서 모니터링 목적으로 사용된다.
4. 와이어 샤크 인터페이스 설명:

- 필터 기능: 수 많은 패킷 중에서 원하는 정보만을 볼 수 있다.

- 리스트 영역: 상세한 정보를 표시한다.

- 패킷 데이터 영역: 실제 패킷 데이터를 확인할 수 있는 공간이다. 추가적인 조사가 필요한 경우 사용된다.

- Status Bar : 패킷 데이터 영역에서의 값이 어떤 것을 의미하는 지 실시간으로 알려준다.
5. 패킷 정보 칼럼:
- NO.: 패킷의 순번을 나타낸다.
- Time: 패킷이 기록된 시간을 표시한다.
- Source: 출발지 IP 주소 또는 호스트명을 나타낸다.
- Destination: 목적지 IP 주소 또는 호스트명을 나타낸다.
- Protocol: 사용된 프로토콜을 표시한다.
이 외에도, 사용자는 기능 버튼에서 오른쪽 마우스를 클릭하고 'Edit Column'을 사용하여 칼럼을 자유롭게 편집할 수 있다. 레이아웃도 변경 가능하며, 추가적인 컬럼을 추가하거나 삭제할 수 있다.
[2] 와이어샤크로 패킷 캡처해보기
이번 시간: 와이어샤크 패킷 캡처, 어떤 옵션이 있는지 설명
<강의 진행 순서>
1. 네트워크 어댑터 선택: 컴퓨터에 설치된 네트워크 어댑터 목록을 확인한다. 이 중에서 캡쳐하고 싶은 네트워크 어댑터를 선택한다.
(예시)

- 로컬 이더넷: 유선
- 와이파이: 무선
- VMware Workstation: 가상 머신 네트워크
1.1. 어떤 어댑터를 캡쳐해야 할까?:
(예시) Daum과 같은 웹사이트에 접속하면 해당 네트워크 어댑터에서 발생하는 패킷을 볼 수 있다.
2. 와이어샤크 실행: 와이어샤크를 실행하고, 상단 메뉴에서 Capture를 선택한다.

3. 캡쳐 옵션 설정:

- Start: 기존 설정에 따라 실행된다.
- Option: 설정을 변경하여 패킷을 캡쳐할 수 있다.
3.1. 예시

- 이더넷 정보 확인: 이더넷 항목 위에 마우스를 올리면 나타나는 주소(Addresses) 정보 팝업 메시지를 통해 IP를 확인할 수 있다. IP가 헷갈린다면 명령 프롬프트에서 ipconfig 명령을 사용하여 확인할 수 있다.
4. Options 메뉴 설명


4.1. Output 설정
- Output format: 기본적으로 pcapng 형식으로 저장되며, 다른 오픈소스 도구에서 사용하려면 pcap 파일로 저장해야 한다.

- Create a new file automatically after: 일정 용량 이상이 되면 새로운 파일을 자동으로 생성한다. 이는 많은 패킷을 저장하고 분석할 때 컴퓨터 과부하를 방지하는 데 도움이 된다. 선택 기준으로는 용량이나 시간을 선택할 수 있다.
4.2. Options 설정

<Display Options>:

4.1. Update list of packets in real-time: 실시간으로 패킷 목록을 업데이트할지 여부를 결정한다.
4.2. Automatically scroll during live capture: 라이브 캡처 중 자동으로 스크롤할지 여부를 설정한다.
<Name Resolution>:

4.1. Resolve MAC Addresses: MAC 주소를 해석한다.
4.2. Resolve network names: 네트워크 이름을 해석한다.
4.3. Resolve transport names: 전송 프로토콜 이름을 해석한다.
옵션을 직접 설정해보며 익숙해지는 것이 중요하다.
5. 캡쳐 필터 설정:

자신이 원하는 필터를 적용하여 미리 패킷을 걸러낼 수 있다.
이번 시간 요약:
1. 캡쳐할 어댑터 선택
2. 파일 형식 지정(pcap 혹은 pcapng)
3. 옵션 설정을 통해 원하는 설정으로 패킷을 캡쳐한다.
[3] 와이어샤크 필터링 기능 이해하기
캡처 필터와 화면 필터는 두 가지 주요 필터링 기능으로, 각각 캡처 과정에서 패킷을 선택적으로 수집하거나, 이미 캡처된 패킷을 분석할 때 특정 조건에 따라 화면에 표시할 수 있도록 해준다.
1. 캡처 필터:



- 캡처를 시작할 때 패킷을 미리 필터링하여 원하는 조건에 맞는 패킷만을 캡처한다.
- 예를 들어, HTTP나 TCP와 같은 프로토콜을 사용하는 패킷만을 수집할 수 있다.
- 이를 통해 대용량의 패킷을 수집해도 작업이 더욱 효율적으로 이루어진다.
- 단점은 중요한 정보가 필터링되어 누락될 수 있다는 것이다.
Compile BPF's (Berkley Packet Filters) 란?:
- BPF는 네트워크 패킷을 필터링하는 데 사용되는 언어이다.
- 'Compile BPF's'란, 사용자가 지정한 필터 조건을 BPF 언어로 변환하여 실제 패킷을 필터링하는 작업을 말한다.
- 예를 들어, 이더넷 인터페이스를 선택하고 포트 80을 필터로 설정하면 HTTP와 TCP 프로토콜을 사용하는 패킷만을 캡처한다.
2. 화면 필터:
- 이미 캡처된 패킷을 분석할 때 특정한 조건에 따라 패킷을 화면에 표시한다.
- 이를 통해 특정한 조건을 충족하는 패킷만을 시각적으로 확인할 수 있다.
캡처 필터와 화면 필터는 와이어샤크를 통해 효과적으로 네트워크 트래픽을 모니터링하고 분석하는데 필수적인 기능이다.
[4] 와이어샤크 패킷필터 사용하기

BPF(Berkley Packet Filters)는 와이어샤크에서 패킷 필터링을 위해 사용되는 언어이다. 아래는 BPF 문법을 초록색 아이콘의 예시를 통해 설명한 내용이다. :
1. &&의 역할: 논리 연산자 'and'를 나타낸다. 예를 들어, host 192.168.0.1 && tcp port 80은 IP 주소가 192.168.0.1이면서 동시에 TCP 포트가 80인 패킷을 필터링한다.
2. host 192.168.0.1: 'host' 는 프리미티브로, IP 주소를 지정할 때 사용된다. 예를 들어, host 192.168.0.1은 IP 주소가 192.168.0.1인 패킷을 필터링한다. 또한, 호스트 이름을 사용하여 필터링도 가능하다.
3. src host 192.168.0.9: 'src host'는 출발지 IP 주소를 나타낸다. 이 경우, 출발지 IP 주소가 192.168.0.9인 패킷을 필터링다.
4. dst host 192.168.0.251: 'dst host'는 목적지 IP 주소를 나타낸다. 이 경우, 목적지 IP 주소가 192.168.0.251인 패킷을 필터링한다.
5. port 8080: 특정 포트를 나타낸다. 이 경우, 포트 번호가 8080인 패킷을 필터링한다.
6. not port 8080: 'not'은 논리 연산자로, 해당 조건을 만족하지 않는 패킷을 필터링한다. 이 경우, 포트 번호가 8080이 아닌 패킷을 필터링한다.

이러한 내용을 필터 칸에 입력하고 연두색 박스가 나타나면 올바른 문법을 사용한 것이다. 이는 와이어샤크에서 패킷 필터를 설정하는 주요한 문법들이다.
[5] 와이어샤크 화면필터 사용실습
화면 필터는 와이어샤크에서 이미 캡처된 패킷들 중에서 원하는 조건을 만족하는 패킷들을 화면에 표시하는 기능이다. 패킷 필터와는 달리 모든 패킷을 먼저 수집하고, 그 중에서 필요한 패킷들을 선택적으로 화면에 표시한다. 대부분의 사용자들은 화면 필터를 더 자주 사용하는 편이다.
화면 필터와 관련된 옵션들도 있다. 패킷 필터와 비슷해 보이지만 다른 기능을 수행한다. 예를 들어, 패킷 필터에서는 'port 80'과 같이 간단한 문법을 사용하지만, 화면 필터에서는 'tcp.port == 80'과 같이 조금 더 상세한 문법을 사용한다. 따라서 패킷 필터가 더 간단한 구조를 가지고 있다.


다양한 예시들을 살펴보면:
1. ip.addr==192.168.0.13: IP 주소가 192.168.0.13인 패킷을 필터링한다.
2. ip.dst_host==192.168.0.13 and http: 목적지 호스트 주소가 192.168.0.13이면서 HTTP 프로토콜을 사용하는 패킷을 필터링다.
3. frame.len <= 128: 프레임 길이가 128 바이트 이하인 패킷을 필터링한다.
4. tcp.port==80: TCP 포트가 80인 패킷을 필터링한다.
5. !tcp.port==80: TCP 포트가 80이 아닌 패킷을 필터링한다.
또한, 논리 연산자인 and, or, xor, not을 활용할 수 있다.

마우스 오른쪽 버튼을 클릭한 후 'Apply as filter'를 선택하면 해당 패킷을 기반으로 새로운 필터가 생성된다.


또한, 'Expression' 기능을 통해 GUI 화면으로 필터를 설정할 수 있다.
이번 강의에서는 화면 필터의 다양한 기능을 알아보았다.
[6] 와이어샤크 컬러링 마크 기능 활용

패킷을 캡쳐하면 각 패킷은 색상으로 구분되어 표시된다. 기본 설정에서는 HTTP와 같은 프로토콜은 연두색으로 표시된다. 이는 프로토콜 정보를 쉽게 파악할 수 있도록 도와준다.

View 메뉴에서 Coloring Rules를 선택하면 현재 설정된 컬러링 규칙을 확인할 수 있다. 그러나 기본 설정을 변경하지 않는 것이 좋다. 혼란스러울 수 있기 때문이다.

왼쪽 하단에 있는 '+'를 선택하면 새로운 컬러링 규칙을 추가할 수 있다. 이름과 해당 필터를 설정할 수 있다. 필터는 화면 필터 문법을 따라야 한다.

또한, 해당 필터를 클릭하면 창 아래 부분에서 색상을 변경할 수 있다. 예를 들어, 침해사고로 판단되는 필터를 빨간색으로 설정하여 시각적으로 더 눈에 띄게 할 수 있다.

마크를 하는 기능도 있다. 패킷 위에서 오른쪽 마우스 클릭. 패킷을 마크하거나 언마크할 수 있으며, 이후에 마크한 패킷을 찾아서 분석할 수 있다. 'Edit(상단 메뉴) - Next Mark'를 선택하면 마크된 패킷만 볼 수 있도록 필터링할 수 있다.

Print에서 'Marked packets only'를 선택하면 마크한 패킷만 출력할 수 있다. 이 기능은 침해사고에서 중요한 정보를 찾았을 때 해당 정보와 연관된 패킷을 별도로 출력할 때 유용하다. 이러한 기능은 업무에 유용하게 활용될 것이다.
[7] 와이어샤크 패킷 검색 기능 활용


와이어샤크에서 패킷 검색 기능을 사용하려면 상단 메뉴에서 'Edit - Find Packets'를 클릭한다. 이를 통해 패킷을 검색할 수 있는 창이 생성된다.

가장 자주 사용되는 검색 기준은 'String'입니다. 이를 선택하면 왼쪽에 여러 옵션들이 활성화된다. 이는 문자열을 기반으로 패킷을 검색하는 기능을 제공한다. 예를 들어, 'upload'를 입력하여 업로드 페이지에 접근한 패킷을 추적할 수 있다.
또한, 'Packet bytes'는 문자열을 사용하지 않고 공격자가 우회 기술을 사용한 경우에 대비하여 바이트 값을 검색하여 우회 기술을 찾아낸다.

가장 많이 사용되는 조합은 'Packet detail + String'이다. 이를 통해 패킷의 상세 정보와 문자열을 함께 검색할 수 있다.

'Case sensitive' 옵션을 사용하면 대소문자를 구별하여 검색할 수 있다.
또한, 이전에 설명한 'Mark/Unmark packets' 기능과 함께 사용하여 침해 대응 업무에 많이 활용된다. 이를 통해 침해사고 대응 작업을 보다 효과적으로 수행할 수 있다.
[8] 와이어샤크 상태 요약 기능(Statistics) 사용하기

상단 메뉴에서 제공되는 Statistics 기능은 패킷을 더 정확하게 분석하기 위한 중요한 도구이다.
1. HTTP - Packet Counter:

여기에서는 HTTP 패킷 중에서 특정한 상태 코드를 가진 패킷들을 확인할 수 있다.
예를 들어, '404 NOT FOUND' 상태 코드를 가진 패킷을 확인하여 누락된 페이지의 여부를 확인할 수 있다.
또한 '505 HTTP Version not supported', '501 Not implemented'과 같은 상태 코드는 SQL Injection 공격 여부를 확인하는데 유용하다.
2. HTTP - Request:

이 기능은 패킷의 내용을 분석하는데 사용된다.
공격자의 입장에서 보는 것이 아닌, 어떤 패킷이 안에 포함되어 있는지를 확인하는데 유용하다.
디렉토리 리스팅 취약점이나 크로스 사이트 스크립트 취약점과 같은 사항을 판단할 때 사용된다.
3. IPv4 Statistics - Destinations and Ports:

이 항목에서는 포트별로 패킷을 확인할 수 있다.
예를 들어, 80번 포트에서만 높은 발생률을 확인할 경우, 해당 포트에 대한 특별한 조치가 필요한지 판단할 수 있다.
특히 80포트와 445포트는 취약점이 많이 존재하는 포트로 알려져 있다.
무작정 화면 필터를 사용해 패킷분석을 하는 것보다, Statistics 기능을 활용하여 더 효율적으로 패킷을 분석할 수 있다. 이를 통해 정확한 공격 여부를 판단할 수 있다.