Chỉ mất 1 phút để các hacker tìm và lạm dụng thông tin đăng nhập trên GitHub

Chúng tôi thiết lập một honeypot bằng cách xuất bản thông tin đăng nhập AWS (Amazon Web Services) trong các kho lưu trữ GitHub công khai; để tìm hiểu ra cách thức mà những kẻ tấn công tìm thấy và lạm dụng thông tin đăng nhập.
Các nhà phát triển thường xuyên sử dụng GitHub để sao lưu; chia sẻ và quản lý các thay đổi code. Kho lưu trữ mã GitHub thường công khai; có nghĩa là bất kỳ ai cũng có thể tìm và truy cập vào mã đã được tải lên trang web. Và một điều thường xuyên xảy ra là các nhà phát triển quên xóa dữ liệu nhạy cảm khỏi code của họ trước khi đưa nó lên GitHub.

Để lộ dữ liệu cá nhân nhạy cảm trong kho lưu trữ GitHub công khai không phải là vấn đề mới mẻ gì nữa. Các tin tặc độc hại tích cực quét GitHub để tìm mật khẩu bị rò rỉ; ID ứng dụng khách, khóa bí mật và mã thông báo API; vì chúng biết các lập trình viên rất dễ bị lỗi sơ hở này.

Nhưng những kẻ tấn công mất bao lâu để tìm thấy dữ liệu sau khi nó bị lộ? Và chúng sẽ làm gì với nó?
Chúng tôi đã cố gắng tìm ra câu trả lời cho những câu hỏi này bằng cách thiết lập một honeypot.

Các nhà nghiên cứu của chúng tôi đã tạo nhiều tài khoản trên Amazon Web Services (AWS) và GitHub. Sau đó, họ xuất bản thông tin đăng nhập của người dùng như ID AWS; và khóa bí mật trong kho lưu trữ GitHub công khai. Sử dụng dịch vụ AWS CloudTrail; sau đó họ theo dõi và ghi nhật ký những kẻ tấn công đã sử dụng thông tin đăng nhập để truy cập vào máy chủ AWS của chúng tôi.

Hacker tìm và lạm dụng thông tin đăng nhập trên GitHub

Các nhà nghiên cứu đã thiết lập các tài khoản giả với quyền truy cập có lập trình; nhưng không có quyền để ngăn những kẻ tấn công tác động đến cơ sở hạ tầng AWS của chúng tôi. Người dùng đã được chỉ định một chính sách có toàn quyền truy cập vào bất kỳ phần nào của dịch vụ đám mây đàn hồi AWS (AmazonEC2FullAccess).

Dịch vụ AWS Athena được sử dụng để tìm kiếm; và truy vấn nhật ký các cuộc tấn công theo thời gian, sự kiện và địa chỉ IP.

Kết quả của Honeypot: 1 phút để tìm những thông tin đăng nhập bị lộ và khởi động các cuộc tấn công

Chỉ mất một phút để những kẻ tấn công tìm thấy và bắt đầu lạm dụng khóa bí mật AWS bị lộ. Dựa trên tốc độ của các cuộc tấn công; các nhà nghiên cứu giả định rằng những kẻ tấn công sử dụng công cụ và tập lệnh tùy chỉnh; hoặc sửa đổi cho các cuộc tấn công; và hầu hết sử dụng proxy cho phép chúng thực hiện từng yêu cầu từ một địa chỉ IP khác nhau.

Đó là tin xấu cho các lập trình viên và nhà phát triển. Ngay cả khi một nhà phát triển nhanh chóng nhận ra lỗi của họ sau khi gửi mã vào GitHub; họ vẫn không thể xóa nó trước khi những kẻ tấn công có được thông tin đăng nhập bị lộ.

Cuộc tấn công đầu tiên mà chúng tôi ghi lại đã lạm dụng thông tin đăng nhập bị lộ; để lấy thông tin về cơ sở hạ tầng máy chủ, người dùng, quyền, nhóm, vai trò; và chính sách bằng cách sử dụng lệnh gọi API DescribeInstances và GetAccountAuthorizationDetails. Toàn bộ cuộc tấn công diễn ra chưa đầy bốn phút kể từ thời điểm lộ diện.

Tiếp theo, các nhà nghiên cứu của chúng tôi quyết định cung cấp cho những kẻ tấn công nhiều đặc quyền hơn. Họ đã tạo một người dùng giả mới; và gán cho nó quyền truy cập chỉ đọc (AmazonEC2ReadOnlyAccess); và một vai trò cho phép người dùng đăng ký hay hủy đăng ký các phiên bản vùng chứa (AmazonEC2ContainerServiceRole).

Trong vòng một phút sau khi để lộ khóa của người dùng; phiên bản EC2 đã nhận được hơn 1.000 lệnh gọi API RunInstances. Kẻ tấn công cố gắng chỉ chạy những phiên bản lớn nhất hiện có — một nỗ lực để nhanh chóng chất đống hàng nghìn hóa đơn trên Amazon; và gây ra tổn thất tiền tệ.

Tuy nhiên, trong trường hợp này, Amazon đã ngay lập tức tạm ngưng tài khoản người dùng và liên hệ với người dùng thông qua email. Cơ chế bảo vệ này là tự động.

Amazon tạm ngưng tài khoản người dùng

