====== Wireshark 사용하기 ======
WiFi 상황에서 패킷을 캡쳐하여 분석하는 방법을 설명한다. 유선과 다르게 무선의 경우에는 특별한 장비가 필요하다.
여기서는 어떻게 무선 상의 패킷을 스니핑하여 분석하는지를 기술한다.
====== 무선 네트워크 카드 모드 ======
무선 패킷 스니핑을 시작하기 전에 패킷 캡쳐와 관련해 무선 네트워크 카드가 동작하는 여러가지 모드를 살펴볼 필요가 있다. 다음과 같은 네 가지 무선 NIC 모드를 사용할 수 있다.
| 매니지드 모드(Managed mode) | 이 모드는 무선 클라이언트가 무선 접속점 WAP 에 직접 연결될 때 사용한다. 이 경우에 무선 NIC 과 연관된 드라이버는 전체 통신 프로세스를 관리하는 WAP 에 의지한다. |
| 애드 혹 모드(Ad hoc mode) | 이 모드는 장치들이 직접 서로 연결되는 무선 네트워크 설정에서 사용한다. 이 모드에서는 보통 WAP 이 담당하는 책임을 서로 통신하고자 하는 두 개의 무선 클라이언트들이 공유한다. |
| 마스터 모드(Master mode) | 일부 고급 무선 NIC 은 마스터 모드를 지원한다. 이 모드는 컴퓨터가 다른 장치들을 위해 WAP 처럼 동작하게 특별한 드라이버 소프트웨어와 결합해 무선 NIC 이 동작하게 한다. |
| 모니터 모드(Monitor mode) | 이 모드는 우리의 목적을 위해 가장 중요한 모드이다. 모니터 모드는 무선 클라이언트가 데이터 송신과 수신을 중단하고 공중을 통해 전송되는 패킷을 감청하기만 할 때 사용한다. 와이어샤크가 무선 패킷들을 캡쳐하려면 무선 NIC 과 관련 드라이버가 모니터 모드를 지원해야만 한다(RFMON 모드로도 알려져 있다). |
대부분의 사용자들은 무선 네트워크 카드를 매니지드 모드 혹은 Ad hoc 모드에서 사용한다. 각 모드들을 그림으로 나타내면 아래와 같다.
{{ :computer:technology:mode.jpg |}}
무선 네트워크 인터페이스에 모니터 모드가 있다면, 유선 네트워크 인터페이스에는 무차별 모드가 있는데, 각각 인터페이스들의 지원여부에 따라 아래 표와 같은 문제가 발생할 수 있으므로, 고려해야 한다.
| 무차별 모드 | 모니터 모드 | 캡쳐 능력 | 고려사항 |
| On | Off | 패킷에 가짜 이더넷 헤더 추가됨. 관리 또는 제어 패킷이 캡쳐안됨||문제?(무차별 모드 비활성화) |
| Off | Off | 패킷에 가짜 이더넷 헤더 추가됨. 관리 또는 제어 패킷이 캡쳐안됨||관심 호스트상에서의 트래픽 캡쳐가 필요 |
| Off | On | 802.11 헤더. 관리 또는 제어 패킷이 캡쳐됨||관심 호스트상에서의 트래픽 캡쳐가 필요 |
| On | On | 802.11 헤더. 관리 또는 제어 패킷이 캡쳐됨||대단함. 다양한 채널과 모든 SSID 로부터 트래픽을 캡쳐할 수 있음 |
====== 모드 바꾸기 ======
#iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11abgn ESSID:"linux"
Mode:Managed Frequency:2.472 GHz Access Point: 00:30:3F:51:16:C2
Bit Rate=54 Mb/s Tx-Power=15 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=68/70 Signal level=-42 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:573 Missed beacon:0
iwconfig 명령의 결과는 wlan0 인터페이스가 무선으로 설정되었음을 보여준다. 이것은 802.11abgn 프로토콜이라는 것을 알 수 있다.
이 명령이 제공하는 모든 무선 정보를 살펴보면 무선 확장 서비스 셋 ID(ESSID)와 주파수를 알 수 있으며, wlan0 아래 두 번째 줄을 보면 현재의 모드가 매니지드 모드라는 사실을 알 수 있다. 이것이 우리가 바꾸고자 하는 것이다.
wlan0 인터페이스를 모니터 모드로 바꾸려면 root 권한이 필요하다
#ifconfig wlan0 down
#iwconfig wlan0 mode monitor
#iwconfig
lo no wireless extensions.
wlan0 IEEE 802.11abgn Mode:Monitor Frequency:2.472 GHz Tx-Power=15 dBm
Retry long limit:7 RTS thr:off Fragment thr:off
Power Management:off
iwconfig 명령의 결과, 모니터 모드로 바뀌었음을 알 수 있다. 이제 다음 명령을 입력해 wlan0 인터페이스가 동작하게 한다.
#ifconfig wlan0 up
감청할 채널을 변경하는 데도 iwconfig 명령을 사용한다. wlan0 인터페이스의 채널을 3번 채널로 변경하려면 다음 명령을 입력한다.
#iwconfig wlan0 channel 3
패킷들을 캡쳐하는 상태에서도 채널 변경이 가능하다. 그러므로 변경할 때 망설일 필요가 없다. iwconfig 명령을 실행하기 편하게 스크립트로 작성할 수도 있다.
이제 와이어샤크를 실행하자.
====== Wireshark 설치하기 ======
#apt-get install wireshark
설치하고, 실행을 했는데, 다음과 같은 에러 메세지 창이 뜬다.
'Lua : Error during loading: [string "/usr/share/wireshark/init.lua]:45: dofile has been disabled'
Wireshark 는 루트 계정으로의 실행을 권장하지 않기 때문에 발생하는 에러다. 하지만, 이 에러 창만 없애면 기능을 사용하는데는 아무런 문제가 없다. 에러 메세지 창을 없애기 위해서 /usr/share/wireshark/init.lua 파일을 수정한다.
-- disable potentialy harmful lua functions when running superuser
if running_superuser then
-- local disabled_lib = {}
-- setmetatable(disabled_lib,{ __index = function() error("this package has been disabled") end } );
--
-- dofile = function() error("dofile has been disabled") end
-- loadfile = function() error("loadfile has been disabled") end
-- loadlib = function() error("loadlib has been disabled") end
-- require = function() error("require has been disabled") end
-- os = disabled_lib
-- io = disabled_lib
-- file = disabled_lib
end
모두 주석처리한다.
====== FAQ ======
===== 특정 MAC 주소로 필터링하여 보고 싶을 때 =====
'wlan.addr == 00:11:22:33:44:55' 를 입력하면, 패킷 로그 중, Source 또는 Destination 중에 MAC 주소가 00:11:22:33:44:55 인 패킷만 보여준다.
----
{{indexmenu>:#1|skipns=/^(wiki|etc|diary|playground)$/ skipfile=/^(todays|about|guestbook)$/ nsort rsort}}
----