Hydra 상세 출력 모드 사용

HydraBeginner
지금 연습하기

소개

이 실습에서는 Hydra 의 상세 모드를 사용하여 암호 해독 프로세스에 대한 더 자세한 정보를 얻는 방법을 배웁니다. 이 실습은 FTP 공격 시 다양한 상세 수준을 보여주는 데 중점을 둡니다.

먼저, ~/project 디렉토리 (users.txt 및 passwords.txt) 에 생성된 사용자 이름 및 암호 목록을 사용하여 가상 대상 (127.0.0.1) 에 대한 기본 FTP 로그인 공격을 상세 출력 없이 실행합니다. 그런 다음 -v 옵션을 사용하여 각 시도에 대한 자세한 정보를 표시하고 마지막으로 -V 옵션을 사용하여 실시간으로 각 시도를 표시합니다. 이러한 서로 다른 상세 수준의 출력을 비교함으로써 Hydra 의 상세 옵션을 효과적으로 사용하여 모니터링 및 문제 해결을 개선하는 방법을 이해할 수 있습니다.

상세 출력 없이 FTP 공격 실행

이 단계에서는 Hydra 를 사용하여 상세 출력 없이 기본적인 FTP 로그인 공격을 수행합니다. 즉, Hydra 는 FTP 암호를 해독하려고 시도하지만 각 로그인 시도에 대한 자세한 정보는 화면에 표시하지 않습니다. 이는 공격을 백그라운드에서 실행하거나 터미널을 지저분하게 만들고 싶지 않을 때 유용합니다.

시작하기 전에 Hydra 의 기본 구문을 이해해 보겠습니다.

