ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모의해킹의 두 번째 취약한 인증 공격
    웹 해킹 2021. 3. 10. 09:39

    공격자는 사용자 계정 정보를 확인하거나 세션 토큰과 같은 인증에 사용되는 토큰 정보를 입수하여 인증과정을 우회한다.

     

    취약한 인증 리스크는 인증 과정이 제대로 보호되어 있지 않아서 공격자가 인증 과정을 우회할 수 있는 경우 발생한다.

    예) 로그인 시도에 제한을 하지 않는 경우, 브루트 포스 공격이 시도될 수 있다.

     

    브루트 포스 공격은 특정 정보(주로 사용자의 패스워드)를 알아내기 위한 공격이다.

    패스워드 크래킹을 위해 사용하기도 하며, 웹 어플리케이션을 대상으로 사용자의 패스워드를 알아낼 때 사용한다.

     

    브루트 포스 공격의 첫 번째 방법은 일련의 문자들을 하나씩 입력하는 방법이 있다.

    이 방법의 단점은 패스워드 길이가 길어지면 공격이 어렵다는 것이다.

     

    브루트 포스 공격의 두 번째 방법은 사람들이 자주 쓰는 패스워드를 이용하여 로그인 시도를 하는 것이다.

    이 방법을 딕셔너리 공격이라고 한다. 딕셔너리 공격을 이용하면 무작위 브루트 포스 공격에 비해 적은 시도로 패스워드를 알아낼 확률이 높다. 이 방법의 단점은 아무 의미 없는 무작위 패스워드 경우 알아내기 어렵다.

     

    브루트 포스 공격 실습을 해보겠다.

    DVWA의 보안 레벨을 low로 설정하고 브루트 포스 메뉴를 선택한다.

     

    위 그림과 같이 패스워드 입력을 계속함으로써 패스워드를 찾을 수 있지만, 시간이 오래걸린다.

     

    따라서 거의 모든 브루트 포스 공격은 자동화 프로그램을 이용하여 진행한다. 그 한 가지 방법으로 버프 스위트의 인트루더 기능이 있다.

     

    버프 스위트의 인트루더 실습을 하려면 인터셉트 기능을 꺼야 한다. 인터셉트 기능은 실시간으로 요청을 변조할 때 이외에는 꺼두는 것 좋다.

     

    브루트 포스 공격에 입력한 값에 인트루더로 보낸다.

     

    위 그림과 같이 쿼리 스트링과 쿠키를 확인할 수 있다.

     

    인트루더 포지션 탭을 보면 자동으로 표시되는 부분이 있는데 쿠키나 파라미터 등 서버 쪽에서 변수 값으로 사용되는 부분을 볼 수 있다.

    이때 우리는 패스워드 값만 테스트할 것이기 때문에 패스워드 값만 add 한다. 선택된 영역은 다양한 문자열로 치환하여 테스트하게 한다.

     

    payloads에 들어간 화면

     

    그리고 payloads에 가서 type을 브루트 포스로 선택하고, payloads options을 보면 영문과 숫자가 세팅되어있는 것을 볼 수 있다. 이때 옵션을 추가할 때마다, 조합 수가 늘어나는 것을 볼 수 있다. 그리고 start attack을 누르면 실행된다.

     

    start attack 실행 화면

     

    이렇게 브루트 포스 공격은 하나씩 대입하면서 패스워드를 찾는 공격인데 시간이 오래 걸린다는 단점이 있다.

     

    딕셔너리 공격 실습을 해보겠다.

    nano /usr/share/john/password.lst 로 들어간 화면

     

    딕셔너리 공격은 위 그림과 같은 패스워드 파일을 이용하여 공격하는 방법이다.

    또한 딕셔너리 공격은 다수가 많이 사용하는 패스워드 위주로 테스트하기 때문에 빠른 시간 내에 패스워드를 찾을 수 있다. 다만, 파일에 등록되지 않은 패스워드는 못 찾는다.

     

    딕셔너리 공격도 이와 같이 payloads에 세팅을 한다.

     

    start attack 실행 화면

     

    위 그림에서 Length가 다른 password 부분을 패스워드로 의심해 볼 수 있다.

    웹 어플리케이션에 따라서 응답 길이 외에도 응답 코드(Status)나 에러 등의 결과가 다르게 나타나는 경우가 있다. 만약 하나의 요청 결과가 다르면 주목해볼 필요가 있다.

     

    의심되는 패스워드로 로그인한 화면

     

    이로써 패스워드를 알게 되었다.

     

    브루트 포스 공격 대응으로, 로그인 실패 시 정해진 시간 동안 로그인하지 못하게 하는 방법이 있다.

    예) sleep(2);

     

    이와 같이 일정 시간 동안 로그인 시도를 제한하는 방법을 락킹이라고 한다. 이 방법을 사용하면 로그인 시도 간격이 길어져 패스워드를 찾는데 걸리는 시간이 무한하게 늘어나 브루트 포스 공격을 차단할 수 있다.

     

    한편 공격자가 이 점을 노리고 패스워드를 일부로 틀려 웹사이트를 이용하지 못하게 만들 수 있다. 따라서 락킹을 적용할 때에는 신중을 가해야 한다.

     

    브루트 포스 공격을 대응하기 위해서 잘못된 로그인 시도를 여러 번 발생할 때, 응답을 느리게 하거나 일정 시간 동안 락킹을 하여 반복되는 로그인 시도를 딜레이 하여 무력화시켜야 한다.

     

    다른 대응 방법으로 흘려 쓴 글자나 그림 문자를 로그인 시도 시 입력하도록 하는 캡차가 있다.

    사람이 식별할 수 있는 문자나 그림을 이용함으로써 실제 로그인 시도가 사람이 시도하는 것임을 확인하는 방법이다.

     


    위 글은 화이트 해커를 위한 웹 해킹의 기술을 참고했습니다.

    댓글

Designed by Tistory.