Hydra 스레드 수 조정

HydraBeginner
지금 연습하기

소개

이 실습에서는 강력한 네트워크 로그인 크래커인 Hydra 에서 스레드 수를 조정하여 성능을 최적화하는 방법을 배웁니다. LabEx 가상 머신 (VM) 에 기본 SSH 서버를 설정하고, Hydra 를 사용하여 다양한 스레드 수 (16, 32, 4) 로 암호 해독 시도를 수행합니다. 이러한 서로 다른 설정의 속도를 비교하고 효과를 관찰함으로써, 사용 가능한 리소스와 대상 서비스 특성에 따라 스레드 수를 조정하여 Hydra 공격을 최적화하는 방법을 이해할 수 있습니다.

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 암호를 해독하는 데 중점을 둘 것입니다.

기본 16 개 스레드로 Hydra 실행

이 단계에서는 Hydra 를 사용하여 SSH 서버의 labex 사용자 암호를 해독하려고 시도합니다. Hydra 의 기본 스레드 수인 16 개를 사용하여 시작합니다.

암호 목록은 이미 설정 과정에서 다운로드되었습니다. 파일 ~/project/password.txt에는 Metasploit 프레임워크의 unix_passwords.txt 단어 목록이 포함되어 있으며, 수백 개의 일반적인 Unix 암호를 포함합니다. 이 더 큰 단어 목록은 작은 수동 목록에 비해 스레드 성능 차이를 더 잘 보여주는 데 도움이 됩니다.

암호 목록이 있는지 확인하고 크기를 확인할 수 있습니다.

ls -la ~/project/password.txt
wc -l ~/project/password.txt

이렇게 하면 파일 세부 정보와 단어 목록의 암호 수 (수백 개의 항목이어야 함) 를 확인할 수 있습니다.

이제 Hydra 명령을 실행합니다. -l 옵션은 공격할 사용자 이름 (labex) 을 지정하고, -P 옵션은 암호 목록 경로 (~/project/password.txt) 를 지정하며, -V 옵션은 각 시도를 보여주는 자세한 모드를 활성화합니다. ssh://localhost는 로컬 머신의 SSH 서비스를 대상으로 함을 나타냅니다.

hydra -V -l labex -P ~/project/password.txt ssh://localhost

Hydra 는 이제 password.txt 파일의 각 암호를 사용하여 SSH 서버에 로그인하려고 시도합니다. -t 옵션을 지정하지 않았으므로 Hydra 는 기본값인 16 개의 스레드를 사용하여 동시에 16 개의 암호 시도를 수행합니다. -V 플래그는 각 시도를 실시간으로 보여줍니다.

-V 플래그에 대한 중요 참고 사항:

-V (자세한 정보) 매개변수는 공격 과정을 관찰하는 데 필수적입니다. 이 옵션 없이 Hydra 는 요약 정보와 최종 결과만 표시하지만, 각 암호가 테스트되는 개별 [ATTEMPT] 라인은 표시되지 않습니다. 이 자세한 출력은 스레딩이 공격 속도와 패턴에 미치는 영향을 이해하는 데 도움이 됩니다.

Hydra 가 진행됨에 따라 다음과 유사한 출력이 표시됩니다.

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 16 tasks per 1 server, overall 16 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

더 큰 단어 목록을 사용하면 Hydra 가 올바른 암호를 찾는 데 더 많은 시간이 걸리므로 스레드 수 차이가 더 명확하게 나타납니다. Hydra 가 완료될 때 제공하는 시간 정보를 관찰하십시오.

스레드 수를 32 개로 늘려 속도 비교

이 단계에서는 Hydra 가 사용하는 스레드 수를 32 개로 늘리고 해독 속도에 미치는 영향을 관찰합니다. 스레드 수를 늘리면 동시 시도를 늘려 프로세스 속도를 높일 수 있지만, 효과는 시스템 리소스와 대상 서비스의 제한 사항에 따라 달라집니다.

터미널에서 다음 명령을 실행하여 32 개의 스레드로 Hydra 를 실행합니다.

