인공지능 개발일지

[웹해킹] Brute force 공격 실습 본문

보안/웹 해킹

[웹해킹] Brute force 공격 실습

Prcnsi 2021. 7. 10. 01:07
728x90

이번 실습은 "화이트 해커를 위한 웹 해킹의 기술"책에 수록된 실습 중 하나입니다.

 

 


 

1. 실습 준비

먼저 실습 준비를 위해 Oracle VM VirtualBox에 칼리 리눅스를 설치해 줍니다.

 

 

 

1.1 스냅샷 생성

스냅샷은 찍으면 나중에 칼리에 오류가 났을 때 복구할 수 있습니다.

그래서 스냅샷을 찍어줍니다.

VirtualBox
스냅샷 찍기

 

 

 

1.2 가상 머신 설치

실습할 서버를 아래 주소에서 다운로드하여줍니다.

https://github.com/bjpublic/whitehacker

실습 서버 다운로드

 

 

참고로 아래 시스템은. ova로 끝나고 이는 시스템을 불러오는 것이어서 별도의

초기 설정이 필요 없습니다.

 

.ova파일 다운로드

 

 

 

1.3 VirtualBox에 가상 파일 시스템 가져오기

시스템 불러오기

시스템을 다운로드하였으면 VirtualBox에 불러와 설치해 줍니다.

 

 

 

설치

 

 

 

설치가 완료되면 아래와 같이 목록에 뜹니다.

결과 창

 

 

 

 

1.4 IP주소 확인

다운로드한 시스템을 실행해 주면 아래와 같은 화면이 뜹니다.

 

서버 실행

 

 

이제 다운 받은 서버의 ip주소를 확인해 줍니다.

이 작업을 통해 칼리에서 아래 서버의 위치를  찾을 수 있습니다.

 

ip주소 확인

 

 

 

 

 

 

1.5  다시 칼리로 돌아가서 버프슈트로 브라우저 열기

이제 칼리로 돌아와서 브라우저를 열어줍니다.

 

(참고로 파이어폭스나 크롬에서 버프슈트를 쓰려면 별도의 프록시 설정이 필요합니다.

그런데 현재 업그레이드된 버프슈트는  Open Broser로 별도의 프록시 설정 없이 사용 가능합니다)

open browser

 

 

 

 

브라우저를 열면 아래와 같이 파란 크롬 기호의 브라우저가 열립니다.

 

실행

 

 

 

 

 

1.6 공격할 서버로 접속

이제 여기서 아까 확인한 ip주소로 접속해 줍니다.

 

서버 접속

아까 주소로 들어가면 공격을 당할 서버 내에 있던 파일 세 개가 뜹니다.

(공격당할 서버=다운로드한 것, 공격할 서버=칼리)

 

이번 실습은 이 중 DVWA를 들어가 줍니다.

기본 비번은 아래와 같습니다. 

 

  • ID:admin
  • Pw:password

(아래 로그인 창은 해킹할 로그인 창이 아니라 실습 페이지로 들어가는 로그인 창입니다.)

1.7 보안 레벨 설정

들어오셨으면 DVWA Security로 이동하여 보안 레벨을 low로 낮춰 줍니다.

 

레벨 설정

 

low로 설정

참고로 상위 레벨은 POST 방식으로 전달하고 위 Low단계는 GET방식으로 값을 전달하는데 이는

GET방식이 URL에 드러나서 그런 것 같습니다.

 

 

 

 

 

 

 

 

 

2.1 브루트 포스 공격(Brute-force Attack) 실습

브루트 포스 공격은 무차별 대입 공격입니다.

이는 암호학에서 해독법 중 하나로 암호를 풀기 위해 모든 경우의 수를 대입해 보는 것입니다.

 

이번 실습에서는 아이디를 알고 있고(admin) 로그인 시도 횟수에 제한이 없다고 가정합니다.

 

브루트 포스는 아래와 같이 두 가지의 방법이 있습니다.

  • 모든 경우의 수
  • 유력한 리스트 사용(딕셔너리 공격)

이 중 오늘 사용할 것은 유력한 리스트 사용입니다.

 

 

이제 바로 Brute Force 탭의 초기 화면으로 이동합니다.

초기 화면

 

 

 

 

 

2.2 Intercept 끄고 로그인 시도

알고 있는 id(admin)와 아무 비번 webhacking을 입력해 줍니다.

  

ex) ID: admin, PW: webhacking

 

로그인 실패

 

그러면 위 화면과 같이 로그인 실패가 뜹니다.

 

 

 

 

2.3 시도한 기록을 HTTP history에서 찾기

위에서 실패한 로그를 Proxy-HTTP history에서 찾아줍니다.

로그 찾기

찾은 로그를 클릭하면 우측 아래 박스와 같이 username과 password변수에 아까 대입한

잘못된 비번 로그가 남은 것을 확인할 수 있습니다.

 

그리곤 찾은 로그를 우클릭해서 Send to Intruder로 Intruder탭에 보내줍니다.

 

 

 

 

2.4 Payloads로 이동해서 리스트 추가

다음으로 Intruder-Positions 탭으로 오면 GET방식으로 전달된 파라미터들을 볼 수 있습니다.

 

그런데 아래는 보이는 바와 같이 id 비번 모두를 비번으로 인식하고 있기 때문에 

Clear 하고 webhacking만 스크롤해서 Add 해줌으로써 비번만 변수로 인식하게 합니다.

 

password 변수 설정

  

 

 

 

이제 Payloads로 이동해서 아래 경로에 있는 리스트를 추가해 줍니다.

리스트: /usr/share/john/password.lst

 

위 리스트는 1990-2005년도 정도에 자주 사용되었던 비밀번호로 gedit으로 열어보면

아래와 같이 비밀번호 리스트들이 들어가 있는 것을 확인할 수 있습니다.

 

리스트

 

 

 

 

이제 확인한 리스트를 Payload Options 탭에서 Load로 불러와 줍니다.

 

파일 로드

 

 

그리고 주석을 제거해 줍니다.

 

주석

 

 

그러면 아래와 같이 순전히 비밀번호 리스트만 남습니다.

 

주석 제거

 

2.5 Start attack

리스트를 업로드했으므로 Start attack을 눌러줍니다.

그러면 프로그램 내에서 위 리스트에 있는 비번들을 차례로 대입한 결과를 보여줍니다.

 

 

 

 

 

결과적으로 Length가 다른 payload 항목 password가 비밀번호일 것입니다.

 

 

 

추측한 비밀번호로 로그인하면 아래와 같이 admin으로 로그인됩니다.

 

로그인 성공

 

 

 


 

 

 

 

 

이상으로 브루트 포스 공격으로 비밀번호를 알아내는 실습을 해보았습니다.

다음 포스팅은 sql 인젝션 공격이 예정되어 있습니다.

감사합니다~

728x90