본문 바로가기
web hacking

전 국민이 직접 시도해본 해킹공격, Brute Force Attack (dreamhack session)

by Jueun7 2023. 7. 17.

인터넷에 돌아다니는 dictionary list

너도 해봤을걸?

이 공격은 대한민국 전 국민이라면 한 번씩은 해본 공격이라고 말해도 무관하다.

한 번쯤은 친구 핸드폰, 노트북이나 컴퓨터를 열기 위해서 비밀번호를 아무거나 입력했던 기억이 있을 것이다. 이게 바로 brute force attack이다.

혹시 그때 0001, 0002 이런 게 아니라 1111, 2580,1234 이런 식으로 해봤으면 당신은 dictionary attack을 한 엄청난 해커이다!!!

 

 

 

그래서 이게 뭔데?

윗글을 읽고 이미 이해했을 거라 본다. 그래도 설명을 해보면,

brute force attack은 무차별 대입 공격이다.

dictionary 은 자주 사용하는 문자열부터 우선적으로 보내는 공격이다.

 

웹 해킹 공격 중에서 가장 쉽고 간단한 공격인 것 같다.

물론 대응 수준이 높아질수록 공격도 어려워진다.

 

 

 

직접 공격하기

이 공격을 하기 위해 우리는 burp suite과 python을 사용할 것이다.

코딩을 잘하면 python 사용하고 나처럼 코딩을 못하면 burp suite를 사용하면 된다.

 

공격은 드림핵의 session 문제에 해보겠다.

문제링크 : https://dreamhack.io/wargame/challenges/266/

 

주요 코드 분석

if __name__ == '__main__':
    import os
    session_storage[os.urandom(1).hex()] = 'admin'
    print(session_storage)
    app.run(host='0.0.0.0', port=8000)

음... 세션 스토리지에 hex값 한자리 수를 랜덤으로 설정하고 그 값을 admin으로 설정하는 코드이다.

 

 

일단 burp suite로 해당 로그인 사이트로 접속해보자

 

guest로 로그인을 하고, forward 하면,

 

sessionid가 나왔다. 이제 이 패킷을 intruder에 보낸다.

 

sessionid를 add 하고, payload에서

brute force로 하고 길이는 2글자, 16진수니 123456789 abcedf로 설정했다.

 

공격 시작!~!! 1!@~!~!~#@$^%#@@!#$%^&%$#@

 

오오 모든 payload를 다 요청하고 보니 혼자서 길이가 1505인 응답이 있었다!!

 

바로 벗겨보니

그냥 바로 admin으로 로그인하고 flag가 나왔다!

 

대응책

CAPTCHA

CAPTCHA를 사용해 로봇인지 사람인지 구분하는 방법이 있다.

하지만 캡챠도 해킹할 수 있으니 완벽한 대응책이 아닌 것 같다...

 

시간 지연

sleep 넣는 방법도 있다. 한번 로그인할 때 틀릴 때마다 2초씩 기다리고 응답을 보내준다.

하지만 이 방법도 몇 초 동안 아무런 응답도 없으면 틀렸다고 가정하고 다시 보내면 된다.

이 방법도 완벽한 대응책이 아닌 것 같다.

 

2차 인증

일단 다른 방법으로 1차적으로 막고, 혹시 로그인에 성공해도 2차 인증을 넣어서 대응할 수 있다.

이 방법은 거의 완벽하다고 생각한다.

 

blocking

5번 정도 틀리면 그냥 로그인 시도 자체를 못하게 막아버릴 수 도 있다.

공격은 완벽하게 막을 수 있을 것 같다.

 

 

review

사실 딕셔너리랑 파이썬 requests 사용해서 하는 것도 쓰려고 했는데 너무 길어질 것 같아서 버프스위트만 작성했다.

이걸 write up인지 개념 설명인지 모르겠지만 읽는 사람도 나도 많은 도움이 되었으면 좋겠다!

다음은 command injeciton으로 작성하겠다!

'web hacking' 카테고리의 다른 글

HTML/CSS Injection  (0) 2023.07.28
정보빼가는 SQLi 와 SQLMAP  (0) 2023.07.24
SSTI띠띠리리~~  (0) 2023.07.21
command injection  (0) 2023.07.18
그냥 XSS는 재미가 없잖아? (XSS filtering bypass)  (2) 2023.07.16