소개
이 실습에서는 Hydra 패스워드 크래킹 도구의 연결 간격을 제어하는 방법을 배웁니다. 이 실습은 연결 시도 사이에 지연을 도입하여 공격 속도를 관리하고 탐지 가능성을 줄이는 방법을 보여줍니다.
이 실습은 OpenSSH 를 사용하여 LabEx VM 에서 기본 SSH 서버를 설정하는 것으로 시작합니다. 서버를 설치하고, 상태를 확인하며, 포트 22 에서 수신 대기 중인지 확인합니다. 이어서 Hydra 를 기본 시간 설정으로 실행하고, 연결 시도 사이에 5 초의 간격을 두는 -W 5 옵션을 명령어에 추가하여 수정합니다. 마지막으로, 이 시간 조정이 전체 공격 속도에 미치는 영향을 관찰합니다.
SSH 서버 설정
이 단계에서는 LabEx VM 에 기본 SSH 서버를 설정합니다. SSH(Secure Shell) 는 비보안 네트워크를 통해 네트워크 서비스를 안전하게 운영하는 암호화 네트워크 프로토콜입니다. 일반적으로 원격 명령줄 로그인 및 원격 명령 실행에 사용됩니다.
먼저 OpenSSH 서버를 설치해야 합니다. OpenSSH 는 Secure Shell 프로토콜을 기반으로 하는 보안 관련 네트워크 수준 도구 모음이며, 가장 일반적인 SSH 구현입니다.
LabEx VM 의 터미널을 엽니다. 기본 Xfce 터미널을 사용할 수 있습니다.
패키지 목록을 업데이트하려면 다음 명령어를 실행합니다.
sudo apt update
이 명령어는 패키지 인덱스 파일을 소스에서 동기화합니다. 새 소프트웨어를 설치하기 전에 이 명령어를 실행하는 것이 좋습니다. 비밀번호를 입력하라는 메시지가 표시될 수 있지만, labex 사용자는 비밀번호 없이 sudo 권한을 가지고 있습니다.
다음으로 OpenSSH 서버를 설치합니다.
sudo apt install openssh-server -y
-y 플래그는 설치 중에 나타나는 모든 메시지에 자동으로 "예"를 응답하여 비대화식 프로세스를 만듭니다.
설치가 완료되면 SSH 서버가 자동으로 시작됩니다. 다음 명령어를 사용하여 상태를 확인할 수 있습니다.
sudo service ssh status
SSH 서버가 실행 중인지 확인하려면 SSH 포트 (포트 22) 가 수신 대기 중인지 확인할 수 있습니다. netstat 명령어를 사용합니다.
netstat -tulnp | grep 22
다음과 유사한 출력이 표시되어야 합니다.
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
이는 SSH 서버가 IPv4 및 IPv6 연결 모두에 대해 포트 22 에서 수신 대기 중임을 나타냅니다.
이제 SSH 서버가 설정되었으므로 다른 컴퓨터에서 SSH 클라이언트를 사용하여 연결할 수 있습니다. 그러나 이 실습에서는 Hydra 를 사용하여 SSH 패스워드를 해킹하는 데 중점을 둡니다.
기본 시간 제한으로 Hydra 실행
이 단계에서는 Hydra 를 사용하여 SSH 패스워드를 해킹해 보겠습니다. 간단한 사용자 이름 및 암호 목록을 사용하고 기본 시간 설정으로 공격 속도를 관찰합니다.
먼저 ~/project 디렉터리에 users.txt라는 사용자 이름 목록 파일을 만듭니다. 이 파일에 labex라는 단일 사용자 이름이 포함됩니다.
터미널에서 다음 명령어를 실행하여 users.txt 파일을 만듭니다.
echo "labex" > ~/project/users.txt
다음으로 ~/project 디렉터리에 passwords.txt라는 암호 목록 파일을 만듭니다. 이 파일에 labex 사용자의 올바른 암호를 포함한 몇 가지 일반적인 암호가 포함됩니다.
중요: 다음 명령어는 PASSWORD 환경 변수가 데스크탑 환경에서만 사용 가능하기 때문에 데스크탑 터미널에서 실행해야 합니다.

데스크탑 터미널에서 다음 명령어를 실행하여 passwords.txt 파일을 만듭니다.
echo "password" > ~/project/passwords.txt
echo "123456" >> ~/project/passwords.txt
echo "$PASSWORD" >> ~/project/passwords.txt
$PASSWORD 환경 변수에는 이 환경에서 labex 사용자의 실제 암호가 포함됩니다.
이제 기본 시간 설정으로 Hydra 를 실행할 수 있습니다. Hydra 의 기본 구문은 다음과 같습니다.
hydra [options] <target> <service> [MODULE-OPTIONS]
우리의 경우 대상은 localhost(LabEx VM 자체) 이고, 서비스는 ssh이며, 방금 만든 사용자 이름 및 암호 목록을 사용합니다.
터미널에서 다음 명령어를 실행합니다.
hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ssh
이 명령어를 자세히 살펴보겠습니다.
hydra: Hydra 도구를 실행하는 명령어입니다.-L ~/project/users.txt:~/project/users.txt에 있는 사용자 이름 목록 파일을 지정합니다.-P ~/project/passwords.txt:~/project/passwords.txt에 있는 암호 목록 파일을 지정합니다.localhost: 대상 호스트 (이 경우 로컬 머신) 입니다.ssh: 공격할 서비스 (SSH) 입니다.
Hydra 는 이제 사용자 이름과 암호 목록에서 SSH 서버에 로그인하려고 시도합니다. 공격 진행 상황을 보여주는 출력이 표시됩니다. 각 사용자 이름과 암호 조합을 시도합니다. $PASSWORD 환경 변수에서 가져온 올바른 암호가 passwords.txt 파일에 있으므로 Hydra 는 상대적으로 빠르게 찾을 것입니다.

