공유기/Openwrt / / 2023. 1. 17. 17:31

중국산 공유기에 Openwrt 설치 과연 안전할까?

Openwrt Logo

 

 안녕하세요. 메가코피 입니다.

 근래에 공유기 커뮤니티 사이에서 핫한 내용이 있습니다.

 

 

중국 브랜드 공유기에 Openwrt를 설치하면 안전을 보장받을 수 있을까?

 

 

 라는 의문입니다. 사실 너무 당연한 일인 것 같습니다. 인터넷에 검색만 해도 손쉽게 중국 회사가 OS에 백도어를 탑재했다는 이야기를 접할 수 있으니까요. 모든 중국 회사가 그렇지 않겠지만, 앞선 사례들과 공산당 특유의 내로남불을 생각해보면 다른 회사들 제품들에게도 쉽사리 손이 가지 않습니다.

 

 "그럼 Openwrt를 올리면 안전하게 사용할 수 있을까?" 라는 궁금증이 드실 겁니다. 제가 궁금증을 생기게 해드렸으니, 제가 풀어드려야 하는 게 아닌가 싶습니다. 오늘은 Openwrt를 올리면 중국 브랜드 공유기도 안전하게 사용할 수 있을지에 대해 알아보도록 하겠습니다.

 

 질문을 해결하기에 앞서 백도어는 어떻게 작동하는지에 대해 알아야 합니다. 백도어는 크게 2가지 방식으로 구현됩니다. 첫번째는 하드웨어 방식입니다. 닌텐도 스위치를 예시로 들 수 있습니다. Soc를 비롯한 하드웨어 자체에 취약점이나 백도어가 존재한다면 제조사의 펌웨어가 아닌 Openwrt를 사용한다 할지라도 안전을 보장할 수 없습니다.

 

 

자물쇠 (사진을 클릭하면 출처로 이동합니다.)

이는 임베디드 시스템 뿐만 아니라 다른 기기들에게도 적용되는 로직이기에 시스템을 읽어들이는(init) 하는 방법을 바꾸지 않는 이상 공격자가 기기에 들어오는 것을 방관할 수 밖에 없습니다. 정도에 따라 다르겠지만 소프트웨어적 변경(초기 구동 로직 + a)으로 해결할 수 없는 문제도 많습니다. 

 

 다만 이런 심각한 백도어는 공격자가 하드웨어에 접근이 가능해야지만 사용 가능할 때가 많습니다. 대부분의 취약점이나 백도어는 소프트웨어 패치로 해결할 수 있습니다. 다행히도 Openwrt는 제조사에서 제공하는 SDK가 아닌 오픈소스 드라이버를 사용하기에 해당 부분에서는 조금이나마 자유롭다고 말씀드릴 수 있습니다.

 

 두번째는 소프트웨어적 백도어 입니다. 가장 일반적으로 접할 수 있는 백도어 입니다. 테스트(실제 작동 환경에서), 디버그, 수리등 다양한 이유로 포트를 열어놓는 경우를 뜻합니다. 대부분 제조사의 편의를 위해 만들어지고 외부에 공개되지 않습니다.(일반적으로 디버그용 포트는 정식 출시 전에 닫고 출시해야 정상입니다.) 리버스 엔지리어닝이나 내부 문서 유출, 포트 스캔과 같은 다양한 방법을 통해 외부에 유출될 수 있으며 해커에게 들어간다면 악용될 수 있습니다.

 

 실제로 해커들이 사용하는 툴들에는 이러한 정보들이 기입되어 있으며 가장 처음으로 시도되는 공격 중 하나입니다. 가끔 로그를 보다보면 중국이나 러시아에서 특정 포트를 긁은 기록을 확인하실 수가 있습니다. 일반적으로 사용하는 포트들 뿐만 아니라 흔하게 접할 수 없는 포트들을 긁는 것을 확인할 수 있는데 제조사 내부적으로 사용하는 포트라고 생각하시면 됩니다. 유출이 되는 바람에 악용이 되고 있는 것이지요. 해당 문제는 펌웨어 업데이트를 통해 쉽게 해결되는 문제입니다.

 

 문제는 해당 포트를 회사가 악용할 목적으로 가지고 있는 상태입니다. 이는 공격자가 해커가 아닌 제조사가 되는 것으로 볼 수 있습니다. 자체적으로 제공하는 DDNS를 쓰고 있으면 더욱 위험합니다. 회사측에서 접근도 용이하겠군요. 물론 일반적인 회사는 이렇게 행동하지 않으니 걱정하실 필요가 없습니다. 혹시 해서 말씀드리지만 실제로 중국 제조사들이 이렇게 행동한다는 것이 아닙니다. 그저 하나의 가정일 뿐입니다.

 

 백도어의 두가지 작동방식을 알아봤습니다. 다음으로는 Openwrt가 어떻게 구성되는지 알아보는 시간을 가지겠습니다. 거의 다 왔습니다!



