- Damn Vulnerable Web App
- 취약한 웹 애플리케이션 상에서 모의해킹을 학습하기 위해 제공되는 툴이다.
Password를 알아내기 위한 Brute Force공격
1. 임의 PW를 입력
2. 잘못된 PW입력 후 BurpSuit를 통해 Request를 확인
(BurpSuit-Proxy-HTTP History)
3. 해당 Request를 Intruder로 전송
(해당 Request 오른쪽 클릭-Send to Intruder)
4. Intruder에서 값을 바꾸며 공격을 시도할 변수를 설정
(Intruder - Positions)
4-1 Clear로 설정 초기화 (초기에 요청 값이 들어오는 모든 곳이 변수처리 되어 있음)
4-2 값을 바꾸며 시도할 값(asdf)를 블럭으로 잡고 Add &
5. Payloads 설정
5-1 Payload type을 Brute Forcer로 설정
5-2 Character set: 사용될 수 있는 문자 집합 설정
5-3 비밀번호의 최소, 최대 길이 설정
(4~5자리 특수문자가 허용되지 않는 경우에도 62,145,792개의 경우의 수를 가진다)
6. Start Attack
aaaa부터 공격이 시작되는 것을 확인할 수 있다.
부합하는 PW의 payload를 갖는 경우 Length가 다르다.
이를 통해 PW를 찾게 된다.
- Kali Linux에서 제공하는 Dictionary 파일이 있기 때문에 이를 사용한다.
1. 터미널 입력 : gedit /usr/share/john/password.lst
이후 Intruder로 요청을 보내고 Position을 설정하는 것까지는 Brute Force와 동일
2. Payloads 설정
2-1 Payload type은 Simple list로 설정
2-2 Payload Options-Load... 클릭 /usr/share/john/password.lst 딕셔너리 파일 로드
2-3 로드 후 상단의 주석라인은 Remove를 통해 삭제
3. Start Attack
초기 설정된 비밀번호는 password
password를 찾아보면 Length가 다른 것을 확인할 수 있다.
- 하단의 else부분(로그인에 실패한 경우)에서 sleep(2)를 두어 강제로 시스템이 sleep되도록 하였다.
- Brute Force 공격은 모든 값을 모두 대입해야 하기 때문에 엄청난 시간이 소요 되는 공격이다. 위와 같이 요청의 실패마다 sleep을 둔다면 평범한 Brute Force공격으로는 너무나 오랜 시간이 걸릴 것이다.
- medium과 다른 점은 sleep하는 시간을 난수화 했다는 점이다.
- sleep하는 시간을 고정된 상수로 지정한다면 공격자는 그 시간을 알아채고 일정 시간만큼 응답이 오지 않는다면 틀린 것으로 간주하고 빠르게 다시 공격을 시도할 수 있다.
- sleep하는 시간을 난수화하여 공격자가 대기시간에 대한 대처를 어렵게 하기 위함이다.
- please try again in 15 minutes.
- 일정 횟수 이상의 잘못된 PW 요청이 있을 때, 임의 시간 동안 계정에 Lock을 거는 방식이다. Brute Force공격은 거의 불가능하게 된다.
- 하지만, 공격자의 악의적 의도로 계속해서 잘못된 PW를 요청한다면 계정은 계속해서 Lock상태일 것이다. 이런 부분이 취약점으로 있는 대응 방법이다.
컴공생 멋있네요!