hydra [options] [service://server[:port]] [OPT]
  • hydra: Hydra 도구를 실행하는 명령어입니다.
  • [options]: 사용자 이름 목록, 암호 목록 및 연결 설정과 같은 공격을 사용자 정의하는 다양한 옵션입니다.
  • [service://server[:port]]: 공격할 서비스 (예: ftp, ssh, http), 대상 서버 주소 및 포트 번호를 지정합니다.
  • [OPT]: 공격 대상 서비스에 특정한 추가 옵션입니다.

이제 이 실습 환경의 기본 작업 디렉토리인 ~/project 디렉토리로 이동합니다.

cd ~/project

다음으로 공격에 사용할 간단한 사용자 이름 목록과 암호 목록을 생성합니다.

  1. 사용자 이름 목록 생성:

    ~/project 디렉토리에 users.txt라는 파일을 만듭니다. 이 파일에는 각 줄에 하나의 사용자 이름이 포함됩니다. nano 텍스트 편집기를 사용하여 파일을 생성하고 편집합니다.

    nano users.txt
    

    다음 사용자 이름을 파일에 추가합니다.

    user1
    user2
    user3
    

    nano 에서 파일을 저장하려면:

    1. Ctrl + X를 눌러 종료합니다.
    2. Y를 눌러 저장을 확인합니다.
    3. Enter를 눌러 파일 이름을 확인합니다.
  2. 암호 목록 생성:

    마찬가지로 ~/project 디렉토리에 passwords.txt라는 파일을 만듭니다. 이 파일에는 각 줄에 하나의 암호가 포함됩니다. nano를 사용하여 파일을 생성하고 편집합니다.

    nano passwords.txt
    

    다음 암호를 파일에 추가합니다.

    password123
    password
    123456
    

    파일을 저장하고 nano를 종료합니다 (Ctrl+X, Y, Enter).

  3. 상세 출력 없이 FTP 공격 실행:

    이제 대상 FTP 서버에 대한 Hydra 공격을 실행합니다. 시연을 위해 가상 대상 127.0.0.1을 사용합니다. 중요: 명시적인 허가 없이 시스템을 공격하지 마십시오.

    터미널에서 다음 명령어를 실행합니다.

    hydra -L users.txt -P passwords.txt ftp://127.0.0.1
    

    이 명령어를 분석해 보겠습니다.

    • -L users.txt: 사용자 이름 목록 파일을 지정합니다. ~/project 디렉토리에 있으므로 상대 경로 users.txt를 사용할 수 있습니다.
    • -P passwords.txt: 암호 목록 파일을 지정합니다. 마찬가지로 상대 경로 passwords.txt를 사용할 수 있습니다.
    • ftp://127.0.0.1: FTP 서비스와 대상 서버 주소를 지정합니다.

    참고: 127.0.0.1에 FTP 서버가 실행되지 않으므로 공격은 실패합니다. 그러나 이 명령어는 상세 출력 없이 FTP 공격을 실행하는 기본 구문을 보여줍니다. Hydra 는 각 사용자 이름과 암호 조합을 시도하지만 성공적인 로그인이 발견되면 결과만 표시합니다. 성공적인 로그인이 발견되지 않으면 암호가 해독되지 않았음을 나타내는 메시지가 표시됩니다.

    출력은 다음과 유사합니다.

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 09:45:40
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:45:52
    

    상세 모드 없이 Hydra 는 공격 구성, 공격 대상 및 최종 결과에 대한 기본 정보만 제공합니다. 개별 로그인 시도는 표시되지 않습니다.

-v 옵션으로 자세한 정보 확인

이 단계에서는 이전 단계의 FTP 공격을 다시 실행하지만 이번에는 -v 옵션을 사용하여 상세 출력을 활성화합니다. 상세 출력은 각 로그인 시도에 대한 더 자세한 정보를 제공하여 문제 해결이나 공격 진행 상황을 이해하는 데 도움이 될 수 있습니다.

Hydra 의 -v 옵션은 "상세"를 의미합니다. 이 옵션을 사용하면 공격 중 화면에 표시되는 정보량이 증가합니다. 여기에는 각 연결 시도에 대한 세부 정보, 시도되는 사용자 이름과 암호, 발생하는 오류가 포함됩니다.

이전 단계에서 생성한 동일한 사용자 이름 및 암호 목록 (users.txtpasswords.txt) 을 계속 사용합니다. ~/project 디렉토리에 있는지 확인하십시오.

  1. 상세 출력으로 FTP 공격 재실행:

    터미널에서 다음 명령어를 실행합니다.

    hydra -L users.txt -P passwords.txt -v ftp://127.0.0.1
    

    이 명령어를 분석해 보겠습니다.

    • -L users.txt: 사용자 이름 목록 파일을 지정합니다.
    • -P passwords.txt: 암호 목록 파일을 지정합니다.
    • -v: 상세 출력을 활성화합니다. 이것이 새로 추가하는 옵션입니다.
    • ftp://127.0.0.1: FTP 서비스와 대상 서버 주소를 지정합니다.

    참고: 이전 단계와 마찬가지로 127.0.0.1에 FTP 서버가 실행되지 않으므로 공격은 실패합니다. 그러나 이 명령어는 -v 옵션의 사용을 보여줍니다.

    출력은 이전 단계보다 더 자세해집니다. 시도되는 사용자 이름과 암호, 발생하는 오류를 포함하여 각 연결 시도에 대한 정보가 표시됩니다. 출력은 다음과 유사합니다.

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 09:45:54
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    [VERBOSE] Resolving addresses ... [VERBOSE] resolving done
    Process 1216: Can not connect [unreachable], retrying (1 of 1 retries)
    Process 1218: Can not connect [unreachable], retrying (1 of 1 retries)
    Process 1217: Can not connect [unreachable], retrying (1 of 1 retries)
    ...
    [ERROR] Child with pid 1220 terminating, can not connect
    [ERROR] Child with pid 1224 terminating, can not connect
    [ERROR] Child with pid 1219 terminating, can not connect
    ...
    [VERBOSE] Disabled child 7 because of too many errors
    [VERBOSE] Disabled child 8 because of too many errors
    ...
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:46:07
    

    상세 모드는 연결 과정에 대한 훨씬 더 자세한 정보를 제공합니다. 이 정보에는 다음이 포함됩니다.

    • DNS 확인 세부 정보
    • 개별 프로세스 연결 시도 및 재시도
    • 각 실패한 연결에 대한 특정 오류 메시지
    • 오류로 인해 자식 프로세스가 비활성화된 정보

    이러한 수준의 세부 정보는 연결 문제를 해결하고 공격이 실패하는 이유를 이해하는 데 특히 유용합니다.

-V 옵션으로 시도 횟수 확인

이 단계에서는 -V 옵션을 사용하여 FTP 공격을 다시 실행합니다. -V 옵션은 -v 옵션과는 다른 수준의 상세 출력을 제공합니다. 공격 진행 상황을 추적하기 쉽도록 각 로그인 시도를 간결한 형식으로 표시하는 데 중점을 둡니다.

Hydra 의 -V 옵션은 -v 옵션과 유사하지만 더욱 간결한 출력을 제공합니다. 각 시도에 대한 자세한 연결 정보를 표시하는 대신, 시도되는 사용자 이름과 암호만 표시합니다. 너무 많은 정보로 인해 공격 진행 상황을 모니터링하고 싶을 때 유용합니다.

이전 단계에서 사용한 동일한 사용자 이름 및 암호 목록 (users.txtpasswords.txt) 을 계속 사용합니다. ~/project 디렉토리에 있는지 확인하십시오.

  1. -V 출력으로 FTP 공격 재실행:

    터미널에서 다음 명령어를 실행합니다.

    hydra -L users.txt -P passwords.txt -V ftp://127.0.0.1
    

    이 명령어를 분석해 보겠습니다.

    • -L users.txt: 사용자 이름 목록 파일을 지정합니다.
    • -P passwords.txt: 암호 목록 파일을 지정합니다.
    • -V: 시도 중심 출력을 활성화합니다. 이것이 새로 추가하는 옵션입니다.
    • ftp://127.0.0.1: FTP 서비스와 대상 서버 주소를 지정합니다.

    참고: 이전과 마찬가지로 127.0.0.1에 FTP 서버가 실행되지 않으므로 공격은 실패합니다. 그러나 이 명령어는 -V 옵션의 사용을 보여줍니다.

    출력은 -v 옵션보다 더 간결합니다. 각 로그인 시도는 간단한 형식으로 표시되어 시도되는 사용자 이름과 암호를 보여줍니다. 출력은 다음과 유사합니다.

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 09:46:09
    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 1 of 9 [child 0] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password" - 2 of 9 [child 1] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "123456" - 3 of 9 [child 2] (0/0)
    ...
    1 of 1 target completed, 0 valid password found
    Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 09:46:21
    

    이 출력은 각 로그인 시도를 명확하고 구조화된 형식으로 보여줍니다.

    • 대상 IP 주소
    • 시도되는 사용자 이름과 암호 (따옴표로 묶음)
    • 시도 횟수 및 총 시도 횟수
    • 시도를 처리하는 자식 프로세스 ID
    • 연결 실패 시 재시도 시도 (REDO-ATTEMPT 로 표시)

    이 형식은 상세한 연결 디버깅 정보 없이 공격 진행 상황을 쉽게 확인할 수 있도록 합니다.

자세한 수준 비교

이 단계에서는 이전 단계에서 사용했던 다양한 상세 출력 수준 (상세 출력 없음, -v(상세), -V(시도 표시)) 을 비교합니다. Hydra 를 사용할 때 특정 요구 사항에 맞는 가장 적절한 상세 정보 수준을 선택할 수 있도록 이러한 수준 간의 차이를 이해하는 것이 중요합니다.

각 상세 출력 수준의 특징을 요약하면 다음과 같습니다.

  • 상세 출력 없음: 기본 동작입니다. Hydra 는 기본 공격 정보, 구성 세부 정보 및 최종 결과만 표시합니다. 정보량이 가장 적으며, 백그라운드에서 공격을 실행하거나 성공적인 로그인 및 전체 결과에만 관심이 있을 때 적합합니다.

  • -v (상세): DNS 확인, 개별 프로세스 연결 시도, 재시도 메커니즘 및 자세한 오류 메시지를 포함한 연결 프로세스에 대한 자세한 기술 정보를 제공합니다. 연결 문제를 해결하고 공격이 네트워크 수준에서 실패하는 이유를 이해하는 데 특히 유용합니다.

  • -V (시도 표시): 시도되는 특정 사용자 이름과 암호 조합, 시도 카운터 및 자식 프로세스 정보를 보여주는 구조화된 형식으로 각 로그인 시도를 표시합니다. 네트워크 연결에 대한 기술적인 세부 정보 없이 공격 진행 상황을 훌륭하게 확인할 수 있습니다.

차이점을 더 명확히 하기 위해 Hydra 가 FTP 서버를 공격하려고 할 때 나타나는 내용을 살펴보겠습니다.

  • 상세 출력 없음: 기본 구성 및 최종 결과만 표시됩니다.

    [DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
    [DATA] attacking ftp://127.0.0.1:21/
    1 of 1 target completed, 0 valid password found
    
  • -v (상세): 연결 정보 및 오류 처리에 대한 자세한 내용이 표시됩니다.

    [VERBOSE] Resolving addresses ... [VERBOSE] resolving done
    Process 1216: Can not connect [unreachable], retrying (1 of 1 retries)
    [ERROR] Child with pid 1220 terminating, can not connect
    [VERBOSE] Disabled child 7 because of too many errors
    
  • -V (시도 표시): 자격 증명과 함께 각 특정 로그인 시도가 표시됩니다.

    [ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 1 of 9 [child 0] (0/0)
    [ATTEMPT] target 127.0.0.1 - login "user2" - pass "password" - 5 of 9 [child 4] (0/0)
    [REDO-ATTEMPT] target 127.0.0.1 - login "user1" - pass "password123" - 10 of 18 [child 0] (1/9)
    

적절한 상세 출력 수준 선택:

상세 출력 수준은 특정 요구 사항과 선호도에 따라 결정됩니다.

  • 백그라운드에서 공격을 실행하고 성공적인 로그인 및 기본 결과에만 관심이 있다면 상세 출력을 사용하지 마십시오.
  • 연결 문제, 네트워크 문제 또는 프로토콜 수준에서 공격이 실패하는 이유를 이해하기 위한 자세한 기술 정보가 필요하면 -v 옵션을 사용하십시오.
  • 시도되는 특정 사용자 이름과 암호 조합을 모니터링하고 단어 목록을 통해 공격 진행 상황을 추적하려면 -V 옵션을 사용하십시오.

요약하자면, 다양한 상세 출력 수준을 실험함으로써 Hydra 의 작동 방식을 더 잘 이해하고 특정 요구 사항에 맞는 가장 적절한 상세 정보 수준을 선택할 수 있습니다. -V 옵션은 공격 진행 상황을 모니터링하는 데 특히 유용하며, -v 옵션은 연결 문제를 디버깅하는 데 더 적합합니다.

요약

이 실습에서는 FTP 로그인 공격을 수행하여 Hydra 의 상세 출력 모드를 탐색했습니다. ~/project 디렉토리에 생성된 사용자 이름 및 암호 목록을 사용하여 가상 FTP 서버 (127.0.0.1) 에 대한 기본 공격을 상세 출력 없이 먼저 실행했습니다. 이는 Hydra 의 기본 동작을 보여주는 것으로, 자세한 로그인 시도 정보가 억제됩니다.

그런 다음 실습에서는 -v-V 옵션을 사용하여 Hydra 의 출력 상세도를 높여 각 로그인 시도에 대한 자세한 정보를 관찰하도록 안내했습니다. 다양한 상세 출력 수준으로 공격 결과를 비교함으로써 Hydra 의 상세 출력 옵션을 사용하여 공격을 모니터링하고 문제를 해결하는 방법을 더 잘 이해할 수 있었습니다.