bruteforce attack

2023. 5. 18. 01:19Site/DVWA

# bruteforce attack

- 인증 시스템을 해킹하거나 데이터를 탈취하기 위해 비밀번호, PIN, 암호화된 데이터의 키 또는 다른 인증 정보를 무차별 대입하는 공격 방법 

- 공격자는 대량의 가능한 비밀번호 목록을 작성한 다음 이를 시스템에 대입하여 올바른 비밀번호를 찾을 때까지 계속 시도 

cf) 

사전대입방법 

방법 
1. 직접코딩[파이썬] 
단점 : 직접 개발해야되므로 시간소모 
장점 : 공격속도가 빠름 
2. 히드라 
단점 : cmd로 하므로 약간 사용어려움이있음 
장점 : 오픈소스, FTP, SSH등 인증과 관련된 프로토콜은 거의 가능하며 다양한 프로토콜을 지원함
3. 버프슈트의 인프로더 기능 
단점 : 전송속도가 느려서 공격속도가 느림 
장점 : 패킷을 잡아서 공격함, 사용법이 간단함 

 

- 자동화된 소프트웨어를 사용하여 비밀번호를 대입하며, 이를 통해 많은 시도를 빠르게 수행할 수 있음 

 

# 공격 순서도 

공격자는 대량의 가능한 비밀번호 목록을 작성 -> 자동화된 소프트웨어를 사용하여 비밀번호를 대입 -> 시스템은 비밀번호를 검증하고 올바르지 않으면 거부 -> 공격자는 시스템이 거부하는 모든 비밀번호를 재시도 -> 공격자는 시스템이 거부하는 모든 비밀번호를 재반복함 

 


# low 

일단 비밀번호 틀리게 입력 

 

소스코드를 보니 get으로 전달하고 input타입으로 namepassword를 받음. 틀렸으면 나타나는 문구도 보임

참고로 칼리에서 /usr/share/dvwa/vulnerabilities 로 이동하면 각 취약점 문제에 대한 low, medium, high, impossible 소스코드를 볼 수 있음 

/usr/share/dvwa/vulnerabilities

 

전체소스코드

 

먼저 Dvwa에 비밀번호 1234입력해서 틀리게 한다음 버프슈트로 패킷잡아봤다 

공격 상태가 보여지는데 기존 password 값인 길이만 4537로 값이 다르게 나타났다. 따라서 해당 부분이 패스워드이다.[status말고 length보고 판단]


# medium 

1. 비밀번호 부분에 snaitise 추가됨

-> mysqli_real_escape_string()함수 추가

== php에서 제공하는 함수로 MYSQL과 커넥션을할때 String을 Escape한 상태로 만들어준다.

mysqli_real_escape_string(connectionescapestring);  

cf)

MYSQL 과 연결하는 connection과 escape형태로 만들어줄 string을 입력한다.

NULL(\x00), \n, \r,  \, ', " 문자 (왼쪽) \ 붙여 사용자의 입력에 의해 악의적인 쿼리문이 실행되는 것을 막는다.

우리가 string을 입력할때 Tom's cat 이란 입력을 하면  '는 sql문에 앞서 있던 ' 와 중첩이 될 수 있다.

이러한 문제를 막기위해 \n, \r \" 처럼 구별해주는 형태로 만들어주는 것을 Escape string 이라고 한다.

 

2. Low와 다른게 로그인 실패시 2초뒤 다시 할 수 있는 딜레이 설정됨

Low레벨과 같은방법으로 공격하면됨. 차이점은 attack할 때 결과값이 2초뒤마다 나타남 


# high 

Token이 추가됨.  로그인 하는 처음 화면의 토큰값이랑 비교하는 것 같다. 이 경우에는 강제 소스코드를 만들어서 넣어야 되는데 추후에 다시 시도를 해봐야 될 것 같다...


# impossible 

임파서블에서는 로그인이 계속 실패되면 15분 잠금 

 

표시한 부분에서 3번 틀리면 15분간 잠금

이런것처럼 버프슈트에서 제일 안전한 방법은 회수제한을 주고 틀리면 잠그는 방법인 것 같다 

'Site > DVWA' 카테고리의 다른 글

about dir burster & nikto & dnsenum  (0) 2023.05.20
file upload  (0) 2023.03.08