Bằng cách kiểm tra tất cả nhật ký từ honeypot, các nhà nghiên cứu nhận thấy rằng mọi lệnh gọi API đến từ 547 địa chỉ IP độc nhất; điều này cho thấy rằng tin tặc sử dụng proxy để giúp che giấu hoạt động lạm dụng. Hoạt động tấn công giảm dần theo thời gian; với phần lớn các cuộc tấn công được thực hiện trong vòng một giờ kể từ khi tiếp xúc.

Cách kẻ tấn công có thể sử dụng dữ liệu bị lộ trên GitHub

Các hành động mà kẻ tấn công có thể thực hiện bằng cách sử dụng thông tin đăng nhập AWS bị lộ rất khác nhau; tùy thuộc vào các quyền được chỉ định cho các thông tin xác thực đó.

Thông thường, những kẻ tấn công có thể lấy thông tin về việc chạy các phiên bản EC2; nhóm S3 hiện có, danh sách người dùng và quyền của họ; cũng như thông tin tài khoản khác. Điều này có thể dẫn đến xâm phạm tài khoản và vi phạm dữ liệu.

Cơ sở hạ tầng bị xâm nhập có thể được sử dụng trong các cuộc tấn công mạng tiếp theo; chẳng hạn như các cuộc tấn công botnet. Điều này có thể dẫn đến địa chỉ IP của bạn bị đưa vào danh sách đen.

Phải làm gì nếu bạn để lộ thông tin đăng nhập AWS trên GitHub

Nếu bạn vô tình làm lộ thông tin đăng nhập AWS trong kho lưu trữ GitHub công khai; rất có thể bạn sẽ sớm bị tấn công. Các nhà nghiên cứu khuyên bạn nên thực hiện các bước sau ngay lập tức:

  • Cập nhật mật khẩu gốc
  • Xoay và xóa tất cả các phím truy cập
  • Kiểm tra từng khu vực xem có sử dụng AWS trái phép không
  • Chấm dứt tài nguyên trái phép
  • Xóa ngay các khóa bị rò rỉ và thông tin đăng nhập khác
  • Thu hồi và xóa các thông tin đăng nhập đó
  • Liên hệ với bộ phận hỗ trợ AWS nếu có bất kỳ vấn đề nào khác
  • Không thực hiện các bước có thể dẫn đến tổn thất tài chính và có khả năng bị chấm dứt hoặc tạm ngưng tài khoản AWS của bạn.

Cách ngăn chặn việc lộ thông tin xác thực trên GitHub

Cả AWS và GitHub đều cung cấp cho người dùng một số biện pháp bảo vệ cơ bản chống lại các loại tấn công này. GitHub có tính năng quét bí mật; để kiểm tra kho lưu trữ, tìm thông tin đăng nhập bị lộ bằng cách sử dụng biểu thức chính quy. Như chúng ta đã thấy với honeypot của mình; Amazon có thể tạm ngưng các tài khoản bị xâm phạm; và thông báo cho quản trị viên qua điện thoại và email; nhưng chúng ta không nên dựa vào những cơ chế này.

Dưới đây là một số phương pháp mà các nhà nghiên cứu đề xuất:

  • Luôn quét mã trước khi thực hiện. Điều này có thể được tự động hóa; và nên được tích hợp vào quy trình phát triển.
  • Không tạo khóa truy cập cho người dùng gốc của tài khoản AWS của bạn. Bạn không thể hạn chế quyền đối với người dùng root; vì vậy kẻ tấn công có được khóa đó có thể kiểm soát tất cả các tài nguyên trong tài khoản của bạn; bao gồm cả thông tin thanh toán.
  • Sử dụng thông tin xác thực bảo mật tạm thời; thay vì khóa truy cập lâu dài. Thông tin đăng nhập tạm thời bao gồm ID khóa truy cập và khóa truy cập bí mật; nhưng cũng bao gồm mã thông báo bảo mật cho biết khi nào các thông tin đăng nhập đó hết hạn. Bạn có thể chỉ định khóa truy cập tạm thời có hiệu lực trong bao lâu; sau đó khóa sẽ tự động chấm dứt.
  • Định cấu hình người dùng IAM một cách chính xác. Nếu bạn cần tạo khóa truy cập để truy cập có lập trình; thì hãy tạo người dùng IAM. Chỉ cấp cho người dùng đó các quyền mà họ cần; sau đó tạo khóa truy cập cho người dùng đó.
  • Nếu bạn có nhiều ứng dụng; hãy sử dụng các phím truy cập khác nhau cho từng ứng dụng và xoay chúng theo định kỳ.
  • Loại bỏ các phím không sử dụng.
  • Định cấu hình xác thực đa yếu tố cho các hoạt động nhạy cảm nhất của bạn.
  • Tránh chuyển mã thông báo rõ ràng.

Ngày nay, việc bị làm dụng thông tin đăng nhập đã không còn là một điều xa lạ nữa. Những thông tin đăng nhập cá nhân; đặc biệt là thông tin về tài khoản thanh toán; nếu bị lạm dụng sẽ gây ra hậu quả nặng nề đối với người dùng. Vì vậy, hi vọng với những thông tin được cung cấp trong bài viết, bạn có thể ngăn chặn được việc lạm dụng thông tin đăng nhập trên GitHub. Một lời khuyên mà chúng tôi muốn dành cho các bạn là Đừng bao giờ chủ quan đối với việc bảo mật thông tin cá nhân của mình nhé !

Xem thêm: [Bảo Mật Thông Tin Doanh Nghiệp]: Vấn Đề Chưa Bao Giờ Ngừng “Hot”

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *