Hộp bí mật: Khéo léo sửa đổi hệ thống liên lạc nội bộ căn hộ để hoạt động với Apple Home
Security·Hacker News·1 lượt xem

Hộp bí mật: Khéo léo sửa đổi hệ thống liên lạc nội bộ căn hộ để hoạt động với Apple Home

Box of Secrets: Discreetly modding an apartment intercom to work with Apple Home

AI Summary

Bài viết này kể lại câu chuyện của hai người bạn đã "hack" thành công hệ thống intercom bị hỏng của một tòa chung cư bằng cách lợi dụng lỗ hổng trên router Wi-Fi. Họ đã chiếm được quyền quản trị router, phát hiện ra rằng nó chưa được cập nhật bản vá bảo mật và cho phép tải về file cấu hình. Từ đó, họ tìm thấy thông tin đăng nhập, bao gồm cả mật khẩu root đã được hash. Mặc dù có thể truy cập sâu vào các chức năng cốt lõi của router, nhưng giao thức serial tùy chỉnh mà hệ thống intercom sử dụng lại là rào cản khiến họ không thể tích hợp trực tiếp. Qua ví dụ này, các developer có thể rút ra bài học về rủi ro bảo mật khi sử dụng các thông tin đăng nhập mặc định (default credentials) và tầm quan trọng của việc hiểu rõ các giao thức của các hệ thống có kết nối với nhau, ngay cả khi chúng trông có vẻ là phần cứng đơn giản.

Bạn tôi Frank (không phải tên thật) tiếp đón rất nhiều khách tại căn hộ của anh ấy, và hệ thống liên lạc nội bộ của khu phức hợp của anh ấy là thứ dẫn họ vào trong. Có thể bạn đã từng nhìn thấy chúng trước đây, chúng trông như thế này:...

Frank, bạn tôi (không phải tên thật) tiếp đón rất nhiều khách tại căn hộ của anh ấy và hệ thống liên lạc nội bộ của khu phức hợp của anh ấy là thứ dẫn họ vào trong. Có thể bạn đã từng nhìn thấy chúng trước đây, chúng trông như thế này:

Hệ thống liên lạc nội bộ Doorking 1834-080 tại căn hộ của Frank.

Cho đến gần đây, khách có thể tìm thấy số của Frank trong hệ thống và gọi cho số đó. If Frank recognized the people on the line, he would press a number on his dial pad, which the controller would interpret as a signal to unlock the gate.

Sau đó, ban quản lý trở nên lười biếng. Khu phức hợp Frank sống đã không thể gia hạn dịch vụ di động của hệ thống liên lạc nội bộ của họ, vì vậy họ không thể thực hiện cuộc gọi đến hệ thống thoại nữa. Even after months of asking his landlord to fix it, nothing was done.

Help Arrives

Tôi và người bạn khác của tôi Hazel đã đến thăm Frank trong thời gian ngừng hoạt động này và anh ấy đã yêu cầu chúng tôi xem chúng tôi có thể làm gì. Here’s what we saw:

A diagram of what we saw.

We inspected the top box closer, giving a promising result: it was unlocked! The general layout of the box is as follows:

A diagram of the voice box with wires shown.

It was impossible to ignore the massive Wi-Fi/cell router in the top corner with its admin password printed right on it (not pictured). Tất nhiên là tôi phải điều tra.

Thử 1: Bộ định tuyến Wi-Fi

Tôi nhanh chóng tìm thấy mạng và nhập thông tin đăng nhập được hiển thị. Of course, they weren’t changed from the defaults. I had full admin access to the router, which was awesome, until I realized that I couldn’t do very much with its basic, locked-down interface. Điều này gần như đã kết thúc quá trình khám phá của tôi, nhưng sau đó tôi nhận ra: còn SSH thì sao?

AT&T, the company that makes the routers for Doorking, is smarter than a bag of rocks in that SSH is protected on their router. Sadly for them, they lose to the bag of rocks in providing a way to download their entire system configuration from the web interface, containing a way to reset the root password to whatever you want:

# Tệp này là cấu hình được xuất từ thiết bị dựa trên nền tảng NetComm Bovine.
# Các trường riêng tư được mã hóa nhưng mọi mục nhập cấu hình đều có thể được thay thế theo cách thủ công bằng
 # biến văn bản thuần túy hoặc văn bản được mã hóa URI.
