Danh mục

Giải mã password của SQL Server :

Số trang: 9      Loại file: pdf      Dung lượng: 85.06 KB      Lượt xem: 15      Lượt tải: 0    
Hoai.2512

Phí tải xuống: 5,000 VND Tải xuống file đầy đủ (9 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Giải mã password của SQL Server Cách thức lưu trữ password của SQl Server: SQL server sử dụng một hàm undocumented ( tạm gọi là hàm không cơ sở ) , pwdencrypt() để mã hoá mã số của người dùng , chúng được lưu trữ trong bảng sysxlogin của cơ sở dữ liệu chính (master database) .
Nội dung trích xuất từ tài liệu:
Giải mã password của SQL Server :Giải mã password của SQL Server :trang này đã được đọc lầnCách thức lưu trữ password của SQl Server:SQL server sử dụng một hàm undocumented ( tạm gọi là hàm khôngcơ sở ) , pwdencrypt() để mã hoá mã số của người dùng , chúngđược lưu trữ trong bảng sysxlogin của cơ sở dữ liệu chính (masterdatabase) . Đây có lẽ là điều mà nhiều người biết . Điều không đượccông bố là những yếu tố của hàm pwdencrypy() . Bài viết sau sẽthảo luận về hàm này cũng như những điểm yếu trong cách mã hoámã số của SQL Server .Một mã số khi đã mã hoá trông ra sao:Sử dụng phương pháp phân tích truy vấn ( Query Analyzer) , hoặccông cụ SQL mà bạn chọn , thực thi đoạn truy vấn lựa chọn mã số từmaster.dbo.sysxlogins tại name=”sa” . Bạn sẽ nhận được đoạn trả vềtương tự như đoạn sau:0x01008D504D65431D6F8AA7AED333590D7DB1863CBFC98186BFAE06EB6B327EFA5449E6F649BA954AFF4057056D9BĐó là mã hoá của mã số của tài khoản truy nhập “sa” trong máy củatôi.Chúng ta có thể nhận được gì từ pwdencrypt() về cách mã hoá?Thời gianTruy vần lựa chọn pwdencrypt(“foo”) tạo ra0x0100544115053E881CA272490C324ECE22BF17DAF2AB96B1DC9A7EAB644BD218969D09FFB97F5035CF7142521576nhưng chỉ vài giây sau vẫn với truy vấn pwdencrypt ta lại nhận được0x0100D741861463DFFF7B5282BF4E5925057249C61A696ACB92F532819DC22ED6BE374591FAAF6C38A2EADAA57FDFHai đoạn mã hoá trên khác nhau nhưng đầu vào foo thì lại giốngnhau .Từ đây ta có thể suy luận ra rằng thời gian đóng một vai tròquan trọng trong việc tạo ra và lưu trữ password . Điều này dẫn tớihai người sử dụng khác nhau sẽ có mã hoá khác nhau cho dù họcùng dùng 1 mã số .Trường hợpChạy đoạn truy vần pwdencrypt(“AAAAAA”) sẽ trả về0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819BTa thấy rằng có lẽ có 2 password được tạo ra ở đây. Hãy để tôi chianó ra0x01008444930543174C59CC918D34B6A12C9CC9EF99C4769F819B43174C59CC918D34B6A12C9CC9EF99C4769F819BBạn có thể nhận ra 40 kí tự cuối cùng giông như 40 kí tự áp chót .Như vậy có lẽ password đã được lưu trữ 2 lần? 1 trong chúng làpassword theo kiểu bình thường , cái còn lại là kiểu viết hoa củapassword.Clear SaltTừ những gì chúng ta biết , sự thay đổi thời gian dẫn tới thay đổipassword mã hoá , pass mã hoá này phải sẵn sàng trước khi userđăng nhập vào hệ thống và phải có sự đối chiếu giữa pass mã hoá vàpass của họ trong cơ sở dữ liệu .Trong kết quả trên 8449305 là đầura của pass qua hàm pwdencrypt() . Kết quả nhận được thông quatrình tự sau : Hàm time() của C được gọi và là khởi đầu cho hàmsrand(). Srand() cung cấp đầu vào cho hàm rand() tạo ra một sốnguyên ngẫu nhiên . SQl chuyển số này thành kiều short , ta gọi sốnày là SN1. Hàm rand() một lần nữa được thực thi và tạo nên 1 sốngẫu nhiên khác , ta gọi là SN2. SN1 và SN2 được kết hợp để tạo ra1 số nguyên , SN1 trở thành phần chính và SN2 là phần phụ , SN1 vàSN2 tạo thành salt . Salt trở thành password.Mã hoá passwordMã số của người dùng được chuyển thành UNICODE nếu như chưaphải là kiểu này . Salt sau đó được nối thêm vào sau cùng .Tổ hợpnày được gửi tới hàm mã hoá trong advapi32.dll để tạo ra mã hoá sửdụng thuật toán mã hoá hoặc SHA.Sau đó password được chuyểnsang dạng upper-case( chữ hoa) , salt được gắn vào cuối và một SHAkhác được tạo ra .0x0100 Phần đầu cố định84449305 Salt từ 2 hàm rand()43174C59CC918D34B6A12C9CC9EF99C4769F819B Mã hoá SHA chữthường43174C59CC918D34B6A12C9CC9EF99C4769F819B Mã hoá SHA ch ữhoaQuá trình xác thựcKhi một người dùng xác nhập vào SQL Server các quá trình sau diễnra . Đầu tiên SQl Sever xác thực password của người này trong cơ sởdữ liệu và xuất “salt” như 84449305 trong ví dụ nêu trên.Salt nàyđược gắn vào sau password của người dùng tạo ra SHA. Tổ hợp nàyđược so sánh với tổ hợp trong cơ sở dữ liệu và nếu giống thì OK .Sự kiểm tra password của SQL ServerQuá trình này được thực thi gần giống như quá trình xác thực. Tuynhiên đầu tiên phải tạo ra tổ hợp từ tổ hợp chữ hoa .Mã nguồn cho một công cụ tấn công đơn giản theo kiểu từ điển///////////////////////////////////////////////////////////////////////////////////// SQLCrackCl//// Chương trình tấn công theo kiểu từ điển// tổ hợp pass chữ hoa . Một khi// đã tìm ra thì thử mọi trường// hợp chữ thường có thể//// Đoạn mã viết bởi David Litchfield to// để tấn công password của Microsoft SQL Server 2000// Nó có thể được thực thi mà không sử dụng CryptoAPI.//// (Biên dịch với VC++ và liên kết với thư viện advapi32.lib// Chắc chắn rằng Platform SDK cũng đã được cài đặt!)////////////////////////////////////////////////////////////////////////////////////#include #include #include FILE *fd=NULL;char *lerr = Length Error! ;int wd=0;int OpenPasswordFile(char *pwdfile);int CrackPassword(char *hash);int main(int argc, char *argv[]){int err = 0;if(argc !=3){printf( *** SQLCrack *** );printf(C:\>%s hash passwd-file ,argv[0]);printf(David Litchfie ...

Tài liệu được xem nhiều: