Internet of Things còn được gọi là IoT và ngày nay rất nhiều thiết bị IoT được đưa vào thị trường để thu thập và chia sẻ dữ liệu trên đám mây. Bất kỳ thiết bị hiện đại nào mà chúng ta sử dụng sẽ tương tác với firmware, là một đoạn mã trên thiết bị cho phép và cho phép thiết bị thực hiện các tác vụ khác nhau cần thiết để thiết bị hoạt động. Nói một cách đơn giản firmware là phần mềm được lập trình trên thiết bị phần cứng. Trong hướng dẫn này, chúng ta sẽ tập trung vào phân tích firmware ở các cấp độ khác nhau, chẳng hạn như trích xuất hay phân tích nhị phân và các thành phần khác như hệ thống tệp, cơ chế nén, mã hóa, bộ tải khởi động, v.v.
CHFI v10 https://cehvietnam.com/2021/07/29/khoa-hoc-dao-tao-chfi-v10-va-ho-tro-thi-chung-chi-quoc-te-chfi-v10/
CPENT v1 https://cehvietnam.com/2021/07/10/khoa-hoc-cpent/
Phương pháp luận
Giống như bất kỳ tiến trình phân tích phần mềm nào khác, sẽ có hai cáchlà phân tích Thủ công và Tự động. Phân tích thủ công hoàn chỉnh không dễ dàng vì nó tốn thời gian và đó là lý do chúng ta sử dụng Phân tích firmware tự động, và điều này thật dễ dàng. Để phân tích tự động, có rất nhiều công cụ có sẵn như Firmwalker, FACT – Công cụ so sánh và phân tích firmware , Bộ công cụ phân tích firmware , v.v. thông thường các công cụ sẽ phân tích
- etc/shadow và etc/passwd
- liệt kê thư mục etc/ssl
- Tìm kiếm các tệp liên quan đến SSL như .pem, .crt, v.v.
- Tìm kiếm tập tin cấu hình
- Tìm tập tin kịch bản
- Tìm kiếm các tệp .bin khác
- Tìm kiếm các từ khóa như quản trị viên, mật khẩu, điều khiển từ xa, v.v.
- Tìm kiếm các máy chủ web phổ biến được sử dụng trên thiết bị IoT
- Tìm kiếm các tệp nhị phân phổ biến như ssh, tftp, dropbear, v.v.
- Tìm kiếm URL, địa chỉ email và địa chỉ IP
- Hỗ trợ thử nghiệm để thực hiện lệnh gọi tới API Shodan bằng Shodan CLI
Để thực hiện phân tích IoT Firmware, điều đầu tiên cần làm là tải xuống firmware của thiết bị từ trang web chính thức của nhà cung cấp hoặc từ Github. Sau đó trích xuất và giải nén ở các định dạng khác nhau như bin, zip, gzip, tar, v.v.
Phân tích firmware IoT – Từng bước
Để phân tích firmware , chúng ta sẽ sử dụng IoTGoat từ OWASP. Tải xuống Chương trình cơ sở từ https://github.com/OWASP/IoTGoat/releases .

Khi tệp hình ảnh được tải xuống, hãy bắt đầu phân tích bằng công cụ binwalk đã có trong Kali Linux (với phiên bản mới nhất hiện nay là 2022.4) trong hình là kali 2019 ??. Để tiến hành hãy gõ lệnh sau
#binwalk IoTGoat-raspberry-pi2.img

Xem kết quả ta thấy , bạn có thể nhận thấy rằng Firmware này thuộc hệ thống tệp Sqaushfs . Các bạn cũng có thể dùng hexdump -c để tìm header của hệ thống tập tin, với sqaushfs có phần header là q h fs (hãy search lại xem đúng không)
Chúng tôi sẽ liệt kê một số hệ thống tệp phổ biến của Thiết bị IoT
- squashfs
- cramfs
- JFFS2
- yaffs2
- ext2

Giống như các hệ thống tệp khác nhau, chúng ta cũng có nhiều loại hệ thống tệp nén khác nhau. IoTGoat sử dụng phương pháp nén xz , một số khác thì dùng LZMA (như cái DVRF.bin)
- LZMA
- gzip
- khóa kéo
- Zlib
- xz
- ARJ
Bên cạnh file system, bạn thấy có chữ little endian . Little Endian và Big Endian là những cách lưu trữ kiểu dữ liệu nhiều byte. Byte đầu tiên biểu diễn dữ liệu của kiểu dữ liệu nhiều byte được lưu trữ đầu tiên trong các máy Big Endian .

