Trao đổi với tôi

http://www.buidao.com

12/27/09

[Hacking] Tìm hiểu tấn công Null Session

Null Session, được gọi là IPC$ trên máy chủ nền tảng Windows, là một dạng kết nối nặc danh tới một mạng chia sẻ cho phép người dùng trong mạng truy cập tự do.

Tấn công Null Session đã xuất hiện kể từ khi Windows 2000 được sử dụng rộng rãi, tuy nhiên, hình thức tấn công này không được các quản trị viên hệ thống chú ý khi áp dụng các biện pháp bảo mật mạng. Điều này có thể dẫn đến kết cục khôn lường vì tin tặc có thể sử dụng hình thức tấn công này để lấy mọi thông tin hữu dụng cần thiết để giành quyền truy cập từ xa vào hệ thống. Mặc dù không còn mới mẻ, nhưng tấn công Null Session vẫn phổ biến và nguy hiểm như những năm trước đây. Xét về một khía cạnh nào đó, mặc dù khả năng bảo mật của các hệ thống hiện đại không phải quá yếu nhưng khi thực hiện các cuộc thử nghiệm xâm nhập trên máy tính Windows thì kết quả cho thấy Null Session vẫn là một trong những hình thức cần lưu ý.
Trong bài viết này chúng ta sẽ tìm hiểu cách thức hoạt động của tấn công Null Session và phương pháp ngăn chặn nó xảy ra trên hệ thống.

Phương thức hoạt động của Null Session

Một phiên truy cập từ xa được tạo lập khi người dùng đăng nhập từ xa vào một máy tính sử dụng một tên người dùng và mật khẩu có quyền truy cập vào tài nguyên hệ thống. Tiến trình đăng nhập này được thực hiện qua giao thức SMB (Server Message Block) và dịch vụ Windows Server. Những kết nối này hoàn toàn hợp pháp khi những thông tin đăng nhập chính xác được sử dụng.

Một Null Session xảy ra khi người dùng thực hiện kết nối tới một hệ thống Windows mà không sử dụng tên người dùng hay mật khẩu. Hình thức kết nối này không thể thực hiện trên bất kỳ hình thức chia sẻ Windows thông thường nào, tuy nhiên lại có thể thực hiện trên chia sẻ quản trị IPC (Interprocess Communication). Chia sẻ IPC được các tiến trình của Windows sử dụng (với tên người dùng là SYSTEM) để giao tiếp với các tiến trình khác qua mạng này. Chia sẻ IPC chỉ được giao thức SMB sử dụng.

Chia sẻ không yêu cầu thông tin đăng nhập IPC thường được sử dụng cho những chương trình giao tiếp với một chương trình khác, tuy nhiên không có gì đảm bảo rằng người dùng không thể kết nối tới một máy tính bằng kết nối IPC này. Kết nối IPC không chỉ cho phép truy cập không giới hạn vào máy tính, mà còn trao quyền truy cập vào tất cả các máy tính trên mạng, và đây là những gì mà tin tặc cần để xâm nhập hệ thống.

Phương thức tấn công sử dụng Null Session


Giờ đây chúng ta đã biết cách thức hoạt động của Null Session, tuy nhiên ‘liệu tin tặc có thể sử dụng hình thức tấn công này dễ dàng hay không?’ Câu trả lời là ‘khá dễ dàng’. Kết nối Null Session có thể được thiết lập trực tiếp từ một lệnh Windows mà không cần sử dụng công cụ bổ sung, đó chính là lệnh NET. Lệnh NET có thể thực hiện nhiều chức năng quản trị, khi sử dụng lệnh này chúng ta có thể tạo một kết nối tới một chia sẻ tiêu chuẩn trên máy chủ đích, tuy nhiên kết nối này sẽ thất bại do những thông tin đăng nhập không chính xác.


Hình 1: Kết nối thất bại vào một mạng chia sẻ sử dụng lệnh NET.

Khi sử dụng lệnh NET, chúng ta có thể thay đổi tên chia sẻ kết nối tới chia sẻ quản trị IPC$. Khi đó kết quả sẽ khả quan hơn.


Hình 2: Kết nối Null Session thành công với lệnh NET.


