suricata에 이어 zeek에서도 파일 추출을 진행해봤다.
Zeek
passive 오픈소스 네트워크 트래픽 분석기
네트워크 보안 모니터로 주로 사용된다. 보안 외에도 성능 측정, 트러블 슈팅 등 다양한 트래픽 분석 작업을 지원한다.
네트워크 활동을 자세히 기록한 다양한 로그 파일을 생성한다.
파일 추출, 악성코드 탐지, 취약 소프트웨어 버전 보고, 인기 웹 애플리케이션 식별 등 다양한 분석 기능을 제공한다.
사용자 정의 가능한 플랫폼이다.
즉, 네트워크 트래픽을 해석하고 이를 바탕으로 로그를 생성하는 데 최적화 되어 있다.
구성
설치
공식 페이지를 참고하면 쉽게 설치 가능하다.
https://docs.zeek.org/en/master/install.html
쉽게 설치하는 방법은 아래와 같으나, 본인의 경우 소스 코드를 이용해 설치했다.
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
sudo apt update
sudo apt install zeek-6.0
echo 'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /' | sudo tee /etc/apt/sources.list.d/security:zeek.list
curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/security_zeek.gpg > /dev/null
sudo apt update
sudo apt install [zeek, zeek-6.0, or zeek-nightly]
소스코드로 설치하기 위해 필요한 종속성 먼저 설치하자.
sudo apt-get install cmake make gcc g++ flex libfl-dev bison libpcap-dev libssl-dev python3 python3-dev swig zlib1g-dev
git에서 소스 코드를 가져오도록 하자.
git clone --recurse-submodules https://github.com/zeek/zeek
이후 그대로 설치하면 된다.
./configure
make
make install
PF_RING 설치
PF_RING이란?
고속 패킷 캡처, 필터링 및 분석
패킷 캡처 속도를 획기적으로 향상시키는 새로운 유형의 네트워크 소켓
Linux 시스템에 새로운 유형의 소켓을 설치하여 패킷 캡처 프로세스를 가속화할 수 있다.
https://www.ntop.org/products/packet-capture/pf_ring/
설치
공식 페이지: https://docs.zeek.org/en/master/cluster-setup.html#pf-ring-config
cd /usr/src
tar xvzf PF_RING-5.6.2.tar.gz
cd PF_RING-5.6.2/userland/lib
./configure --prefix=/opt/pfring
make install
cd ../libpcap
./configure --prefix=/opt/pfring
make install
cd ../tcpdump-4.1.1
./configure --prefix=/opt/pfring
make install
cd ../../kernel
make
make install
modprobe pf_ring enable_tx_capture=0 min_num_slots=32768
위 과정을 진행하면 설치 가능하다.
설치를 확인하려면 다음과 같은 명령어를 통해 확인할 수 있다.
modinfo pf_ring
이제 zeek를 설치한다.
export LD_LIBRARY_PATH=/opt/pfring/lib:$LD_LIBRARY_PATH
./configure --with-pcap=/opt/pfring
make
make install
다음과 같은 결과가 나오면 제대로 구성이 된 것이다.
ldd /usr/local/zeek/bin/zeek | grep pcap
libpcap.so.1 => /opt/pfring/lib/libpcap.so.1 (0x00007fc99d81e000)
설정
네트워크 대역 설정
vi /usr/local/zeek/etc/networks.cfg
192.168.0.0/16
모니터링 할 인터페이스 설정
vi /usr/local/zeek/etc/node.cfg
[zeek]
type=standalone
host=localhost
interface=eth0 # change this according to your listening interface in ifconfig
참고로, zeek 스크립트를 사용할 것이 아니라면 명령줄에서 인터페이스 지정이 가능하다.
설정 확인
zeekctl check
Hint: Run the zeekctl "deploy" command to get started.
zeek scripts are ok.
실행
zeekctl
Hint: Run the zeekctl "deploy" command to get started.
Welcome to ZeekControl 2.5.0-58
Type "help" for help.
[ZeekControl] >
zeekctl 셸이 시작되고 install, start, deploy, stop 등의 명령이 있다.
- install: zeekcontrol 구성의 초기 설치를 수행
- start: zeek 인스턴스 시작
- deploy: install+start
- stop: zeek 인스턴스 중지
- status: zeek 인스턴스 상태 확인
PF_RING 설정
인터페이스 관련 설정
vi /usr/local/zeek/etc/node.cfg
#[zeek]
#type=standalone
#host=localhost
#interface=eth0
#interface=enp2s0
[logger-1]
type=logger
host=localhost
#
[manager]
type=manager
host=localhost
#
[proxy-1]
type=proxy
host=localhost
#
[worker-1]
type=worker
host=localhost
interface=enp2s0
lb_method=pf_ring
lb_procs=10
이때 2가지 오류가 발생했다. 필요한 사람만 참고하길 바란다.
cluster-layout
export ZEEKPATH=/usr/local/zeek/share/zeek
echo $ZEEKPATH
bad_TCP_checksum
vi /usr/local/zeek/etc/zeekctl.cfg
zeekargs = --no-checksums
파일 추출
명령줄에서 실행하는 방법은 간단하다.
zeek -i enp2s0 -C /usr/local/zeek/share/zeek/policy/frameworks/files/extract-all-files.zeek
이를 수행시킨 후 client에서 파일을 업로드/다운로드 진행한다.
이후 zeek 폴더를 확인해보면 extract_files라는 디렉토리가 생성된다.
해당 디렉토리 내부에 추출된 파일이 저장된다.
zeekctl에서 실행하는 방법은 추가 설정이 조금 필요하다.
본인의 경우 extract만 수행하고 싶어 local.zeek가 아닌 seomj.zeek를 만들어 진행했다.
vi seomj.zeek
@load frameworks/files/extract-all-files.zeek
이후 zeekctl.cfg에서 seomj.zeek를 실행하도록 설정한다.
vi /usr/local/zeek/etc/zeekctl.cfg
SitePolicyScripts = seomj.zeek
이와 같은 설정을 통해 스크립트를 작성하여 커스텀 가능하다.
그리고 이때는 zeek/spool/ 아래에 extract_files라는 디렉토리가 생성된다.
'Study > Network' 카테고리의 다른 글
[Network]NFS 서버 및 클라이언트 구성 (0) | 2024.12.04 |
---|---|
[Network]Suricata 구축 및 파일 추출(File extraction) (1) | 2024.09.03 |
[Network]Proxy(Forward, Reverse, Transparent) (0) | 2024.08.25 |
[Network] Sendmail 메일 서버 구축 + DNS 서버 연결 (0) | 2024.08.09 |
[Network]FTP 서버 구축 (0) | 2024.08.03 |