Dumping Router Firmware – TryHackMe

Xin chào các bạn, tôi là CertMaster Đông Dương , đây là bản dịch và có biên tập đôi chút từ trang nguồn nhằm giúp cho các bạn đang học CHFI, CEH có thêm kiến thức về phân tích firmware (CHFI) và qua đó thể tiến hành hack hay pentest (CEH). Cũng lưu ý là những kiến thức này rất cần cho bài học và bài thi CPENT, có thể giúp các bạn kiếm được vài trăm điểm (nhưng trước đó các bạn phải hack tốt mới có sụn mà “ăn” , ý là phân tích kiếm điểm)

Dumping Router Firmware là một phòng mới tại TryHackMe và có thể được truy cập bằng cách sử dụng liên kết bên dưới!

https://tryhackme.com/room/rfirmware

Chúng ta sẽ di tiếp cận từng bước, tức là từ việc tải xuống chương trình cơ sở mẫu và sau đó phân tích nó để tìm câu trả lời cho các câu hỏi. Vậy hãy bắt đầu. Bạn có thể theo dõi và trả lời các câu hỏi tại đây: https://tryhackme.com/room/rfirmware

Sự chuẩn bị

Điều đầu tiên và quan trọng nhất là tìm phần sụn của bộ định tuyến cần được phân tích. Trong trường hợp này, chúng ta đã được cung cấp mục tiêu, vì vậy ta sẽ tiếp tục và tải xuống phần sụn trên máy Linux của mình (nhớ rằng firmware nó dịch thành phần sụn, như ăn bún bò giò heo hay ăn phở Thìn bờ hồ tô đặc biệt vậy, ai không thích thì cứ tự dịch ngược lại là firmware, tôi cứ để nguyên vậy cho khỏe và thú vị, cũng đang đói bụng đây).

Các bạn cần tải xuống chương trình cơ sở V2 của Linksys WRT1900ACS. Nó có thể được tải xuống từ trang web của nhà cung cấp.

https://www.linksys.com/us/support-article?articleNum=165487

https://downloads.linksys.com/downloads/firmware/FW_WRT1900ACSV2_2.0.2.188405_prod.img

Sau khi tải xuống, bạn có thể chạy lệnh ‘file’ để tìm chi tiết tệp cơ bản.

Chúng ta có thể thấy rằng đây là một ‘uImage u-boot legacy’ và là phần sụn của Bộ định tuyến Linksys WRT1900ACS dựa trên Linux/ARM. Bây giờ chúng ta đã hoàn thành việc thu thập thông tin cơ bản cho giai đoạn chuẩn bị – Nào. hãy CHFI phần sụn.

Hãy tiến hành điều tra chứng cứ số

Một công cụ quan trọng ở đây là lệnh ‘strings’. Nó cung cấp cho chúng ta tất cả thông tin chuỗi cơ bản mà nó có thể tìm thấy trong mã nhị phân của tệp. Hãy chạy lệnh và xem những gì chúng ta có thể tìm thấy.

Có một số lượng rất lớn các chuỗi được tìm thấy ở đây, hãy lưu chúng vào một tệp văn bản để dễ phân tích hơn.

Hãy sử dụng lệnh less để xem một vài dòng đầu tiên của tệp.

Dòng đầu tiên đáng chú ý, tức là nó đang cung cấp cho chúng ta thông tin về phần sụn này và bộ định tuyến mà nó được tạo ra. Bây giờ chúng ta sẽ tìm hệ điều hành. Để làm được điều đó, chúng ta có thể in toàn bộ tệp và tìm kiếm bằng lệnh ‘grep’.

Chúng ta chắc chắn có thể nói rằng hệ điều hành là Linux. Các bạn có thể thấy trong ảnh chụp màn hình ở trên cũng có một số thư mục được liệt kê.

Bây giờ, các bạn cần trich xuất phần sụn. Để trích xuất phần sụn hãy sử dụng ‘BinWalk”. Tôi gọi nó là “Con dao quân đội Thụy Sĩ để phân tích phần sụn”, nghe như netcat ấy nhĩ !

Chúng ta gặp lỗi và binwalk không thể giải nén hệ thống tệp. Điều này là do binwalk không hỗ trợ cho JFFS2. Vì vậy, các bạn cần thiết lập nó. Làm như sau để binwalk của bạn hoạt động bình thường:

sudo pip install cstruct

git clone https://github.com/sviehb/jefferson cd jefferson

python setup.py install

Sau khi cài đặt thành công, hãy chạy lại binwalk và bây giờ ta có thể thấy rằng binwalk đã xác định hệ thống tệp là JFFS2.

Bây giờ chúng tôi có rất nhiều thông tin liên quan đến phần sụn. Kích thước tiêu đề, kích thước hình ảnh, kiểm tra CRC, ngày tạo lần cuối, chi tiết hệ điều hành, CPU chạy trên đó, v.v.

Binwalk tạo một thư mục riêng cho dữ liệu mà nó trích xuất.

Chúng ta có thể thấy rằng có một tệp hiển thị hệ thống tệp JFFS2 và tệp còn lại là tệp gzip. Chạy tệp xuất ra 6870 và không có dữ liệu nào khác. Điều này có nghĩa là binwalk đã diễn giải sai dữ liệu, chúng tôi có thể chạy lại binwalk trên tệp để tìm kiếm các khả năng khác nhằm thử và trích xuất dữ liệu theo đúng định dạng.