Lúc này, chúng ta đã thiết lập một kết nối Null Session tới máy tính nạn nhân. Tuy nhiên, chúng ta vẫn chưa có quyền truy cập quản trị trên máy tính này do đó chưa thể bắt đầu duyệt tìm ổ cứng hay lấy mật khẩu. Cần nhớ rằng, chia sẻ IPC được sử dụng để giao tiếp giữa các tiến trình, do đó quyền truy cập của chúng ta sẽ bị giới hạn xuống quyền truy cập của tên người dùng SYSTEM. Chúng ta có thể sử dụng lệnh NET để lấy nhiều thông tin hơn từ máy tính mục tiêu, tuy nhiên có nhiều công cụ tự động hóa sẽ thực hiện các công việc rắc rối này.

Trong ví dụ này, chúng ta sẽ sử dụng công cụ lấy thông tin từ Null Session có tên Enum. Enum là một tiện ích nền tảng dòng lệnh miễn phí có thể sử dụng để lấy tên người dùng, tên nhóm, thông tin hệ thống, … Một trong những thông tin quan trong nhất với tin tặc đó là danh sách người dùng trên hệ thống. Với danh sách này, chúng ta có thể tiến hành dự đoán mật khẩu và thậm chí áp dụng các biện pháp phá mật khẩu. Để lấy danh sách người dùng với Enum, hãy chạy lệnh sau:


Hình 3: Sử dụng công cụ Enum để lấy danh sách người dùng trên hệ thống.

Với danh sách người dùng trong tay, chúng ta có thể truy lục chính sách mật khẩu của hệ thống để có thể dễ dàng phá mật khẩu.


Hình 4: Sử dụng Enum để hiển thị chính sách mật khẩu của hệ thống.

Ngoài ra chúng ta có thể lấy danh sách các chia sẻ trên máy tính của nạn nhân.


Hình 5: Sử dụng Enum để hiển thị các chia sẻ trên một hệ thống.

Enum cung cấp một số tùy chọn khác có thể sử dụng để lấy những kiểu thông tin tương tự, thậm chí tích hợp cả một công cụ tấn công tra cứu cơ bản giúp bẻ mật khẩu dựa trên danh sách từ được người dùng cung cấp.


Hình 6: Danh sách tùy chọn của Enum.

Những tùy chọn này không thể lấy chính xác thông tin đăng nhập vào hệ thống, tuy nhiên đây là một bước đệm và là một thành phần chủ chốt để tin tặc giành được quyền truy cập vào máy tính của nạn nhân.

Phương pháp phòng vệ trước Null Session

Khi nghĩ đến tin tặc và các cuộc tấn công, có lẽ câu hỏi đầu tiên thường được nghĩ đến đó là ‘liệu hệ thống của chúng ta có điểm yếu hay không?’ Câu trả lời phụ thuộc vào hệ điều hành trên môi trường mạng. Nếu đang sử dụng hệ điều hành Windows XP, Windows Server 2003 hay Windows 2000, thì ở một mức độ nào đó câu trả lời là “có”. Hình thức tấn công này khó có thể thực hiện khi người dùng sử dụng các phiên bản hệ điều hành cao hơn, tuy nhiên Windows XP và Windows Server 2003 vẫn là những hệ điều hành được ưa chuộng nhất. Có một số phương pháp khác mà chúng ta có thể thực hiện để chặn Null Session.
Chặn Null Session trong Registry

Khả năng tương thích của những phần mềm hợp pháp cùng với thực tế rằng hầu hết doanh nhiệp phải gắn bó với các hệ điều hành cũ để thắt chặt ngân sách là hai lý do chính khiến máy trạm và máy chủ Windows 2000 vẫn tồn tại. Nếu vẫn sử dụng Windows 2000, chúng ta chỉ cần thực hiện một thay đổi nhỏ trong Registry là có thể chặn khả năng lấy thông tin sử dụng Null Session.

Khi truy cập vào Regedit và duyệt tìm tới key HKLM/System/CurrentControlSet/Control/LSA/RestrictAnonymous thì chúng ta có thể cấu hình 3 tùy chọn bao gồm:
  • 0 – Cài đặt mặc định. Truy cập Null Session không giới hạn.
  • 1 – Không những loại bỏ Null Session mà còn chặn hiển thị tên người dùng và các chia sẻ.
  • 2 – Loại bỏ mọi giá trị tới Null Session bằng cách chặn mọi truy cập.
