Archive for Dev. (junyup2)

지식을 μ±„μ›Œκ°€λŠ” γ€Žκ°œλ°œμž/ν™”μ΄νŠΈν•΄μ»€γ€λ₯Ό λͺ©ν‘œλ‘œ μ •λ¦¬ν•˜λŠ” λΈ”λ‘œκ·Έ

Practice/DVWA

[DVWA] Brute Force

Gearvirus(junyup2) 2024. 4. 7. 22:59

Vulnerability: Brute Force

무차별 λŒ€μž… 곡격 (Brute Force Attack)에 λŒ€ν•œ Practice 이닀.

무차별 λŒ€μž… 곡격은 νŠΉμ • 정보λ₯Ό μ•Œμ•„λ‚΄κΈ° μœ„ν•΄ κ°€λŠ₯ν•œ λͺ¨λ“  값을 λŒ€μž…ν•˜μ—¬ μ›ν•˜λŠ” 정보λ₯Ό μ•Œμ•„λ‚΄λŠ” 곡격이닀.

μ—¬λŸ¬κ°€μ§€μ§€ 방법이 μ‘΄μž¬ν•˜μ§€λ§Œ κ°„λ‹¨νžˆ λ‹€μŒμ˜ 두가지λ₯Ό 생각해 λ³Ό 수 μžˆλ‹€.

1. λͺ¨λ“  경우의 수

κ³΅κ²©ν•˜λŠ” λŒ€μƒμ— λŒ€ν•œ κ°’μœΌλ‘œμ„œ κ°€λŠ₯ν•œ λͺ¨λ“  경우의 수λ₯Ό λŒ€μž…ν•΄ λ³΄λŠ” 것이닀. 각 μžλ¦¬μ— λŒ€ν•˜μ—¬ κ°€λŠ₯ν•œ λͺ¨λ“  문자, 숫자, 기호λ₯Ό λŒ€μž…ν•˜μ—¬ λ§Œλ“€ 수 μžˆλŠ” λͺ¨λ“  경우의 수λ₯Ό μ‹œλ„ν•΄ λ³΄λŠ” λ°©μ‹μœΌλ‘œμ„œ λ‹€μŒμ˜ μž₯단점을 생각해 λ³Ό 수 μžˆλ‹€.

μž₯점
μ‹œκ°„μ΄ 였래 걸리더라도 μ–Έμ  κ°€λŠ” 찾을 수 μžˆλ‹€.
(κ³ μ„±λŠ₯, λŒ€λŸ‰μ˜ μžμ›μ„ μ΄μš©ν•˜λ©΄ 더 λΉ λ₯΄κ²Œ μ°ΎλŠ” 것이 κ°€λŠ₯ν•˜λ‹€.)

단점
νŒ¨μŠ€μ›Œλ“œμ˜ 길이가 κΈΈμ–΄μ§€λŠ” 경우, 사싀상 곡격이 μ–΄λ ΅λ‹€.
(μ‹œκ°„μ μœΌλ‘œ, μžμ›μ μœΌλ‘œ λ„ˆλ¬΄ λ§Žμ€ 것듀이 ν•„μš”ν•˜κ²Œ λœλ‹€. λΆˆκ°€λŠ₯. 은 아닐 수 μžˆμ§€λ§Œ, μ‘λ‹΅μ‹œκ°„ 지연, 계정 Lockκ³Ό 같은 λ³΄μ•ˆμ‘°μΉ˜λ§Œ μžˆλ”λΌλ„, 길이가 길어지면 μ‹€μ§ˆμ μœΌλ‘œλŠ” λŒ€μž…λ§ŒμœΌλ‘œλŠ” λΆˆκ°€λŠ₯ν•˜λ‹€κ³  λ³Ό 수 μžˆλ‹€.)

 

2. λ”•μ…”λ„ˆλ¦¬ 곡격

λ”•μ…”λ„ˆλ¦¬λŠ” λ§κ·ΈλŒ€λ‘œ μ‚¬μ „μ΄λΌλŠ” μ˜λ―Έλ‘œμ„œ μ‚¬λžŒλ“€μ΄ 자주 μ“°λŠ” 값을 μ΄μš©ν•˜λŠ” 것이닀.