hydra -V -t 32 -l labex -P ~/project/password.txt ssh://localhost

이 명령은 이전 명령과 동일하지만 -t 32가 추가되어 Hydra 가 명시적으로 32 개의 스레드를 사용하도록 지정합니다. -V 플래그는 각 암호 시도를 볼 수 있도록 합니다.

출력을 관찰합니다. Hydra 가 32 개의 작업/스레드를 시작한다는 보고를 확인해야 합니다.

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 32 tasks per 1 server, overall 32 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

속도 비교:

더 큰 단어 목록을 사용하면 16 개 스레드 실행과 32 개 스레드 실행 간에 더 눈에 띄는 시간 차이를 관찰할 수 있습니다. 다음에 주의하십시오.

  • Hydra 가 보고하는 시작 및 종료 시간
  • 작업량 분배를 보여주는 "각 작업의 시도 횟수" 계산
  • 공격을 완료하는 데 걸리는 전체 시간

32 개 스레드를 사용하면, 특히 대상 암호가 단어 목록 후반에 위치하는 경우 완료 시간이 더 빨라질 수 있습니다. 그러나 시스템 리소스 사용량이 증가하고 동시에 더 많은 연결 시도가 이루어질 수도 있습니다.

스레드 수를 4 개로 줄여 관찰하기

이 단계에서는 Hydra 가 사용하는 스레드 수를 4 개로 줄이고 성능에 미치는 영향을 관찰합니다. 시스템 리소스가 제한적이거나 대상 서비스가 과도한 동시 연결 시도를 차단하는 공격적인 속도 제한을 가진 경우에 이 시나리오가 유용합니다.

터미널에서 다음 명령을 실행하여 4 개의 스레드로 Hydra 를 실행합니다.

hydra -V -t 4 -l labex -P ~/project/password.txt ssh://localhost

이 명령은 이전 명령과 유사하지만 이제 -t 4를 사용하여 스레드 수를 명시적으로 4 개로 설정합니다. -V 플래그는 각 암호 시도를 자세히 보여줍니다.

출력을 관찰합니다. Hydra 가 4 개의 작업/스레드만 시작하는 것을 볼 수 있습니다.

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

영향 관찰:

4 개의 스레드와 더 큰 단어 목록을 사용하면 성능에 상당한 차이가 있음을 알 수 있습니다.

  • 각 스레드가 더 많은 암호를 처리해야 하므로 "각 작업의 시도 횟수"가 훨씬 높아집니다.
  • 전체 완료 시간은 16 개 및 32 개 스레드 실행에 비해 상당히 길어집니다.
  • 동시에 실행되는 시도가 4 개뿐이므로 동시에 실행되는 [ATTEMPT] 메시지가 줄어듭니다.

이 실험은 스레드 수가 적으면 일반적으로 성능이 느려지지만, 대상 시스템의 보안 조치를 피하거나 리소스가 제한된 시스템에서 작업해야 하는 특정 상황에서 필요한 조정일 수 있음을 보여줍니다.

스레드가 성능에 미치는 영향 분석

이 단계에서는 이전 단계에서의 관찰 결과를 바탕으로 Hydra 의 성능에 스레드 수가 미치는 영향을 분석합니다. Metasploit 프레임워크에서 가져온 상당한 단어 목록을 사용하여 4 개, 16 개 (기본값), 32 개 스레드를 실험했습니다.