컴퓨터와 손 (사진을 클릭하면 출처로 이동합니다.)

Openwrt는 Soc에서 제공하는 SDK를 사용하지 않습니다. 자체적으로 개발한 오픈소스 드라이버를 사용합니다. 미디어텍 환경에서만 하드웨어 오프로딩 (HW Nat) 과 같은 가속이 지원되는 것도 MT76, MTK 같은 드라이버에서만 SFE, CTF 같은 기능이 구현되기 때문입니다. 실제로, 퀄컴은 가속 기능이 정상적으로 작동하지 않으며 브로드컴은 무선망을 정상적으로 활용할 수 없는 문제가 있습니다.

 

 Openwrt의 드라이버는 깃 레포에서 확인하실 수 있습니다. 최소한 드라이버 단위에서 백도어가 없다는 것을 확인할 수 있겠군요. 커널도 제공되는 커널이 아닌 바닐라 커널을 사용합니다. 덕분에 커널 버전의 변동이 없는 다른 공유기들과는 달리 버전이 올라갈 때마다 최신 버전의 커널이 탑재되는 모습을 확인하실 수 있습니다.

 

 (일반적으로 임베디드 시스템은 Soc 제조사에서 제공되는 커널을 기반으로 만들어집니다. 그러면 보안에 문제가 생길까요? 해당 부분에 대한 의문점은 다음 글을 통해 해결해 드리겠습니다.)

 

 그러면 Openwrt는 어떻게 만들어질까요? 레고를 생각하시면 편합니다. 커널 위에 칩셋 드라이버를 올리고, 이어서 무선 IC를 비롯한 다양한 드라이버들을 올립니다. 암호화 드라이버등등 정말 다양한 드라이버가 올라갑니다. 이렇게 만들어진 것이 바로 Openwrt입니다. 여기까지 읽으신 분들은 백도어의 작동방식과 Openwrt의 구조를 파악하셨을 겁니다. 그럼 이제 마지막으로 두개를 비교함으로써 Openwrt가 백도어를 막을 수 있는지 확인해 보는 시간을 가지도록 하겠습니다.

 

 소프트웨어 백도어는 완벽하게 사라집니다. 제조사에서 제공하는 일련의 자료들을 사용하지 않았기에 가능한 일입니다. Openwrt는 제조사 펌웨어로부터 독립적입니다. 커널, 드라이버 모든 부분에서 말입니다. 하드웨어적 방법도 마찬가지 입니다. 부트로더나 펌웨어의 특정 부분을 임의로 변경하지 않는 이상 크게 걱정하실 필요는 없어 보입니다.

 

 사실 해당 부분은 완벽하게 막을 수 있다고 장담할 수는 없습니다. 백도어의 심각도에 따라 다르지만 외부에서 심각한 위험을 초래할 수 있는 정도의 권한을 얻을 수 있는 백도어가 있고 그게 다양한 매체를 통해 알려진다면, 장담코 제조사는 화웨이가 우습게 보이는 제제를 경험할 수 있을 겁니다. 해당 부분을 제외하면 공격자가 공유기에 접근할 수 있는 환경에 있어야 겠군요. 공유기보다 몸을 걱정해야 할 상황이 아닌가 싶습니다.

 

