You are on page 1of 48

Firmware Security

Testing
Giảng viên: PGS.TS Nguyễn Hiếu Minh
Lớp: CHAT 09
Học viên:
Phạm Văn Long
Phạm Lê Đức
Hoàng Mạnh Công
Nguyễn Hải Long
MỤC LỤC

1. Introduction
2. Information gathering and
reconnaissance
3. Obtaining Firmware
4. Analyzing Firmware
5. Extracting the filesystem
6. Analyzing filesystem contents
7. Emulating Firmware
8. Dynamic analysis
9. Runtime analysis
10. Binary Exploitation
Introduction
Introduction

Bối cảnh
Sự phát triển vượt chội của các
thiết bị thông minh và tầm ảnh
hưởng
Rủi ro mang lại:
Lộ lọt thông tin
Chiếm quyền điều khiển
Botnet
Firmware là gì

Những điểm yếu của


Firmware
• Khả năng bị sửa đổi.
• Chữ ký không an toàn và xác minh
Introduction tính toàn vẹn.
• Lưu trữ các giá trị nhạy cảm API
key, mật khẩu, URL, Private key…
• Xem toàn bộ chức năng của thiết bi.
• Khai thác hệ thống tập tin.
• Các thành phần lỗi thời với các lỗ
hổng đã biết.
Thu thập Lấy Phân tích
thông tin Firmware Firmware

Phân tích
Giải nén hệ Giả lập hệ
Introduction thống tập tin
nội dung hệ
thống tập tin
thống

Phân tích
Phân tích Khai thác nhị
thời gian
động phân
chạy
¿Tại sao ta cần có một phương pháp?

Đảm bảo các yếu


Đảm bảo có một Xác định tài
tố quan trọng đã
quy trình và lộ nguyên cho từng
được phân tích
trình đầy đủ nhiệm vụ.
và xem xét

Đánh giá quy Xác định đầy đủ


trình sản xuất và các bề mặt có thể
sản phẩm bị tấn công.
Information Gathering And
Reconnaissance
Information Gathering And
Reconnaissance
+ Trong giai đoạn này, hãy thu thập
càng nhiều thông tin về mục tiêu
càng tốt để hiểu công nghệ cơ bản
về thành phần tổng thể của nó
+ Có được chi tiết tài liệu và kỹ thuật
liên quan đến firmware của thiết bị
đích.
Information Gathering And Reconnaissance

+ Những thông tin cần thu thập:


+ Kiến trúc CPU, HĐH
+ Mô hình phần cứng, sơ đồ thiết kế và luồng dữ liệu
+ Mã nguồn (đóng, mở - Reverse Enginering)
+ Các thành phần bên thứ 3
+ Báo cáo thử nghiệm thâm nhập trước đó, các bản sửa đổi
+ …
Information Gathering And Reconnaissance

Nền tảng hệ điều hành


Obtaining Firmware
Obtaining Firmware

Trong quá trình phân tích, có được firmware là điều rất cần
thiết.
• Cung cấp nhiều thông tin.
• Duyệt qua hệ thống tệp, thực thi các lệnh tùy ý.
• Xem tệp web, tìm 0-day, tasklist, backdoor.
• Nền tảng cho những bước sau
• Có một cái nhìn ban đầu về firmware
Obtaining Firmware

Những cách để có được firmware của thiết bị IoT.


• Trực tiếp từ nhóm phát triển, nhà sản xuất/website nhà cung cấp hoặc
khách hàng
• Trích xuất trực tiếp từ phần cứng thông qua UART, JTAG, PICit, v.v.
• Truy cập phần cứng thiết bị IoT
• Reverse Engineering
Analyzing Firmware
Analyzing firmware

Sau khi có được Firmware image, ta có thể xem xét


các thành phần khác của tệp để xác định các đặc
điểm.

Các kỹ thuật khác nhau có thể giúp trích xuất dữ


liệu từ nhiều định dạng khác nhau.
Analyzing Firmware

+ Một số kỹ thuật trích xuất dữ liệu:


Hexdump
Entropy analysis
String search
Signature identification
Analyzing Firmware
Extracting the filesystem
Extracting the filesystem

Nhiều thiết bị IoT chạy hệ điều hành Linux có thể được tìm thấy, cùng với
các hệ thống tệp tương ứng. 
Cách nhận dạng và cách trích xuất hệ thống tệp từ Firmware image
Mục đích
• xác định các hệ thống tệp
• phát hiện định dạng
• trích xuất nội dung
=> Phân tích chuyên sâu về hoạt động và đặc điểm của thiết bị IoT.
Extracting the filesystem

