[ 브루트 포스 공격이란 ]
사용자 패스워드를 알아내기 위한 공격으로 아이디와 패스워드가 일치할 때까지 반복 입력해보는 무식한 방식
- 알파벳 순
- 딕셔너리 공격 : 사람들이 자주 쓰는 패스워드 위주로 먼저 입력해보는 방식
[ 브루트 포스 공격 실습 ]
우선 DVWA에 접속하여 보안을 low로 변경한다.
카테고리 중 Brute Force를 누르면 로그인할 수 있는 창이 뜬다. admin이라는 사용자가 있는 것을 아니 비밀번호에 임의의 값인 'aaaa' 등을 입력하면 일치하지 않다는 문구가 나온다. 이렇게 하나씩 입력할 수도 있지만, 시간이 너무 오래 걸리기 때문에 버프스위트의 Intruder를 활용하여 실습을 진행하고자 한다.
자동 브루트포스 공격)
앞선 실습과 같이 admin 계정의 비밀번호를 임의로 'aaaa' 입력한 후, 버프스위트 Proxy 부분의 HTTP Histroy 중 가장 최근에 접속한 기록이 있다. 여기서 Request 테이블을 살펴보면 첫번째 줄에 username=admin&password=aaaa 로 되어있는 것을 볼 수 있다
가장 최근에 접속한 기록을 우클릭한 후 'Send to Intruder' 클릭하고 Intruder 탭에 가면 다음과 같은 것을 확인할 수 있다.
우선 Clear를 누른 후 password인 aaaa 부분에만 add를 눌러준다
이때, §§ 이 기호는 선택된 영역을 다양한 문자열로 치환하여 테스트하게 된다.
Intruder의 Payload 탭에서 Payload type을 Brute forcer로 변경한다.
Payload Options 부분을 보면 비밀번호 부분에 들어갈 랜덤한 값들을 'Character set'에서 확인할 수 있고 Min length와 Max length는 최소 길이와 최대 길이를 설정할 수 있는 부분이다.
옵션을 모두 작성한 후 윗 부분에 Payload count와 Request count 부분을 보면 비밀번호를 생성할 수 있는 모든 경우의 수를 확인할 수 있다. 조합수가 많아진다면 count 부분과 같이 unknwon으로 표기된 것을 볼 수 있다.
오른쪽 상단에 Start attack을 누르면 다음과 같이 공격이 진행되는 것을 볼 수 있다.
각각의 라인이 하나의 요청을 의미한다. Payload는 각각의 요청에서 어떤 값을 보냈는지 알 수 있다. 그 외에도 각 요청이 시행 되었을 때의 응답코드(status), 에러 및 타임아웃의 발생여부, 응답 메시지의 길이를 확인할 수 있다.
이런식으로 패스워드가 일치할 때까지 진행하는 것을 부르트 포스 공격이라고 한다.
시간은 오래 걸리지만 결국 찾아낼 수 있다는 장점이 있다는 방법이 있는 반면, 너무 오랜시간이 걸리고 패스워드의 길이가 길수록 사실상 불가능하다는 단점이 있다.
딕셔너리 공격)
리눅스 터미널에서 'gedit /usr/share/john/password.lst'를 입력하면 오른쪽 사진과 같이 딕셔너리 파일이 나온다. 파일의 설명을 통해 이 딕셔너리 파일은 1990년 중반에 많이 사용된 패스워드와 2006년에서 2010년까지 웹 사이트에서 많이 사용된 패스워드들로 구성되어 있음을 알 수 있었다.
딕셔너리 공격은 이러한 패스워드 파일을 사용하여 공격하는 방식이다. 통계적으로 많이 사용하는 패스워드 위주로 먼저 대입하기 때문에 상당히 빠른 시간안에 패스워드를 찾을 수 있다는 장점이 있지만, 파일에 작성되지 않은 패스워드는 찾지 못한다는 단점이 있다.
다시 버프스위트로 돌아가서 Payload type을 Simple list로 변경한 후 Payload Options 부분에서 password.lst 파일을 불러오면 아까 확인했던 파일의 내용들이 쭉 나열되어 있는 것을 볼 수 있다. #! 로 시작하는 주석부분은 제거한다
Start attack 버튼을 누르고 살펴보면 각각의 요청 중 Length 부분 즉, 응답 길이가 다른 하나를 찾을 수 있는데 이때 길이가 다른 값을 비밀번호라고 의심해볼 수 있다
길이가 달랐던 password를 비밀번호에 입력하니 로그인에 성공한 것을 확인할 수 있었다.
[ 브루트 포스 공격대응 ]
먼저 dvwa에서 보안을 medium으로 변경하고 다시 잘못된 패스워드로 로그인을 시도해봤더니 로그인에 실패했다는 문구가 조금 늦게 뜨는 것을 볼 수 있었다. 이처럼 지연시간을 늘리게 되면 비밀번호를 찾을 때까지 시간이 아주 오래 걸리게 되어 브루트 포스 공격에 어느정도 대응할 수 있다
강의에는 보안 단계가 Impossible까지 있지만 나한테는 없어서 실습해보지 못했지만, Impossible을 사용한다면 잘못된 비밀번호를 반복해서 입력할 경우 계정이 잠기게 된다. 이는 브루트 포스 공격을 완전히 대응할 수 있다는 장점이 있지만, 해커가 이를 역이용하여 사용자가 장시간 이용하지 못하도록 할 수 있다.
[참고자료] 인프런_화이트해커가 되기 위한 8가지 웹 해킹 기술
'Security > Web hacking' 카테고리의 다른 글
파일 업로드 공격 (0) | 2023.01.08 |
---|---|
파일인클루젼 공격 (0) | 2023.01.07 |
CSRF 공격 (0) | 2023.01.02 |
커맨드인젝션 공격 (0) | 2023.01.02 |
화이트해커와 웹 보안 (0) | 2023.01.02 |