소개
이 랩에서는 강력한 네트워크 프로토콜 분석기인 Wireshark 를 설치하고 구성하는 방법을 배우게 됩니다. Wireshark 는 네트워크 트래픽을 실시간으로 검사할 수 있게 해주며, 이는 네트워크 문제 해결 및 보안 조사에 매우 중요합니다.
이 랩을 마치면 시스템에서 네트워크 패킷을 캡처하고 분석할 수 있게 되어, 이 필수 도구를 직접 사용해 보는 경험을 얻게 될 것입니다.
이 랩에서는 강력한 네트워크 프로토콜 분석기인 Wireshark 를 설치하고 구성하는 방법을 배우게 됩니다. Wireshark 는 네트워크 트래픽을 실시간으로 검사할 수 있게 해주며, 이는 네트워크 문제 해결 및 보안 조사에 매우 중요합니다.
이 랩을 마치면 시스템에서 네트워크 패킷을 캡처하고 분석할 수 있게 되어, 이 필수 도구를 직접 사용해 보는 경험을 얻게 될 것입니다.
이 단계에서는 Ubuntu 시스템에 Wireshark 를 설치합니다. Wireshark 는 네트워크 트래픽을 캡처하고 분석할 수 있는 강력한 네트워크 프로토콜 분석기입니다. 네트워크 보안 및 트래픽 분석에 관심 있는 모든 사람에게 필수적인 도구입니다. 다행히 Wireshark 는 Ubuntu 저장소에서 사용할 수 있으므로 Ubuntu 에서 제공하는 패키지 관리 시스템을 사용하여 쉽게 설치할 수 있습니다.
먼저, 패키지 저장소 정보를 업데이트해 보겠습니다. 패키지 저장소는 Ubuntu 시스템에서 사용할 수 있는 모든 소프트웨어의 카탈로그와 같습니다. 저장소를 업데이트하면 최신 소프트웨어 버전에 액세스할 수 있습니다. 이를 위해 터미널을 열어야 합니다. 작업 표시줄에서 터미널 아이콘을 클릭하거나 Ctrl+Alt+T를 눌러 터미널을 열 수 있습니다. 터미널이 열리면 다음 명령을 입력합니다.
sudo apt update
sudo 명령은 관리자 권한으로 명령을 실행하는 데 사용됩니다. apt는 Ubuntu 의 패키지 관리 도구이며, update는 패키지 저장소 정보를 새로 고치는 명령입니다. 이 명령을 실행하면 다음과 유사한 출력을 볼 수 있습니다.
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [108 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,234 kB]
...
Reading package lists... Done
이 출력은 시스템이 저장소에서 사용 가능한 패키지에 대한 최신 정보를 가져오고 있음을 보여줍니다.
이제 패키지 저장소가 업데이트되었으므로 apt 패키지 관리자를 사용하여 Wireshark 를 설치할 수 있습니다. 터미널에서 다음 명령을 실행합니다.
sudo apt install wireshark -y
install 명령은 apt에게 지정된 패키지 (이 경우 wireshark) 를 설치하도록 지시합니다. -y 옵션은 설치 과정에서 모든 프롬프트에 자동으로 "yes"로 응답하는 데 사용됩니다.
설치 과정에서 비 - 슈퍼유저가 패킷을 캡처하도록 허용할지 묻는 구성 대화 상자가 표시됩니다. 비 - 슈퍼유저가 패킷을 캡처하도록 허용하면 항상 관리자 권한을 사용하지 않고 Wireshark 를 실행하려는 경우 유용할 수 있습니다. 화살표 키를 사용하여 "Yes"를 선택 (또는 y를 누름) 하고 Enter 키를 눌러 선택을 확인합니다.