Trong các máy Little Endian , byte cuối cùng biểu diễn dữ liệu của kiểu dữ liệu nhiều byte được lưu trữ trước.

Vì vậy, ta đã biết được những điều được đề cập dưới đây từ phân tích ban đầu .
- hệ thống tập tin – Squashfs
- nén – xz
- địa chỉ – 29360128
Bằng cách biết địa chỉ, chúng ta có thể hiểu sau bao nhiêu phần bù, nó sẽ bắt đầu trích xuất, trong trường hợp của chúng ta là 29360128 .
Tiếp theo để trích xuất file .img và lưu thành file .bin chúng ta sử dụng lệnh dưới đây
# dd if=IoTGoat-raspberry-pi2.img bs=1 skip=29360128 of=iotgoat.bin
“ if ” đại diện cho tệp đầu vào và “ of ” đại diện cho tệp đầu ra.
“ bs ” chỉ định kích thước khối cho cả tệp đầu vào và tệp đầu ra.

Bây giờ .img đã được sao chép vào .bin . Lúc này ta có thể kiểm tra tệp bằng binwalk.

Vì hệ thống tệp là Squasfs, hãy giải nén iotgoat.bin bằng cách sử dụng unsquashfs, được tích hợp sẵn với Kali linux. Hãy sử dụng lệnh sau
# unsquashfs iotgoat.bin

Tệp giải nén sẽ được tìm thấy trong thư mục squashfs-root

Thay vì sử dụng Squashfs , chúng ta cũng có thể sử dụng binwalk để giải nén tệp hình ảnh. Để làm như vậy, hãy sử dụng cờ –e trong binwalk như được hiển thị bên dưới.


Các tệp được trích xuất bằng binwalk sẽ có trong thư mục _IoTGoat-raspberry-pi2.img.extracted

Hãy đi sâu vào bước tiếp theo. Bây giờ chúng ta phải mở thư mục giải nén. Bạn có thể chọn thư mục theo phương pháp mà bạn đã sử dụng để giải nén
# cd _IoTGoat-raspberry-pi2.img.extracted
# cd squashfs-root

Khi chúng tôi vào thư mục giải nén, hãy tìm kiếm các tệp/thông tin nhạy cảm. Khi chúng ta di chuyển đến thư mục /etc, chúng ta sẽ thấy có các tập tin passwd và shadow .

Hãy xem có gì trong tệp passwd . Ở đây chúng ta biết rằng có một người dùng tên là iotgoatuser .

Tương tự, chúng ta hãy kiểm tra tệp shadow.

Bây giờ cho phần tiếp theo, hãy tải xuống tệp IoTGoat-x86.vmdk từ https://github.com/OWASP/IoTGoat/releases và chạy phiên bản ảo. Khi bạn chạy VM, hãy truy cập Kali linux và tìm kiếm IP của IoTGoat.
arp-scan – – local
hoặc dùng netdiscover -r hay nmap -sn , cứ thử nhiều cách khác nhau

Bây giờ, chúng ta hãy lấy danh sách từ tên người dùng, mật khẩu từ https://github.com/securing/mirai_credentials/blob/master/mirai_creds.txt và lưu nó dưới /usr/share/wordlists/
Bây giờ chúng ta hãy sử dụng hydra hoặc medusa để bẻ khóa mật khẩu.
(CertMaster) – Hừm, khoan đã, sao nó lại hack ngay ssh thế này nhĩ, ít ra phải nmap 1 phát xem co mở port 22 không đã chứ 🙂 , nhưng cứ cho là nó mở đi, brute force xem sao …
Đối với hydra , hãy sử dụng lệnh bên dưới
hydra -V -f -t 4 -l iotgoatuser -P /usr/share/wordlists/mirai_creds.txt ssh://192.168.1.5
với :
-V — để hiển thị một vài thông tin đăng nhập+mật khẩu trong khi khai thác mật khẩu;
-f — là điểm dừng ngay khi tìm thấy mật khẩu cho thông tin đăng nhập được chỉ định;
-l – dành cho tên người dùng
-P — là đường dẫn đến từ điển mật khẩu;
ssh://192.168.60.50 — là một dịch vụ và địa chỉ IP của nạn nhân.
Ở đây với mục đích trình diễn, tôi đã thêm IP của IoTGoat của mình. Bạn thêm IP mà bạn nhận được khi thực hiện quét arp.

