소개
이 실습에서는 비밀번호 취약점에 대해 알아보고, 비밀번호 강도를 테스트하는 데 널리 사용되는 보안 도구인 Hydra 의 사용법을 배웁니다. 연습용 웹사이트를 대상으로 무차별 대입 공격 (Brute-force attack) 을 시뮬레이션하여 취약한 비밀번호가 얼마나 쉽게 노출될 수 있는지 이해하게 될 것입니다.
이 실무 경험은 사이버 보안에서 강력한 비밀번호가 왜 중요한지 증명해 줄 것입니다. 여러분은 Hydra 를 구성하고, 공격 결과를 분석하며, 비밀번호 보안 조치를 평가하는 실질적인 기술을 습득하게 됩니다.
대상 웹사이트 탐색하기
이 단계에서는 테스트할 웹사이트를 살펴보고 무차별 대입 공격의 개념을 소개합니다. 자동화 도구를 사용하기 전에, 기본적인 인증 시스템이 어떻게 작동하는지 그리고 우리가 달성하려는 목적이 무엇인지 이해하는 것이 중요합니다.
실습 환경에서 Web 8080 탭을 엽니다. 그러면 사용자 이름과 비밀번호를 입력할 수 있는 필드가 있는 간단한 로그인 페이지가 브라우저 인터페이스에 나타납니다. 이는 우리가 일상적으로 접하는 많은 웹사이트의 로그인 페이지와 유사합니다.

시스템이 어떻게 반응하는지 확인하기 위해 몇 가지 기본적인 로그인 시도를 해보겠습니다.
첫 번째 시도:
- 사용자 이름:
test - 비밀번호:
password123
- 사용자 이름:
두 번째 시도:
- 사용자 이름:
admin - 비밀번호:
admin
- 사용자 이름:
각 시도 후에는 "Invalid username or password"라는 메시지가 표시됩니다. 이러한 일반적인 응답은 의도된 것입니다. 사용자 이름이 존재하는지, 아니면 비밀번호만 틀린 것인지 알려주지 않습니다. 이를 "모호함을 통한 보안 (Security through obscurity)"이라고 하며, 공격자가 유효한 계정에 대한 정보를 수집하는 것을 방지하는 데 도움이 됩니다.
아무런 제한 없이 계속해서 다른 조합을 시도할 수 있다는 점에 주목하십시오. 실제 운영 시스템에서는 자동화된 공격을 막기 위해 여러 번 로그인에 실패할 경우 계정 잠금이나 CAPTCHA 와 같은 보안 조치가 구현되어 있습니다. 우리 실습 환경에는 이러한 보호 조치가 없으므로 무차별 대입 기법을 시연하기에 적합합니다.
방금 여러분이 수동으로 수행한 작업, 즉 다양한 사용자 이름과 비밀번호 조합을 시도하는 것이 바로 무차별 대입 공격의 수동 버전입니다. 실제 공격에서 해커는 자동화된 도구를 사용하여 초당 수천 개의 조합을 시도합니다. 이 연습은 "password123"이나 "admin"과 같은 단순한 비밀번호가 왜 매우 취약한지, 그리고 왜 시스템에 이러한 공격을 방지하기 위한 적절한 보안 조치가 필요한지 보여줍니다.
비밀번호 목록 검토하기
무차별 대입 공격의 기본 개념을 이해했으므로, 이제 공격자가 사용할 법한 일반적인 비밀번호 목록을 살펴보겠습니다. 시작하기 전에, 무차별 대입 공격은 올바른 조합을 찾을 때까지 가능한 모든 비밀번호 조합을 체계적으로 시도하는 방식으로 작동한다는 점을 알아두어야 합니다. 미리 작성된 비밀번호 목록을 사용하면 이 과정을 훨씬 빠르게 진행할 수 있습니다.
실습 환경의 Desktop Tab으로 돌아갑니다. 이곳에서 모든 명령을 실행하고 결과를 확인할 것입니다.
바탕화면에 있는 Xfce 터미널 아이콘을 더블 클릭하여 엽니다. 터미널은 이 실습에서 명령을 실행하는 주요 도구입니다.