참고: 이 프롬프트를 놓쳤거나 나중에 이 설정을 변경해야 하는 경우 다음 명령을 사용하여 Wireshark 를 다시 구성할 수 있습니다.
sudo dpkg-reconfigure wireshark-common
dpkg-reconfigure명령은 이미 설치된 패키지를 다시 구성하는 데 사용됩니다.
설치가 완료되면 설치가 성공했음을 나타내는 출력이 표시됩니다. Wireshark 가 올바르게 설치되었는지 확인하기 위해 버전을 확인할 수 있습니다. 터미널에서 다음 명령을 실행합니다.
wireshark --version
이 명령은 Wireshark 에게 버전 정보를 표시하도록 지시합니다. 다음과 유사한 출력을 볼 수 있습니다.
Wireshark 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
Copyright 1998-2022 Gerald Combs <gerald@wireshark.org> and contributors.
License GPLv2+: GNU GPL version 2 or later <https://www.gnu.org/licenses/>
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) with Qt 5.15.3, with libpcap, with GLib 2.72.0, with zlib 1.2.11,
with SMI 0.4.8, with c-ares 1.18.1, with Lua 5.2.4, with GnuTLS 3.7.3 and PKCS #11
support, with Gcrypt 1.9.4, with MIT Kerberos, with MaxMind DB resolver,
with nghttp2 1.43.0, with brotli, with LZ4, with Zstandard, with Snappy,
with libxml2 2.9.13, with libssh 0.9.6, with NGHTTP3 0.7.0, with NGTCP2 0.8.0.
훌륭합니다! 이제 Wireshark 가 시스템에 설치되었습니다.
이 단계에서는 Wireshark 가 네트워크 패킷을 캡처하는 데 필요한 권한을 구성합니다. 초보자라면 왜 이런 작업을 해야 하는지 궁금할 수 있습니다. 기본적으로 패킷 캡처에는 root 권한이 필요합니다. 이는 네트워크 패킷 캡처가 잠재적으로 민감한 정보를 노출할 수 있기 때문에 보안 조치입니다. 그러나 Wireshark 를 root 로 실행하는 것은 보안 관점에서 좋은 생각이 아닙니다. Wireshark 에 취약점이 있는 경우 공격자는 root 로 실행되는 경우 전체 시스템에 액세스할 수 있습니다. 따라서 일반 사용자 계정이 안전하게 패킷을 캡처할 수 있도록 Wireshark 를 구성합니다.
먼저, 시스템에 wireshark 그룹이 있는지 확인해야 합니다. wireshark 그룹은 패킷 캡처에 대한 권한을 관리하는 데 사용할 특수 그룹입니다. 이 그룹이 있는지 확인하기 위해 getent 명령을 사용합니다. getent는 이 경우 그룹 데이터베이스와 같은 다양한 시스템 데이터베이스에서 항목을 검색하는 유틸리티입니다. 터미널에서 다음 명령을 실행합니다.
getent group wireshark
출력이 없으면 그룹이 아직 존재하지 않으므로 생성해야 합니다. groupadd 명령을 사용하여 wireshark 그룹을 생성합니다. groupadd 명령은 시스템에 새 그룹을 생성하는 데 사용됩니다. 다음 명령을 실행합니다.
sudo groupadd wireshark
sudo 명령은 관리자 권한으로 groupadd 명령을 실행하는 데 사용됩니다. 최근에 sudo를 사용하지 않은 경우 암호를 입력하라는 메시지가 표시됩니다.
다음으로, 패킷 캡처 바이너리 (dumpcap) 에 올바른 권한을 부여해야 합니다. dumpcap은 실제로 Wireshark 에 대한 패킷을 캡처하는 구성 요소입니다. dumpcap 바이너리의 그룹 소유권을 wireshark 그룹으로 변경합니다. 이렇게 하면 dumpcap 바이너리가 wireshark 그룹과 연결되고 이 그룹을 통해 권한을 관리할 수 있습니다. 다음 명령을 실행합니다.
sudo chgrp wireshark /usr/bin/dumpcap
chgrp 명령은 파일 또는 디렉토리의 그룹 소유권을 변경하는 데 사용됩니다. 이 경우 /usr/bin/dumpcap 바이너리의 그룹 소유권을 wireshark 그룹으로 변경합니다.
그룹 소유권을 변경한 후 dumpcap 바이너리에 필요한 권한을 설정합니다. chmod 명령을 사용하여 권한을 설정합니다. chmod 명령은 파일 또는 디렉토리의 권한을 변경하는 데 사용됩니다. 다음 명령을 실행합니다.
sudo chmod 4755 /usr/bin/dumpcap
이 명령은 바이너리에 setuid 비트를 설정합니다. setuid 비트를 사용하면 바이너리가 실행하는 사용자에 관계없이 소유자 (root) 의 권한으로 실행됩니다. 4755 권한은 다음과 같이 나눌 수 있습니다.
4 - setuid 비트를 설정합니다. 즉, 바이너리가 실행될 때 소유자 (root) 의 권한으로 실행됩니다.7 - 소유자 (root) 는 읽기, 쓰기 및 실행 권한을 갖습니다. 이를 통해 소유자는 바이너리를 읽고, 수정하고, 실행할 수 있습니다.5 - 그룹은 읽기 및 실행 권한을 갖습니다. 이를 통해 wireshark 그룹의 구성원은 바이너리를 읽고 실행할 수 있습니다.5 - 다른 사용자는 읽기 및 실행 권한을 갖습니다. 이를 통해 시스템의 다른 사용자는 바이너리를 읽고 실행할 수 있습니다.마지막으로, 현재 사용자를 wireshark 그룹에 추가해야 합니다. 사용자를 wireshark 그룹에 추가하면 사용자는 dumpcap 바이너리를 사용하는 데 필요한 권한을 갖게 됩니다. gpasswd 명령을 사용하여 사용자를 그룹에 추가합니다. gpasswd 명령은 /etc/group 및 /etc/gshadow 파일을 관리하는 데 사용됩니다. 다음 명령을 실행합니다.
sudo gpasswd -a $USER wireshark
$USER 변수는 현재 사용자의 사용자 이름을 포함하는 셸 변수입니다. 사용자가 그룹에 추가되었음을 나타내는 출력이 표시됩니다.
Adding user labex to group wireshark
이러한 변경 사항을 적용하려면 로그아웃했다가 다시 로그인하거나 시스템을 다시 시작해야 합니다. 그러나 이 랩에서는 업데이트된 그룹 멤버십으로 새 셸을 시작하여 더 간단한 접근 방식을 사용할 수 있습니다. newgrp 명령을 사용하여 wireshark 그룹이 활성화된 새 셸을 시작합니다. newgrp 명령은 현재 그룹 ID 를 변경하는 데 사용됩니다. 다음 명령을 실행합니다.
newgrp wireshark
이 명령은 전체 로그아웃 없이 wireshark 그룹이 활성화된 새 셸을 시작합니다.
사용자가 이제 wireshark 그룹의 구성원인지 확인해 보겠습니다. groups 명령을 사용하여 사용자가 속한 모든 그룹을 나열합니다. 다음 명령을 실행합니다.
groups
그룹 목록에 wireshark가 표시되어야 합니다.
wireshark sudo ssl-cert labex public
이제 사용자가 wireshark 그룹의 구성원이고 dumpcap 바이너리에 올바른 권한이 있으므로 Wireshark 는 root 권한 없이 패킷을 캡처할 수 있습니다.
이 단계에서는 Wireshark 를 실행하고 초기 인터페이스를 살펴보겠습니다. Wireshark 는 네트워크 트래픽 분석을 위한 강력한 도구이며, 그래픽 사용자 인터페이스 (GUI) 가 함께 제공됩니다. 이 GUI 는 소프트웨어와 상호 작용하고 네트워크 트래픽을 분석하는 데 사용할 것입니다.
먼저, LabEx VM 의 데스크톱 환경에 있는지 확인해야 합니다. 올바른 위치에 있으면 화면 상단 또는 하단에 아이콘과 작업 표시줄이 있는 데스크톱이 표시됩니다. 이것이 Wireshark 작업을 시작할 시작점입니다.
Wireshark 를 실행하는 방법에는 두 가지가 있습니다. 가장 편리한 방법을 선택할 수 있습니다.
화면 왼쪽 상단 모서리에 있는 응용 프로그램 메뉴를 클릭합니다. 그런 다음 메뉴를 탐색하여 "인터넷" 또는 "네트워크" 범주를 찾습니다. 적절한 범주에 들어가면 "Wireshark"를 찾아 선택합니다. 이것은 그래픽 인터페이스를 사용하여 프로그램을 시작하는 간단한 방법입니다.

