본문 바로가기
IoT

IoT 장비 분석 (공유기 펌웨어 분석)

by laoching 2021. 9. 12.
728x90
반응형

공유기 펌웨어를 분석해보았다.

실습에 앞서 IoT 장비 분석은 아래와 같이 진행된다고 한다.

IoT 장비 분석 단계
1. 장비 기능, 동작 파악 
2. 구성 요소 파악 (하드웨어, 앱, 클라우드 서비스 등 물리적인 장비 외에도 어떤 서비스들이 엮여있는지 파악해야한다.)
3. 취약점 진단 (2번에서 파악한 구성요소 별로 취약전 진단을 수행한다. 웹 해킹, 앱 해킹 등이 포함된다.)
4. 모든 분석이 끝나고 더 분석을 진행할 것이 없다면 장비를 뜯어본다.

1. 장비 기능, 동작 파악

- 어떻게 동작하고 어떤 기능이 있는지, 사용법은 어떻게 되는지 파악해야한다.

2. 구성 요소 파악

- 하드웨어, 앱, 클라우드 서비스 등 물리적인 장비 외에도 어떤 서비스들이 엮여있는지 파악해야한다.

3. 취약점 진단

- 2번에서 파악한 구성요소 별로 취약전 진단을 수행한다. 웹 해킹, 앱 해킹 등이 포함된다.

4. 모든 분석이 끝나고 더 분석을 진행할 것이 없다면 장비를 뜯어본다.

- 대신 다시 정상적인 동작을 할 것이라는 보장은 없다.


펌웨어의 정의와 구조

펌웨어는 소프트웨어를 하드웨어화 한 것이다. 

다양한 상황에 대응이 가능하며 하드웨어 내부의 제어 부분에 저장공간을 만들어 논리 회로의 기능을 보강하거나 대신할 수 있는 프로그램을 넣을 수 있다.

 

펌웨어의 대략적인 구조는 다음과 같다.

boot loader : 하드웨어 부팅에 필요한 기본 요소
kernel : 운영체제의 커널과 같은 역할을 수행하는 영역
file system : 펌웨어의 기능이 포함되어 있는 영역
other : 데이터 저장 공간 등 기타 영역
펌웨어의 특징

1. 전자기기등의 기본적인 제어와 구동을 담당한다.

2. 다른 소프트웨어보다 우선적으로 하드웨어의 기본적인 동작을 제어할 수 있다.

3. 펌웨어가 없거나 이상이 생기면 해당 기기는 우리가 흔히 말하는 벽돌이 된다.

4. 소프트웨어의 기능을 펌웨어로 변경하면 속도가 증가한다.

5. 하드웨어의 기능을 펌웨어로 변경하면 저렴하고 편리하게 구현이 가능하다.

6. EPROM에 기록되며 하드웨어보다는 교환이 쉽지만 소프트웨어에 비해 교환이 어렵다.

펌웨어 샘플 얻기

보통 제조사에서 제공하는 firmware를 다운로드하여 획득한다.

제조사가 장비를 만들고 이상이 생기면 모두 케어해줄 수 없기 때문에 거의 대부분 firmware를 지속적으로 업데이트하고 배포를 해준다.

다른 방법으로는 1. UART포트를 이용해 shell에 접근하여 dd 명령 사용 시 획득이 가능하고, 2. 취약점을 이용해 shell에 접근 후 dd 명령 사용이 가능하다면 이 또한 펌웨어 획득이 가능하다.

 

보통 메모리에 평문으로 저장된 내용이 있는지, 펌웨어 획득 가능 여부를 파악한다고 한다.

 

펌웨어를 획득하면 저장기능이 있는 부품만 조사를 실시한다.


실습에 앞서

펌웨어 분석은 attifyOS에서 진행하거나, ubuntu 상에서 fat, firmadyne을 이용하여 가상으로 구동하여 분석하는 방법이 있다.

이번 실습은 attifyOS에서 진행하였다. 아주 간단하다.

 

밑의 링크에서 받으세요.

https://www.attify.com/attifyos

 

AttifyOS - Distro to assess the security of IoT Devices — Attify IoT Security and Penetration Testing Training

Download AttifyOS AttifyOS is a penetration testing distro for security professionals to assess the security of Internet of Things (IoT) devices. The distro is based on Ubuntu 18.04 and contains pre-configured tools to help you with your next IoT pentest.

www.attify.com

 

attifyOS는 IoT 장비를 전문적으로 분석할 수 있는 툴들이 기본적으로 많이 설치되어 있다. 

또 ubuntu 기반이다.

이번 실습에서는 기본적으로 설치되어 있는 툴들 중 binwalk라는 툴을 이용하였다.

 

이번 실습은 아래와 같은 목표를 가지고 진행하였다.

- 계정 취약점 조사 (테스트 계정, 인증서 관련 파일)
- 웹 페이지 취약점 조사 (공유기 관리 웹 페이지)
- 네트워크 스캔을 통해 열려진 TCP/UDP 포트와 서비스 찾기 (NMAP을 이용하면 된다.)

iptime 분석

고객지원-다운로드 | EFM - ipTIME

 

EFM, ipTIME 아이피타임

이지메시, 이지메쉬, 메시와이파이, 기가 와이파이, 유무선 및 무선 인터넷 공유기, 와이파이 증폭기 및 확장기, 기업 및 가정용 나스, NAS STORAGE 등 제품소개와 펌웨어 다운로드 고객지원 제공

iptime.com

iptime 역시 기본적으로 펌웨어를 제공해준다.

분석하고자 하는 장비를 선택하고 펌웨어를 받자.

분석에 앞서 받으려는 파일이 완전한 펌웨어 파일인지, 펌웨어 업데이트 파일인지 확인해야 한다.

