DVWA 웹 보안 실습#1 / Brute Force

Young Hun Park·2023년 3월 6일
0

실습을 진행하기 앞서서 실습환경은 Oracle VM VirtualBoxKali Linux를 설치한 후
Burp Suite를 이용하여 진행하였습니다.
또한 DVWAMetasploitable2 위에서 구동시키도록 환경을 실습환경 구축했습니다.

Kali Linux는 데비안 기반의 모의 침투 테스트용 운영체제이고

Burp Suite는 웹 프록시로서 클라이언트 요청정보, 서버의 응답 정보 등을 상세히 확인할 수 있는 툴입니다.

Metasploitable2는 모의 침투 테스트를 위한 취약한 웹서버이며 DVWA등과 같은 여러 모의 침투용 웹 어플리케이션들을 제공합니다.

이어지는 포스팅에서는 실습환경에 대한 설치 과정을 따로 다루진 않고 간단한 실습과 함께

웹 보안에 대한 개념을 확실히 잡으면서 공부하는 것을 주목표로 하겠습니다. 

Brute Force란?

먼저 Brute Force가 무엇인지 개념을 한번 공부해보겠습니다.
사전적 의미를 본다면 인정사정없는, 무자비한 공격 등으로 해석할 수 있지만
사실상 가장 무식한 침투방법이라고 할 수 있습니다.

즉, 특정한 사용자의 비밀번호를 알아내고자 할 때 될 수 있는
비밀번호를 자동화 방식으로 모조리 입력해 보는 것입니다.

모든 경우의 수를 넣어 볼 수도 있지만
비밀번호 자릿수에 따라 어마어마한 시간이 걸리기 때문에
보통 사용자들이 자주 사용하는 비밀번호 리스트를 파일로 만들어 넣어서 공격을 진행하며
이를 '딕셔너리 공격'이라고도 부릅니다.

Brute Force 실습

실습은 다음과 같은 DVWA 홈페이지 Brute Force 탭에서 admin이란 아이디를 한다고 가정했을 때 password를 찾아내어 침투하는 시나리오로 진행하겠습니다.

Burp Suite에서는 brute force 공격을 쉽게 할 수 있는 Intruder라는 기능을 제공하는데요.
그 기능을 사용하기 전에 먼저 위 그림과 같이 intercept is off로 바꿔줍니다.

(Intercept는 어떠한 웹사이트로 요청을 보낼 때 날리는 패킷을 burp suite 프락시에서 가로채 갖고 있는 기능입니다.)

DVWA 사이트에서 admin 아이디에 아무 비밀번호를 치고 로그인 시도를 하신 다음 burp suite의 target를 들어가 보시면

들어갔던 사이트맵이 있고 오른쪽에는 보낸 요청에 대한 정보를 볼 수 있습니다. 

방금 저희가 쳤던 아이디가 비밀번호가 들어가 있는 요청을 우클릭으로 누른 다음 "Send to Intruder"를 누릅니다.

그런 다음 Intruder 탭으로 이동합니다.

Intruder 탭 안에 Positions에 들어가면 타깃들이 녹색으로 표시되어 있는 것을 확인할 수 있습니다.

현재 실습에선 password를 대상으로만 할 것 이기 때문에 오른쪽 버튼에 Clear를 눌러주시고 "password=" 뒷부분은 다시 Add 버튼을 통해 추가시켜줍니다.

그런 다음 Payloads에 들어가면 Payload Options에서 공격에 투입할 비밀번호들을 설정할 수 있습니다.

물론 일일이 적어줘도 되지만 사용자들이 자주 사용하는 비밀번호 목록으로 만들어진 파일로 실습을 진행 보겠습니다.

칼리 리눅스에 위와 같은 Passwords폴더로 들어가면 여러 password를 모아놓은 파일들이 많습니다.

필자는 여기서 probable-v2-top207.txt를 사용해보겠습니다.

위와 같이 자주 사용되는 비밀번호 200여 개가 들어간 것을 볼 수 있습니다.

오른쪽 위에 있는 Start attack 버튼을 누르면 위 화면과 같이 Brute Force attack을 시작합니다.

응답의 Length를 비교하여 혼자만 4945의 길이를 갖는 password가 실제 비밀번호임을 유추할 수 있습니다.

추가적으로 DVWA setting에서 보안 정도를 설정할 수 있습니다.
여기서 3단계와 최신 버전에는 Impossible 단계까지 총 4단계가 존재하는데
각자 brute force에 대응하는 방식이 다릅니다.

예를 들어, low단계에서는 그냥 눈뜨고 코베이지만
medium에서는 로그인 시도가 실패하면 일정 시간 프로세스를 sleep 시켜 시간을 지연시킵니다.
high 단계에서는 랜덤한 시간을 sleep 시켜서 일정한 패턴으로 공격하는 brute force 공격을 더 어렵게 만들며
마지막 impossible 단계에서는 여러 번의 로그인 시도가 실패하면 계정을 Lock 시켜서 15분 동안 로그인 시도를 못하게 막습니다.
따라서 마지막 단계는 brute force 공격이 거의 불가능하다고 할 수 있습니다.


Reference :
www.bankinfosecurity.com/blogs/credential-stuffing-attacks-vs-brute-force-attacks-p-2767 

PS.
읽어주셔서 감사합니다!!
개인적으로 처음 접하는 부분들을
혼자 공부하면서 진행하다 보니 부족한 점이 많습니다. 

항상 정확하고 좋은 글을 쓰려고 노력하겠지만
부족한 부분을 발견하시면 언제든지 말씀해주시면 감사하겠습니다!!

profile
개발자에게 유용한 지식

0개의 댓글