실제 상황에서 공격자들은 과거의 데이터 유출 사고에서 얻은 방대한 비밀번호 목록을 자주 사용합니다. 이러한 목록에는 보안 사고로 노출된 수백만 개의 비밀번호가 포함되어 있습니다. 이번 실습에서는 개념 증명을 위해 인터넷에서 발견되는 취약한 비밀번호들로 구성된 작은 목록을 사용하겠습니다. 이 목록은 이미 준비되어 있으며 /home/labex/project/500-worst-passwords.txt 경로에 위치해 있습니다.
파일의 처음 몇 줄을 보여주는 head 명령어를 사용하여 파일 내용을 확인해 보겠습니다.
head -n 10 500-worst-passwords.txt
이 명령어는 목록의 처음 10 개 비밀번호를 표시합니다. -n 10 옵션은 정확히 10 줄을 보여주도록 지정합니다.
123456
password
12345678
1234
12345
dragon
qwerty
567sjej
mustang
letmein
이 비밀번호들은 안타깝게도 여전히 많은 사람들이 사용하는 흔한 선택지들입니다. 숫자 배열이나 일반적인 단어와 같이 얼마나 단순하고 예측 가능한지 확인해 보십시오. 이것이 바로 공격자들이 무단 액세스를 시도할 때 가장 먼저 이러한 비밀번호들을 시도하는 이유입니다.
이러한 목록을 사용함으로써 공격자는 무차별 대입 공격의 속도를 크게 높일 수 있습니다. 모든 가능한 문자 조합을 시도하는 대신 (수년이 걸릴 수 있음), 가능성이 가장 높은 비밀번호부터 시작하여 성공 확률을 획기적으로 높입니다. 사이버 보안에서는 이를 "사전 공격 (Dictionary attack)"이라고 부르며, 무작위 추측이 아닌 알려진 비밀번호를 사용하는 더 똑똑한 방식의 무차별 대입 공격입니다.
Hydra 설정하기
비밀번호 목록이 준비되었으므로, 이제 무차별 대입 공격 시뮬레이션을 자동화할 도구인 Hydra 를 설정해 보겠습니다. Hydra 는 보안 전문가가 다양한 조합을 체계적으로 시도하여 비밀번호 강도를 테스트하는 데 도움을 주는 강력한 비밀번호 크래킹 도구입니다.
먼저, 테스트하고 싶은 일반적인 사용자 이름이 포함된 간단한 텍스트 파일을 생성하겠습니다. 많은 시스템이 공격자가 먼저 시도해 볼 법한 예측 가능한 기본 사용자 이름을 사용하기 때문에 이 작업은 중요합니다. 다음 명령어를 실행하십시오.
cd ~/project
echo -e "admin\nuser\nroot" > ~/project/usernames.txt
cat ~/project/usernames.txt
첫 번째 명령어 (cd ~/project) 는 올바른 작업 디렉토리에 있는지 확인합니다. 두 번째 명령어는 세 개의 일반적인 사용자 이름 (admin, user, root) 이 각각 새 줄에 적힌 usernames.txt 파일을 생성합니다. 세 번째 명령어는 파일이 올바르게 생성되었는지 확인하기 위해 내용을 출력합니다.
이제 Hydra 가 설치되어 있는지 확인합니다. 실제 환경에서는 직접 설치해야 하지만, 이 실습 환경에서는 다음과 같습니다.
참고: 무료 사용자는 인터넷에 연결할 수 없으므로 Hydra 가 실습 환경에 이미 사전 설치되어 있습니다. 이 명령어를 건너뛰어도 됩니다. Pro 사용자로 업그레이드하여 직접 Hydra 를 설치하는 연습을 해보십시오.
Pro 사용자 전용
sudo apt-get update
sudo apt-get install hydra -y
Hydra 는 잠재적인 사용자 이름과 비밀번호 목록을 가져와 대상 서비스에 대해 각 조합으로 인증을 시도하는 방식으로 작동합니다. HTTP, FTP, SSH 등 많은 프로토콜을 지원합니다. 이 도구는 침투 테스트 전문가가 시스템의 취약한 비밀번호를 식별하는 데 특히 유용합니다.
Hydra 가 제대로 작동하는지 확인하기 위해 버전과 사용 가능한 옵션을 확인할 수 있습니다.
hydra -h
이 명령어는 Hydra 의 도움말 메뉴를 표시하며, 사용 가능한 모든 명령어와 옵션을 보여줍니다. 다양한 공격 모드, 지원되는 프로토콜, 비밀번호 크래킹 시도를 사용자 정의하는 방법 등에 대한 정보를 볼 수 있습니다. 본격적으로 사용하기 전에 Hydra 가 무엇을 할 수 있는지 이해하는 데 유용합니다.
Hydra 를 이용한 비밀번호 크래킹
Hydra 가 설치되고 비밀번호 목록이 준비되었으므로, 이제 이를 사용하여 연습용 웹사이트에 대한 무차별 대입 공격을 시뮬레이션해 보겠습니다. 시작하기 전에, Hydra 는 로그인 페이지에 대해 다양한 사용자 이름과 비밀번호 조합을 체계적으로 시도하는 자동화 도구라는 점을 기억하십시오. 이를 무차별 대입 공격이라고 합니다.
다음 Hydra 명령어를 실행하십시오.
hydra -L ~/project/usernames.txt -P ~/project/500-worst-passwords.txt localhost -s 8080 http-post-form "/:username=^USER^&password=^PASS^:Invalid username or password" -o ~/project/hydra_results.txt
각 부분이 어떤 역할을 하는지 이해하기 위해 명령어를 하나씩 분석해 보겠습니다.
hydra: Hydra 도구를 시작하는 명령어입니다.-L ~/project/usernames.txt: 시도할 잠재적 사용자 이름이 포함된 파일을 지정합니다.-P ~/project/500-worst-passwords.txt: 각 사용자 이름에 대해 테스트할 일반적인 비밀번호가 있는 파일을 가리킵니다.localhost -s 8080: 테스트 대상 웹 서버 주소 (localhost) 와 포트 (8080) 입니다."/:username=^USER^&password=^PASS^:Invalid username or password": Hydra 에게 다음을 지시합니다.- 로그인 페이지 URL (/)
- 로그인 폼 필드 이름 (username 및 password)
- 로그인 실패 시 나타나는 에러 메시지 형태
-o ~/project/hydra_results.txt: 모든 성공적인 시도를 이 출력 파일에 저장합니다.
Hydra 가 실행되기 시작하면 각 사용자 이름과 비밀번호 조합을 시도하는 출력이 표시됩니다. Hydra 가 제공된 파일의 모든 가능한 조합을 체계적으로 처리하므로 이 과정은 몇 분 정도 걸릴 수 있습니다.

