Hacking Database: SQL Server (MSSQL) GVHD: Nguyễn Duy Nhóm 19 SV1: Nguyễn Mạnh Tuấn - 08520439 SV2: Nguyễn Hữu Tú - 08520452 SV3: Trần Quang Vũ - 08520479 SV4: Lưu Xuân Khoa – 08520498 MMT03/UIT NỘI DUNG 2 I. Lý thuyết: 1. SQL SERVER SQL Server là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS) ) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS. 2. Điểm yếu của Microsoft SQL Những người thiết kết MS SQL tạo ra một số thủ tục mặc định được lưu sẵn chung với sản phẩm của mình để giúp cho webdesigner linh động hơn. Các thủ tục này không có gì khác mà chính là các lớp hàm, được dùng để thực hiện những nhiệm vụ nào đó dựa trên các biến được truyền cho chúng. Chính những thủ tục này rất quan trọng đối với hacker, 1 số trong đó gồm: • Sp_password -> đổi password cho 1 tên ruy cập (login name) nào đó Vd: exec sp_password ‘oldpass’, ‘newpass’, ‘username’’ • Sp_tables ->hiển thị tất cả table trong database hiện tại Vd: exec sp_tables • Xp_cmdshell -> cho phép chạy câu lệnh bất kỳ lên server với quyền ad min của database ( cái này nguy hiểm nhất, vì thông thường database được cài mặc định với quyền root) • xp_msver -> hiển thị version của SQL server và tất cả thông tin về HĐH được sử dụng. • xp_regdeletekey -> xoá một key trong registry của windows • xp_regdeletevalue -> xoá một giá trị trong registry • xp_regread -> in 1 giá trị trong registry lên màn hình • xp_regwrite -> gán 1 giá trị mới cho 1 key • xp_terminate_process -> ngừng một process nào đó Đây là một số các lệnh quan trọng. Thật ra có hơn 50 loại thủ tục như thế. Nếu muốn database được an toàn thì điều nên làm là xoá tất cả những thủ tục đó đi bằng cách mở Master database dùng chương trình MS SQL Server Enterprise Manager. Mở folder Extended Stored Procedures và xoá các thủ tục lưu trong đó bằng cách nhấn chuột phải và chọn delete . Lưu ý: "Master" là một database quan trọng của SQL chứa tất cả thông tin về hệ thống như là login name và các thủ tục có sẵn. Nếu 1 hacker xoá master database thì SQL server sẽ bị down vĩnh viễn. Ngoài "Master" db ra còn có "Syslogins" là table hệ thống mặc định chứ tất cả username và password để login vào db ( user của db khác user của ứng dụng web ). Điều nguy hiểm nhất trong MS SQL là MS SQL mặc định có một user là "sa" với password "" ( không có pass ), hoặc người dùng có thay đổi mật khẩu nhưng với độ bảo mật yếu, dễ bị đoán. 3. Ngữ cảnh và mục đích đạt được. MSSQL cho phép người dùng có thể đăng nhập từ xa trên các máy trạm. Chính vì vậy ta có thể lợi dụng điều này để có thể đăng nhập vào server với quyền “sa”. Sau khi đã vào được server ta có thể làm những việc sau: 3 • Thêm tài khoản vào Administrator Group để có thể tiện lợi cho các lần xâm nhập sau. • Đọc và crack file SAM. • Upload backdoor, mở đường cho các lần thâm nhập sau. II. Mô hình triển khai: Ở đây ta xây dựng mô hình máy client và máy server nằm trong cùng mạng LAN để mô phỏng việc đăng nhập vào Database Server từ máy khác 1. Các công cụ cần sử dụng để tấn công: - Chương trình dùng để scan port và ip address: nmap (http://nmap.org) - Chương trình để attack server thông qua brute force: medusa hoặc là sqlbf - Chương trình để đăng nhập từ xa vào server: osql.exe - Backdoor để cài vào server khi đã thâm nhập được: netcat. 2. Từng bước triển khai tấn công: - Scan port và ip address, tìm kiếm các host trên đó đang chạy Microsoft SQL - Dùng tool dò password của sa bằng phương pháp brute force - Sử dụng password vừa tìm được để đăng nhập từ xa vào server. - Sử dụng các Extended Stores Procedures để thực hiện các việc như: o Thêm tài khoản vào administrator group o Đổ SAM o Upload Backdoor III. Triển khai tấn công: 1. Tìm ra các máy đang chạy Microsoft SQL Đầu tiên chúng ta phải tìm ra địa chỉ IP có chạy MSSQL. Chương trình scanner thường được sử dụng là nmap. Cần lưu ý là port mặc định chạy MSSQL là 1433, vì vậy chúng ta sẽ bắt đầu scan các ip trên 1 port cố định 1433. Ta có thể sử dụng lệnh sau 4 Kết quả trả về như sau: Như vậy ta có thể thấy là host 192.168.1.118 đang listening trên port 1433. 2. Tìm kiếm các thông tin chi tiết về host đó Thông tin có thể là version của Microsoft SQL hoặc là có thêm các port phụ nào đang mở hay không. Chúng ta sẽ sử dụng câu lệnh sau với tham số -A để lấy toàn bộ thông tin có thể lấy được từ host 192.168.1.118 Kết quả trả về như sau 5 Từ kết quả có được ta có thể thấy rằng version của database là SQL Server 2008 và chỉ listen trên 1 port duy nhất là 1433. 3. Tìm lỗi bảo mật để sử dụng Khi đã có được các thông tin về phiên bản của database server, ta có thể tìm kiếm thêm thông tin về các lỗi bảo mật của phiên bản đó trên các trang http://cve.mitre.org/cve/cve hoặc http://www.metasploit.com/ để có thể có thêm nhiều phương án tiếp cận server. 4. Tấn công brute force Quay trở lại cuộc tấn công, giờ ta có thể sử dụng các tool dò pass như medusa hoặc sqlbf hoặc hydra để tìm ra user và password của server thông qua 1 file dictionary.txt lưu các cụm từ mà ta đoán có thể là user và password nào đó bằng câu lệnh. Sau khi tìm được user và password medusa sẽ hiển thị chúng lên màn hình cho cho chúng ta. Sử dụng username và password đó để đăng nhập vào server bằng các chương trình như là osql, hoặc là sqlcmd có sẵn trong bộ microsoft sql server ta có thể login vào database server. 6 Như vậy ta đã đăng nhập thành công vào server, tại đây ta có thể dùng toàn quyền của user vừa đăng nhập để thao tác trên server, ví dụ: 5. Thao tác trên cơ sở dữ liệu Giờ ta có thể thêm tài khoản vào group admin bằng các câu lệnh sau Exec xp_cmdshell ‘net user alone hacked /ADD’ Exec xp_cmdshell ‘net localgroup /ADD Administrators alone’ Câu lệnh trên sẽ tạo tài khỏa alone với pass là hacked và đưa nó vào group administrators Do sa là tài khoản chạy với quyền local system nên ta còn có thể đọc file SAM exec xp_regread ‘HKEY_LOCAL_MACHINE’,’SECURITY\SAM\Domains\Account ‘,’F’ Upload backdoor netcat để phục vụ cho các lần xâm nhập sau. Ngoài ra các công cụ của hãng NGS cũng phục vụ rất tốt cho việc tấn công, kiểm tra các server sử dụng MSSQL. NGSSquireL for SQL SERVER: Với chương trình này, sau khi điền đầy đủ các thông tin để đăng nhập vào server, nó sẽ quét toàn bộ hệ thống và đưa ra các lỗi đầy đủ của server đó. 7 NGSQL Crack: sử dụng để crack các password đã hash của MSSQL IV. Nhận xét: Ưu: sử dụng các chương trình nhỏ gọn, dễ sử dụng. Khuyết: - Không tối ưu nếu server được đặt password tốt. - Chậm vì phải dò pass quá lâu nếu dictionary lớn. - Thực hiện attemp server nhiều lần khi dò pass khiến dễ bị phát hiện. Giải pháp phòng chống: - Thực hiện chính sách đặt password tốt - Sử dụng các phiên bản SQL Server cao hơn (2008 trở lên) vì có cài mặc định thì tài khoản “sa” đã được disable. 8 . thuyết: 1. SQL SERVER SQL Server là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS) ) sử dụng Transact -SQL để trao đổi dữ liệu giữa Client computer và SQL Server. nhập vào server bằng các chương trình như là osql, hoặc là sqlcmd có sẵn trong bộ microsoft sql server ta có thể login vào database server. 6 Như vậy ta đã đăng nhập thành công vào server, tại. Tìm ra các máy đang chạy Microsoft SQL Đầu tiên chúng ta phải tìm ra địa chỉ IP có chạy MSSQL. Chương trình scanner thường được sử dụng là nmap. Cần lưu ý là port mặc định chạy MSSQL là 1433, vì