Brute Force 공격이란 무차별 대입 공격으로서 사용자 인증을 통과 또는 특정 암호를 풀 수 있는 모든 값을 대입하는 공격이다. 대부분의 인증 방식은 이론적으로 Brute Force 공격에 안전하지 못하며, 충분한 시간만 주어진다면 암호화된 정보를 해독할 수 있다.
칼리 리눅스 2019.1 버전을 사용하며 공격 대상은 DVWA web application이다.
admin/admin
으로 로그인 결과 username and/or password incorrect
메시지가 출력된다. 따라서 admin
아이디 존재여부를 확인할 수 없다. password incorrect
메시지가 출력되었다면 admin
계정이 존재한다고 추측 가능하다.
BurpSuite
는 웹 프록시 도구로 웹 해킹 시 주로 사용하는 도구이다. Brute Force
공격은 로그인 시도 패킷을 만들어야 하므로 BurpSuite
를 사용하겠다. 프록시 도구를 사용하려면 브라우저의 프록시 설정을 활성화 하거나 프록시 확장프로그램을 사용해야 한다. 본 문서에서는 Firefox의 FoxyProxy
확장프로그램을 사용한다.
설정 후 proxy 버튼을 클릭하면 프록시가 활성화 된다.
BurpSuite를 실행하여 proxy 탭 하위의 Options탭에서 Running 부분을 체크한다.
체크 후 proxy 탭 하위의 Intercept탭에서 Intercept is on 부분이 on으로 설정되어 있는지 확인한다.
DVWA Brute Force 페이지에서 admin/1234를 입력한 뒤에, Login 버튼을 클릭한다.
Raw탭 아래의 HTTP Message Display 창에서 마우스 우클릭 후 Send to Intruder
메뉴를 클릭한다. 또는 단축키 Ctrl+I
를 입력한다.
Intruder 탭의 Positions 탭으로 이동한다. 로그인 인자 값으로 넘어가는 username, password, login, PHPSESSID 등의 값 앞뒤로 §
문자와 음영이 표시된다. Clear 버튼을 클릭하면, 음영과 §
문자가 사라진다.
공격을 실행하기 위해 패스워드 값을 마우스로 드래그 한 뒤, Add 버튼 클릭 시, password 인자 값에만 §
문자가 표시된다.
Payloads 탭으로 이동해 값을 설정한다. Brute Force 공격을 위한 세부설정 후 start attack을 클릭하면 공격이 진행된다. 설정내용은 다음과 같다.
구분 | 내용 |
---|---|
Payload set | §를 구분하는 값, 파라미터 2개에 §문자를 넣었다면 payload set 을 2로 설정 |
Payload type | 공격 유형을 설정한다. Simple list, Runtime file, Brute forcer, Null payloads 등이 존재 |
Character set | 공격 시도 문자열 설정 |
Min length | Brute Force 공격 최소 길이 설정 |
Max length | Brute Force 공격 최대 길이 설정 |
Brute Force 공격이 시작되면 payload 값, 로그인 시도 중인 패스워드 값이 나타난다. 공격에 성공한 패킷은 Length
값이 다르다. 로그인 성공과 실패에 대한 html 반환 값이 다르기 때문이다.
로그인에 실패한 Response 패킷은 아래와 같이 User name and/or password incorrect
메시지를 출력한다.
로그인에 성공한 패킷은 Welcome to the password protected area admin
메시지를 출력한다.