λ§Žμ€ μ‚¬λžŒλ“€μ΄ νŒ¨μŠ€μ›Œλ“œ 같은 값을 생성할 λ•Œ κΈ°μ–΅ν•˜κΈ° μ‰¬μš΄ 값을 μ‚¬μš©ν•˜λŠ” 것을 μ—­μœΌλ‘œ μ΄μš©ν•˜λŠ” 것이닀.

worst password / most common password 와 같이 μ‚¬λžŒλ“€μ˜ μ‚¬μš© λΉˆλ„ μˆ˜κ°€ 높은 값듀을 λͺ¨μ•„λ‘” λͺ©λ‘(리슀트)λ₯Ό μ΄μš©ν•˜μ—¬ 각 값을 λŒ€μž…ν•˜λŠ” 방식을 μ·¨ν•œλ‹€.

μž₯점
μ‚¬λžŒλ“€μ΄ λ³΄μ•ˆμ μΈ 것을 μƒκ°ν•˜μ§€ μ•Šκ±°λ‚˜, νŠΉμ • μ‚¬μ΄νŠΈλ“€μ—μ„œ μ·¨μ•½ν•˜κ³ , μ‰¬μš΄ λΉ„λ°€λ²ˆν˜Έλ₯Ό ν—ˆμš©ν•˜λŠ” κ²½μš°μ— ν•΄λ‹Ή λ¦¬μŠ€νŠΈμ— μΌμΉ˜ν•˜λŠ” 값이 μžˆμ„ κ°€λŠ₯성이 λ†’λ‹€. 이 경우, λͺ¨λ“  경우의 수λ₯Ό μž…λ ₯ν•˜λŠ” 것에 λΉ„ν•˜μ—¬ λΉ λ₯Έ 속도λ₯Ό μ œκ³΅ν•  수 μžˆλ‹€.

단점
λ¬΄μž‘μœ„ 값을 μ‚¬μš©ν•œλ‹€λ©΄ 값이 νŒŒμΌμ— ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•Šμ„ ν™•λ₯ μ΄ λ†’λ‹€. 이런 경우 이 λ°©λ²•μœΌλ‘œλŠ” μ•Œμ•„λ‚΄κΈ° νž˜λ“€λ‹€κ³  λ³Ό 수 μžˆλ‹€.
(λͺ©λ‘μ΄ 더 λ§Žμ€ νŒŒμΌμ„ μ΄μš©ν•˜κ±°λ‚˜, νŒ¨μŠ€μ›Œλ“œ λ³€ν˜• 및 쑰합을 μ΄μš©ν•˜μ—¬ 더 λ§Žμ€ νŒ¨μŠ€μ›Œλ“œμ— λŒ€ν•˜μ—¬ μ‹œλ„ν•΄ λ³Ό 수 μžˆκ² μ§€λ§Œ, λ§Žμ€ μ‹œκ°„μ„ νˆ¬μžν•˜λ”λΌλ„ λͺ» μ°Ύμ•„λ‚Ό ν™•λ₯ μ΄ μžˆλ‹€λŠ” 큰 단점이 μ‘΄μž¬ν•œλ‹€.)

 

DVWA Brute Force μ‹€μŠ΅

μ‹€μŠ΅ ν™˜κ²½
- Windows Dockerλ₯Ό μ΄μš©ν•œ DVWA
- Windows ν™˜κ²½μ˜ Burp Suite

μ‚¬μš©λœ 계정
admin / password

Security Level: Low

Low 레벨의 경우, 취약점이 λ‹¨μˆœν•˜κΈ° λ•Œλ¬Έμ— Burp Suite의 Intruderλ₯Ό μ΄μš©ν•˜κΈ°λ‘œ ν•œλ‹€.

Burp Suite의 Intruder κΈ°λŠ₯을 μ΄μš©ν•˜μ—¬, Paylaod positionμ—μ„œ λŒ€μƒμ„ password νŒŒλΌλ―Έν„°λ‘œ μ„€μ •ν•œλ‹€.

Paylaodsμ—μ„œ Top 200 most common passwords of the year μ—μ„œ 년도별 κ°€μž₯ ν”ν•œ λΉ„λ°€λ²ˆν˜Έ λͺ©λ‘μ„ κ°€μ Έμ™€μ„œ λŒ€μž…μ„ ν•˜λŠ” λ°©μ‹μœΌλ‘œ Brute Force λ₯Ό μ§„ν–‰ν•˜λ €ν•œλ‹€.

