공유기 해킹에 대해 많은 관심을 갖고 있었으나 대학원 일정이 너무 바빠 시간을 못내고 있다가, 이러다가는 아무것도 못할 것 같다는 생각이 들어 조금 무리해서라도 연구를 시작하기로 결심..


대학원 생활 중 연구용 공유기를 구매할 기회가 생겨 ipTIME A604 구매하였고, 기기가 도착하자 마자 분해를 시작하였다.


 <그림 1> 연구용 공유기 1, ipTIME A604


분해한 공유기는 그림 2와 같다. 일반적으로 하드웨어 디버깅을 할 때 uart를 통한 serial통신을 이용해 디버깅을 하므로 혹시 가능하지 않을까 하는 마음에 uart로 먼저 접속해 보았다. 


원래 대학원 측에 uart to usb 모듈도 구매를 요청했었는데, 재고가 없어 제품이 도착하지 않았다. 그래서 갖고 있던 ARPI600[1]이라는 모듈을 활용해 uart to usb통신을 시도해 보았다.


<그림 2> 공유기를 분해 후 PC와 USB로 연결


사실 공유기를 처음 열어봤을 때 조금 당황했었다. 사실 좀 막연하게, 공유기 안에는 당연히 jtag 핀이 있지 않을까 하고 jtag to usb모듈을 구매신청하여 툴을 보유하고 있던 상황이었기 때문이었다. 그런데 공유기를 열어보니 덩그러니 핀 4개만 올라와 있었다..  

어떻게 할까 고민을 하다 그림 3의 모듈을 활용해 보기로 결정했다. 원래 그림 3의 모듈은 라즈베리파이를 이용한 암호프로토콜을 구현하기 위해 구매한 모듈인데, 보드 위에 USB TO UART라고 쓰여있는 것을 보고 내가 원하는 용도로 사용할 수 있지 않을까 하는 생각이 들어 아래와 같이 연결해 보았더니 통신이 성공적으로 수행되었다...(천만 다행..)


<그림 3> uart to usb 통신을 위해 활용된 ARPI600 모듈

기본적으로 USB to UART통신을 위해 설치해야 되는 드라이버가 있다. 이는 reference [3]에서 다운받을 수 있다. 드라이버를 컴퓨터에 설치한 후 장치관리자에 들어가면 그림 4와 같이 드라이버가 인식되는 것을 볼 수 있다. 


<그림 4 UART Driver 인식>


공유기와 Serial 통신을 수행하기 위해서 Putty를 이용한다.(Putty에 대한 자세한 설명은 [4]를 참조)


공유기에 접속하기 위해서는 아래와 같이 Putty를 설정하면 된다. 여기에서 Speed(baud) 는 1초 동안 몇 번 변조를 했는가를 나타내는 단위이다.(자세한 설명은 [5]를 참조) 여기에서 저자가 선택한 공유기 A604의 baud는 38400이므로[2] 해당 수치를 입력한다. 그리고 마지막 옵션 Flow control의 옵션은 None으로 설정하였다. 


<그림 5> Putty serial connection setting


다음과 같이 설정을 마치고 Open을 누르면 그림 6과 같이 공유기와 Serial 통신을 수행하는 화면을 볼 수 있다. 


<그림 6> Putty를 이용해 공유기와 serial 통신


사실 이렇게 연결만 하면 Id와 Pw를 입력하는 화면이 뜨거나, 쉘이 뜨지 않을까 하는 생각을 하고 있었다.. 그런데 내 예상과는 다르게 수행되는 메인프로세스가 있었고, 이 프로세스는 그림 7과 같이 ctrl+c 나 ctrl+z같은 커멘드로도 종료할 수 없게 되어있었다.(어찌보면 이게 당연한 것..)


<그림 7> "ctrl+c"과 "ctrl+z" 를 입력했을 때 출력된 결과


몇 년 전에는 ipTIME공유기에서 발견된 취약점으로 비교적 쉽게 공유기의 쉘을 띄울 수 있었던 것 같은데, 지금은 아마 다 막혀있지 않을까 생각이 든다.. 그래도 여기에서 포기할 수는 없으니, 다음번에는 공유기 펌웨어 분석을 통해 쉘을 띄우는 얻는 방법이 있는지 확인해봐야겠다는 생각을 한다.


사실 본 연구의 핵심은 공유기의 쉘을 따는 것 보다 공유기를 활용해 하고 싶은 것이 있어 시작되었다.. 다시 말해 공유기의 쉘을 띄우는 것은 주 목적이 아니다.. 그런데 쉘을 띄우는 것에만 시간을 너무 많이 투자하게 되지 않을까 하는 걱정이 든다.. @_@..


P.S. 하드웨어쪽 연구를 시작한지 얼마되지 않아 모르는 것이 상당히 많습니다.. 혹시 제 글에 잘못된 부분이 있다면 언제든 편하게 지적해 주시고 가르쳐 주시면 감사하겠습니다!


Reference:

1) About ARPI600 - http://www.waveshare.com/wiki/ARPI600

2) About ipTIME N8004R - https://wikidevi.com/wiki/IpTIME_N8004R#Serial

3) About driver for serial communication with USB to UARThttps://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

4) About Putty - http://www.chiark.greenend.org.uk/~sgtatham/putty/

5) About serial communication speed(baud)http://forum.falinux.com/zbxe/index.php?document_srl=405830&mid=network_programming

'Wifi_Hacking' 카테고리의 다른 글

[#3] 공유기 분석 160209  (0) 2016.02.09
[#2]공유기 분석 151214  (2) 2015.12.14
[#1]공유기 분석 151125  (2) 2015.11.25
Posted by Hugh_K