admin.firewall.enable;1
admin.local.enable_http;1
admin.local.enable_https;1
admin.local.ssh_enable;1
admin.local.telnetenable;1
admin.open.port;
admin.password;
 admin.user.admin;$aM9VdmCoc5vuekVU70/Gl8iJTOujxMQo
admin.user.root;$DDDgp0GJy6nB29UX7pDlrUUKDkWYqp84

Ồ. Bây giờ tôi đã hiểu tại sao lỗ hổng bộ định tuyến lại phổ biến đến vậy.

Đây chắc chắn là một hướng đi đầy hứa hẹn, nhưng chúng tôi đã nhận ra một điều: ngay cả khi chúng tôi đạt được khả năng thực thi mã trên bộ định tuyến, chúng tôi sẽ phải tìm ra giao thức nối tiếp tùy chỉnh của nó để thậm chí có cơ hội giao tiếp với hộp điều khiển chính. Đây không phải là điều mà tôi và Hazel muốn dành toàn bộ kỳ nghỉ để làm nên chúng tôi quyết định tìm nơi khác.

Lần thử 2: Giả điện thoại

Nhìn vào các thiết bị đầu cuối khác trong hộp, chúng tôi thấy các đầu nối điện thoại PH LINE cho mỗi hệ thống. Điều này đầy hứa hẹn vì hệ thống liên lạc nội bộ hiện tại của Frank sử dụng tín hiệu DTMF để mở cổng trở lại khi nó hoạt động.

Tuy nhiên, khó có khả năng hộp điều khiển chính sẽ mù quáng chấp nhận bất kỳ lệnh điện thoại nào trong khi không chủ động lắng nghe sau khi người dùng yêu cầu. Giả thuyết này có thể được kiểm tra nhưng chúng tôi lại phải đối mặt với thực tế là khả năng sửa lỗi cực kỳ hạn chế, bên cạnh kiến thức tối thiểu về hệ thống tín hiệu điện thoại.

Sự quyến rũ của lần thứ ba: Người đàn ông ở giữa

Hazel và tôi biết chắc chắn phải có một số lỗ hổng trong hệ thống cho phép chúng tôi đưa lệnh của riêng mình vào hệ thống điều khiển cổng. Chúng tôi đã đúng, nhưng trước tiên chúng tôi cần thay đổi quan điểm. Giả định ban đầu của chúng tôi là chúng tôi cần nắm quyền kiểm soát hệ thống từ trên xuống để khiến nó thực hiện những gì chúng tôi muốn. Sau những thất bại trước đó, chúng tôi đã thay đổi mục tiêu của mình để nắm quyền kiểm soát hệ thống từ dưới lên: phá hoại cốt lõi của nó.

Chúng tôi đã mở rộng tìm kiếm từ hộp thoại đến hộp nối chính giúp định tuyến dây giữa hộp thoại và bộ điều khiển chính (không thể tiếp cận). Sau khi tháo hai con vít đầu dẹt, chúng tôi nhận được một điều bất ngờ thú vị: một sợi cáp bổ sung mà chúng tôi không ngờ tới. Việc truy tìm sợi cáp dẫn tới phát hiện: hộp điều khiển chính điều khiển cuộn dây điện từ, thiết bị cơ khí chịu trách nhiệm mở khóa cổng, thông qua hộp nối!

Việc có được dây điều khiển điện từ đã thay đổi đáng kể cách tiếp cận của chúng tôi. Solenoid chỉ là nam châm điện có hai trạng thái: không có nguồn (đã khóa) và có nguồn (không khóa); không có biện pháp an ninh, không có giao thức để rình mò. Với điểm truy cập dễ dàng này, chúng ta chỉ cần sử dụng nguồn điện của chính mình vào bộ điện từ để mở khóa cổng. Ngoài ra, nguồn phụ 12 volt DC từ thiết bị đầu cuối trong hộp thoại sẽ là nguồn hoàn hảo để cấp nguồn cho bộ vi điều khiển.

Đây là kế hoạch chúng tôi đã đưa ra:

  • Tách dây chạy đến vỏ khóa và kích hoạt bộ điện từ. Kết nối đầu chia đôi với bảng chuyển tiếp ESP32 hỗ trợ Wi-Fi.
  • Viết chương trình cơ sở trong Rust để biến ESP32 thành ứng dụng khách Matter mà chúng tôi có thể kết nối với Apple Home của Frank.
  • Giấu bảng bên trong hộp nối nhỏ, được đặt thuận tiện cạnh tòa nhà để đảm bảo kín đáo tối đa.
  • Cấp nguồn cho bo mạch bằng cách cắm cáp nguồn vào hộp thoại Doorking và chạy cáp vào chỗ nối.
