1 điểm bởi GN⁺ 2023-08-09 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tiện ích tự động chuyển đổi chế độ sáng/tối trên macOS đã biến chất sau vụ mua lại vào cuối năm 2022 thành một công cụ đưa thiết bị người dùng vào botnet mà không có sự đồng ý
  • Bên mua lại là TPE.FYI LLC dựa trên điều khoản sử dụng để dùng thiết bị người dùng như một gateway cho lưu lượng Internet, và không thể vô hiệu hóa tính năng này ngay cả khi đã thoát ứng dụng
  • Khi cài đặt, một launch agent chạy với quyền root được đăng ký để tự khởi chạy khi bật máy, và không thể tắt từ bên trong ứng dụng
  • Một daemon ngụy trang là 'tự động cập nhật' khởi chạy HTTP proxy cục bộ và mở đường hầm SSH tới máy chủ bên ngoài để chuyển hướng lưu lượng qua đường truyền Internet của người dùng
  • SDK Pawns của IPRoyal, một công ty bán proxy dân cư, đã được sử dụng, tạo ra cơ chế bán lại băng thông Internet của người dùng cho mục đích nghiên cứu thị trường

Bản chất và sự biến chất của ứng dụng NightOwl

  • NightOwl là ứng dụng tồn tại từ năm 2018, cung cấp chức năng tự động chuyển đổi chế độ sáng/tối của hệ điều hành
    • Đây là giải pháp thay thế để khắc phục hạn chế của chế độ tự động tích hợp trong macOS, vốn chỉ chuyển khi người dùng rời máy
  • Sau khi được TPE.FYI LLC mua lại vào cuối năm 2022, thiết bị bị ép tham gia vào một botnet phục vụ nghiên cứu thị trường mà không có nhận biết hay sự đồng ý rõ ràng từ người dùng
    • Không có thông báo riêng nào ngoài phần điều khoản chữ nhỏ trên trang tải xuống
    • Ngay cả khi đã thoát ứng dụng, tính năng này vẫn không thể bị vô hiệu hóa
  • Hành vi này được nêu trong điều khoản sử dụng (TOS)
    • Thay đổi cấu hình mạng của thiết bị để chia sẻ lưu lượng Internet và sử dụng thiết bị người dùng làm gateway
    • Khách hàng sử dụng gateway bao gồm các công ty trong các lĩnh vực web/nghiên cứu thị trường, SEO, bảo vệ thương hiệu, phân phối nội dung và an ninh mạng
  • Đã liên hệ phía NightOwl nhưng không nhận được phản hồi

Cách gỡ bỏ

  • Ngay cả khi ứng dụng không chạy, nếu vẫn còn được cài đặt thì cần chạy các lệnh gỡ trong terminal
    • sudo killall NightOwl
    • launchctl unload ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo killall AutoUpdate
    • sudo rm -rf /Applications/NightOwl.app/ ~/Library/LaunchAgents/NightOwlUpdater.plist
    • sudo zsh -c "rm /Users/*/Library/LaunchAgents/NightOwlUpdater.plist"

