'Wifi_Hacking'에 해당되는 글 3건

  1. 2016.02.09 [#3] 공유기 분석 160209 by Hugh_K
  2. 2015.12.14 [#2]공유기 분석 151214 by Hugh_K 2
  3. 2015.11.25 [#1]공유기 분석 151125 by Hugh_K 2

거두절미하고 바로 본론으로 들어갑니다.

fmk(Frimware-Mod-Kit)를 이용해서 분석하고 있는 공유기의 펌웨어를 풀었고, <그림 1, 2> 와 같이 나왔습니다.

<그림 1> Frimware-Mod-Kit을 이용한 펌웨어 압축 해제


<그림 2> fmk를 이용해 압축해제한 펌웨어의 파일구조


본 작업은 [1]을 참고하여 진행했습니다.


References:

[1] fmk(Frimware-Mod-Kit)사용법 - http://apollo89.com/wordpress/?p=6339

'Wifi_Hacking' 카테고리의 다른 글

[#2]공유기 분석 151214  (2) 2015.12.14
[#1]공유기 분석 151125  (2) 2015.11.25
Posted by Hugh_K
l

쉘 접근이 막혀있는 IpTime공유기 대신 넷기어 JWNR2000 v2 모델을 대상으로 연구하기로 했다.


이유는 본 연구의 목적 자체가 공유기의 시스템 해킹이 아니기 때문에 쉘 하나 띄우기 위해 많은 시간을 지체할 이유가 없다 판단되기 때문...


<그림 1> Netgear JWNR2000 v2


<그림 2> Netgear JWNR2000와 컴퓨터를 uart규격으로 통신



<그림 3> putty를 이용해 공유기에 접속


여하튼 JWNR2000 v2공유기를 열어 uart규격으로 컴퓨터와 연결해 보니(그림 2 참조) 그림3 과 같이 쉘이 동작하는 것을 확인하였다. 여기에서 동작하는 쉘은 sh쉘인데, 여러가지로 명령어가 제한되어있는 쉘이다. 이는 그림 4a 를 통해 확인할 수 있는데, bin폴더를 확인해 보면 사용할 수 있는 명령어가 많지 않은 것을 알 수 있다.(사실 이런 임베디드 시스템에 많은 명령어가 포함되어 있는 것이 더 이상한 일이기는 함..)


<그림 4> bin 폴더 안에 있는 리눅스 명렁어


뿐만 아니라 그림 4b를 보면 이 명령어들은 모두 busybox라는 실행파일에 심볼릭 링크가 걸려있는 것을 확인할 수 있는데 아마 busybox가 이 명령어들을 모아서 한 번에 컴파일 해 놓은 파일이 아닐까 예상이 된다. 그래서 그림 5와 같이 busybox를 실행시켜봤더니 예상대로 실행되었다. 참고로 그림 5a는 busybox를 실행한 결과이다. 실행 결과로 busybox의 사용 방법이 화면에 출력된다. 이 정보를 참조해 그림 5b와 같이 명령어를 입력했고 프로그램이 정상적으로 동작하는 것을 확인하였다.


<그림 5> busybox test


그림 6은 이것 저것을 뒤지다 보니 passwd폴더가 있길레 그냥 한 번 출력해 봤다. (혹시나 하는 마음에.. 하지만 역시나였다...)


<그림 6> cat passwd


다시 본론으로 돌아가면, 위에서 언급했듯 본 시스템에는 명령어가 많지 않고 많이 제한적이다. 따라서 추가적인 연구를 위해서는 기본적으로 파일 편집기와 hex viewer, 컴파일러 정도는 필요하지 않을까 싶다. 이를 시스템에 올리기 위해서는 펌웨어를 다운받아 압축을 풀고 명령어를 추가한 후 다시 패키징 하여 시스템에 업로드 해야될 것 같은데, 혹시 다른 방법이 있는지는 더 알아봐야 될 것 같다. 


<그림 7> Netgear firmware download page 


일단 펌웨어를 다운받아 파일의 내용을 수정하기 위해 그림 7의 페이지에서 펌웨어를 다운받았다. 그림 8을 보면 현재 공유기에 들어있는 펌웨어는 1.0.0.8 버전이라는 것을 확인할 수 있다. 펌웨어에 대해서는 일단 시험이 끝나고 다시 알아봐야 될 것 같다... 


<그림 8> 펌웨어 버전 확인


글을 마치며..

블로그에 글을 쓸 때 마다 느끼는 것이지만, 정작 연구한 시간은 30분도 안되는데, 글 써서 올리는데 시간이 너무 많이 든다... 수행한 연구들을 정리하는 것의 필요성을 많이 느껴 조금씩이라도 수행할 때 마다 글을 올리려 노력하지만, 연구를 정리하는 것은 정말 귀찮은 일인듯 하다..

'Wifi_Hacking' 카테고리의 다른 글

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

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


대학원 생활 중 연구용 공유기를 구매할 기회가 생겨 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
Posted by Hugh_K
l