yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

Brute Force Attack + DVWA실습 본문

웹/웹 해킹

Brute Force Attack + DVWA실습

yehey 2020. 9. 27. 17:35

Brute Force Attack (무차별 대입 공격)

특정 정보를 알아내기 위해 가능한 모든 값을 대입해 원하는 정보를 알아내는 공격

 

1. 모든 경우의 수를 입력

-시간이 오래 걸리더라도 언젠가는 찾을 수 있음

-패스워드 길이가 길어지면 사실상 공격이 어려움

 

2. 사람들이 자주 쓰는 값을 이용 (=딕셔너리 공격)

-많은 사람들이 패스워드 같은 값을 생성할 때 기억하기 쉬운 값을 사용하는 것을 역으로 이용

-사용 빈도 수가 높은 값을 모아 입력 값에 대입 

-무작위 값을 사용한다면 값이 파일에 포함되어 있지 않아 알아내기 힘듦 (목록이 더 많은 파일 이용, 패스워드 변형 및 조합을 이용해 더 많은 패스워드 검사)

 

Brute Force Attack 실습

-DVWA, kali 리눅스 환경, Burpsuite 사용

 

DVWA로그인 (admin/password)

 

우선 DVWA의 보안 레벨을 Low로 바꾸어준다. 

 

*버프 스위트 사용 준비*

미리 프록시 설정을 해주고 버프 스위트도 켜두어야 한다.
저는 foxyproxy 사용했습니당. (껐다 켰다하기 편해서 강추)
버프 스위트 - Proxy - Intercept - Intercept is off 로 바꾸고
HTTP history 창을 켜두면 준비 끝

 

메뉴에서 Brute Force를 누르고 아이디에는 admin, 비밀번호는 아무거나 넣어준다.

 

당연히 password가 잘못되었다는 창이 뜬다!

 

이제 버프스위트 - Proxy - HTTP intercept로 이동하면 

이런식으로 우리가 보낸 username (admin)과 password가 해당 페이지로 전송된 것을 볼 수 있다.

(안보인다면 정렬이 잘 되어있는지 확인, 최근 요청/응답 순으로 바꾸어주어야 가장 첫번째에 보인다.)

 

이제 이 요청을 intruder로 보내준다 (보내려는 요청 위에서 마우스 오른쪽 키 누르면 나옴)

그리고 intruder로 이동하면

우리가 공격하려는 웹 Host와 port가 보인다. positions으로 이동

우리가 전달한 인자들에는 초록색으로 표시가 되어있는데, 오른쪽에 clear를 눌러 바뀌지 않는 값으로 바꾸어주고

Brute Force를 통해 알아낼 password 값만 드래그 해서 변수로 지정해준다.

 

Payloads로 이동해서 payload options에 kali에 있는 password list 파일을 불러올 것이다.

(password list에는 사람들이 자주 사용하는 패스워드들이 들어있다.)

load를 누르고 password.lst 를 불러오쟈

(password.lst 경로: /usr/share/john/password.lst)

그리고 주석처리(#) 되어 있는 윗 부분을 remove해주면 다음과 같이 예상 password들이 준비된다.

 

password 준비까지 끝냈다면 start attack을 눌러 공격하자!

 

+ start attack을 누르면 payload options에 불러온 예상 password들이 아까 변수로 지정한 password value 자리에 차례대로 채워지며 요청을 보낸다. 만약 password.list중에 password가 있다면 로그인이 될 것이다!

 

공격을 하면서 결과와 응답 length를 알려주는데 유일하게 length가 다른 값(password)이 보인다.

아마 password가 admin의 pw인 것으로 예상된다.

(password.lst에 단어가 3546개...너무 많아서 오래걸리지만 패스워드를 찾았으니 과감히 꺼준다. ^^)

 

이제 DVWA로 돌아가서 username에는 admin을 pw에는 방금 찾은 password를 넣어주자!

 

로그인이 된 것을 확인할 수 있다! 

Brute Force Attack 성공

 

 

Comment: 공격이 실패할 일은 적지만 확실히 시간이 오래 걸린다. 3546개 단어를 넣는 데도 이렇게 오래 걸렸는데 모든 경우의 수를 실행하는 것은 패스워드 길이가 길어지면 불가능에 가깝다는 것 또한 느낄 수 있었음...

 

Brute Force Attack 대응

1) 락킹(Locking)

-로그인 실패 시 일정시간동안 로그인을 제한하는 방법

-공격자가 고의적으로 특정 사용자의 사이트 이용을 막을 수 있어서 좋은 방법은 아님

ex. 스마트폰 잠금해제 (30초 후에 다시 시도하세요 이런거...)

 

2) 캡차(CAPTCHA)

-자동화된 프로그램이 알아볼 수 없는 글씨나 그림문자를 로그인 시도 시 함께 입력하도록 하는 방법

-방금 실습과 같이 자동으로 패스워드를 변경해서 보내는 것이 불가능해진다.

(웹 사이트에서 사용하는 통상적인 방법인 듯)

Comments