또는 터미널을 사용할 수 있습니다. 터미널 창을 열고 다음 명령을 입력합니다.
wireshark

이 명령은 시스템에 Wireshark 응용 프로그램을 시작하도록 지시합니다. 이 명령을 실행하면 Wireshark 가 시작되고 기본 창이 화면에 나타납니다. 가장 먼저 보게 될 것은 "Welcome to Wireshark" 화면입니다. 이 화면은 네트워크 트래픽을 캡처하는 데 사용할 수 있는 사용 가능한 네트워크 인터페이스 목록을 보여줍니다. 또한 Wireshark 를 이전에 사용한 적이 있고 저장된 파일이 있는 경우 최근에 열린 캡처 파일도 표시합니다.

시작 화면은 몇 가지 중요한 옵션을 제공합니다.
이 초기 화면을 탐색하는 데 약간의 시간을 할애하십시오. 각 네트워크 인터페이스에는 감지된 패킷에 대한 몇 가지 통계가 있습니다. 이러한 통계는 어떤 인터페이스가 활발하게 네트워크 트래픽을 전달하는지 빠르게 파악할 수 있도록 합니다.
이제 Wireshark 의 주요 인터페이스 요소를 살펴보겠습니다.
지금은 Wireshark 를 실행 상태로 둡니다. 다음 단계에서는 이를 사용하여 네트워크 트래픽을 캡처하고 분석합니다.
이 단계에서는 일부 네트워크 트래픽을 캡처하고 Wireshark 인터페이스를 살펴보겠습니다. 네트워크 패킷을 분석하는 방법을 이해하는 것은 네트워크 보안 또는 문제 해결에 관심 있는 모든 사람에게 매우 중요합니다. 이 섹션이 끝나면 캡처를 시작하고, Wireshark 인터페이스를 이해하고, 트래픽을 생성하고, 패킷을 필터링하고, 패킷 세부 정보를 검사하고, 캡처를 중지하는 방법을 알게 됩니다.
Wireshark 를 열면 시작 화면이 표시됩니다. 이 화면에서 목표는 트래픽을 캡처하려는 네트워크 인터페이스를 찾는 것입니다. 대부분의 경우 eth0 인터페이스를 사용합니다. eth0을 사용할 수 없는 경우 다른 활성 인터페이스 (예: eth1 또는 wlan0) 를 선택할 수 있습니다.
패킷 캡처를 시작하려면 eth0 인터페이스를 두 번 클릭하기만 하면 됩니다. 이 작업은 해당 인터페이스에서 즉시 패킷 캡처를 시작하고 기본 Wireshark 캡처 창으로 이동합니다.
또는 먼저 인터페이스를 선택한 다음 도구 모음에서 파란색 상어 지느러미 아이콘으로 표시되는 "패킷 캡처 시작" 버튼을 클릭할 수 있습니다. 캡처를 시작하는 것은 선택한 인터페이스를 통해 흐르는 데이터를 Wireshark 가 수집할 수 있도록 하므로 네트워크 트래픽 분석의 첫 번째 단계입니다.
패킷 캡처가 시작되면 기본 Wireshark 인터페이스가 표시됩니다. 이 인터페이스는 각각 다른 목적을 수행하는 세 개의 주요 창으로 나뉩니다.

