회사에서의 직무는 Researcher지만, 때로는 Engineer의 직무를 수행할 때도 있는데
회사의 도메인 특성상 폐쇄망 환경으로 지원을 나갈 때가 많다.
그러나 폐쇄망 환경에서도 다른 사이트에 붙어서 테스트를 해야하거나, 개발을 해야 할 때가 있는데
이를 위해 스마트폰의 인터넷을 끌어다가 노트북에 연결해서 써야한다.
아래의 글은 Windows OS 노트북이 아닌, MacOS Tahoe를 기준으로 서술하고 있다.
핸드폰에서 노트북에 테더링하기
핸드폰에서 노트북으로 데이터를 테더링하기 위해서는 크게 3가지 방법이 있는데,
- 모바일 핫스팟(Wi-Fi)
- 블루투스 테더링
- USB 테더링
방식으로 이용할 수 있다.모바일 핫스팟(Wi-Fi)폐쇄망 환경이지만 와이파이를 지원한다(보다는 특별히 제재하지 않는다)고 하면, 가장 좋은 방법은 모바일 핫스팟으로 두 디바이스를 연결하는 것이다. 접속 방식은 다음과 같다.
스마트폰이 무선 라우터(AP, Access Point) 역할을 수행한다.
- 동작 원리
- 스마트폰의 Wi-Fi 모듈이 '클라이언트 모드'(수신)에서 'AP 모드'(송신)으로 전환된다 : 이 이유 때문에 핸드폰에서는 모바일 핫스팟과 와이파이 연결을 동시에 수행할 수 없다.
- 스마트폰은 자체적인 SSID를 브로드캐스팅하고, DHCP 서버를 구동해서 맥북에 사설IP를 할당한다.
- 맥북 입장에서는 일반적인 공유기에 연결된 것과 동일한
en0(Wi-Fi 인터페이스)를 사용한다.
- 인터페이스 특징
- 프로토콜 : 802.11 표준(a/b/g/n/ac/ax)을 따른다.
- 대역폭(bandwidth) : 매우 높음. 5GHz 대역 사용 시 간섭이 적고 빠르다.
- 오버헤드 : 무선 신호의 암호화/복호화(WPA2/3) 과정과 전파 간섭 관리가 필요하므로 스마트폰 CPU와 배터리 소모가 가장 심하다.
그러나, 모든 환경이 와이파이를 지원하지는 않는데, 예를 들면 금융권같은 곳은 건물 자체를 공인된 wi-fi말고는 동작하지 않게 해놓은 곳도 있다. 이는 대부분 데이터 유출을 방지하기 위해 WIPS로 와이파이 환경을 통제해놓기 때문이다.
와이파이 방어자 WIPS
WIPS(Wireless Instruction Prevention System) 는 은행이나 보안 시설에서 특정 Wi-Fi(사내망)는 허용하면서, 개인 핫스팟이나 외부 공유기(Rogue AP)를 차단하는 기술의 핵심이다. 단순히 신호를 방해(Jamming)하는 것이 아니라, Wi-Fi(IEEE 802.11) 프로토콜의 취약점을 역이용하여 논리적으로 연결을 끊어버리는 방식을 사용한다.
탐지(Scanning & Classification)
건물에 달려 있는 무선 AP들 중 일부는 데이터를 전송하지 않고 센서모드로 동작하며 주변 패킷을 스니핑한다.
- 화이트리스트 기반 관리
- 사내 공인AP들의 BSSID(MAC Address) 와 SSID 는 시스템에 등록해놓는다.
- Rogue AP 탐지
- 센서가 등록되지 않은 새로운 BSSID(예 : 개인의 스마트폰 핫스팟)가 비콘 프레임(Beacon Frame)을 날리는 것을 감지한다.
- 스마트폰 제조사의 OUI(MAC 주소 앞 3자리)를 분석해서 사내의 AP가 아니라 Samsung / Apple의 Mobile Device임을 식별한다.
- 이 기기가 사내 네트워크 범위 내에 있다고 판단되면 인가되지 않은 AP(Rogue AP) 로 분류하고 차단 모드로 진입한다.
Beacon Frame?
비콘 프레임은 무선 AP가 자신이 관리하는 무선랜(BSS)의 존재를 정기적으로 알리는 브로드캐스트 프레임으로, 스테이션이 무선 네트워크를 찾도록 도와주는 역할을 수행한다.
IEEE 802.11 관리 프레임(Frame Type이 00)중 하나로, 비콘 프레임에 BSSID 정보가 들어있고, 프레임 바디에 SSID 정보가 들어있다.
아래는 일반적인 Wi-Fi 프레임 구조이다.