A diagram of the layout once we added the ESP32.

Đã đến lúc đặt hàng các bộ phận. Rất may, Hazel đã tìm thấy bảng chuyển tiếp ESP32 thực hiện chính xác những gì chúng tôi muốn, có hai rơle để điều khiển điện từ. Mạch cuối cùng trông như thế này:

Mạch chúng tôi đã sử dụng.

Thiết lập này đảm bảo rằng nếu mạch của chúng tôi bị hỏng, hệ thống sẽ vẫn duy trì đầy đủ chức năng vì các lệnh điều khiển cổng được truyền qua khi không cấp nguồn cho rơle. 1

Phần mềm

Sau khi chúng tôi đã thiết lập xong phần cứng, tiếp theo là phần mềm. Chúng tôi đã chọn sử dụng thư viện Matter được viết bằng Rust với các chuyên môn dành cho ESP32. Điều này sẽ cho phép chúng tôi sử dụng một tiêu chuẩn mở (với các thông số kỹ thuật có thể truy cập miễn phí, không cần đào filetype:pdf!) để kết nối với thiết lập Apple Home của Frank.

Phần mềm có thể được mô tả bằng máy trạng thái này:

Máy trạng thái phần mềm.

Nó khá đơn giản. Khởi động và kết nối với mạng. Sau khi kết nối, hãy bắt đầu nghe lệnh từ nhà. Khi được hướng dẫn, hãy mở khóa cổng trong một khoảng thời gian nhất định (người dùng có thể định cấu hình với thời gian mặc định là 10 giây), sau đó khóa lại cổng. Điều quan trọng là phần mềm sẽ không bao giờ để cổng mở vô thời hạn, đảm bảo hệ thống luôn được an toàn. Bạn có thể tự xem mã tại đây.

Đập ngăn xếp

Một vấn đề đặc biệt khó chịu mà chúng tôi gặp phải trong quá trình phát triển là dung lượng RAM rất hạn chế của ESP32. Việc khởi chạy cả ngăn xếp Wi-Fi và Bluetooth cùng nhau hầu như luôn gây ra hỏng bộ nhớ do phân bổ quá mức, dẫn đến việc thiết lập lại cứng sau khi truy cập bộ nhớ không hợp lệ. Việc triển khai Matter mà chúng tôi sử dụng đã sử dụng ngăn xếp Bluedroid Bluetooth cũ hơn của ESP32 thay vì NimBLE mới hơn, khiến vấn đề càng trở nên tồi tệ hơn. Sau khi điều chỉnh kích thước ngăn xếp theo cách thủ công trong một thời gian dài, ngay cả khi có sự trợ giúp của Claude Code, chúng tôi vẫn không thể ổn định được. Tuy nhiên, có một giải pháp sẵn có: chỉ bật Wi-Fi hoặc Bluetooth và yêu cầu Claude chuyển một loạt cài đặt cấu hình tiết kiệm bộ nhớ vào sdkconfig.defaults. Bluetooth chỉ cần thiết cho quá trình cung cấp và Wi-Fi chỉ cần thiết cho hoạt động thông thường. Có một khoảng thời gian nhỏ trong quá trình cung cấp mà cả hai đều cần được kích hoạt, nhưng khoảng thời gian này đủ ngắn để không gây ra sự cố. Bây giờ, khi hoạt động bình thường, ESP32 sẽ tắt Bluetooth ngay lập tức, loại bỏ sự cố.

Sau khi chúng tôi xử lý tất cả các trường hợp khó khăn, thiết bị đã xuất hiện trong Apple Home!

The gate lock alongside the front door lock in Apple Home.

Fun fact, you can set the manufacturer information to whatever you’d like:

Thông tin nhà sản xuất mà chúng tôi đã chọn.

Triển khai

Khi phần mềm đã chạy hoàn hảo, chúng tôi chuyển sang triển khai thiết bị. May mắn thay, tấm ván mà chúng tôi mua hoàn toàn vừa khít với hộp nối nhỏ dẫn đường cho chúng tôi đi theo con đường này, nên bất kỳ ai đi ngang qua nó sẽ hoàn toàn vô hình. Hazel đã nối đường dây điện từ hộp thoại đến hộp nối và chúng tôi cũng đã mua bộ mở rộng Wi-Fi để đảm bảo tín hiệu mạnh nên tất cả những gì chúng tôi cần làm là nối mọi thứ vào. Sau rất nhiều lần ghép nối cẩn thận của Hazel, nó đã được cài đặt! Chúng tôi đã kết nối nguồn trong hộp thoại, aaannnnnndddd… không có gì. Không có điện.