마이크로칩 (사진을 클릭하면 출처로 이동합니다.)

 

 추가로 말씀드리지 않았던 하드웨어 백도어가 하나 더 있습니다. 해킹칩이라는 조그마한 칩인데 일반적으로 기기들의 보드를 보면 수십개는 우습게 보이는 조그마한 칩을 말합니다. 생각하시는 것처럼 데이터를 특정 서버로 전송한다던지 하는 기능은 전혀 없고, 특정 상황에서 기기를 무력화시키는 기능을 가지는 것으로 추정됩니다. 일반적으로 전쟁과 같은 상황에서 상대 진영 국가의 인터넷 서비스들을 무력화하는 것을 목표로 만들어졌다고... 합니다.

 

 루머에 가까운 이야기긴 하지만, 신빙성은 나름 높습니다. 우리가 이런 부분까지 걱정해야 할까요? 그렇지 않습니다. 해당 칩셋의 존재를 주장하는 매체에 따르면 해당 칩셋의 가격은 무척이나 비싸고 일반 사용자들이 사용하는 기기에 탑재한다면 국가가 파산할 것이라고 합니다. 주요 대상은 서버들이기 떄문에 홈 네트워크를 구축하는 저희들은 신경을 쓸 필요가 없습니다.

 

 말이 길어졌네요. 그래서 Openwrt를 올리면 '있을지 모를' 백도어를 방지할 수 있을까요? 답은 "네" 입니다. 적어도 개인 사용자에게 해당되는 부분들은 전부 막을 수 있습니다. 그럼에도 불구하고 걱정되는 분들을 위해 소프트웨어 적으로 백도어를 차단할 수 있는 방법을 공유드리고자 합니다.

 

  1. 상위 노드에 상용 게이트웨이 제품이나 Untangle, pfSense, opnSense 같은 OS를 설치한 라우터를 물리세요. 그런 다음 특정 패킷을 드랍시키면 혹시 모를 백도어를 차단할 수 있습니다. 이는 하드웨어적인 방법으로 백도어의 목적지와의 연결을 완벽하게 차단할 것입니다.
  2. Openwrt에서 기본으로 제공되는 방화벽을 사용해 중국, 러시아, 혹은 위험이 된다고 생각하는 국가들을 차단하시면 됩니다. 이는 소프트웨어 적인 방법이지만 효율적이며 백도어의 연결을 차단할 수 있습니다. (iptables, nftables에 대한 차이점은 언젠가 포스트 하도록 하겠습니다.)
  3. Openwrt에서 제공하는 추가 보안 패키지를 사용합니다. 2번과 동일한 효과를 기대할 수 있습니다. 다만, 제가 해당 기능을 사용하지 않기에 자세한 설명을 드리지 못하는 점 양해 부탁드립니다.
  4. DNS Proxy + AGH 조합을 통해 DNS 서버를 암호화 시키고 연결을 차단합니다. 적어도 공격자가 쿼리를 들여다보기 더 힘들게 만들어줄 것입니다. 꼭 AGH가 아니어도 좋습니다. Pi-Hole, Diversion 같은 DNS 서버 기능이 가능한 패키지면 상관 없습니다. AGH가 다양한 템플릿을 제공하기에 사용하기 용이합니다.
  5. AdGaurd DNS 2.0 이나 NextDNS 같은 상용 DNS 서비스를 tls, https 방법으로 사용하는 동시에 특정 쿼리를 차단합니다. 4번과 비슷한 효과를 기대할 수 있습니다. quic는 최근에 표준으로 지정되었지만 보안에 그리 권장되는 방식은 아닙니다.

 

 다음과 같은 방법을 통해 보안을 강화할 수 있습니다.

 

 이번 포스트를 통해 백도어의 동작 원리, Openwrt와 백도어의 상관관계, 백도어를 하드웨어, 소프트웨어적으로 차단하는 방법에 대해 알아봤습니다. 다음에는 Openwrt를 올리고 설치하면 좋은 패키지들과 커널의 버전이 보안에 미치는 영향에 대해 알아보는 시간을 가지도록 하겠습니다.

 

 긴 글을 읽어주셔서 감사드리며, 도움이 되셨다면 하트 한 번만 눌러주시길 바랍니다. ㅠㅠ 큰 도움이 됩니다. 감사합니다!

 

 마지막으로 말씀드리지만, 모든 중국제 공유기에 백도어가 있지는 않을 겁니다. 이 포스트는 혹시 존재할지 모를 백도어에 관한 걱정을 덜어드리기 위해 작성되었습니다.




 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유