차단(Deauthentication Attack)
전파를 물리적으로 덮어버리는 재밍(Jamming)은 불법 소지가 크고 통신 장애를 일으키므로, WIPS는 Deauth 패킷을 이용한 정밀 타격 방식을 사용한다.
- 동작 원리
- 맥북(클라이언트)이 스마트폰(핫스팟)에 연결을 시도한다
- WIPS 센서가 헨드셰이크 과정을 감지한다.
- WIPS 센서가 스마트폰인 척 위장하여 맥북에게 "연결을 끊어라"라는 관리 프레임을 보낸다.
- 동시에 WIPS 센서가 맥북인 척 위장해서 스마트폰에게도 "연결을 끊어라"라는 Deauthentication 관리 프레임을 보낸다.
- 결과
- 맥북과 스마트폰은 서로가 연결을 끊었다고 착각하게 된다.
- 사용자는 Wi-Fi 목록에는 핫스팟이 뜨지만, '연결할 수 없음'이 뜨거나, 연결되자마자 즉시 끊어지는 현상이 무한 반복된다.
- 이 방식은 Wi-Fi 규약 상
관리 프레임이 암호화되지 않는 경우가 많다는 점을 이용한 것이다. (최근 WPA3와 802.11w 표준에서는 이를 방어하는 PMF 기능이 강화되었지만, 여전히 하위 호환성 때문에 뚫리는 경우가 많다.)
이 외에도, 조금 더 보안이 중요한 곳은 물리적으로 단말기 제어(MDM)를 할 수도 있다.
블루투스 테더링
블루투스 테더링은 WIPS의 레이더를 피하면서도, 아래에 서술할 USB 연결보다 번거롭지 않게 블루투스 테더링을 잘 사용할 수 있다.
이 방법의 특징은, 저전력 연결을 위해 설계되었으며, PAN(Personal Area Network) 프로파일을 사용한다.
- 동작 원리
- 블루투스 스택의 BNEP(Bluetooth Network Encapsulation Protocol)을 사용한다.
- Wi-Fi처럼 1:N 연결이 가능하긴 하나(Piconet), 한계점이나 사용 용도의 특성으로 인해 보통 1:1 연결을 사용한다.
- 맥북 입장에서는
Bluetooth PAN이라는 별도의 네트워크 인터페이스를 통해 통신한다.
- 인터페이스 특징
- 대역폭 : 매우 낮다(보통 1~2 Mbps 수준). 웹 서핑보다는 텍스트 전송, 메신저, 백그라운드 동기화에 적합하다.
- 지연 시간(Latency) : Wi-Fi보다 길다(블루투스 특성상 주파수 호핑 방식을 사용하기 때문)
- 전력 효율 : Wi-Fi 핫스팟 대비 전력 소모가 현저히 적어서 장시간 연결 유지에 유리하다.블루투스 테더링은 어떻게 WIPS의 레이더를 피할까?위에 기술했듯 WIPS의 핵심 무기는 '정밀 타격'으로 'Deauthentication Frame'을 쏘는 것이다.
그러나 이 기술은 Wi-Fi규약에 정의된 패킷이기에, 블루투스 통신 규약에는 Wi-Fi의 Deauth 프레임을 처리하는 로직이 없기 때문에 블루투스 기기는 이 신호를 전혀 이해하지 못하고, 계속 데이터를 주고받는다.
또한, 블루투스의 '주파수 호핑(Frequency Hopping)' 원리 때문에, WIPS는 블루투스를 잡을 수 없다.
- Wi-Fi는 특정 채널(예 : 2.4GHz의 6번 채널)에 고정되어 데이터를 주고받는다. WIPS는 그 채널만 노려보면 된다.
- 블루투스는 FHSS(Frequency Hopping Spread Spectrum, 주파수 도약 확산 대역) 방식을 사용하기 때문에, 2.4GHz 대역을 79개의 얇은 채널로 쪼갠 뒤, 초당 1,600번 채널을 바꿔가며 통신한다.
따라서, WIPS가 특정 순간에 블루투스 신호를 잡아서 방해하려 해도, 이미 블루투스는 다른 주파수로 이동해버린 상태이다. 이를 막으려면 2.4GHz 대역 전체를 Jamming해야 하는데, 이는 무선법 위반 소지가 있고, 또 다른 디바이스(무선 마우스, 무선 키보드 등)까지 전부 먹통으로 만들기 때문에 현실적으로 불가능하다.
아래의 손오공이 에너지파를 맞지 않는 이유와 비슷하다.