Đối với medusa, sử dụng lệnh dưới đây
# medusa –u iotgoatuser –P /usr/share/wordlists/mirai_creds.txt –h 192.168.1.5 -M ssh -f
Các tùy chọn :
-h — là địa chỉ IP của nạn nhân;
-u — là thông tin đăng nhập;
-P — là một đường dẫn từ điển;
-M — là một lựa chọn mô-đun;
-f — dừng ngay khi tìm thấy cặp đăng nhập/mật khẩu hợp lệ;

Từ đó, chúng tôi biết mật khẩu là 7ujMko0vizxv .
Bây giờ, hãy kết nối với SSH của IoTGoat
# ssh iotgoatuser@192.168.1.5
Khi được yêu cầu nhập mật khẩu, hãy nhập mật khẩu được tìm thấy ở trên. Sau khi hoàn thành, chúng tôi đã thành công trong

Tiếp theo, hãy quay lại thư mục squashfs-root để lấy một số thông tin thú vị.
Điều hướng đến usr/lib/lua/luci/controller/iotgoat nơi chúng tôi tìm thấy tệp cơ sở dữ liệu có tên sensordata.db
# sqlite3 sensordata.db

Chúng ta thấy rất nhiều id email cùng với ngày sinh
Đồng thời khi điều hướng đến /lib/functions, có thể thấy các tệp shell script khác nhau.

Khi điều hướng đến usr/lib/lua/luci/view/iotgoat, ta tìm thấy các tệp htm có thể được truy cập thông qua ứng dụng web IoTGoat

Một điều thú vị khác mà chúng tôi tìm thấy là dropbear chạy ở cổng 22 có mặt trong các thư mục khác nhau.
/usr/sbin/dropbear
/etc/config/dropbear
/etc/init.d/dropbear

Để biết danh sách các tệp liên quan đến dropbear, hãy làm như sau
# cat dropbear.list

Trong thư mục này, nhiều tệp cũng chứa thông tin nhạy cảm, chẳng hạn như hiển thị bên dưới.
Nếu tiếp tục đào, chúng ta có thể nhận được nhiều thông tin như thế này có thể được sử dụng cho một cuộc tấn công khác.
Bây giờ, hãy quay lại thư mục squashfs-root và điều hướng đến thư mục bin. Ở đó chúng tôi sẽ cố gắng để có được một số thông tin thú vị. Đối với mục đích mô phỏng, hãy sử dụng xác định kiến trúc bằng cách
# readelf –h busybox

Từ đó, chúng tôi biết rằng đó là Kiến trúc ARM
Phần kết luận
An ninh mạng là rất quan trọng nếu bạn muốn thành công trực tuyến. Các tin tặc ngày càng giỏi hơn trong các trò chơi của chúng, điều đó có nghĩa là bạn cần một nhóm chuyên dụng sẽ luôn cập nhật các vấn đề bảo mật và cung cấp khả năng bảo vệ suốt ngày đêm cho các trang web của bạn.
Tác giả : Meshach.M – Senior Security Consultant tại Cyberarch Consulting
BQT – Ở phần crack mật khẩu tôi nghĩ là mình có thể tiến hành unshadow và bẻ khóa với hashcat thay vì chạy file vmdk , trong các tình huống khác thì các bạn có thể sử dụng những giải pháp firmware emulator như QEMU và Firmadyne để tiến hành giả lập.
Soạn xong bài này có một học viên vừa thi đậu chứng chỉ CHFI v10 với số điểm khá cao 141/150, là một nữ chuyên gia an toàn thông tin đã có 3 cert Comptia Security +, ECCouncil CEH và CHFI , đây toàn là hàng đỉnh nằm trong danh sách chỉ thị 8750m.01 của bộ quốc phòng Mỹ. Lưu ý, ngoài việc thi đậu chứng chỉ thì nữ chuyên gia này thực hành làm lab rất tốt nhé !

CHFI v10 https://cehvietnam.com/2021/07/29/khoa-hoc-dao-tao-chfi-v10-va-ho-tro-thi-chung-chi-quoc-te-chfi-v10/