네트워크 트래픽 분석 분야에서 Wireshark는 사실상 업계 표준으로 자리매김했습니다. 하지만 캡처하는 패킷 양이 늘어남에 따라 속도 저하가 발생한다는 단점이 있습니다.
Brim은 이러한 문제를 효과적으로 해결하고 Wireshark 사용 방식을 혁신적으로 변화시킵니다.
Wireshark, 훌륭하지만…
Wireshark는 뛰어난 오픈 소스 소프트웨어입니다. 네트워크 문제를 진단하기 위해 전 세계의 아마추어 및 전문가들이 폭넓게 활용하고 있습니다. Wireshark는 유선 또는 무선 네트워크를 통해 전송되는 데이터 패킷을 캡처하고, 캡처된 데이터를 필터링, 검색하여 네트워크 장치 간의 통신을 추적하는 기능을 제공합니다.
그러나 Wireshark에는 한 가지 아쉬운 점이 있습니다. 네트워크 데이터 캡처 파일(패킷 캡처 또는 네트워크 추적이라고도 함)의 크기가 매우 빠르게 증가할 수 있다는 것입니다. 특히 분석해야 할 문제가 복잡하거나 산발적일 때, 혹은 대규모 네트워크에서 트래픽이 많을 때 이러한 현상이 두드러집니다.
패킷 캡처 파일(PCAP)의 크기가 커질수록 Wireshark의 성능은 저하됩니다. 1GB 이상의 대용량 트레이스를 로드하는 데 시간이 오래 걸려 Wireshark가 멈춘 것처럼 보일 수도 있습니다.
이러한 대용량 파일로 작업하는 것은 매우 번거로운 일입니다. 검색을 수행하거나 필터를 변경할 때마다 결과가 데이터에 적용되어 화면에 표시될 때까지 기다려야 합니다. 이러한 지연은 집중력을 흐트러뜨려 작업 효율성을 저해합니다.
Brim은 이러한 문제에 대한 해결책을 제시합니다. Wireshark의 대화형 전처리기 및 프런트 엔드 역할을 하며, Wireshark가 제공하는 세분화된 분석 기능이 필요할 때 해당 패킷을 즉시 Wireshark에서 열 수 있도록 지원합니다.
네트워크 캡처 및 패킷 분석 작업을 자주 수행하는 사용자라면 Brim이 작업 방식을 완전히 바꿀 것입니다.
Brim 설치
Brim은 비교적 새로운 소프트웨어이므로 아직 대부분의 Linux 배포판의 소프트웨어 저장소에 등록되지 않았습니다. 하지만 Brim 다운로드 페이지에서 DEB 및 RPM 패키지 파일을 다운로드하여 Ubuntu나 Fedora에 쉽게 설치할 수 있습니다.
다른 Linux 배포판을 사용하고 있다면 GitHub에서 소스 코드를 다운로드하여 직접 빌드할 수 있습니다.
Brim은 Zeek를 위한 명령줄 도구인 zq를 사용하므로 zq 바이너리가 포함된 ZIP 파일도 다운로드해야 합니다.
Ubuntu에 Brim 설치
Ubuntu 사용자는 DEB 패키지 파일과 zq Linux ZIP 파일을 다운로드해야 합니다. 다운로드한 DEB 패키지 파일을 더블클릭하면 Ubuntu Software 애플리케이션이 실행됩니다. Brim 라이선스가 “Proprietary”로 잘못 표시될 수 있지만, 실제로는 BSD 3-Clause 라이선스가 적용됩니다.
“설치” 버튼을 클릭하여 Brim을 설치합니다.
설치가 완료되면 zq ZIP 파일을 더블클릭하여 아카이브 관리자를 실행합니다. ZIP 파일에는 하나의 디렉터리가 들어 있습니다. “아카이브 관리자”에서 “다운로드” 폴더와 같은 위치로 디렉터리를 드래그 앤 드롭합니다.
다음 명령어를 입력하여 zq 바이너리를 저장할 디렉터리를 생성합니다.
sudo mkdir /opt/zeek
압축을 해제한 디렉터리에서 바이너리를 방금 생성한 위치로 복사해야 합니다. 다음 명령에서 시스템에 맞는 디렉터리 경로와 이름을 사용하십시오.
sudo cp Downloads/zq-v0.20.0.linux-amd64/* /opt/Zeek
해당 위치를 PATH 환경 변수에 추가하기 위해 BASHRC 파일을 편집합니다.
sudo gedit .bashrc
gedit 편집기가 열립니다. 파일의 맨 아래로 스크롤한 다음 다음 줄을 입력합니다.
export PATH=$PATH:/opt/zeek
변경 사항을 저장하고 편집기를 닫습니다.
Fedora에 Brim 설치
Fedora에 Brim을 설치하려면 DEB 패키지 대신 RPM 패키지 파일을 다운로드하고 위에서 설명한 Ubuntu 설치 과정과 동일한 단계를 따릅니다.
흥미롭게도 RPM 파일은 Fedora에서 열 때 소유권 라이선스가 아닌 오픈 소스 라이선스로 올바르게 인식됩니다.
Brim 실행
독에서 “응용 프로그램 표시”를 클릭하거나 Super+A 키를 누릅니다. 검색 상자에 “brim”을 입력한 다음 표시되는 “Brim” 아이콘을 클릭합니다.
Brim이 실행되고 기본 창이 표시됩니다. “파일 선택”을 클릭하여 파일 브라우저를 열거나, 빨간색 사각형으로 표시된 영역에 PCAP 파일을 드래그 앤 드롭할 수 있습니다.
Brim은 탭 디스플레이를 사용하며 여러 개의 탭을 동시에 열 수 있습니다. 새 탭을 열려면 상단의 더하기 기호(+)를 클릭한 다음 다른 PCAP 파일을 선택합니다.
Brim 기본 사용법
Brim은 선택한 파일을 로드하고 인덱싱합니다. 이 인덱싱 작업은 Brim의 빠른 속도를 가능하게 하는 중요한 요인 중 하나입니다. 기본 창에는 시간 경과에 따른 패킷 볼륨 히스토그램과 네트워크 “플로우” 목록이 표시됩니다.
PCAP 파일은 여러 네트워크 연결에 대한 시간 순서대로 정렬된 네트워크 패킷 스트림을 포함합니다. 다양한 연결에 대한 데이터 패킷은 일부 연결이 동시에 열려 있기 때문에 서로 섞여 있습니다. 각 네트워크 “대화”에 대한 패킷은 다른 대화의 패킷과 함께 흩어져 있습니다.
Wireshark는 네트워크 스트림 패킷을 개별 패킷 단위로 표시하지만, Brim은 “플로우”라는 개념을 사용합니다. 플로우는 두 장치 간의 전체 네트워크 통신(또는 대화)을 나타냅니다. 각 플로우 유형은 분류되고 색상으로 구분되어 있으며, 플로우 유형별로 레이블이 지정됩니다. “dns”, “ssh”, “https”, “ssl” 등의 레이블이 지정된 플로우를 확인할 수 있습니다.
플로우 요약 표시를 왼쪽이나 오른쪽으로 스크롤하면 더 많은 열이 표시됩니다. 원하는 정보만 표시하도록 기간을 조정할 수도 있습니다. 데이터를 볼 수 있는 몇 가지 방법은 다음과 같습니다.
- 히스토그램 막대를 클릭하여 해당 구간의 네트워크 활동을 확대합니다.
- 히스토그램 표시 영역을 클릭하고 드래그하여 특정 구간을 강조 표시하고 확대합니다. Brim은 강조 표시된 섹션의 데이터를 표시합니다.
- “날짜” 및 “시간” 필드에 정확한 기간을 지정할 수도 있습니다.
Brim 창의 양쪽에 사이드 패널을 표시할 수 있습니다. 필요에 따라 사이드 패널을 숨기거나 계속 표시할 수 있습니다. 왼쪽 패널에는 검색 기록과 열려 있는 PCAP 파일 목록이 표시됩니다. Ctrl+[ 키를 눌러 왼쪽 패널을 켜거나 끌 수 있습니다.
오른쪽 패널에는 강조 표시된 플로우에 대한 자세한 정보가 표시됩니다. Ctrl+] 키를 눌러 오른쪽 패널을 켜거나 끌 수 있습니다.
강조 표시된 플로우의 연결 다이어그램을 보려면 “UID 상관 관계” 목록에서 “연결”을 클릭합니다.
기본 창에서 플로우를 강조 표시한 다음 Wireshark 아이콘을 클릭하면, 강조 표시된 플로우에 해당하는 패킷을 Wireshark에서 바로 확인할 수 있습니다.
Wireshark가 실행되고 분석하고자 하는 패킷이 표시됩니다.
Brim에서 필터링
Brim의 검색 및 필터링 기능은 매우 유연하고 포괄적이지만, 익숙하지 않은 사용자를 위해 새로운 필터링 언어를 학습할 필요가 없습니다. 요약 창에서 필드를 클릭한 다음 메뉴에서 옵션을 선택하여 Brim에서 구문적으로 올바른 필터를 만들 수 있습니다.
예를 들어 아래 이미지에서 “dns” 필드를 마우스 오른쪽 버튼으로 클릭했습니다. 그런 다음 상황에 맞는 메뉴에서 “필터 = 값”을 선택합니다.
그러면 다음과 같은 결과가 나타납니다.
- 텍스트 _path = “dns”가 검색 창에 추가됩니다.
- 해당 필터가 PCAP 파일에 적용되어 DNS(Domain Name Service) 플로우인 플로우만 표시됩니다.
- 필터 텍스트는 왼쪽 창의 검색 기록에도 추가됩니다.
동일한 방법을 사용하여 검색어에 추가 절을 추가할 수 있습니다. “Id.orig_h” 열에서 IP 주소 필드(“192.168.1.26” 포함)를 마우스 오른쪽 버튼으로 클릭한 다음 상황에 맞는 메뉴에서 “필터 = 값”을 선택합니다.
이렇게 하면 추가 절이 AND 절로 추가됩니다. 이제 디스플레이가 필터링되어 해당 IP 주소(192.168.1.26)에서 시작된 DNS 플로우만 표시됩니다.
새 필터 용어가 왼쪽 창의 검색 기록에 추가됩니다. 검색 기록 목록에서 항목을 클릭하여 검색 사이를 이동할 수 있습니다.
필터링된 대부분의 데이터의 대상 IP 주소는 81.139.56.100입니다. 다른 IP 주소로 전송된 DNS 플로우를 확인하려면 “Id_resp_h” 열에서 “81.139.56.100”을 마우스 오른쪽 버튼으로 클릭한 다음 상황에 맞는 메뉴에서 “필터 != 값”을 선택합니다.
192.168.1.26에서 시작되어 81.139.56.100으로 전송되지 않은 DNS 플로우가 하나만 있으며, 아무 것도 입력할 필요 없이 필터를 사용하여 해당 플로우를 찾았습니다.
필터 절 고정
“HTTP” 플로우를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 “필터 = 값”을 선택하면 요약 창에 HTTP 플로우만 표시됩니다. 그런 다음 HTTP 필터 절 옆에 있는 고정 아이콘을 클릭할 수 있습니다.
이제 HTTP 절이 제자리에 고정되고 우리가 사용하는 다른 필터나 검색어는 HTTP 절이 앞에 추가된 후 실행됩니다.
검색 창에 “GET”을 입력하면 고정된 절에 의해 이미 필터링된 플로우 내에서 검색이 제한됩니다. 필요한 만큼 필터 절을 고정할 수 있습니다.
HTTP 플로우에서 POST 패킷을 검색하려면 검색 창을 지우고 “POST”를 입력한 다음 Enter 키를 누르기만 하면 됩니다.
옆으로 스크롤하면 원격 호스트의 ID가 표시됩니다.
모든 검색 및 필터 용어가 “기록” 목록에 추가됩니다. 필터를 다시 적용하려면 클릭하기만 하면 됩니다.
이름으로 원격 호스트를 검색할 수도 있습니다.
검색어 수정
검색하고 싶은 특정 플로우가 표시되지 않는 경우 플로우를 클릭하고 검색 창에서 해당 항목을 편집할 수 있습니다.
예를 들어, PCAP 파일에 최소한 하나의 SSH 플로우가 있어야 한다는 것을 알고 있지만, rsync를 사용하여 파일을 다른 컴퓨터로 보내려고 해도 해당 플로우가 보이지 않을 수 있습니다.
따라서 다른 플로우를 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 “필터 = 값”을 선택한 다음 검색 창을 편집하여 “dns” 대신 “ssh”를 표시합니다.
Enter 키를 눌러 SSH 플로우를 검색하고 하나만 찾습니다.
Ctrl+] 키를 누르면 해당 플로우에 대한 세부 정보를 보여주는 오른쪽 창이 열립니다. 플로우 중에 파일이 전송된 경우 MD5, SHA1, SHA256 해시가 나타납니다.
이들 중 하나를 마우스 오른쪽 버튼으로 클릭한 다음 상황에 맞는 메뉴에서 “VirusTotal Lookup”을 선택하여 VirusTotal 웹사이트에서 해당 해시를 검사할 수 있습니다.
VirusTotal은 알려진 악성코드 및 기타 악성 파일의 해시를 저장합니다. 파일이 안전한지 확실하지 않은 경우, 파일에 더 이상 접근할 수 없는 경우에도 이 방법을 사용하여 쉽게 확인할 수 있습니다.
파일이 정상이면 아래 이미지와 같은 화면을 볼 수 있습니다.
Wireshark의 완벽한 보완재
Brim을 사용하면 대용량 패킷 캡처 파일로 훨씬 빠르고 쉽게 작업할 수 있습니다. 오늘 바로 테스트해 보십시오!