λ‹€μŒμ€ 2019 ~ 2023 λ…„λ„μ˜ κ°€μž₯ ν”ν–ˆλ˜ λΉ„λ°€λ²ˆν˜Έλ“€ λͺ©λ‘μ΄λ‹€.

Reference
https://nordpass.com/most-common-passwords-list/

top 200 common password 2019~2022
top 200 common password 2023

μœ„μ˜ 리슀트λ₯Ό ν…μŠ€νŠΈν™” ν•˜μ—¬ λ‹€μŒκ³Ό 같이 μ •λ¦¬ν•˜μ˜€κ³  이λ₯Ό payload setting의 simple listλ‘œμ„œ λ„£μ–΄μ€€λ‹€.

top_200_most_common_passwords_2019(n).txt
0.00MB
top_200_most_common_passwords_2020(n).txt
0.00MB
top_200_most_common_passwords_2021(n).txt
0.00MB
top_200_most_common_passwords_2022(n).txt
0.00MB
top_200_most_common_passwords_2023(n).txt
0.00MB

μœ„μ˜ λͺ©λ‘ 쀑에 κ°€μž₯ 졜근의 top 200 most common passwords 2023을 μ΄μš©ν•œλ‹€.

곡격을 μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같이 κ²°κ³Όλ₯Ό 확인할 수 μžˆλ‹€.

μœ„μ™€ 같이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ 경우 λ‹€μŒκ³Ό 같은 λ©”μ‹œμ§€λ₯Ό 확인할 수 μžˆλ‹€.

Username and/or password incorrect.

반면 λͺ©λ‘μ— ν•΄λ‹Ήν•˜λŠ” λΉ„λ°€λ²ˆν˜Έκ°€ μ‘΄μž¬ν•˜μ—¬, λ‘œκ·ΈμΈμ— μ„±κ³΅ν•œ 경우 λ‹€μŒκ³Ό 같이 응닡(response)의 길이가 λ‹€λ₯Έ 것을 확인할 수 있고, 이λ₯Ό 확인해보면 μ„±κ³΅μ μœΌλ‘œ 둜그인 λ˜λŠ” 것을 확인할 수 μžˆλ‹€.

μœ„μ˜ κ²°κ³Όμ—μ„œ λ³Ό 수 μžˆλ“―μ΄, Low 레벨의 경우 Burp Suite의 Intruder κΈ°λŠ₯λ§Œμ„ μ΄μš©ν•΄λ„ μ‰½κ²Œ λš«μ„ 수 μžˆλŠ” 것을 확인할 수 μžˆλ‹€.


Security Level: Medium

Medium 레벨의 경우, 둜그인 μ‹œλ„κ°€ μ‹€νŒ¨ν•˜λ©΄ 일정 μ‹œκ°„ ν”„λ‘œμ„ΈμŠ€λ₯Ό sleep μ‹œμΌœ λ‹€μŒ μ‹œλ„μ— λŒ€ν•œ μ‹œκ°„μ„ μ§€μ—°μ‹œν‚¨λ‹€.

ν•˜μ§€λ§Œ, Low λ ˆλ²¨μ—μ„œ μ§„ν–‰ν–ˆλ˜ 방법과 같은 방법을 μ·¨ν•˜λ”λΌλ„, 단지 μ‹œκ°„μ΄ 쑰금 더 걸릴 뿐 μ‰½κ²Œ 뚫리게 λœλ‹€.기쑴의 방식과 같은 λ°©μ‹μœΌλ‘œ μ§„ν–‰ν•œ κ²°κ³Όλ₯Ό 보면 μ•„λž˜μ™€ κ°™λ‹€.

μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ λΉ„λ°€λ²ˆν˜Έκ°€ μž…λ ₯된 κ²½μš°μ—λŠ” λ‹€μŒκ³Ό 같이 응닡 μ‹œκ°„μ΄ 2000이 λ„˜μ–΄κ°€κ²Œ λœλ‹€.

반면 μΌμΉ˜ν•˜λŠ” λΉ„λ°€λ²ˆν˜Έκ°€ μž…λ ₯λ˜λŠ” κ²½μš°μ—λŠ” μ‘λ‹΅μ‹œκ°„μ΄ ν•œμžλ¦¬ 수둜 λΉ λ₯΄κ²Œ μ‘λ‹΅λ˜λ©°, μ‘λ‹΅μ˜ 길이도 λ‹€λ₯Έ 것을 확인할 수 μžˆλ‹€.


Security Level: High

High 레벨의 경우 λ‹€μŒκ³Ό 같이 user_token μ΄λΌλŠ” μ΄λ¦„μ˜ CSRF token이 μ‘΄μž¬ν•œλ‹€.

κ·Έλž˜μ„œ λΉ„λ°€λ²ˆν˜Έλ₯Ό λŒ€μž…ν•˜λŠ” 방식에 μžˆμ–΄ μœ„μ˜ Low, Medium λ°©μ‹μ—μ„œ μ‚¬μš©ν•œ 방법을 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λ©΄ user_token이 μΌμΉ˜ν•˜μ§€ μ•Šμ•„ λ‹€μŒκ³Ό 같이 토큰이 μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” λ‹€λŠ” λ©”μ‹œμ§€κ°€ 뜨게 되고, 둜그인 μ‹œλ„κ°€ μ œλŒ€λ‘œ λ˜μ§€ μ•ŠλŠ”λ‹€.

λ”°λΌμ„œ 좔후에 λ‹€λ₯Έ 방식을 μ΄μš©ν•˜μ—¬ μ‹œλ„ν•΄λ³΄κΈ°λ‘œ ν•œλ‹€.

High Level의 경우, Medium Level의 λΉ„λ°€λ²ˆν˜Έκ°€ ν‹€λ¦¬λŠ” 경우 응닡 μ‹œκ°„μ„ μ§€μ—°μ‹œν‚€λŠ” 방식을 ν¬ν•¨ν•œλ‹€.
λžœλ€ν•œ μ‹œκ°„μ„ μ§€μ—°μ‹œν‚€λŠ” 것은 물둠이고, user_token을 μ‚¬μš©ν•˜μ—¬ λ³΄μ•ˆμ„ ν•˜κ²Œλœλ‹€. ν•˜μ§€λ§Œ GET 방식을 μ΄μš©ν•˜κ³  있고, λžœλ€ν•œ μ‹œκ°„ 지연이 μžˆμ„ 뿐 Brute Force 곡격이 λΆˆκ°€λŠ₯ν•˜μ§€ μ•Šλ‹€.

Security Level: Impossible

Impossible 레벨의 경우 High Level의 쑰치λ₯Ό κ°€μ Έμ˜€λ©΄μ„œλ„, GET 방식 λŒ€μ‹  POST 방식을 μ‚¬μš©ν•˜κ³  μžˆλ‹€.

λ˜ν•œ μΆ”κ°€μ μœΌλ‘œ, ν‹€λ¦° λΉ„λ°€λ²ˆν˜Έλ₯Ό μ—¬λŸ¬λ²ˆ λŒ€μž…ν•˜λŠ” 경우, λ„ˆλ¬΄ λ§Žμ€ ν‹€λ¦° μ‹œλ„κ°€ μžˆμ—ˆλ‹€λ©°, 15λΆ„κ°„ 계정을 Lock μ‹œμΌœ, 둜그인 μ‹œλ„λ₯Ό λ§‰λŠ” μ‘°μΉ˜κ°€ λ˜μ–΄ μžˆλ‹€.

이λ₯Ό 톡해 Impossible Level의 경우 Brute Force 곡격이 거의 λΆˆκ°€λŠ₯ν•˜λ‹€κ³  λ³Ό 수 μžˆλ‹€.


Brute Force λŒ€μ‘

1. 잠금 μ„€μ • (Locking)

둜그인 μ‹€νŒ¨ μ‹œ 일정 μ‹œκ°„λ™μ•ˆ λ‘œκ·ΈμΈμ„ μ œν•œν•˜λŠ” 방법이닀.

일정 횟수 이상 ν‹€λ¦¬λŠ” κ²½μš°μ— 잠금 쑰치λ₯Ό 톡해 λ‘œκ·ΈμΈμ„ λ§‰λŠ” 방법을 μ‚¬μš©ν•˜μ—¬ λ¬΄μž‘μœ„ λŒ€μž… 곡격의 μ‹œκ°„μ„ 지연 μ‹œν‚¬ μˆ˜λŠ” μžˆμ§€λ§Œ μ™„λ²½ν•œ λ°©λ²•μ΄λΌκ³ λŠ” ν•  수 μ—†λ‹€.