단순히 업데이트 파일이라면 일부 파일이 없을 수 있다.

펌웨어 설치

그 다음 attifyOS로 해당 펌웨어 파일을 옮겨준다.

여기서부터 binwalk를 이용하여 분석을 진행한다.


binwalk를 이용한 실습
binwalk [펌웨어 파일 명]

펌웨어 파일 시그니처 분석
default option으로 설정되어 있다. 지정해주려면 -B를 써주면 된다.
시그니처를 분석하면 데이터와 파일 시스템의 파악이 가능하다.

UBI file system을 이용한다는 사실을 알게 되었다.

소형 IoT 기기에서는 기존 컴퓨터에서 이용하는 파일 시스템 방식과 달리 더 가벼운 시스템을 사용해야한다.

몇가지 종류가 있지만, Squashfs나 creamfs를 자주 사용한다고 한다.

(UBI : UBIFS - Wikipedia)

binwalk -e [펌웨어 파일 명]

펌웨어 파일을 추출하는 옵션으로 [_펌웨어 파일 명]으로 디렉토리가 만들어진다.

 

디렉터리 안에 들어가보면 ubifs-root라는 디렉터리가 또 있다.

위에서 말한대로 ubifs는 파일시스템의 한 종류이다.

위의 디렉터리로 들어가봤는데 아무 파일도 나오지 않는다.

이런 경우일때는 추출이 제대로 되지 않은 것이다. 이유는 모르겠다.

다른 펌웨어 파일을 받아서 실습을 다시 진행하였다.


squashfs filesystem을 찾을 수 있다.

squashfs는 임베디드 전용 파일 시스템이다.

File Systems - eLinux.org

binwalk -A [펌웨어 파일 명]

펌웨어의 아키텍처를 분석하는 명령어이다.

MIPS cpu를 사용한다는 것을 알 수 있었다.

보통 소형장비의 경우 arm-m 시리즈를 많이 사용한다고 한다. 

binwalk -E [펌웨어 파일 명]

데이터 엔트로피를 분석하는 기능이다.
엔트로피 분석으로 기대할 수 있는 것은 저장소의 어떤 부분을 이용하고 있는지 파악이 가능하고,
암호화 유무를 확인할 수 있다.

확대를 하지 않고 보면 굴곡 없이 1자로 되어있다고 생각할 수 있다.

중간에 뚝 떨어지는 부분은 영역 구분을 위해 0값을 넣은 부분이다.

위의 엔트로피의 한 부분을 확대해 보았다.

지글지글한 그래프 형태를 보여주는데 이는 압축되어 있기 때문이다.

binwalk -e 명령어를 통해 생성된 squashfs-root 디렉터리로 들어가봤다.

맨 처음과 다르게 일반적으로 리눅스에서 보던 형태들이다.

bin 디렉터리로 이동해 보았다.

명령어들이 busybox에 링크가 걸려있는데 이는 shell을 통해 접근해도 모든 명령어 이용이 가능하지 않도록 만들어 놓은 것이다. 

가장 먼저 확인한 부분은 /etc/passwd 파일이다. 

test 계정이 있다면 취약한 것으로 판단한다.

test 계정은 없었다.

위는 수동으로 분석을 진행한 것이고
owasp에 bytesweep이라는 툴이 있는데 이것은 자동으로 분석을 진행해주는 툴이다.

OWASP Internet of Things Project - OWASP
위 링크에 들어가서 git 링크를 git clone 명령어를 통해 실습을 진행할 수 있다.

추가로 owasp top 10은 웹 뿐만 아니라 IoT 취약성에 대해서도 다루고 있다.
OWASP Internet of Things Project - OWASP

binwalk 툴 말고 firmware-analysis-toolkit (줄여서 fat)을 이용해보았다.
attifyOS에는 여러 종류의 툴이 있는데 fat 역시 기본적으로 내장되어 있는 툴이다.

~/tools 경로에 들어가면 찾을 수 있다.

취약점을 찾기 위해 실제 장비에서 테스트를 진행해야 하지만, 위 툴을 이용하면 펌웨어 파일을 가상의 하드웨어와 연동해 구동이 가능하다.

즉 실제 장비가 없어도 진단이 가능하다는 뜻이다.
비슷한 툴로는 Cisco 장비 에뮬레이터인 GNS3가 있다.
./fat.py [펌웨어 파일 이름]

기본적으로 들어있는 WNAP320을 분석했다.

192.168.0.100의 ip를 잘 기억해두고,
더 기다리면 press Ctrl + A X 라고 나오는데 그냥 enter 눌러준다.

밑에 보면 qemu라고 나오는데 이건 cpu 아키텍처를 가상화하는 것이다.

위에 나온 ip를 브라우저를 통해 접속하면 NETGEAR사의 공유기 설정 화면이 나온다.

에뮬레이터로 구성한 가상 환경에서 공유기 관리 페이지의 취약점을 진단할 수 있다.

또 공유기의 모델명을 알아냈으니 NETGEAR사의 홈페이지에 들어가서 해당 펌웨어 파일을 받아와서 분석을 진행할 수 있다.

nmap -sV [웹 페이지 주소]

nmap을 이용하여 열린 서비스들을 살펴보았다.

웹 페이지의 취약점은  burp suite를 통해 찾아낼 수도 있다.

CCTV나 공유기와 같이 큰 장비들을 분석하는게 쉽다고 한다. 작은 장비일 수록 분석이 어렵다고 한다.

언젠가는 CCTV를 구매해서 뜯어봐야겠다.

728x90
반응형

'IoT' 카테고리의 다른 글

임베디드 시스템의 특징  (0) 2022.05.25
UART로 펌웨어 접근해보기  (1) 2022.04.14
OWASP IoT top 10 - 2018  (0) 2021.09.21

댓글