원래 하고 싶었던 IoT 장비 분석을 위해 집에 있는 라즈베리파이를 활용하여 패킷 스니퍼를 제작하고자 했다. 라즈베리 파이에 내장되어있는 유무선 기능을 통해 유선(eth0)으로 오는 패킷을 무선(wlan0)으로 route하는 라우터를 만들고 라즈베리파이에서 tcpdump를 통해 패킷을 도청 할 수 있었다. 또한 편리한 분석 환경을 위해 dhcp 설정, 공유폴더를 설정했다. 집에 있는 라즈베리파이는 3B+ 이며, 약간의 설정을 통해 누구나 충분히 패킷 스니퍼를 제작할 수 있다.
Raspberry PI dhcp 서버 설정
라즈베리 파이에서 eth0 으로 연결될 기기와 원활한 통신을 위해 dhcp 서버 설정을 해줬다
window 환경인 본체 컴퓨터와 공유폴더 설정을 위해 shared_folder와 pcap 파일이 저장될 폴더를 생성하고 권한을 할당했다.
#!/bin/bash
# Set up the directory
DATE=$(date +%Y-%m-%d)
TIME=$(date +%H-%M)
BASE_DIR="/home/pi/shared_folder/pcap"
CAPTURE_DIR="$BASE_DIR/$DATE"
mkdir -p "$CAPTURE_DIR"
sudo chmod 777 -R "$CAPTURE_DIR"
# Set up the filename
FILENAME="$TIME.pcap"
# Run tcpdump and save the captured packets
sudo tcpdump -i eth0 -s 0 -w "$CAPTURE_DIR/$FILENAME"
패킷 캡처를 위해 바탕화면에 save_packet.sh를 생성한다.
해당 파일을 실행시 eth0 패킷을 캡쳐하여 /home/pi/shared_folder/pcap/현재 날짜/시간-분.pcap 형태로 저장한다.
Raspberry PI 에서 Window 컴퓨터와 공유 폴더 설정
캡쳐한 pcap 파일을 편하게 분석하기위해 공유 폴더 설정을 했다. 공유 폴더 설정을 위해 samba를 설치하여 설정했다.
sudo apt install samba samba-common-bin
공유 폴더 설정을 위해 라즈베리 파이에서 위 명령줄을 통해 samba를 설치한다.
sudo gedit /samba/smb.conf
공유 폴더 설정을 위해 smb.conf를 gedit으로 열었다.
[shared_folder]
path = /home/pi/shared_folder
browseable = yes
read only = no
create mask = 0777
directory mask = 0777
public = yes
force user = pi
smb.conf 파일 제일 아래에 다음과 같이 추가하고 저장한다.
이때 생성한 공유 폴더 이름에 유의해야한다 ex.) [폴더이름] path = /home/pi/shared_folder
sudo systemctl restart smbd
공유 폴더 설정 적용을 위해 smbd 서비스를 재시작한다.
[사진 2] - Window 파일 탐색기
상단에 \\raspberrypi를 입력하여 공유 폴더가 재대로 나오는지 확인한다.
필자의 경우에는 shared_folder 우클릭->즐겨찾기에 고정을 통해 왼쪽 즐겨찾기에서 쉽게 접근할 수 있도록 했다.
Raspberry pi 패킷 스니퍼 테스트
모든 설정이 완료됐다면 Raspberry pi를 재부팅하고 IoT 장비와 유선 연결을 한다. 그후 IoT 장비에서 아이피 설정을 통해 아이피를 맞춰준 후 라즈베리 파이에서 패킷 캡처(save_packer.sh 실행)를 통해 패킷이 잡히는지 테스트 해본다.