패킷 목록 창 (상단): 이 창에는 Wireshark 가 캡처한 모든 패킷 목록이 표시됩니다. 목록의 각 항목은 다음을 포함하여 패킷에 대한 기본 정보를 제공합니다.
패킷 세부 정보 창 (중간): 상단 창에서 패킷을 선택하면 이 영역에 선택한 패킷에 대한 자세한 정보가 계층적 형식으로 표시됩니다. 각 섹션 옆에 있는 화살표를 클릭하여 패킷의 구조와 내용에 대한 자세한 세부 정보를 볼 수 있습니다.
패킷 바이트 창 (하단): 이 창에는 원시 패킷 데이터가 16 진수 및 ASCII 형식으로 표시됩니다. 패킷 세부 정보 창에서 다른 필드를 선택하면 해당 바이트가 이 창에서 강조 표시됩니다. 이를 통해 패킷에서 전송되는 실제 데이터를 볼 수 있습니다.
분석할 의미 있는 내용을 얻으려면 일부 네트워크 트래픽을 생성해야 합니다. Wireshark 가 실행되는 동안 새 터미널 창을 엽니다. 터미널에서 ping 명령을 사용하여 Google 서버에 일부 ICMP 에코 요청 패킷을 보냅니다.
다음 명령을 실행합니다.
ping -c 5 google.com
참고: 무료 사용자는 인터넷에 연결할 수 없습니다. Pro 로 업그레이드하여 모든 기능을 즐기세요.
-c 5 옵션은 ping 명령에 5 개의 ICMP 에코 요청 패킷을 보내도록 지시합니다. 이 명령을 실행하면 다음과 유사한 출력이 표시됩니다.
PING google.com (142.250.180.238) 56(84) bytes of data.
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=1 ttl=118 time=15.6 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=2 ttl=118 time=16.5 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=3 ttl=118 time=15.9 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=4 ttl=118 time=16.2 ms
64 bytes from muc11s21-in-f14.1e100.net (142.250.180.238): icmp_seq=5 ttl=118 time=15.7 ms
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 15.629/15.986/16.520/0.324 ms
이제 Wireshark 로 돌아갑니다. ping 명령을 실행하는 동안 캡처된 ICMP 패킷이 표시됩니다. 이러한 패킷은 추가 분석에 사용할 것입니다.
캡처된 패킷 분석을 완료했으면 캡처를 중지해야 합니다. 이렇게 하려면 도구 모음에서 빨간색 사각형으로 표시되는 "패킷 캡처 중지" 버튼을 클릭합니다. 또는 "캡처" 메뉴로 이동하여 "중지"를 선택할 수 있습니다.
이제 Wireshark 로 일부 기본 네트워크 트래픽을 성공적으로 캡처하고 분석했습니다! 이것은 네트워크 분석 및 보안의 기본적인 기술이며, 이 지식을 바탕으로 보다 복잡한 네트워크 시나리오를 분석할 수 있습니다.
Wireshark 는 선택한 인터페이스의 모든 트래픽을 캡처하므로 데이터 양이 빠르게 증가하여 관리하기 어려워질 수 있습니다. 필터는 Wireshark 에서 특정 유형의 트래픽에 집중할 수 있는 강력한 도구입니다.

