Hydra tool 사용하기
Dictionary Attack 이나 Brute force와 같은 공격을 수행할 때 사용하는 공격 툴이다.
https와 post 까지 지원해서, 잘 사용하면 유용한 툴인듯하다!
소개에 따르면 다음과 같은 프로토콜을 지원한다고 한다.
Currently this tool supports the following protocols: Asterisk, AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-POST, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM-POST, HTTPS-GET, HTTPS-HEAD, HTTPS-POST, HTTP-Proxy, ICQ, IMAP, IRC, LDAP, MEMCACHED, MONGODB, MS-SQL, MYSQL, NCP, NNTP, Oracle Listener, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, RDP, Rexec, Rlogin, Rsh, RTSP, SAP/R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1+v2+v3, SOCKS5, SSH (v1 and v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC and XMPP.
현재 9.0 버전까지 나와있다 ㅎㅎ
hydra-9.0 버전 사용하려면 다음 링크에서 다운로드가 가능하다.
https://github.com/vanhauser-thc/thc-hydra/releases
kali에 기본적으로 장착되어 있는 툴인듯 하지만, 최신버전을 위해서 나도 깃에서 9.0 버전을 다운받아 사용했다. JQuery로 보내야 했는데, 최신버전이어야 JQuery까지 지원해 주기 때문이당 ㅠ
hydra-gtk라고 해서 GUI 모드로도 제공해주고 있지만, 나는 그냥 커멘드 형식으로 사용할 것이다.
위 링크에서 다운로드 받아, 압축을 풀거나 git clone을 하면 여러 파일들이 들어있다.
그리고 https://github.com/vanhauser-thc/thc-hydra 여기에서 설치방법에 대해서도 소개해 주고 있다.
./configure –help를 하면 compile 옵션들을 볼 수 있다.
root@kali:~/hydra/thc-hydra-9.0# ./configure --help
Options:
--prefix=path path to install hydra and its datafiles to
--fhs install according to the File System Hierarchy Standard
--with-oracle=prefix prefix for oracle include dir
--with-oracle-lib=prefix prefix for oracle lib dir
--with-ssl=prefix prefix for SSL headers
--with-ssl-lib=prefix prefix for SSL libraries
--disable-xhydra disable compilation of hydra GUI
--nostrip do not per default strip binaries before install
--debug show debug output to trace errors
--help this here
If the CC environment variable is set, this is used as the compiler for the configure tests. The default is "gcc" otherwise.
나는 https-post-form 옵션을 사용해야 했기 때문에 다음과 같은 ./configure --with-ssl=prefix --with-ssl-lib=prefix
2가지 옵션을 사용하여 컴파일하였다.
hydra를 실행하는 명령어의 구성은 다음과 같다.
root@kali:~/hydra/thc-hydra-9.0# hydra -h
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Syntax: hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-c TIME] [-ISOuvVd46] [service://server[:PORT][/OPT]]
Options:
-R restore a previous aborted/crashed session
-I ignore an existing restore file (don't wait 10 seconds)
-s PORT if the service is on a different default port, define it here
-l LOGIN or -L FILE login with LOGIN name, or load several logins from FILE
-p PASS or -P FILE try password PASS, or load several passwords from FILE
-x MIN:MAX:CHARSET password bruteforce generation, type "-x -h" to get help
-y disable use of symbols in bruteforce, see above
-e nsr try "n" null password, "s" login as pass and/or "r" reversed login
-u loop around users, not passwords (effective! implied with -x)
-C FILE colon separated "login:pass" format, instead of -L/-P options
-M FILE list of servers to attack, one entry per line, ':' to specify port
-o FILE write found login/password pairs to FILE instead of stdout
-b FORMAT specify the format for the -o FILE: text(default), json, jsonv1
-f / -F exit when a login/pass pair is found (-M: -f per host, -F global)
-t TASKS run TASKS number of connects in parallel per target (default: 16)
-T TASKS run TASKS connects in parallel overall (for -M, default: 64)
-w / -W TIME wait time for a response (32) / between connects per thread (0)
-c TIME wait time per login attempt over all threads (enforces -t 1)
-4 / -6 use IPv4 (default) / IPv6 addresses (put always in [] also in -M)
-v / -V / -d verbose mode / show login+pass for each attempt / debug mode
-O use old SSL v2 and v3
-q do not print messages about connection errors
-U service module usage details
-h more command line options (COMPLETE HELP)
server the target: DNS, IP or 192.168.0.0/24 (this OR the -M option)
service the service to crack (see below for supported protocols)
OPT some service modules support additional input (-U for module help)
Supported services: adam6500 asterisk cisco cisco-enable cvs ftp http-{head|get|post} http-{get|post}-form http-proxy http-proxy-urlenum icq imap irc ldap2 ldap3[s] mssql mysql(v4) nntp pcanywhere pcnfs pop3 redis rexec rlogin rpcap rsh rtsp s7-300 smb smtp smtp-enum snmp socks5 teamspeak telnet vmauthd vnc xmpp
Hydra is a tool to guess/crack valid login/password pairs. Licensed under AGPL
v3.0. The newest version is always available at https://github.com/vanhauser-thc/thc-hydra
Don't use in military or secret service organizations, or for illegal purposes.
These services were not compiled in: afp firebird memcached mongodb mysql5 ncp oracle postgres radmin2 sapr3 ssh sshkey svn SSL-services (ftps, sip, rdp, oracle-services, ...) and regex support.
Use HYDRA_PROXY_HTTP or HYDRA_PROXY environment variables for a proxy setup.
E.g. % export HYDRA_PROXY=socks5://l:p@127.0.0.1:9150 (or: socks4:// connect://)
% export HYDRA_PROXY=connect_and_socks_proxylist.txt (up to 64 entries)
% export HYDRA_PROXY_HTTP=http://login:pass@proxy:8080
% export HYDRA_PROXY_HTTP=proxylist.txt (up to 64 entries)
Examples:
hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5
hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh
ID와 PW가 전송되는 포맷과 로그인 실패 시 나타나는 문구를 알아야 한다.
그래서 테스트를 하기위해 테스트 페이지를 하나 만들었다.
로그인할때를 burp suite로 보면 전송되는 포맷을 알 수 있다.
따라서 필요한 옵션들을 주고, ID 사전 weakuser와 PW 사전 weakpass 파일을 만들어서 다음과 같은 명령어를 사용할 수 있다.
root@ubuntu:/home/ubuntu/thc-hydra# ./hydra -f -v -V -I -L "weakuser.txt" -P "weakpass.txt" -s 443 192.168.209.138 https-post-form "/ajax.php:ACCESS=true&id='^USER^'&pw=^PASS^':fail"
명령어를 실행하면 다음과 같이 대입을 시작한다!!
일치하는 결과를 찾았을때는 어떤식으로 보이는지는 추후 추가 예쩡!ㅎㅎ