일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비동기배열
- 앙버터마카롱
- typescript
- promise메서드
- 토라비
- graphql mutation error
- graphql 400
- 지보싶 신촌점
- 신촌 소문난집
- 고르드
- graphql
- graphql with RN
- 홍대 토라비
- apollo react native
- 잠실새내 도그존
- graphql with reactnative
- useMutation error
- graphql react native
- promise처리
- 홍대 예술
- 비동기배열처리방법
- 도그존
- 화이트 해커를 위한 웹 해킹의 기술
- 금별맥주
- 운정 소바동
- 화이트해커를 위한 웹 해킹의 기술
- 예쁜술집 예술
- apolloclient
- 홍대 카페 장쌤
- 잠실새내
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
Brute Force Attack + DVWA실습 본문
Brute Force Attack (무차별 대입 공격)
특정 정보를 알아내기 위해 가능한 모든 값을 대입해 원하는 정보를 알아내는 공격
1. 모든 경우의 수를 입력
-시간이 오래 걸리더라도 언젠가는 찾을 수 있음
-패스워드 길이가 길어지면 사실상 공격이 어려움
2. 사람들이 자주 쓰는 값을 이용 (=딕셔너리 공격)
-많은 사람들이 패스워드 같은 값을 생성할 때 기억하기 쉬운 값을 사용하는 것을 역으로 이용
-사용 빈도 수가 높은 값을 모아 입력 값에 대입
-무작위 값을 사용한다면 값이 파일에 포함되어 있지 않아 알아내기 힘듦 (목록이 더 많은 파일 이용, 패스워드 변형 및 조합을 이용해 더 많은 패스워드 검사)
Brute Force Attack 실습
-DVWA, kali 리눅스 환경, Burpsuite 사용
DVWA로그인 (admin/password)
우선 DVWA의 보안 레벨을 Low로 바꾸어준다.
*버프 스위트 사용 준비*
미리 프록시 설정을 해주고 버프 스위트도 켜두어야 한다.
저는 foxyproxy 사용했습니당. (껐다 켰다하기 편해서 강추)
버프 스위트 - Proxy - Intercept - Intercept is off 로 바꾸고
HTTP history 창을 켜두면 준비 끝
메뉴에서 Brute Force를 누르고 아이디에는 admin, 비밀번호는 아무거나 넣어준다.
당연히 password가 잘못되었다는 창이 뜬다!
이제 버프스위트 - Proxy - HTTP intercept로 이동하면
이런식으로 우리가 보낸 username (admin)과 password가 해당 페이지로 전송된 것을 볼 수 있다.
(안보인다면 정렬이 잘 되어있는지 확인, 최근 요청/응답 순으로 바꾸어주어야 가장 첫번째에 보인다.)
이제 이 요청을 intruder로 보내준다 (보내려는 요청 위에서 마우스 오른쪽 키 누르면 나옴)
그리고 intruder로 이동하면
우리가 공격하려는 웹 Host와 port가 보인다. positions으로 이동
우리가 전달한 인자들에는 초록색으로 표시가 되어있는데, 오른쪽에 clear를 눌러 바뀌지 않는 값으로 바꾸어주고
Brute Force를 통해 알아낼 password 값만 드래그 해서 변수로 지정해준다.
Payloads로 이동해서 payload options에 kali에 있는 password list 파일을 불러올 것이다.
(password list에는 사람들이 자주 사용하는 패스워드들이 들어있다.)
load를 누르고 password.lst 를 불러오쟈
(password.lst 경로: /usr/share/john/password.lst)
그리고 주석처리(#) 되어 있는 윗 부분을 remove해주면 다음과 같이 예상 password들이 준비된다.
password 준비까지 끝냈다면 start attack을 눌러 공격하자!
+ start attack을 누르면 payload options에 불러온 예상 password들이 아까 변수로 지정한 password value 자리에 차례대로 채워지며 요청을 보낸다. 만약 password.list중에 password가 있다면 로그인이 될 것이다!
공격을 하면서 결과와 응답 length를 알려주는데 유일하게 length가 다른 값(password)이 보인다.
아마 password가 admin의 pw인 것으로 예상된다.
(password.lst에 단어가 3546개...너무 많아서 오래걸리지만 패스워드를 찾았으니 과감히 꺼준다. ^^)
이제 DVWA로 돌아가서 username에는 admin을 pw에는 방금 찾은 password를 넣어주자!
로그인이 된 것을 확인할 수 있다!
Brute Force Attack 성공
Comment: 공격이 실패할 일은 적지만 확실히 시간이 오래 걸린다. 3546개 단어를 넣는 데도 이렇게 오래 걸렸는데 모든 경우의 수를 실행하는 것은 패스워드 길이가 길어지면 불가능에 가깝다는 것 또한 느낄 수 있었음...
Brute Force Attack 대응
1) 락킹(Locking)
-로그인 실패 시 일정시간동안 로그인을 제한하는 방법
-공격자가 고의적으로 특정 사용자의 사이트 이용을 막을 수 있어서 좋은 방법은 아님
ex. 스마트폰 잠금해제 (30초 후에 다시 시도하세요 이런거...)
2) 캡차(CAPTCHA)
-자동화된 프로그램이 알아볼 수 없는 글씨나 그림문자를 로그인 시도 시 함께 입력하도록 하는 방법
-방금 실습과 같이 자동으로 패스워드를 변경해서 보내는 것이 불가능해진다.
(웹 사이트에서 사용하는 통상적인 방법인 듯)
'웹 > 웹 해킹' 카테고리의 다른 글
SQL injection 실습2 (ORDER BY & UNION) (0) | 2020.09.30 |
---|---|
SQL injection 실습1 (WHERE 구문 우회) (0) | 2020.09.29 |
CSRF (크로스 사이트 요청 변조) (0) | 2020.09.18 |
XSS (크로스 사이트 스크립팅) (0) | 2020.09.16 |
커맨드 인젝션 공격 / Command injection (0) | 2020.09.12 |