Hydra 기본 명령어 배우기

HydraBeginner
지금 연습하기

소개

이 랩에서는 다재다능한 비밀번호 크래킹 도구인 Hydra 를 사용하는 데 필요한 필수 명령어와 기술을 배우게 됩니다. 사용자 이름 (-l/-L), 비밀번호 (-p/-P), 포트 (-s) 지정을 포함한 주요 옵션을 사용하여 기본적인 명령 구조를 살펴보고, 테스트 서버에 대한 간단한 SSH 공격을 실습합니다.

이 연습을 통해 대상 구성, 공격 실행 및 출력 해석을 안내받을 것입니다. 이 랩을 완료함으로써 네트워크 서비스에 대한 기본적인 무차별 대입 공격 시도를 위한 Hydra 의 핵심 기능에 대한 실질적인 경험을 얻게 될 것입니다.

중요: 이 랩은 데스크톱 인터페이스를 위해 설계되었습니다. 단일 터미널 인터페이스에서는 명령을 실행하지 마십시오.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 83%입니다.학습자들로부터 99%의 긍정적인 리뷰율을 받았습니다.

Hydra 명령어 구조 이해

이 단계에서는 무차별 대입 공격을 통해 비밀번호 보안을 테스트하는 강력한 도구인 Hydra 의 기본적인 명령 구조를 살펴보겠습니다. 시작하기 전에 Hydra 가 약한 자격 증명을 식별하기 위해 네트워크 서비스에 대해 다양한 사용자 이름과 비밀번호 조합을 체계적으로 시도한다는 점을 이해하는 것이 중요합니다.