Phân tích cách hoạt động kỹ thuật

  • Khi cài đặt, một launch agent có tên org.nightowl.autoupdater.com được đăng ký
    • Daemon hóa tiến trình /Applications/NightOwl.app/Contents/Helpers/AutoUpdate để chạy khi khởi động với quyền root
    • Không thể vô hiệu hóa qua ứng dụng, và âm thầm diễn ra mà không có nhận biết hay đồng ý từ người dùng
  • Thông báo mà ứng dụng hiển thị chỉ giới hạn ở việc thu thập thống kê bằng Google Analytics
    • Ứng dụng cho biết dữ liệu được theo dõi để phân tích cách sử dụng tính năng và lỗi
    • Nêu rõ rằng cài đặt anonymizeIp sẽ che phần cuối của địa chỉ IP để đảm bảo thu thập dữ liệu ẩn danh
    • Hướng dẫn rằng có thể từ chối theo dõi bằng cách bỏ chọn "Send Statistics" trong phần cài đặt
    • Tuy nhiên, ngay cả khi tắt gửi thống kê thì launch agent vẫn không bị vô hiệu hóa
  • Daemon 'tự động cập nhật' thực hiện ba việc
    • Kiểm tra cập nhật ứng dụng bằng Sparkle
    • Báo cáo crash bằng Sentry
    • Chạy HTTP proxy cục bộ trên cổng 40701 (có thể thay đổi bằng tệp json cấu hình trong app bundle)
    • Mục cuối là hành vi không thể dự đoán từ một ứng dụng tự nhận là trình tự động cập nhật
  • Cấu trúc proxy và đường hầm SSH

    • Daemon dùng sudo để chuyển từ root sang tài khoản người dùng chính rồi chạy nightowl_t.dylib
      • Đây là bản sao của tinyproxy, dùng giấy phép GPLv2 nhưng không kèm thông báo giấy phép GPL, nên có khả năng vi phạm
      • Hoạt động như một HTTP(S) proxy
    • Thiết lập kết nối SSH qua một tệp autossh đã bị đổi tên thành nightowl_a.dylib (không có giấy phép)
      • Đích đến là testconnectuser2023@proxy-gw1-europe.squidyproxy.com, cổng 2043
      • Sử dụng khóa công khai được thả vào /tmp với phần mở rộng .uu, và dùng tùy chọn -R để tạo đường hầm từ cổng từ xa về cục bộ
      • Khóa được lấy qua yêu cầu HTTPS tới proxy-api1.squidyproxy.com
      • Tên miền này được đăng ký trên GoDaddy vào tháng 4 năm 2022, IP do Microsoft hosting
    • Máy chủ SSH này đang bật quyền truy cập shell
    • Sau khi kết nối thành công, lưu lượng HTTP được chuyển tới phía người dùng rồi đi ra ngoài qua kết nối Internet của người dùng
  • Thử mở chuyển tiếp cổng UPnP

    • Ứng dụng cố mở chuyển tiếp cổng UPnP trên router nhưng thất bại do tên khóa bị lẫn lộn
      • Yêu cầu SOAP được gửi đi có chứa hành động AddPortMapping và giá trị ip royal paws

Cơ chế bán lại băng thông (Pawns / IPRoyal)

  • Có vẻ ứng dụng đang sử dụng Pawns SDK
    • Pawns là ứng dụng trả cho người dùng $0.20 mỗi GB băng thông Internet được chia sẻ
  • Dịch vụ Pawns do IPRoyal vận hành
    • Đây là công ty proxy bán kết nối proxy dân cư với giá $1.75 mỗi GB
    • Quảng cáo là "IP được thu thập 100% có đạo đức"

"TPE.FYI LLC" thực chất là gì

  • TPE (hoặc Keeping Tempo, Tempo AI) đang xây dựng mô hình định giá để các địa điểm biểu diễn định giá vé theo nhu cầu thực tế của nghệ sĩ, dựa trên phân tích như lượt xem video YouTube và dữ liệu độ phổ biến theo khu vực
    • Không liên quan tới Tempo AI Calendar hay Tempo AI Gym
  • Thông tin liên quan rất ít, gần như không có tư liệu nào sau năm 2018
  • Tại thời điểm viết, các bản cài đặt được xác nhận đã thử kết nối nhiều lần tới https://stubbs.frontgatetickets.com/
    • Trang này là nơi bán vé biểu diễn nhạc sống của một nhà hàng ở Austin, Texas
  • Công ty được thành lập tại Austin, Texas vào tháng 9 năm 2018, và bị giải thể vào tháng 3 năm 2023 bởi "Jarod Stirling"
    • Địa chỉ là The Muse at SoCo, 1007 South Congress Avenue, Apartment 443, Austin, Texas, 78704