Điều này thật tệ. Có điều gì đó đã đi ngược lại sự mong đợi của chúng tôi, nhưng chúng tôi không biết đó là gì. Frank không có đồng hồ vạn năng, vì vậy chúng tôi gặp khó khăn khi cố gắng tìm hiểu xem liệu có vết đứt ở dây điện hay không, hoặc có thể có một bộ phận nào đó bị nổ trên bo mạch của chúng tôi hay bất kỳ vấn đề tiềm ẩn nào khác. ‌Cuối cùng tôi nảy ra một ý tưởng: Frank sở hữu một chiếc máy khoan không dây. Sau khi lục lọi trong tủ đựng dụng cụ của anh ấy, tôi tìm thấy thứ mình đang tìm: một cục pin máy khoan không dây, có điện áp đầu ra là 20 volt. Tôi chạy xuống cầu thang, cắm nó vào dây điện và eureka! Nó đã hoạt động! Bo mạch khởi động và kết nối với Apple Home. Đây là một cảm giác hoang dã khi có thể mở khóa cánh cổng trước khi tôi kịp chạm tới nó.

Mặc dù thật vui khi biết rằng dự án có thể hoạt động nhưng chúng tôi cần tìm hiểu xem điều gì đang xảy ra với nguồn điện. Sau khi tìm hiểu kỹ, tôi tìm thấy hướng dẫn sử dụng dịch vụ cho hộp thoại và tìm thấy một điều có lẽ rất rõ ràng: cổng phụ 12 vôn là một đầu vào chứ không phải đầu ra cho các nguồn điện như tấm pin mặt trời. Thật là bực bội khi chúng tôi phát hiện ra sự thật này, nhưng ít nhất bảng của chúng tôi vẫn hoạt động. Sau khi tìm kiếm nhanh, tôi đã đặt mua một bộ điều chỉnh chỉnh lưu để chuyển đổi đầu vào AC 18 volt thành 12 volt DC. Vận chuyển mất rất nhiều thời gian, nhưng khi đến nơi, nó sẽ nằm ngay cạnh bảng ESP32 bên trong hộp nối. Tôi đã kết nối nó với nguồn điện AC đang hoạt động đã biết cho hộp thoại và nguồn điện bắt đầu chảy! Chúng tôi đã đóng mọi thứ lại và thế là xong.

Hazel và tôi vô cùng tự hào về chiếc hộp bí mật nhỏ bé của mình, còn Frank thì không thể hạnh phúc hơn được. Với khả năng mới được phát hiện là mở khóa cổng thông qua Apple Home,

  • Frank có thể tự mình mở khóa cổng tòa nhà chỉ bằng một cú chạm dễ dàng trên điện thoại hoặc cho phép khách vào lại từ xa mà không cần hệ thống liên lạc nội bộ.
  • Khách của Frank's Home giờ đây có thể mở khóa cả cổng tòa nhà và khóa thông minh của căn hộ của anh ấy từ ứng dụng Home; giờ đây đây là cách toàn diện để họ dễ dàng vào căn hộ của anh ấy.

Ngoài ra, việc lắp ráp rất kín đáo: chỉ có một chiếc ESP32 và một thiết bị điện nhỏ được giấu trong hộp nối được bảo đảm bằng vít để không can thiệp vào hệ thống kiểm soát truy cập chính của tòa nhà, mang lại cơ hội tránh bị phát hiện cao hơn nhiều.

Đây quả là một dự án thú vị để thực hiện và nó cho phép tôi dấn thân vào lĩnh vực hack mạch, điều mà tôi gần như không thể làm đủ. Các thành phần của dự án này đều cực kỳ đơn giản, vì vậy nếu bạn ở vị trí tương tự như Frank, hãy thử xem! Gắn thẻ tôi trên Twitter nếu bạn làm được!

Chú thích cuối trang

  • Mặc dù về mặt lý thuyết, rơ-le có thể bị hỏng bật do một số loại trục trặc vật lý nào đó, nhưng điều này khó xảy ra đến mức chúng tôi không thiết kế cho trường hợp đó.

Tác giả: jackhogan11

#discussion