문제
무선 마우스 / 키보드, 많은 사람들에게는 친숙한 물건일 겁니다. 시장에 1-2년 있었던 게 아니니까요. 하지만 제조사들이 제품의 보안에 신경을 쓰게 된 것은 최근 몇 년간의 이야기입니다. 그 전에는 지금보다 보안관념이 약하기도 했고 보안에 약간 결함이 있어도 일반인이 전파를 도청할 수 있을 가능성은 없다시피했기 때문입니다.
하지만 2016년 기준으로는 그렇지 않습니다. 물론 기존에도 해킹을 하려면 해킹을 할 수 있었지만 지금은 수십만원이면 일반인도 SDR 시스템을 구성할 수 있기 때문입니다.
SDR - Software Defined Radio - 는 최소한의 하드웨어만을 이용해 전파를 수신/송신하고 실제 자료 처리는 컴퓨터 소프트웨어에 전부 떠넘기는 기법입니다. 일반적으로는 하드웨어측이 무선 신호를 수신해서 ADC로 디지털화한 후 USB, 이더넷 등을 통해 PC에다 그대로 신호를 넘겨주고 이걸 PC가 해석하는 식으로 동작합니다 (수신 기준. 송신은 이 역순입니다.). 이론상으로는 하드웨어 원가절감에 도움이 되어야 하나 아직은 기술/수요상의 문제로 별로 그렇지는 않고.. 대신 사용자가 원하는 대로 쉽게 라디오를 재설정할 수 있기 때문에 무선통신/무선보안 연구용으로 활발하게 사용되고 있습니다.
그러면 왜 이러한 기술이 보안이 약한 무선통신기기들에게 큰 위협이 되는가? 이유는 단순합니다. 이 기술을 이용해 원하는 대로 무선신호를 수신하고 발신할 수 있기 때문입니다. 암호화가 잘 되지 않은 구형/싸구려 무선 키보드/마우스는 애초에 무선 도청 자체가 쉽지 않은 기술이라는 점에 크게 의존하고 있는데, 이러한 장비를 이용하면 쉽게 해당 장비들에서 나온 신호들을 도/감청하는것이 가능합니다. 물론 SDR의 발전과 가격 하락이 문제라기보다는 숨어있던 보안 문제가 이러한 발전으로 인해 터져나오는것이라고 보는 것이 올바를 것입니다. 기존에도 조금 더 실력이 필요했다는 것일 뿐이지 하려면 도/감청은 다 가능했기 때문입니다.
실연
..물론 이렇게만 적으면 좀 설득력이 없을 것입니다. 그러니까 직접 해킹해봅시다.
오늘의 제물인 싸구려 마우스입니다. 안드로이드 tv 스틱에 번들된 usb 마우스. 2.4Ghz대역을 사용합니다.
신호 수신/송신에 사용할 장비는 이 SDR transceiver. HackRF라는 물건입니다. Michael Ossmann이라는 분이 개발하셨으며 8비트 해상력, 최대 20MS/s 에 반이중방식만 지원하는 등 대체로 성능이 좋은 편은 아니나 1Mhz-6Ghz까지의 주파수를 커버하며 가격이 300불로 저렴한 편이라 무선기기 보안 테스트에 자주 사용됩니다.
그리고 가장 중요한 수신/송신 소프트웨어는 GNURadio로 구현했습니다. 대단한 것은 없고.. 말 그대로 2.41Ghz대역의 전파를 '녹음'했다가 그대로 '재생'하는 프로그램입니다. 밑은 해당 플로우그래프입니다. (GRC라는 프로그램을 이용해 저대로 그래프를 그려넣으면 알아서 파이썬 코드가 생성됩니다.)
GRC 플로우그래프 - 신호 수신, 녹음 측.
GRC 플로우그래프 - 신호 송신측 (첫번째 플로우그래프에서 녹음한 신호를 약간 증폭해서 그대로 다시 재생).
그럼 이걸 실행해봅시다.
무선신호 녹음. 좌측 에이서 컴퓨터에 연결된 무선 마우스가 발신하는 신호를 녹음해서 저장하고 있습니다.
저장된 신호를 재생. 보시다시피 몇번을 반복재생해도, 컴퓨터를 바꿔끼워도 녹음한 동작을 반복합니다. 녹음/재생 관련 설정들을 잘 최적화하지 않았기 때문에 실제 마우스 동작과는 약간은 방향이 달랐습니다. (일부 신호가 인식 안되고 날아가서..)
해석
이게 무슨 뜻이냐면.. 이 시연에 사용한 마우스같은 경우 무선 신호가 암호화가 잘 이루어지지 않아 마우스를 쓰지 않고도 원격으로 마우스 제어 신호를 송신할 수 있다는 것입니다. 또한, 제대로 암호화되지 않은 신호이므로 저 녹음된 자료 (IQ data) 로부터 마우스가 어떤 방향으로 움직였었는지를 복구하는 것이 가능할 수 있습니다.
또한, 여기서는 마우스만 시연했지만 키보드도 당연히 똑같은 문제가 적용됩니다. 키보드로 입력한 모든 키를 그대로 복구할 수 있으며 원격으로 명령을 내리는 것도 가능할 수 있습니다. 경우에 따라서는 마우스보다 훨씬 위험할 수 있겠습니다.
대안
그럼 어떻게 해야 이런 문제를 피할 수 있는가?
-암호화를 지원하는 무선 키보드/마우스들이 있습니다. 제품 사양에 암호화여부를 표기하기도 하므로 스펙 시트를 확인해보시기 바랍니다. 물론 암호화 기법도 여러가지이며 다른 데에서 구멍이 뚫리는 경우도 있으므로 가능하면 암호화 방식도 제대로 AES등을 사용하나 확인하시고 오래된 제품은 피하시는 것을 권하고 싶습니다.
-제가 알기로는 블루투스 키보드/마우스들도 암호화를 합니다. (단, 제가 블투를 다루는 쪽은 아니므로 제가 잘못 알고 있을수도 있습니다.)
-Frequency Hopping을 하는 무선기기들은 계속 주파수가 바뀌기 때문에 도/감청이 조금 더 힘듭니다. 하지만 이것은 그냥 더 성능이 좋은 수신기를 써서 주파수를 왕창 녹음해버리거나 하면 뚫리기 때문에 보안책으로서는 적절하지 않습니다. (그저 보안적인 측면이나 수신률적인 측면에 있어 손해볼 것은 없습니다.)
생각조차 못한 곳에서도 마구 공격이 들어오는 2010년대. 자신의 정보를 위협으로부터 끝까지 지켜내고 싶으시다면 마우스나 키보드도 구매하시기 전에 한번 더 생각해보시는 것을 권하고 싶습니다.
(..참고로 제가 해본 건 아닙니다만 이걸로 자동차 문을 딴다거나 하는 사례도 있었습니다. 마찬가지로 주의 바랍니다. 참고: https://www.youtube.com/results?search_query=hackrf+car )