Các bước chung cần thiết để lấy nội dung của hệ thống tệp.
1. Nhận dạng các định dạng Firmware image
2. Tìm kiếm chữ ký và số ma thuật
3. Kiểm tra entropy
4. Giải nén hệ thống tập tin
Extracting the filesystem

Nhận dạng định dạng Firmware image


• Hệ thống tệp phổ biến của thiết bị IoT: squashfs, cramfs, JFFS2, yaffs2,
ext2
• Một số dạng nén phổ biến: gzip, LZMA, xz, zlib, …
Extracting the filesystem

+ Tìm kiếm chữ ký và số ma thuật


Extracting the filesystem

+ Kiểm tra Entropy


Analyzing filesystem contents
Analyzing
filesystem contents
+ Mục tiêu phần này tập trung vào việc phân
tích nội dung hệ thống tệp , có thể cung cấp
thông tin quan trọng về hoạt động của thiết bị
và các lỗ hổng.
Có được danh sách các tệp cấu hình, khóa và tệp
thực thi
Thông tin về các tiến trình khởi động, các dịch vụ
được thực thi
Người dùng mặc định và các yếu tố quan tâm khác
để khai thác lỗ hổng.
Analyzing filesystem contents

Các quy trình cần phân tích


Quá trình khởi động
BSD
System V
Systemd
Tìm kiếm tập tin quan tâm
Công cụ tự động hóa
Emulating Firmware
Emulating
Firmware
+ Nó cho phép sao chép hầu như
hành vi của một thiết bị vật lý
hoặc chương trình. Trong bối
cảnh an ninh mạng , việc kiểm
tra và tìm kiếm các lỗ hổng đặc
biệt thú vị.
Emulating Firmware

Có hai loại giả lập:


Một phần, khi một dịch vụ cụ thể hoặc tệp thực thi được mô phỏng.
Toàn bộ hoặc toàn hệ thống khi toàn bộ hệ thống được mô phỏng.

Lợi ích
tăng tốc độ kiểm tra và tấn công
loại bỏ nhu cầu của thiết bị vật lý
không ảnh hưởng đến thiết bị vật lý và tránh nhu cầu mua thêm thiết bị
Emulating Firmware

+ Các công cụ phổ biến

QEMU UNICORN RENODE


Emulating firmware

+ QEMU
Dynamic Analysis
Dynamic analysis

+ Đây là giai đoạn kiểm tra động trong khi thiết bị đang chạy
trong môi trường bình thường hoặc môi trường giả lập. Thông
thường, việc kiểm tra sẽ là:
bộ tải khởi động
kiểm tra web và API,
Fuzzing (dịch vụ mạng và ứng dụng)
Kiểm tra leo thang quyền và chạy mã
Dynamic Analysis

Một số kỹ thuật
Gỡ lỗi bằng kỹ thuật mô phỏng
QEMU, Renode, Unicorn

Pentest
Network/Service
Vulnerability
Web pentesting, API
Communications analysis (SOAP/XML, REST, …)
Vulnerability exploitation

Làm mờ
Application fuzzing
File format fuzzing
Dynamic Analysis
Runtime Analysis
Runtime Analysis

+ Runtime analysis: liên quan đến việc kiểm tra các tiến trình và
chức năng đang chạy trên môi trường giả lập.
+ Yêu cầu:
Quyền Admin, root
Debug
Công cụ: Ghidra, IDA Pro, Frida, …
Runtime Analysis

+ Các bước trong phân tích

QEMU (root) IDA/FRIDA Test/Check/FUZZ


Binary Exploitation
Binary Exploitation

+ Khai thác các tệp thực thi là


bước cuối cùng trong phân tích
chương trình cơ sở, trong đó
khai thác được phát triển cho
một lỗ hổng được phát hiện
trong các giai đoạn trước
Binary Exploitation
Kỹ thuật khai thác tệp thực thi
Thông thường, các lỗ hổng sẽ nằm trong mã nguồn của
sản phẩm.
Việc phân tích và khai thác mã nguồn Firmware sẽ cho
phép kẻ tấn công có thể kiểm soát được thiết bị.
Buffer overflow
Format string attack
Heap overflow
Use After Free
Double Free
Other exploitation techniques
Binary Exploitation

+ Hệ thống bảo vệ: Hệ thống có khả năng triển khai các cơ chế phòng thủ trước các kỹ thuật khai
thác khác nhau. Mặt khác, kernel cũng có thể kích hoạt một số biện pháp chống khai thác. 

RELRO
NX
Stack Canaries
ASLR

Binary Exploitation

+ Kỹ thuật trốn tránh


Return-Oriented Programming
GOT Overwrite
Canary leaking y brute forcing
Syscalls
Sigreturn-Oriented Programming
Malloc hook overwrite
NOP sleds
THE END

You might also like