일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 워게임
- 리버싱 문제
- C언어
- 인공지능
- MySQL
- 넘파이
- 컴퓨터 구조
- html
- 어셈블리어
- 자바스크립트
- 알고리즘
- 리버싱
- 웹해킹
- php
- abex crackme
- 백준
- CodeEngn
- 회귀 수식
- 해킹
- 리액트
- 리버싱 워게임
- 리눅스
- webhacking.kr
- sql injection
- webhacking
- 머신러닝
- 보안
- writeup
- 웹
- 백준 알고리즘
- Today
- Total
인공지능 개발일지
[웹해킹] Brute force 공격 실습 본문
이번 실습은 "화이트 해커를 위한 웹 해킹의 기술"책에 수록된 실습 중 하나입니다.
1. 실습 준비
먼저 실습 준비를 위해 Oracle VM VirtualBox에 칼리 리눅스를 설치해 줍니다.
1.1 스냅샷 생성
스냅샷은 찍으면 나중에 칼리에 오류가 났을 때 복구할 수 있습니다.
그래서 스냅샷을 찍어줍니다.
1.2 가상 머신 설치
실습할 서버를 아래 주소에서 다운로드하여줍니다.
https://github.com/bjpublic/whitehacker
참고로 아래 시스템은. ova로 끝나고 이는 시스템을 불러오는 것이어서 별도의
초기 설정이 필요 없습니다.
1.3 VirtualBox에 가상 파일 시스템 가져오기
시스템을 다운로드하였으면 VirtualBox에 불러와 설치해 줍니다.
설치가 완료되면 아래와 같이 목록에 뜹니다.
1.4 IP주소 확인
다운로드한 시스템을 실행해 주면 아래와 같은 화면이 뜹니다.
이제 다운 받은 서버의 ip주소를 확인해 줍니다.
이 작업을 통해 칼리에서 아래 서버의 위치를 찾을 수 있습니다.
1.5 다시 칼리로 돌아가서 버프슈트로 브라우저 열기
이제 칼리로 돌아와서 브라우저를 열어줍니다.
(참고로 파이어폭스나 크롬에서 버프슈트를 쓰려면 별도의 프록시 설정이 필요합니다.
그런데 현재 업그레이드된 버프슈트는 Open Broser로 별도의 프록시 설정 없이 사용 가능합니다)
브라우저를 열면 아래와 같이 파란 크롬 기호의 브라우저가 열립니다.
1.6 공격할 서버로 접속
이제 여기서 아까 확인한 ip주소로 접속해 줍니다.
아까 주소로 들어가면 공격을 당할 서버 내에 있던 파일 세 개가 뜹니다.
(공격당할 서버=다운로드한 것, 공격할 서버=칼리)
이번 실습은 이 중 DVWA를 들어가 줍니다.
기본 비번은 아래와 같습니다.
- ID:admin
- Pw:password
(아래 로그인 창은 해킹할 로그인 창이 아니라 실습 페이지로 들어가는 로그인 창입니다.)
1.7 보안 레벨 설정
들어오셨으면 DVWA Security로 이동하여 보안 레벨을 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 해줌으로써 비번만 변수로 인식하게 합니다.
이제 Payloads로 이동해서 아래 경로에 있는 리스트를 추가해 줍니다.
리스트: /usr/share/john/password.lst
위 리스트는 1990-2005년도 정도에 자주 사용되었던 비밀번호로 gedit으로 열어보면
아래와 같이 비밀번호 리스트들이 들어가 있는 것을 확인할 수 있습니다.
이제 확인한 리스트를 Payload Options 탭에서 Load로 불러와 줍니다.
그리고 주석을 제거해 줍니다.
그러면 아래와 같이 순전히 비밀번호 리스트만 남습니다.
2.5 Start attack
리스트를 업로드했으므로 Start attack을 눌러줍니다.
그러면 프로그램 내에서 위 리스트에 있는 비번들을 차례로 대입한 결과를 보여줍니다.
결과적으로 Length가 다른 payload 항목 password가 비밀번호일 것입니다.
추측한 비밀번호로 로그인하면 아래와 같이 admin으로 로그인됩니다.
이상으로 브루트 포스 공격으로 비밀번호를 알아내는 실습을 해보았습니다.
다음 포스팅은 sql 인젝션 공격이 예정되어 있습니다.
감사합니다~
'보안 > 웹 해킹' 카테고리의 다른 글
[웹해킹] 페이스북 피싱사이트 클론 (0) | 2021.08.02 |
---|---|
[웹해킹] 정보수집 방법(Information gathering) (0) | 2021.08.02 |
[웹해킹] 역직렬화 취약점 실습 (0) | 2021.07.22 |