Hydra 가 종료된 후, 성공한 조합이 있는지 결과를 확인할 수 있습니다.
cat ~/project/hydra_results.txt

성공적인 로그인은 "login: [username] password: [password] found"와 같은 줄로 나타납니다. 이는 시스템에 대한 액세스 권한을 부여하는 자격 증명을 의미합니다.
이 연습은 몇 가지 중요한 보안 개념을 보여줍니다.
- Hydra 는 수백 개의 비밀번호 조합을 단 몇 분 만에 테스트하여 자동화 도구가 얼마나 빠르게 작동할 수 있는지 보여주었습니다.
- 성공적인 로그인은 취약하거나 일반적인 비밀번호가 얼마나 쉽게 크래킹되는지 증명합니다.
- 실제 상황에서 공격자는 수백만 개의 비밀번호가 담긴 사전을 사용할 수 있으므로, 강력하고 고유한 비밀번호를 사용하는 것이 필수적입니다.
- 수동 시도 (1 단계) 와 자동화 도구의 차이점은 왜 비밀번호 정책이 중요한지를 강조합니다.
도구의 효율성으로 인해 취약한 자격 증명이 얼마나 위험에 노출되기 쉬운지 확인하셨을 것입니다. 이것이 바로 보안 전문가들이 복잡한 비밀번호 사용과 계정 잠금 정책 구현을 강조하는 이유입니다.
요약
이 실습에서는 강력한 비밀번호 크래킹 도구인 Hydra 를 직접 경험하며 비밀번호 보안의 기초를 배웠습니다. 무차별 대입 공격이 어떻게 작동하는지, 왜 취약한 비밀번호가 위험에 처할 수 있는지 살펴보았으며, 사이버 보안에서 강력한 비밀번호 습관이 갖는 중요한 역할을 이해하게 되었습니다.
이 연습은 보안 전문가들이 왜 복잡하고 고유한 비밀번호 사용을 강조하는지 잘 보여주었습니다. 학습 여정에서 보안 도구와 기술을 계속 탐구할 때, 이러한 기술을 항상 윤리적으로 적용해야 함을 잊지 마십시오.



