회사일과 함께 틈틈히 이것저것 공부하고 있긴 한데, 주로 Notion에 정리해놓다보니 Velog는 방치되는 상황이 발생해버렸다..😋 Notion에 기록한 정보들을 공유하고 싶기 때문에 앞으로 짬내서 옮겨놓아야겠다!
IoT 기기 분석을 하다보면, 모니터 모드로 패킷을 잡거나 보낼 일이 종종 생기곤 한다. 그래서 TL-WN725N
라는 무선 랜카드를 구입했다.
별다른 리눅스 드라이버 설치 없이 wlan0
인터페이스가 잡히길래 바로 아래와 같이 모니터 모드를 활성화 하려고 했는데, 역시나 안 되었다.
명령어:
ifconfig wlan0 down
iwconfig wlan0 mode monitor
ifconfig wlan0 up
# 또는
airmon-ng check kill
airmon-ng start wlan0
실행 결과:
Error for wireless request "Set Mode" (8B06) :
SET failed on device wlan0 ; Invalid argument.
구글링을 좀 해보니 아래 과정대로 모니터 모드를 활성화 시킬 수 있다고 해서 해봤는데,
sudo apt update
sudo apt upgrade
sudo apt install bc
sudo rmmod r8188eu.ko
git clone https://github.com/aircrack-ng/rtl8188eus.git
cd rtl8188eus
sudo -i
echo "blacklist r8188eu.ko">"/etc/modprobe.d/realtek.conf"
exit
make
sudo make install
sudo modprobe 8188eu
현재 커널 버전에 맞는 linux-headers
를 apt-get
으로 설치하지 못해서 make
, sudo make install
시 에러가 발생했다.
Makefile
에서 KVER = 5.10.0-kali7-amd64
로 맞추거나 modules
폴더명을 변경후 진행하면 make
는 잘 되지만 make install
에서 문제가 발생했다.
커널 버전을 업그레이드 해줌으로써 해결
$ sudo apt-get install linux-headers-5.10.0-kali7-amd64
$ sudo cp /lib/modules/5.10.0-kali7-amd64 /lib/modules/5.10.0-kali3-amd64/ -rf
$ sudo ln -s /lib/modules/5.10.0-kali7-amd64/build /lib/modules/5.10.0-kali3-amd64/build
echo 'blacklist r8188eu'|sudo tee -a '/etc/modprobe.d/realtek.conf'
make && sudo make install
sudo reboot
sudo airmon-ng check kill
sudo ip link set <interface> down
sudo iw dev <interface> set type monitor
그런데 VirtualBox 말고 VMWare에서 설치했더니 header 파일을 다시 다운로드 할 필요가 없었다. (환경에 따라 다를 수 있음!)
또 다른 방법으로는, sudo apt-get dist-upgrade
를 통해 업그레이드를 선행해주면 된다. 결론적으로는 헤더 버전과 커널 버전의 미스매치로 인해 오류가 발생할 수 있다는 것!
sudo apt-get -y dist-upgrade # 헤더 버전 안 맞을 때
reboot
sudo apt-get install -y linux-headers-$(uname -r) bc
git clone https://github.com/aircrack-ng/rtl8188eus
cd rtl8188eus
make && sudo make install
여기까지 설정한 뒤 wlan0
인터페이스에 대해 모니터모드를 활성화하면Monitor
모드로 바뀐다.
모니터 모드로 바뀐 모습:
┌──(kali㉿kali)-[~]
└─$ iwconfig
wlan0 unassociated Nickname:"<WIFI@REALTEK>"
Mode:Monitor Frequency=2.412 GHz
# ...
이제 이 상태에서 NetworkManager
설정만 변경해주면 모든 과정이 완료된다.
NetworkManager
는 주기적으로 모든 인터페이스를 모니터링하면서 관리하는데, Monitor
모드로 전환된 인터페이스에 접근하면서 오동작을 유발할 수 있다.
따라서 wlan0
인터페이스를 별도로 관리하지 않도록 설정해주어야 한다.
/etc/NetworkManager/NetworkManager.conf
하위에 추가:
[keyfile]
unmanaged-devices=interface-name:mon*;interface-name:wlan1;mac:AA:BB:CC:DD:EE:FF
위 AA:BB:CC:DD:EE:FF
대신 인터페이스의 MAC 주소를 입력해주면 된다. (MAC 주소는 ifconfig
, ip
커맨드를 통해 확인 가능)
이후 네트워크 서비스를 재시작 하거나 재부팅 하면 설정이 적용된다.
service network-manager restart
# 또는
systemctl restart NetworkManager
# 또는
reboot
끝😁
재부팅 하면 Monitor
모드가 Managed
모드로 바뀌는데, 그럴 때마다 매번 커맨드를 입력하기 귀찮아서 아래와 같이 스크립트를 작성해두면 좋다.
#!/bin/bash
sudo airmon-ng check kill
sudo ip link set wlan0 down
sudo iw dev wlan0 set type monitor
sudo ip link set wlan0 up
ifconfig
iwconfig
#!/bin/bash
airmon-ng start wlan0
airmon-ng check kill
iwconfig
에러 해결을 위해 참고한 페이지들..