1 bình luận

 
GN⁺ 2023-08-09
Ý kiến trên Hacker News
  • Tôi biết chuyện này xảy ra khá thường xuyên, nhưng vẫn thắc mắc các công ty cập nhật Điều khoản sử dụng bằng những câu chữ như vậy thường xuyên đến mức nào
    Ý tưởng về điều khoản tự động gia hạn/cập nhật chi phối vĩnh viễn mọi việc sử dụng lẽ ra đã phải bị chặn về mặt pháp lý từ lâu rồi
    Câu chữ hiện tại của NightOwl nói rằng họ có thể thay đổi điều khoản và thông tin giá bất cứ lúc nào, có hiệu lực ngay khi đăng lên website, và việc thay đổi có “trọng yếu” hay không cũng do một mình NightOwl quyết định
    Thông báo thay đổi điều khoản của một ứng dụng cài cục bộ bằng cách cập nhật website ư; chẳng lẽ còn phải theo dõi cả feed mạng xã hội để kiểm tra sao

    • Một người bạn từng ký hợp đồng Internet/điện thoại doanh nghiệp với Comcast vài năm trước cũng thấy câu chữ tương tự, thậm chí còn không có URL cụ thể
      Theo cảm tính thì đó có vẻ là điều khoản không thể thực thi và bất công, nhưng tôi cũng nghĩ đội pháp lý của Comcast hẳn đã xem xét rồi
      Không biết có luật sư nào biết liệu câu chữ kiểu này có hiệu lực không, khi việc thay đổi hợp đồng được đăng trên website, đặc biệt là trong trường hợp không có thông báo riêng
    • Tôi tự hỏi liệu maps.me cũng có thể đang ở tình trạng tương tự không
      Trước đây nó là một frontend OpenStreetMap tốt, nhưng tôi hiểu là đã bị một công ty đầu tư mua lại để kiếm tiền
      Không biết tình trạng hiện tại của ứng dụng ra sao, mô hình doanh thu có giống những gì được mô tả ở đây không, và nên dùng ứng dụng thay thế nào
    • Các điều khoản như thế này từng bị tuyên vô hiệu rồi, và nhiều khả năng sẽ lại như vậy nếu có ai đó sẵn sàng kiện: https://arstechnica.com/tech-policy/2007/07/court-says-no-to..., https://scholar.google.com/scholar_case?case=592583419165850...
      Trong vụ Safeway, tòa phán rằng người tiêu dùng không thể đồng ý với các điều khoản tương lai chưa tồn tại, và nếu không được thông báo về việc thay đổi điều khoản thì không thể chỉ vì tiếp tục sử dụng mà coi là đã đồng ý với điều khoản sửa đổi
    • Gần đây tôi cũng thắc mắc liệu extension Chrome The Great Suspender có thay đổi chính sách hay chức năng tương tự không
      Hình như các trình duyệt đã đánh dấu nó là không an toàn
  • Việc ứng dụng tạo nhiều kết nối tới các trang bán vé nhạc sống là một cách dùng phổ biến của proxy dân cư
    Những kẻ đầu cơ vé dùng thiết bị của người dùng bị nhiễm để vượt qua chặn host trung tâm dữ liệu hoặc giới hạn truy cập hàng loạt, qua đó tăng xác suất lấy được vé có giá trị bán lại sau này
    Các extension trình duyệt miễn phí, ứng dụng VPN, v.v. bị cài backdoor thông qua tác giả, kẻ xâm nhập kho mã, hoặc như lần này là bên mua lại, đôi khi biến thiết bị người dùng thành các proxy như vậy

    • NordVPN cũng dùng cách này
      Google và Amazon sở hữu các dải IP lớn cho dịch vụ cloud, nên bot chạy trên AWS hoặc Google Cloud tương đối dễ bị phát hiện
      Ngược lại, Verizon cũng có các dải IP lớn cấp cho khách hàng dân cư, và NordVPN tận dụng việc các dịch vụ như Netflix hay Amazon không muốn chặn toàn bộ dải IP của Verizon để khiến lưu lượng trông giống như đến từ mạng dân cư
  • Tôi rất ghét các vụ thâu tóm âm thầm
    Extension Chrome dành cho nhà phát triển cũng rất hay bị tác nhân độc hại mua lại rồi biến thành malware, thật kinh khủng

    • Với tư cách quản trị viên của một extension Chrome khá phổ biến, tôi nhận được quá nhiều đề nghị mua lại nên bắt đầu tập hợp công khai để mọi người cùng xem
      https://chrome.google.com/webstore/detail/hover-zoom%20/pccc...
      https://github.com/extesy/hoverzoom/discussions/670
    • Ý tưởng về một ứng dụng giám sát chủ sở hữu ứng dụng nghe có vẻ ổn
      Kiểu như nếu chủ sở hữu thay đổi chỉ sau một đêm thì gửi cảnh báo thật nổi bật
    • Vấn đề của ứng dụng miễn phí nằm ở đây
      Rất ít người muốn quyên góp, các công ty tử tế cũng không muốn mua ứng dụng để kiếm tiền, nên cuối cùng chỉ còn những công ty tệ nhất muốn khai thác người dùng là đi mua extension và ứng dụng
      Những ứng dụng miễn phí này có giá trị, nhưng không chuyển thành thu nhập cho nhà phát triển, nên họ phải tìm lối khác
    • Tôi nhớ đến vụ ActionDash bị Sensor Tower mua lại
      Một ứng dụng rất xâm nhập, vốn buộc phải cần quyền cực lớn để cung cấp chức năng cấp hệ thống, lại được chuyển giao trơn tru cho một công ty quảng cáo và bán dữ liệu — thật vô lý
    • Tôi không hiểu có gì là âm thầm
      Điều đó được ghi rõ trong điều khoản sử dụng mà người dùng đã đồng ý khi dùng phần mềm, nên rốt cuộc giống câu chuyện nguyên tắc người mua tự chịu trách nhiệm hơn
  • Cách giải thích rằng chế độ tự động tích hợp của macOS chỉ chuyển đổi khi người dùng rời khỏi máy tính nghe rất lạ
    Nếu đặt lịch/vị trí Night Shift và để dark mode ở tự động, nó sẽ đổi ngay; còn nếu dùng launcher hoặc Spotlight thì cũng có thể đổi bằng một dòng AppleScript như tell application "System Events" to tell appearance preferences to set dark mode to not dark mode

    • Trường hợp của tôi thì không như vậy
      Tôi đoán xác suất dark mode bật lúc hoàng hôn chỉ khoảng 25%
      Suốt nhiều năm, đến tận Ventura vẫn thế; không biết với người khác nó có luôn hoạt động hoàn hảo không
    • Vào năm 2018, khi NightOwl ra mắt, một phần hoặc toàn bộ các tiện ích này vẫn chưa tồn tại
  • Có vẻ Apple đã thu hồi chứng chỉ nhà phát triển
    Tôi thắc mắc liệu có nhật ký công khai nào cho biết nó bị thu hồi khi nào không
    Việc tải ứng dụng đã bị chặn, nhưng hai dylib vẫn đang chạy, nên tôi tự hỏi có phải chuyện này xảy ra sau khi việc thu hồi chứng chỉ đã bắt đầu không
    Ngay cả sau khi đăng xuất rồi đăng nhập lại, chúng vẫn tiếp tục chạy, nên có thể chúng tồn tại vượt qua cả việc đăng xuất
    Cũng xuất hiện lời nhắc từ tường lửa macOS hỏi có cho phép binary AutoUpdate được nhắc tới nhận kết nối hay không, nên có vẻ tất cả những thứ này đã được phát hành trong vài ngày gần đây
    Sau khi khởi động lại, hộp thoại “NightOwl” will damage your computer. You should move it to the Trash. xuất hiện; dù cho phép thì /Users/*/Library/LaunchAgents/NightOwlUpdater.plist và file thiết lập thông thường vẫn còn lại, nên chưa được dọn sạch hoàn toàn
    Với người dùng không rành kỹ thuật, không quen dùng Terminal, có lẽ nên hướng dẫn họ khởi động lại

  • Trong môi trường của tôi, macOS đã gỡ ứng dụng xuống và từ chối mở nó
    Thay vào đó tôi chuyển sang NightFall: https://github.com/r-thomson/Nightfall

    • Cũng có thể đưa thẳng cài đặt màn hình lên thanh menu bằng thiết lập sau
      Settings > Control Center > Display > Always Show in Menu Bar
      Dù cần thêm một cú nhấp để bật/tắt chế độ tối, nhưng cũng dùng được Night Shift và là native 100%
    • Bạn cũng có thể tự làm rất đơn giản bằng ứng dụng Automator mặc định
      Mở Automator, tạo một ứng dụng mới, chọn “change system appearance”, rồi chọn bật/tắt giữa chế độ sáng/tối
      Sau khi lưu, mở tên ứng dụng đó từ Spotlight là có thể chuyển chế độ; có vẻ cũng làm được bằng Shortcuts
    • Nếu chỉ cần chuyển chế độ thì có thể làm ngay bằng BetterTouchTool
      Tôi đặt phím tắt toàn cục là chuột phải+Option+Command, và nó hoạt động rất tốt
  • Có lẽ nên có luật để xử lý những chuyện kiểu này
    Cần có một hợp đồng ngầm định rằng phần mềm sẽ hoạt động đúng như đã nói và không làm chuyện hoàn toàn khác, và nếu vi phạm thì phải có hình phạt nặng

    • Có lẽ mỗi chúng ta cũng nên tự tạo EULA riêng và coi như bên kia đã ngầm đồng ý
      Nếu mỗi lần gửi yêu cầu tới một website lớn lại gửi kèm một file EULA 10MB, rồi cứ gửi tiếp cho đến khi họ chấp nhận, thì có thể thành “DDoS bằng EULA”
    • Các giấy phép phổ biến cố ý viết rõ để không hàm ý một hợp đồng như vậy
      Điều khoản viết hoa trong MIT License bắt đầu rằng phần mềm được cung cấp “nguyên trạng”, không có bất kỳ bảo đảm rõ ràng hay ngầm định nào về khả năng thương mại hoặc sự phù hợp cho một mục đích cụ thể; mục 15 của GPL cũng có câu chữ gần như tương tự
      https://opensource.org/license/mit/
      https://www.gnu.org/licenses/gpl-3.0.html#section15
    • Các điều khoản hợp đồng được luật ngầm định thực sự có tồn tại
      Luật hợp đồng tiêu dùng của Anh, chịu ảnh hưởng từ Chỉ thị về quyền người tiêu dùng của EU, từ năm 2015 đã mở rộng tới cả nội dung số; trong đó có các điều khoản ngầm định rằng hàng hóa phải có chất lượng thỏa đáng, và các dịch vụ liên tục như Netflix, Spotify hay phần mềm có cập nhật không được thay đổi đột ngột so với khi được cung cấp ban đầu
      https://www.legislation.gov.uk/ukpga/2015/15/part/1/chapter/...
      Hầu hết các khu vực pháp lý cũng có quy định tương tự, và các nước EU hẳn có luật triển khai Chỉ thị về quyền người tiêu dùng
      Tuy nhiên, điều này áp dụng khi đã trả tiền; NightOwl là miễn phí, nên những kỳ vọng pháp lý điều chỉnh việc bán hàng hóa/dịch vụ không áp dụng nguyên xi
      Việc một công ty bị mua lại rồi sản phẩm bị nhét spyware là xấu, nhưng viễn cảnh một thiếu niên hoặc lập trình viên nghiệp dư đăng phần mềm nguồn mở miễn phí hay freeware để học lập trình rồi bị các tập đoàn khổng lồ kiện vì làm chuyện kiểu left-pad cũng không phải điều đáng mong muốn
      Gánh nặng quản lý công nghệ nên đặt nặng hơn nhiều lên những nơi như Google, Microsoft, Apple, thay vì các nhà phát triển nhỏ làm tiện ích thanh menu miễn phí hay extension Chrome
      Việc ngăn các ứng dụng nhỏ miễn phí/nguồn mở trở thành vector tấn công chuỗi cung ứng vẫn rất khó; cần những cải tiến chậm và chưa hoàn hảo như sandboxing tốt hơn, quyền ở cấp ứng dụng, giám sát mạng theo từng ứng dụng và phát hiện bất thường, xây dựng niềm tin trong quy trình đóng gói/phân phối, và kiện tụng nhiều khả năng không phải là câu trả lời
  • Phần nói rằng ứng dụng cố mở UPnP port forwarding nhưng thất bại vì tên khóa trên router bị lẫn lộn, thực ra lẽ ra phải thất bại trên mọi router
    UPnP nên được tắt

    • UPnP đúng là một đặc tả tệ, nhưng nó là giải pháp tạm thời để khôi phục năng lực cơ bản mà các thiết bị kết nối Internet trong môi trường gia đình cần có
      Mọi ứng dụng P2P như Tailscale đều cần tạm thời hoạt động như một server và cho phép lưu lượng đi vào
      Không có chức năng này thì có thể nói thiết bị trở thành công dân hạng hai, và chẳng khác nào đối xử với người dùng như trẻ con
      Dĩ nhiên có thể tự mở port, nhưng do UX khó tìm, thiếu nhất quán và phức tạp, đa số người dùng khó tiếp cận; phần lớn còn không biết port là gì
    • Hãy nghĩ đến những người thân dùng Mac “vì ghét sự phiền toái của laptop Windows”
      Họ cũng không muốn phiền phức vì phải tắt UPnP, và thiết lập đó nhiều khả năng vẫn đang bật, dù bạn có hiểu rõ hơn họ hay không
    • Tắt UPnP sẽ an toàn hơn, nhưng nếu không tắt hết NAT ALG trên router thì vẫn còn bị phơi nhiễm rủi ro
      Phần lớn router có lẽ không có thiết lập như vậy, nên nếu thiết bị bị nhiễm nằm trong mô hình bảo mật của bạn, vì các cuộc tấn công NAT slipstream, tốt nhất nên giả định NAT trên thực tế gần như hoàn toàn vô hiệu
      Thiết bị bị nhiễm có thể thay đổi bảng NAT của router để về cơ bản hoạt động như UPnP, nhưng không cung cấp UI nào để người dùng kiểm tra
      Nếu chỉ dùng IPv6 không có NAT, thì việc vô hiệu hóa UPnP có thể là một biện pháp bảo mật ổn khi bạn sẵn sàng quản lý thủ công mọi ngoại lệ firewall; nhưng với đa số người hiện nay, host firewall mới là cách bảo vệ đáng tin cậy
    • Không rõ có phải họ đang phủ nhận hoàn toàn chính nhu cầu tồn tại của UPnP hay không
      Cách nói khá gây rối
  • Điều khoản ghi rằng “ứng dụng thay đổi thiết lập mạng của thiết bị người dùng để dùng thiết bị làm gateway cho lưu lượng Internet và chia sẻ lưu lượng Internet; khách hàng của NightOwl bao gồm các công ty nghiên cứu web/thị trường, SEO, bảo vệ thương hiệu, phân phối nội dung, an ninh mạng...”
    Cái này đúng là đáng bị đem đốt

    • Tôi vốn nghĩ chuyện càng đáng ngờ thì người ta càng che giấu nó
      Nhưng tôi thật sự tò mò vì sao họ lại ghi rõ trong điều khoản sử dụng
      Một tổ chức đã cài chức năng đáng ngờ như vậy thì tưởng cũng sẽ chủ động che giấu việc mình làm, nên tôi thắc mắc liệu việc ghi trong điều khoản có lý do nào khiến NightOwl được bảo vệ về mặt pháp lý không
      Ví dụ như bình thường có thể bị kiện thành công, nhưng nếu đưa vào điều khoản thì lại ổn, hay hành vi đáng ngờ kiểu này về mặt kỹ thuật vẫn hợp pháp chỉ cần có trong điều khoản, tôi không rõ
    • Có vẻ quyền “sửa đổi thiết lập mạng của thiết bị” đã nằm trong quyền được cấp cho tác vụ vốn có là chuyển chế độ tối
      Nếu vậy thì khá đáng thất vọng, và tôi mong quyền của ứng dụng được chia nhỏ hơn
    • Ở đây dùng từ “enables” tạo cảm giác như đang đóng gói việc xâm phạm tự do và quyền riêng tư thành một cơ hội
    • Nên công khai tên thật của nhà phát triển và công ty để họ phải xấu hổ
  • Dùng Little Snitch sẽ giúp phát hiện ứng dụng kết nối đến IP và địa chỉ nào, cũng như chặn các kết nối đó

    • Còn có LuLu nữa
    • Tôi đã trả tiền cho Little Snitch mỗi khi có thể
      Mong họ tuyệt đối đừng cân nhắc bán mình