스레드 수 고려 사항:

  • 시스템 리소스: 최적의 스레드 수는 CPU 코어, 메모리 및 네트워크 대역폭을 포함한 시스템의 사용 가능한 리소스에 크게 영향을 받습니다. 스레드 수를 너무 높게 설정하면 시스템이 과부하될 수 있으며, 컨텍스트 전환 오버헤드 및 리소스 경쟁으로 인해 성능이 저하될 수 있습니다.
  • 대상 서비스 제한: 대상 서비스 (이 경우 SSH) 에는 속도 제한 또는 기타 보안 메커니즘이 있을 수 있습니다. 서비스가 단위 시간당 로그인 시도 횟수를 제한하는 경우, 특정 지점을 넘어 스레드를 늘리는 것은 성능을 향상시키지 않고 보안 경고 또는 일시적인 차단을 유발할 수 있습니다.
  • 네트워크 지연: Hydra 와 대상 서비스 간의 높은 네트워크 지연도 스레드 수 증가의 효과를 제한할 수 있습니다. 각 스레드는 연결을 설정하고 유지해야 하며, 높은 지연 시간은 이러한 작업을 느리게 만들어 병렬 처리의 이점을 상쇄할 수 있습니다.
  • 단어 목록 크기: 이 실험에서 사용된 것과 같은 큰 단어 목록을 사용하면 스레드 수 차이가 더 명확해집니다. unix_passwords.txt 단어 목록에는 수백 개의 항목이 포함되어 있어 서로 다른 스레드 수의 성능 영향을 더 잘 관찰할 수 있습니다.

관찰 및 일반적인 지침:

  • 4 개 스레드: 일반적으로 느리지만 리소스가 제한적이거나 엄격한 속도 제한이 있는 서비스를 공격할 때 적합합니다. 시스템 과부하 또는 즉각적인 보안 경고를 유발할 가능성이 적습니다. 큰 단어 목록을 사용하면 완료 시간이 상당히 길어짐을 관찰해야 합니다.
  • 16 개 스레드 (기본값): Hydra 의 기본값인 16 개 스레드는 많은 시스템과 대상 서비스에 대해 성능과 리소스 사용 간의 좋은 균형을 이룹니다. 공격 머신이나 대상을 일반적으로 과부하시키지 않고 적절한 수준의 병렬 처리를 제공합니다.
  • 32 개 스레드: 스레드 수를 32 개로 늘리면 시스템에 충분한 리소스 (예: 여러 CPU 코어) 가 있고 대상 서비스에 공격적인 속도 제한이 없는 경우 성능이 향상될 수 있습니다. 그러나 시스템 리소스 사용량을 모니터링하여 병목 현상이 발생하지 않도록 하는 것이 중요합니다.

고려해야 할 성능 지표:

스레드 성능을 평가할 때 다음 요소를 고려하십시오.

  • 총 실행 시간: 시작부터 완료까지 걸리는 시간
  • 초당 시도 횟수: 암호 시도가 이루어지는 속도
  • 시스템 리소스 사용량: CPU, 메모리 및 네트워크 활용도
  • 대상 서비스 응답: 서비스가 응답하지 않거나 차단을 구현하는지 여부

결론:

Hydra 에 대한 "최고" 스레드 수는 없습니다. 최적의 설정은 공격 머신과 대상 서비스에 특정한 다양한 요인에 따라 달라집니다. 속도와 리소스 사용량 사이에서 가장 효율적인 균형을 찾기 위해 서로 다른 설정을 실험하고 시스템 성능과 대상의 응답을 모두 모니터링하는 것이 중요합니다. 이러한 역학을 이해하면 다양한 시나리오에 맞춰 Hydra 공격을 최적화할 수 있습니다.

요약

이 실습에서는 상당한 크기의 암호 단어 목록을 사용하여 Hydra 의 스레드 수 조정과 성능에 미치는 영향을 배웠습니다. 먼저 LabEx VM 에 기본 SSH 서버를 설정했습니다. 그런 다음 Metasploit 프레임워크의 unix_passwords.txt 단어 목록을 사용하여 다양한 스레드 수 (기본값 16, 증가된 32, 감소된 4) 로 이 SSH 서버에 대한 암호 해독 시도를 수행했습니다. 현실적인 크기의 단어 목록을 사용하여 각 시나리오의 속도와 완료 시간을 관찰함으로써 스레드 수가 Hydra 의 효율성에 미치는 영향에 대한 실질적인 통찰력을 얻었습니다. 이 실습은 사용 가능한 시스템 리소스와 대상 서비스의 특성에 따라 스레드 수를 최적화하는 것이 암호 해독 작업에서 최상의 성능을 달성하는 데 중요함을 보여주었습니다.