Như chúng ta thấy, Null Session không thể bị loại bỏ hoàn toàn, tuy nhiên, khả năng truy cập của nó sẽ bị giới hạn nếu lựa chọn tùy chọn cài dặt là 2. Cần thận trọng khi cấu hình tùy chọn này trên máy chủ Windows 2000 vì có thể làm hỏng Clustering.

Trên Windows XP và Windows Server 2003, chúng ta có thể thực hiện tác vụ tương tự trong ba Registry Key:

HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous
  • 0 – Cài đặt mặc định. Null Session có thể được sử dụng để liệt kê các chia sẻ.
  • 1 – Null Session không thể liệt kê các chia sẻ.
HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM
  • 0 – Null Session có thể liệt kê danh sách người dùng.
  • 1 – Cài đặt mặc định. Null Session không thể liệt kê danh sách người dùng.
HKLM\System\CurrentControlSet\Control\Lsa\EveryoneIncludesAnonymous
  • 0 – Cài đặt mặc định. Null Session không được trao đặc quyền.
  • 1 – Null Session được xem là một phần của nhóm người dùng (khá nguy hiểm và có thể cho phép truy cập chia sẻ).

Hình 7: Hiệu chỉnh key RestrictAnonymous trong Registry.

Trong hình 7, mặc định Windows XP chỉ cho phép liệt kê các chia sẻ bởi hàm mặc định. Đây là cài đặt bảo mật hơn so với cài đặt tương tự trong Windows 2000, tuy nhiên nó vẫn cung cấp thông tin cho một kẻ xâm nhập.

Chặn truy cập tại cấp độ mạng

Nếu không thể thực hiện các thay đổi trong các Registry Key được nhắc đến ở trên, thì chúng ta có thể chặn mọi truy cập với Windows Firewall hay Network Firewall. Tiến trình này có thể được thực hiện bằng cách chặn truy cập tới các cổng liên quan tới NetBIOS và SMB thông qua TCP/IP. Những cổng này bao gồm:
  • Cổng TCP 135.
  • Cổng UDP 137.
  • Cổng UDP 138.
  • Cổng UDP 139.
  • Cổng TCP và UDP 445.
Những cổng này được sử dụng cho mọi chức năng kết nối mạng của Windows, bao gồm chia sẻ File, in ấn qua mạng, Clustering, và quản trị từ xa.

Lưu ý: Tiến trình chặn truy cập tới cổng cần được cân nhắc kỹ trước khi thực hiện trên nhiều cổng.

Xác định Null Session với IDS

Nếu những thay đổi trong Registry hay Firewall loại bỏ chức năng của các ứng dụng mạng thì chúng ta phải sử dụng một phương pháp khác. Thay vì chặn thống kê qua Null Session, một trong những biện pháp hữu hiệu nhất đó là phát hiện ra tấn công Null Session một cách sớm nhất để có thể triển khai những biện pháp khắc phục kịp thời như khi thực hiện một sự kiện bảo mật mạng thông thường.

Nếu đang sử dụng Snort, một IDS/IPS (Hệ thống phát hiện và chặn xâm nhập mạng) phổ biến nhất hiện nay trong môi trường sản xuất, thì rule sau đây sẽ phát hiện thống kê Null Session:
alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:”NETBIOS NT NULL session”; flow:to_server.establshed;

content: ‘|00 00 00 00 57 00 69 00 6E 00 64 00 6F 00 77 00 73 00 20 00 4E 00 54 00 20 00 31 00 33 00 38 00 31|’; classtype:attempted-recon;)
Rule này sẽ không ngăn chặn các kết nối Null Session, tuy nhiên nó sẽ thông báo khi Null Session xảy ra.

Kết luận

Khái niệm Null Session không phải là một mối đe dọa mới, tuy nhiên nó luôn bị lãng quên và coi thường. Sử dụng hình thức tấn công Null Session, tin tặc có thể lấy thông tin từ hệ thống. Hiểu được cách thức vận hành của Null Session là một yêu cầu bắt buộc với những người đảm trách bảo mật cho các hệ thống trên mạng.

RefLink: http://ceh.vn/ceh3/index.php?option=com_content&view=article&id=101:tim-hiu-tn-cong-null-session&catid=16:tin-bo-mt&Itemid=105