소개
이 실습에서는 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
다음으로 공격에 사용할 간단한 사용자 이름 목록과 암호 목록을 생성합니다.
사용자 이름 목록 생성:
~/project디렉토리에users.txt라는 파일을 만듭니다. 이 파일에는 각 줄에 하나의 사용자 이름이 포함됩니다.nano텍스트 편집기를 사용하여 파일을 생성하고 편집합니다.nano users.txt다음 사용자 이름을 파일에 추가합니다.
user1 user2 user3nano 에서 파일을 저장하려면:
Ctrl + X를 눌러 종료합니다.Y를 눌러 저장을 확인합니다.Enter를 눌러 파일 이름을 확인합니다.
암호 목록 생성:
마찬가지로
~/project디렉토리에passwords.txt라는 파일을 만듭니다. 이 파일에는 각 줄에 하나의 암호가 포함됩니다.nano를 사용하여 파일을 생성하고 편집합니다.nano passwords.txt다음 암호를 파일에 추가합니다.
password123 password 123456파일을 저장하고
nano를 종료합니다 (Ctrl+X, Y, Enter).상세 출력 없이 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.txt 및 passwords.txt) 을 계속 사용합니다. ~/project 디렉토리에 있는지 확인하십시오.
상세 출력으로 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.txt 및 passwords.txt) 을 계속 사용합니다. ~/project 디렉토리에 있는지 확인하십시오.
-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 의 상세 출력 옵션을 사용하여 공격을 모니터링하고 문제를 해결하는 방법을 더 잘 이해할 수 있었습니다.