Chúng ta có thể thấy rằng tệp này chứa một bản sao của nhân Linux thực; binwalk cũng cho chúng ta thấy phiên bản mà hạt nhân này hoạt động. Trong khi đó, chúng ta cũng có thể thấy một số dữ liệu nén LZMA và một số dữ liệu lưu trữ cpio.

Hãy chuyển sang phần cài đặt chương trình cơ sở này để có thể phân tích điều này sâu hơn.

Mount

Đầu tiên các bạn cần tạo một “Block Device”. Nó có thể được thực hiện bằng cách sử dụng lệnh sau:

mknod /dev/mtdblock0 b 31 0

Sau đó, chúng tôi cần tạo một vị trí nơi chúng tôi có thể đẩy hệ thống tệp của mình tới. Nó có thể được thực hiện bằng cách sử dụng:

mkdir /mnt/jffs2_file/

Phần sụn yêu cầu một số mô-đun hạt nhân. Vì vậy, chúng tôi cần tải tất cả chúng để đảm bảo rằng hệ thống tệp của chúng tôi hoạt động tốt. Nó có thể được thực hiện bằng cách sử dụng:

modprobe jffs2 modprobe mtdram modprobe mtdblock

Bây giờ ta cần ghi hình ảnh vào “Block Device” và nó có thể được thực hiện bằng cách sử dụng:

dd if=/root/Router/600000.jffs2 of=/dev/mtdblock0

Tiếp theo, gắn hệ thống tệp của mình và có thể thực hiện việc này bằng cách sử dụng:

mount -t jffs2 /dev/mtdblock0 /mnt/jffs2_file/

Cuối cùng, chuyển sang hệ thống tệp được gắn kết và nó có thể được thực hiện bằng cách sử dụng:

cd /mnt/jffs2_file/

Sau khi hoàn tất, thực hiện lệnh ls sẽ hiển thị các thư mục. Chúng tôi vừa gắn chương trình cơ sở này vào hệ thống cục bộ của mình!

Liệt kê tất cả các tệp cho thấy rằng một số đang được liên kết tượng trưng với các vị trí khác. Về bản chất, một số tệp có ‘lối tắt’ đến những tệp khác ở nơi khác trên hệ thống tệp.

Ngoài ra, các bạn có thể thấy rằng có ba thư mục mẹ được liên kết với thư mục /tmp/. Chúng ta cũng có thể thấy thư mục /www/, đây là nơi lưu trữ dữ liệu ứng dụng web.

Hãy xem trong thư mục bin:

Chúng ta có thể thấy rằng cơ sở dữ liệu là “sqlite3”.

Bây giờ hãy xem những gì bên trong thư mục vv.

Có nhiều tệp cấu hình ở đây, cùng với rất nhiều chi tiết bản dựng. Hãy xem tệp ngày xây dựng… Tôi tự hỏi tệp này có thể là gì…

Ngoài ra còn có các khóa RSA ở đây và chúng ta có thể thấy rằng máy chủ SSH đang được sử dụng ở đây là “dropbear”.

Hừm. Thật thú vị, có cả thông tin chi tiết về máy chủ đa phương tiện được hiển thị ở đây. Kiểm tra thêm cho thấy đây là của Cisco.

Hãy xem xét các tệp dịch vụ khác để tiết lộ càng nhiều thông tin liên quan đến các giao thức được sử dụng và số cổng được chỉ định của chúng.

Có một tệp khác gọi là “system_defaults” chứa tất cả các cài đặt mặc định cho bộ định tuyến.

Có một tệp chứa phiên bản phần sụn.

Có một thư mục tên là JNAP chứa các tập lệnh lua. Các tập lệnh này được sử dụng để điều khiển mạng.

Đây là một bản tóm tắt rất nhanh về việc phân tích chương trình cơ sở của bộ định tuyến, tôi hy vọng bạn đã làm theo và thích hướng dẫn này.

BQT – Các bạn có thể thấy việc phân tích firmware sẽ cho ta nhiều thông tin thú vị, có thể là tài khoản admin với apssword default hay khả năng có backdoor hay thứ gì khả nghi trên đó hay không … Room này khá cơ bản nhưng cần thiết cho bất cứ ai đang tìm hiểu về điều tra số hay đang theo học chương trình CHFI của CEH VIETNAM.

Cũng xin lưu ý rằng, để hiểu và nắm vững hơn những kỹ năng trong bài này không gì hơn là lao vào room đấy mà thực hành. Thật ra, bài này cha83ngc ần room riếc gì cho mất công, tải Kali 2022.4 (hiện nay) và lấy firmware mẫu rồi cứ thế mà phân tích.

Còn muốn giả lập firmware này hãy làm thêm bài nâng cao. Video sẽ có trong khóa học, ọi hỏi đáp tì post lên group học tập qua Tele của nhóm CHFI, mẫu firmware chúng tôi cũng có up lên đó, với nhiều mẫu thú vị hác của OWASP hay DVFW.

Để tiết kiệm chi phí các bạn có thể tự học, nhưng để tiết kiệm thời gian thì tham gia lớp CHFI

Học phải hành, có điều kiện thì lấy luôn chứng chỉ CHFI v10, nằm trong DOD Directive 8750m.01, có khi qua Mỹ làm điều tar số cũng được !

Trả lời

Bạn cần phải đăng nhập để gửi bình luận:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s