방금 생성한 ICMP ping 패킷을 필터링하려면 Wireshark 창 상단을 살펴보십시오. 필터 식을 입력할 수 있는 필터 표시줄이 있습니다. 필터 표시줄에 다음을 입력합니다.
icmp
필터 식을 입력한 후 Enter 키를 누르거나 필터 필드 옆에 있는 적용 버튼 (오른쪽 화살표 아이콘) 을 클릭합니다. 패킷 목록이 업데이트되어 ICMP 패킷만 표시됩니다. 앞에서 실행한 ping 명령에 해당하는 "에코 (ping) 요청" 및 "에코 (ping) 응답" 메시지 쌍이 표시됩니다. 필터링은 관심 있는 트래픽을 격리하고 분석 프로세스를 훨씬 더 쉽게 관리할 수 있도록 합니다.
이제 ICMP 패킷을 필터링했으므로 ICMP 요청 패킷 중 하나를 자세히 살펴보겠습니다. 패킷 목록에서 ICMP 요청 패킷 중 하나를 클릭합니다. 패킷 세부 정보 창에서 각 섹션 옆에 있는 화살표를 클릭하여 다양한 프로토콜 계층을 확장할 수 있습니다.

이 랩에서는 강력한 네트워크 분석 도구인 Wireshark 를 설치하고 설정하는 방법을 배웠습니다. 비 루트 사용자가 안전하게 패킷을 캡처할 수 있도록 권한을 구성하고, 응용 프로그램을 실행하고, 실제 네트워크 트래픽을 캡처했습니다. 또한 인터페이스를 탐색하고, 특정 트래픽 유형에 대한 필터를 적용하고, 다양한 프로토콜 계층에서 패킷 세부 정보를 검사했습니다.
이러한 기술은 네트워크 분석 및 문제 해결을 위한 견고한 기반을 형성합니다. 이제 Wireshark 를 사용하여 네트워크 통신을 검사하고, 연결 문제를 진단하고, 프로토콜 동작을 분석하고, 네트워크 트래픽에서 보안 문제를 식별할 수 있습니다.