출력은 다음과 같습니다.
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: [실제_암호]
Hydra finished.
중요한 줄은 [22][ssh] host: localhost login: labex password: [실제_암호]입니다. 이는 Hydra 가 labex 사용자의 암호를 성공적으로 찾았음을 나타냅니다.
Hydra 가 암호를 시도하는 속도에 유의하십시오. 이것이 기본 시간 설정입니다. 다음 단계에서는 시간 설정을 수정하여 공격 속도에 미치는 영향을 살펴보겠습니다.
5 초 간격 (-W 5) 으로 Hydra 실행
이 단계에서는 Hydra 명령어에 -W 5 옵션을 추가합니다. 이 옵션은 각 로그인 시도 사이에 5 초의 지연을 도입합니다. 이는 계정 잠금이나 침입 탐지 시스템의 감지 방지를 위해 유용합니다.
Hydra 의 -W 옵션은 대상 서비스로부터 응답을 기다리는 시간 제한을 지정합니다. 기본적으로 Hydra 는 매우 짧은 시간 제한을 사용합니다. 이 시간 제한을 늘리면 대상 서비스가 응답하는 데 시간이 오래 걸리거나 네트워크 지연 문제가 있을 때 도움이 될 수 있습니다.
터미널에서 다음 명령어를 실행합니다.
hydra -L ~/project/users.txt -P ~/project/passwords.txt -W 5 localhost ssh
이 명령어와 이전 명령어의 유일한 차이점은 -W 5 옵션의 추가입니다.
이제 Hydra 는 SSH 서버에 로그인을 시도하지만, 다음 암호를 시도하기 전에 각 실패한 로그인 시도 후 5 초를 기다립니다.
출력을 관찰하십시오. 이전 단계보다 공격 속도가 현저히 느려짐을 알 수 있습니다. Hydra 는 여전히 올바른 암호 ("labex") 를 찾겠지만, 찾는 데 더 오랜 시간이 걸릴 것입니다.
출력은 다음과 같습니다.
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: labex
Hydra finished.
그러나 중요한 차이점은 Hydra finished. 메시지에 도달하는 데 걸리는 시간입니다. -W 5 옵션을 사용하면 Hydra 가 올바른 암호를 찾기 전에 최소 10 초 (2 번의 실패한 시도 * 5 초/시도) 가 걸립니다.
다음 단계에서는 이러한 변경 사항이 공격 속도에 미치는 영향과 보안 테스트에 대한 함축적인 의미에 대해 논의하겠습니다.
공격 속도 변화 관찰
이 단계에서는 Hydra 의 공격 속도에 미치는 -W 5 옵션의 영향을 분석합니다.
이전 단계에서 관찰했듯이 -W 5 옵션을 추가하면 공격 속도가 크게 느려집니다. -W 5 옵션 없이 Hydra 는 네트워크 지연과 서버 응답 시간에만 제한되어 가능한 한 빠르게 로그인 시도를 합니다. -W 5 옵션을 사용하면 Hydra 는 각 실패한 로그인 시도 후 5 초 동안 일시 정지합니다.
공격 속도의 이러한 차이점은 다음과 같은 중요한 의미를 지닙니다.
계정 잠금: 많은 시스템은 특정 횟수의 실패한 로그인 시도 후 계정을 비활성화하는 계정 잠금 정책을 가지고 있습니다.
-W 5로 공격 속도를 늦춤으로써 이러한 잠금 정책을 유발할 위험을 줄이고 대상 계정의 잠금을 방지할 수 있습니다.침입 탐지 시스템 (IDS): IDS 는 브루트포스 공격과 같은 의심스러운 활동을 감지하기 위해 네트워크 트래픽을 모니터링합니다. 빠른 연속의 실패한 로그인 시도는 브루트포스 공격의 강력한 지표가 되어 경고를 발생시킬 수 있습니다. 공격 속도를 늦춤으로써 IDS 가 공격을 감지하기 어렵게 만들 수 있습니다.
자원 소비: 빠른 공격 속도는 공격 머신과 대상 서버 모두에 상당한 자원을 소비할 수 있습니다. 공격 속도를 늦춤으로써 자원 소비를 줄이고 공격이 덜 눈에 띄게 만들 수 있습니다.
완료 시간: 가장 명백한 영향은 공격을 완료하는 데 걸리는 시간이 증가하는 것입니다. 암호 목록이 크면 시도 사이에 지연을 추가하면 암호를 해독하는 데 필요한 총 시간이 크게 증가할 수 있습니다.
요약하면, Hydra 의 -W 옵션을 사용하면 공격 속도를 제어하고 속도에 대한 필요성과 감지 및 계정 잠금 위험 사이의 균형을 맞출 수 있습니다. -W에 대한 적절한 값을 선택하는 것은 특정 대상과 공격 목표에 따라 달라집니다. 침투 테스트의 경우 공격이 더 오래 걸리더라도 은밀하고 감지를 피하는 것이 종종 더 좋습니다.
이 실습에서는 Hydra 를 사용하여 SSH 암호를 해독하는 기본적인 예를 보여주었습니다. 실제 상황에서 공격자는 종종 훨씬 더 큰 사용자 이름 및 암호 목록과 보안 조치를 우회하기 위한 더 정교한 기술을 사용합니다. 강력하고 고유한 암호를 사용하고 브루트포스 공격으로부터 보호하기 위한 적절한 보안 조치를 구현하는 것이 중요합니다.
요약
이 실습에서는 Hydra 연결 간격을 제어하여 공격 속도를 관리하고 감지를 회피하는 방법을 배웠습니다.
완료된 주요 단계:
- OpenSSH 를 사용하여 SSH 서버를 설정하고 22 번 포트에서 수신 중인지 확인했습니다.
- Hydra 테스트를 위한 사용자 이름 및 암호 목록을 생성했습니다.
- 기본 시간 제한으로 Hydra 를 실행하여 빠른 공격 속도를 관찰했습니다.
- 연결 시도 사이에 5 초 지연을 도입하기 위해
-W 5옵션을 추가했습니다. - 시간 제어가 공격 속도에 미치는 영향과 계정 잠금 및 탐지 시스템을 피하는 데 도움이 되는 방식을 관찰했습니다.
-W 옵션을 사용하면 공격 속도와 은밀성을 조절할 수 있으므로, 보안 조치를 트리거할 위험을 최소화하면서 효과적인 침투 테스트에 필수적인 매개변수가 됩니다.