기본 Hydra 명령은 다음과 같은 패턴을 따릅니다.

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] [-SuvV46] [service://server[:PORT][/OPT]]

각 부분이 무엇을 하는지 이해하기 위해 가장 일반적으로 사용되는 옵션을 자세히 살펴보겠습니다.

  • -l 또는 -L: 테스트할 단일 사용자 이름 (-l) 또는 여러 사용자 이름이 포함된 파일 (-L) 을 지정할 수 있습니다.
  • -p 또는 -P: 사용자 이름과 유사하게, 단일 비밀번호 (-p) 또는 파일에서 여러 비밀번호 (-P) 를 테스트할 수 있습니다.
  • -t: Hydra 가 동시에 시도하는 횟수 (병렬 스레드) 를 제어합니다.
  • -s: 테스트 중인 서비스가 표준 포트 번호를 사용하지 않는 경우 중요합니다.
  • -vV: 공격 중에 자세한 진행 정보를 표시합니다.
  • -o: 나중에 검토할 수 있도록 결과를 지정된 파일에 저장합니다.

Hydra 가 제대로 작동하는지 확인하고 사용 가능한 모든 옵션을 확인하기 위해 도움말 메뉴를 표시하는 간단한 명령으로 시작합니다.

hydra -h
hydra help menu

이 명령을 실행하면 Hydra 의 전체 옵션 및 명령 목록을 볼 수 있습니다. 이 출력은 도구가 제대로 설치되어 보안 테스트 연습을 할 준비가 되었음을 확인합니다. 도움말 메뉴는 작업 중에 특정 명령 구문을 확인해야 할 때 유용한 참조 자료이기도 합니다.

대상 호스트 및 포트 지정

이 단계에서는 Hydra 를 사용할 때 대상 호스트와 포트를 지정하는 방법을 배우게 됩니다. 이는 공격을 올바른 서비스로 전달하는 데 필수적입니다. 봉투에 주소를 쓰는 것과 같다고 생각하십시오. 메시지를 전달하려면 올바른 대상 (IP/호스트 이름) 과 특정 사서함 (포트) 이 필요합니다.

Hydra 에서 대상 정보를 지정하는 기본 형식은 다음과 같습니다.

hydra [options] < service > :// < target > [:port]

각 구성 요소를 자세히 살펴보겠습니다.

  • <service>: 공격하려는 프로토콜 또는 서비스 (예: ssh, ftp, http). 이는 Hydra 에게 어떤 종류의 인증을 시도할지 알려줍니다.
  • <target>: 대상 서버의 IP 주소 또는 호스트 이름입니다. 이는 접근하려는 건물 주소와 같습니다.
  • [:port]: 선택적 포트 번호입니다. 서비스는 일반적으로 표준 포트 (예: SSH 의 경우 22) 에서 실행되지만, 보안을 위해 다른 포트로 이동되는 경우도 있습니다.

실습을 위해 포트 22 에서 localhost (127.0.0.1) 에서 실행되는 테스트 SSH 서버를 사용합니다. 즉, 학습에 안전한 자체 머신을 공격하는 것입니다. 대상 사양을 확인하려면 다음 명령을 시도하십시오.

hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
hydra test command

다음은 이 테스트 명령에서 일어나는 일입니다.

  • -vV는 Hydra 가 자세한 출력을 표시하여 무슨 일이 일어나고 있는지 확인할 수 있도록 합니다.
  • -l testuser는 테스트 사용자 이름을 지정합니다.
  • -p testpass는 테스트 비밀번호를 제공합니다.
  • ssh://127.0.0.1:22는 Hydra 에게 로컬 머신에서 SSH 인증을 시도하도록 지시합니다.

참고: 이것은 구문을 시연하기 위한 테스트 명령일 뿐입니다. 조각들이 어떻게 맞춰지는지 이해하면 이후 단계에서 실제 자격 증명을 사용합니다.

사용자 이름 및 비밀번호 옵션 사용

이 단계에서는 Hydra 가 무차별 대입 공격에 대한 인증 자격 증명을 처리하는 방법을 살펴보겠습니다. Hydra 는 대상 시스템에 로그인하려고 할 때 어떤 조합을 시도해야 하는지 알아야 하므로 이러한 옵션을 이해하는 것이 중요합니다.

Hydra 는 자격 증명을 지정하는 세 가지 주요 방법을 제공하며, 각 방법은 서로 다른 시나리오에 적합합니다.

  1. 단일 자격 증명 테스트 (빠른 확인에 유용):
hydra -l username -p password ssh://127.0.0.1

이 명령은 SSH 서비스에 대해 정확히 하나의 사용자 이름/비밀번호 조합을 시도합니다.

  1. 목록 기반 테스트 (사전 공격에 일반적):
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1

여기서 Hydra 는 usernames.txt의 모든 사용자 이름과 passwords.txt의 모든 비밀번호 간의 모든 가능한 조합을 시도합니다.

  1. 쌍으로 된 자격 증명 파일 (사용자 이름과 비밀번호가 직접 연결된 경우):
hydra -C creds.txt ssh://127.0.0.1

이것은 각 줄에 콜론 (username:password) 으로 구분된 사용자 이름과 비밀번호가 포함된 파일을 사용합니다.

이러한 옵션을 연습하기 위해 테스트 파일을 만들어 보겠습니다. 먼저, 일반적인 관리 계정을 포함하는 간단한 사용자 이름 목록을 만듭니다.

echo -e "admin\nroot\ntestuser" > usernames.txt

다음으로, 실제 시스템에서 자주 발견되는 몇 가지 약한 비밀번호가 있는 비밀번호 목록을 만듭니다.

echo -e "password\n123456\nadmin123" > passwords.txt

이제 자세한 출력 (-vV) 으로 테스트 명령을 실행하여 Hydra 가 이러한 파일을 처리하는 방식을 확인할 수 있습니다.

hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
hydra test command

-vV 플래그는 Hydra 가 자세한 출력을 표시하여 공격 진행 상황을 관찰하고 각 단계에서 무슨 일이 일어나는지 이해할 수 있도록 합니다.

간단한 SSH 공격 명령어 실행

이 단계에서는 이전 학습 내용을 모두 결합하여 Hydra 를 사용하여 완전한 SSH 무차별 대입 공격을 실행합니다. 앞서 준비한 자격 증명을 사용하여 localhost (127.0.0.1) 에서 실행되는 테스트 SSH 서버를 사용합니다. 이 실습을 통해 Hydra 가 SSH 서비스에 대해 다양한 사용자 이름과 비밀번호 조합을 체계적으로 시도하는 방법을 이해할 수 있습니다.

공격을 시작하기 전에 대상 설정이 제대로 작동하는지 확인해 보겠습니다. 수동 SSH 연결을 시도하여 서비스가 실행 중인지 확인합니다.

ssh testuser@127.0.0.1

(비밀번호를 묻는 메시지가 표시되면 "Ctrl+C"를 입력하여 세션으로 돌아갑니다.)

이 수동 테스트는 SSH 서비스가 활성 상태이고 연결 시도에 응답하는지 확인하는 데 도움이 됩니다. Hydra 가 실행되면 유사한 연결 시도를 하지만 여러 번의 시도로 프로세스를 자동화합니다.

LabEx VM 은 환경 변수 PASSWORDlabex의 비밀번호를 제공합니다. 테스트를 위해 비밀번호 파일에 추가해 보겠습니다.

중요: 데스크톱 인터페이스에서 다음 명령을 실행하십시오. 그렇지 않으면 PASSWORD 환경 변수를 얻을 수 없습니다.

echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
environment variable

이제 실제 Hydra 공격 명령을 실행해 보겠습니다. 여기에서 사용자 이름 목록, 비밀번호 목록 및 대상 정보와 같이 준비한 모든 구성 요소를 함께 넣습니다.

hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
hydra test command

각 매개변수가 수행하는 작업을 자세히 살펴보겠습니다.

  • -vV: Hydra 의 진행 상황을 실시간으로 확인할 수 있도록 자세한 출력을 활성화합니다.
  • -L usernames.txt: 시도할 잠재적 사용자 이름이 포함된 파일을 지정합니다.
  • -P passwords.txt: 테스트할 잠재적 비밀번호가 포함된 파일을 지정합니다.
  • -t 4: 사용할 병렬 연결 (스레드) 수를 설정합니다.
  • ssh://127.0.0.1: 대상을 localhost 의 SSH 서비스로 식별합니다.

이 명령은 사용자 이름 및 비밀번호 목록의 모든 조합을 체계적으로 테스트합니다. 제어된 테스트 환경에서는 의도적으로 유효한 자격 증명을 찾지 못하지만 Hydra 가 조합을 통해 작동하는 방식을 정확히 확인할 수 있습니다. 자세한 출력은 Hydra 가 수행하는 각 시도를 보여주어 무차별 대입 프로세스를 이해하는 데 도움이 됩니다.

Hydra 가 실패한 시도를 자동으로 처리하고 다음 조합으로 계속 진행하는 방식을 확인하십시오. 이는 수동 테스트에 비해 자동화된 도구의 강력함을 보여줍니다. Hydra 가 테스트 파일의 모든 가능한 조합을 처리하는 데 몇 분 정도 걸릴 수 있습니다.

명령어 출력 확인

이 단계에서는 SSH 공격을 실행한 후 Hydra 의 출력을 읽고 이해하는 방법을 살펴봅니다. 출력은 공격 성공 여부를 알려주고 귀중한 디버깅 정보를 제공하므로 중요합니다. 초보자는 결과에서 주요 성공 지표를 식별하는 방법을 배우게 됩니다.

4 단계에서 SSH 공격 명령을 실행했을 때 Hydra 는 다음과 같은 출력을 생성했습니다.

[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1   login: testuser   password: testpass
1 of 1 target successfully completed, 1 valid password found

각 부분이 무엇을 의미하는지 자세히 살펴보겠습니다.

  1. [DATA] 줄은 공격 대상 서비스와 주소를 보여줍니다.
  2. [STATUS]는 공격 진행 상황에 대한 실시간 통계를 제공합니다.
  3. 가장 중요한 줄은 다음과 같은 형식으로 발견된 자격 증명을 표시합니다: [port][service] host: IP login: username password: password
  4. 마지막 줄은 공격 결과를 요약합니다.

문서화 및 이후 분석을 위해 -o 옵션을 사용하여 Hydra 의 출력을 파일에 저장할 수 있습니다. 이렇게 하면 테스트 결과에 대한 영구적인 기록이 생성됩니다.

hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1

명령이 완료된 후 저장된 결과를 다음과 같이 볼 수 있습니다.

cat results.txt
hydra test command

이 파일에는 터미널에서 본 것과 동일한 출력이 포함되어 있어 나중에 결과를 검토하거나 팀 구성원과 공유할 수 있습니다.

요약

이 랩에서는 Hydra 를 사용하여 비밀번호 크래킹 (password-cracking) 공격을 수행하기 위한 필수 명령과 기술을 배웠습니다. 연습에서는 -l/-L-p/-P 플래그를 사용한 사용자 이름/비밀번호 지정, -s를 사용한 포트 구성, 기본 Hydra 설치 확인을 포함한 핵심 명령 구문을 다루었습니다.

또한 실용적인 SSH 공격 예제를 통해 <service>://<target>[:port] 형식을 사용하여 대상 지정을 연습했습니다. 이러한 기본적인 기술을 통해 적절한 명령 구조와 대상 정의를 이해하면서 기본적인 Hydra 작업을 실행할 수 있습니다.