Hydra는 한마디로 "전 세계에서 가장 빠르고 강력한 로그인 무차별 대입(Brute-Force) 공격 도구"입니다.
작동 원리: 수천, 수만 개의 비밀번호가 담긴 사전 파일(Wordlist)을 가지고 서버에 하나씩 대입해 보며 맞는 비밀번호를 찾아냅니다.
특징: 매우 빠르며(멀티 스레드 지원), SSH, FTP, HTTP, MySQL, Telnet 등 50가지가 넘는 프로토콜을 지원합니다.
용도: 취약한 비밀번호(1234, password 등)를 사용하는 계정을 찾아내어 침투할 때 사용합니다.
hydra -l [아이디] -P [비밀번호파일] [대상IP] [프로토콜]
-l (소문자 L): 공격할 대상의 아이디를 직접 입력할 때 씁니다. (예: root, admin)
-L (대문자 L): 여러 아이디가 적힌 파일을 사용할 때 씁니다.
-p (소문자 P): 특정 비밀번호 하나만 넣어볼 때 씁니다.
-P (대문자 P): 비밀번호 후보들이 들어있는 사전 파일을 지정할 때 씁니다.
-t: 동시에 몇 개의 스레드(연결)를 돌릴지 결정합니다. (숫자가 클수록 빠르지만 서버가 뻗을 수 있습니다.)
-vV: 공격 과정을 상세하게 화면에 보여줍니다.
hydra를 실습하기 위해 kali linux에서 txt파일을 만들고 안에 비밀번호로 추정되는 것들을 조금 넣었다
Kali Linux에는 기본적으로 /usr/share/wordlists/ 경로에 공격용 사전 파일들이 들어있지만 용량이 너무 커서 작은걸로 테스트했다.
hydra -l root -P ~/Hydra/pass.txt 192.168.200.23 ssh -vV
비밀번호를 하나씩 대입해본다.
초록색으로 된 결과가 비밀번호를 찾은 코드이다
로그 확인: 공격을 당하는 Red Hat 서버에서는 /var/log/secure 파일을 통해 누군가 계속 로그인을 시도하는 흔적을 실시간으로 볼 수 있습니다. (방어자의 관점)
sudo journalctl -f -u sshd
1.로그인 실패 기록 (Brute-Force의 흔적)
로그 내용: password check failed for user (root) / Failed password for root from 192.168.200.30
의미: Hydra가 pass.txt에 있는 틀린 비밀번호를 대입했을 때 남는 기록입니다.
정보: 공격자의 IP는 192.168.200.30(Kali Linux)이며, root 계정 탈취를 시도하고 있음을 알 수 있습니다.
의미: 드디어 비밀번호가 맞았습니다! 련고님이 pass.txt에 넣은 비밀번호 중 하나가 실제 서버 비밀번호와 일치하여 로그인에 성공했다는 뜻입니다.
후속 로그: session opened for user root가 뜨면서 공격자가 서버의 터미널 권한을 획득했음을 보여줍니다.
의미: 로그인을 시도하거나 성공한 후, 세션이 종료되었음을 의미합니다.
효과: 아까처럼 Hydra가 수백 번 찌르기도 전에 IP가 차단되어 공격이 중단됩니다.
설정 방법: /etc/ssh/sshd_config 파일에서 수정
PermitRootLogin no
설정 파일은 보통 위에서 아래로 읽기 때문에, 맨 위에 적어주는 것이 좋습니다. vi로 파일을 열어 가장 첫 번째 줄에 PermitRootLogin no를 적는다.