λ˜ν•œ κ³΅κ²©μžκ°€ 고의적으둜 ν‹€λ¦° 값을 μ΄μš©ν•œ 둜그인 μ‹œλ„λ₯Ό 반볡적으둜 μˆ˜ν–‰ν•¨μœΌλ‘œμ¨ νŠΉμ • μ‚¬μš©μžμ˜ μ‚¬μ΄νŠΈ μ΄μš©μ„ 막을 수 있기 λ•Œλ¬Έμ— 쒋은 방법이라고 ν•  μˆ˜λŠ” μ—†λ‹€. (μ•…μ˜μ μœΌλ‘œ ν‹€λ¦° μ‹œλ„λ₯Όν•˜μ—¬, μ˜¬λ°”λ₯Έ μ‚¬μš©μžμ˜ 정상적인 μ΄μš©μ„ λ°©ν•΄ν•˜λŠ” 것이닀.)

ex) 슀마트폰 μž κΈˆν•΄μ œλ₯Ό 일정 횟수 이상 ν‹€λ¦° 경우, "30초 후에 λ‹€μ‹œ μ‹œλ„ν•˜μ„Έμš”." 와 같은 것을 생각할 수 μžˆλ‹€.

νŠΉμ • 방식을 ν†΅ν•œ μ‹œλ„κ°€ 일정 νšŸμˆ˜κ°€ μ΄ˆκ³Όλ˜λŠ” 경우 μš°μ„ μ μœΌλ‘œ 계정을 μž κΈˆν•˜κ³ , λ‹€λ₯Έ 방식을 ν†΅ν•œ λ‘œκ·ΈμΈμ„ μ œμ•ˆν•˜λ„λ‘ ν•˜λŠ” 것이 μ’‹λ‹€.

ex) 계정이 μž κΈ°λŠ” 경우, μΆ”κ°€ 인증을 톡해 κ³„μ •μ˜ μž κΈˆμ„ ν•΄μ œν•  수 μžˆλ‹€.

 

2. μΊ‘μ±  (CAPTCHA)

μžλ™ν™”λœ ν”„λ‘œκ·Έλž¨μ΄ μ•Œμ•„λ³Ό 수 μ—†λŠ” κΈ€μ”¨λ‚˜ κ·Έλ¦Ό 문자λ₯Ό 둜그인 μ‹œλ„ μ‹œ ν•¨κ»˜ μž…λ ₯ν•˜λ„λ‘ ν•˜λŠ” 방법이닀. μžλ™μœΌλ‘œ νŒ¨μŠ€μ›Œλ“œλ₯Ό κ³„μ†ν•΄μ„œ λ³€κ²½ν•΄μ„œ λ³΄λ‚΄λŠ” 것이 λΆˆκ°€λŠ₯해진닀. (좔가적인 인증이 μ‘΄μž¬ν•˜κΈ° λ•Œλ¬Έμ— λ‹¨μˆœ λŒ€μž…μ΄ λΆˆκ°€λŠ₯ν•΄μ§„λ‹€λŠ” 것이닀.)

이것이 μ›Ή μ‚¬μ΄νŠΈμ—μ„œ ν”νžˆ μ‚¬μš©ν•˜λŠ” 톡상적인 방법이라고 λ³Ό 수 μžˆλ‹€.

(ν•˜μ§€λ§Œ AI의 λ°œμ „μœΌλ‘œ 이런 것도 λš«μ„ 수 μžˆλŠ” 것이 μ•„λ‹Œκ°€ ν•˜λŠ” 생각이 λ“ λ‹€. μžλ™ν™” ν”„λ‘œκ·Έλž¨μ΄ μ•Œμ•„λ³Ό 수 μ—†κ³  μΈκ°„λ§Œ 식별 κ°€λŠ₯ν•œ 것을 μ΄μš©ν•˜λŠ” κ²ƒμ΄μ§€λ§Œ, AI의 λ°œμ „μ— μ˜ν•΄ μ΄λŸ°κ²ƒ 쑰차도 인식할 수 μžˆμ„ κ°€λŠ₯성이 컀지고 μžˆλ‹€λŠ” 것은 μƒκ°ν•΄λ³Όλ§Œ ν•˜λ‹€κ³  λ³Έλ‹€.)


질문 ν™˜μ˜, μˆ˜μ • 및 보완에 λŒ€ν•œ μ§€μ  ν™˜μ˜