맥북에서의 블루투스 테더링 방식의 한계
그러나, 손오공이 순간이동을 하면서 공격을 하지 못하는것과 마찬가지로 블루투스 연결을 통한 테더링도 한계가 존재한다.
블루투스 테더링 자체가 가지고 있는 한계(Bandwidth, 멀티디바이스 등)도 있지만, 위에 소개했듯 맥북 환경에서 가장 큰 한계는, 맥북이 Apple Silicon(정확히는 MacOS Monterey)으로 오면서 Bluetooth PAN 인터페이스 수동 추가에 대한 지원을 하지 않게 되었다는 점이다.
현재 맥북은 블루투스 테더링의 한계를 받아들임과 동시에 자사 기기간의 연결을 선호하고 있으며, iOS과는 iCloud계정과의 연동과 동시에, Mac은 평소에 BLE로 주변에 내 아이폰이 있는지 저전력으로 스캔을 하고 있다가, iPhone이 핫스팟 연결 버튼을 누르는 동시에 Wi-Fi로 고속 연결을 맺는다.
그러나 iPhone에서는 블루투스 테더링을 지원하고 있는데, 핸드폰은 맥북과는 다르게 애플이 만들지 못하는 여러 제품군이나 Wi-Fi 모듈 없이 블루투스만 지원하는 저전력 장치(차 또는 여러 IoT, 임베디드 장치 등)와의 연동을 해야하는 경우가 많으므로 레거시 프로토콜을 남겨두고 있다.
따라서, 블루투스 연결을 하고자 하는 맥북은 Montery OS보다 레거시 OS를 사용하고 있어야 연결을 할 수 있다. 남은 방법은 USB테더링 뿐이다.
USB 테더링
USB 또한 아래 이유로 WIPS를 피할 수 있다.
WIPS는 Wireless라는 이름 그대로 공중의 전파(Radio Frequency)를 감시하는 장비다. 반면 USB테더링은 유선 케이블을 통해서 전기 신호로 데이터를 주고받는다. 이 신호는 케이블 밖으로 새어나지 않는다. 또한 Point-to-Point 통신만을 수행하므로, 비콘을 쏠 일도 없거니와 스마트폰이 AP로 전환되는것이 아닌, NIC(외장 네트워크 카드)처럼 동작하기 때문에 PC에 따로 에이전트가 설치되지 않는 이상 걸릴 일이 없다.
동작 원리:
- USB 케이블을 통해 데이터가 전송되지만, 내부적으로는 RNDIS(Remote Network Driver Interface Specification) 또는 CDC-NCM(Communication Device Class - Network Control Model) 프로토콜을 사용해서 Ethernet 프레임을 USB패킷으로 캡슐화한다.
- 따라서 맥북에서는 물리적인 LAN 케이블을 꽂은 것처럼 인식되어 USB 10/100/1000 LAN과 유사한 가상 인터페이스가 생성된다.
인터페이스 특징: - 프로토콜 : USB 버스 위에서 이더넷 프레임을 터널링한다.
- 안정성 : 전파 간섭이 전혀 없다.구식 안드로이드 폰과의 USB 테더링 방식의 한계그러나 맥북과 아이폰은 인식이 잘 되는것에 비해, 구식 안드로이드 폰(Android 10 이하)의 경우 맥북에 USB를 꽂아도 연결이 되지 않는다. MacOS는 기본적으로 안드로이드의 USB 테더링 프로토콜(RNDIS, RNDIS는 마이크로소프트에서 만든 표준임)를 완벽하게 지원하지 않기 때문이다. 따라서 CDC-NCM이 지원되는 Android 11 이상의 핸드폰을 사용하거나 HoRNDIS같은 맥북용 오픈소스 드라이버를 사용해야 한다.
HoRNDIS는 공식적으로는 MacOS X까지밖에 지원하지 않는다(https://joshuawise.com/horndis 참고). 그러나 MacOS Tahoe 기준에서도 정상적으로 작동함을 확인했다.
HoRNDIS는 macOS의 커널 확장 프로그램(Kernel Extension, kext) 형태로 설치되어 시스템의 가장 깊은 곳에서 동작한다.
동작 원리는 다음과 같다.
1. RNDIS 패킷 캡슐 해제
안드로이드 스마트폰은 이더넷 프레임(실제 인터넷 데이터)을 RNDIS 헤더로 감싸서 USB 케이블로 보낸다. HoRNDIS 드라이버는 USB 버스를 타고 들어오는 데이터 중 RNDIS 프로토콜을 사용하는 장치를 감지해서, 데이터 앞뒤에 붙은 Microsoft 전용 포장지(RNDIS 헤더)를 뜯어내고, 그 안에 있는 순수한 표준 이더넷 프레임만 추출한다.
2. 가상 네트워크 인터페이스 생성
추출한 이더넷 프레임을 MacOS 네트워크 스택에 전달해야 하기 때문에, HoRNDIS는 MacOS 운영체제에게 자신이 '유선 랜카드'라고 거짓말을 한다.
이로 인해 시스템 환경설정의 네트워크 항목에 Samsung Android같은 이름의 새로운 네트워크 인퍼페이스가 생성된다.
3. 양방향 통신 지원
반대로 MacBook에서 인터넷 요청을 보낼 때도, HoRNDIS는 MacOS가 보낸 이더넷 프레임을 받아서 다시 RNDIS 규격으로 포장한 뒤 안드로이드 폰으로 쏴준다.
MacOS Catalina 이후부터 Apple은 커널 확장 프로그램의 설치를 매우 까다롭게 막고 있기도 하고, 특히 Apple Silicon으로 오면서부터는 리커버리 모드에서 시스템 무결성 관련 설정을 해제해야 한다. (블로그 참고 - 최신 맥북은 시동 옵션의 기어 아이콘에서 시스템 패스워드까지 입력해야 터미널을 켤 수 있다.)
'네트워크' 카테고리의 다른 글
| 좌충우돌 와이파이 탐험기 (4) | 2024.10.08 |
|---|
















