ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DVWA - CSRF, Burp Suite - Dictionary Attack, Kali Linux -Medusa, Crunch - Brute Force
    Security 2022. 5. 17. 20:18

    Dictionary

    CSRF

    CSRF (Cross Site Request Forgery) : 교차 사이트 요청 위조

    공격 대상 : Web Server

    Client의 권한을 이용해서 위조된 요청을 Web Server에 보내는 공격

    대표적 사레로는 자동으로 댓글 달기, 좋아요 눌러지기, 비밀번호 변경, 회원 탈퇴 요청, 회원 승급 요청 등

    사용자들이 원하지 않았지만 스크립트의 소스 안에 공격자의 의도가 포함되어 있는 상태로 Web Server에 요청이 보내집니다.

     

    Metasploitable2를 켜고 DVWA에 접속합니다.

    - 리눅스는 굳이 로그인하지 않아도 서버가 실행됩니다.

    - DVWA : admin / password

    - Security Lever : Low 변경

    - CSRF 메뉴 클릭

    - admin의 패스워드를 123456으로 변경하기 위해, 123456을 두 번 입력하고 Change 클릭

    - Brute Force 메뉴에서 admin/password하면 로그인 안됨, admin/123456하면 로그인됨

    Brute Force에서 admin 123456으로 로그인
    F12를 눌러서 개발자 도구 - 디버거를 들어가서 46 ~ 52라인을 복사합니다.
    메모장에 붙여넣고 맨 앞의 #을 DVWA 주소를 붙여 넣어줍니다.
    현재 비밀번호와 바꿀 비밀번호 입력
    들어와지며 Password Changed가 표시됩니다.
    바뀐 비밀번호로 로그인에 시도해봅니다. 성공

    CSRF

    공격자는 Client의 권한을 이용해서 Web Server에 위조된 요청을 보냅니다.

    댓글, 관리자에게 전달되는 내용 등

    OWASP 2013년 버전에는 8위였으나, 2017년 버전에서는 순위 밖으로 내려감 (대응 방법이 많이 나와있어서 심각 수준이 내려감)

     

    Burp Suite를 이용한 Dictionary Attack

    Burp Suite를 켜줍니다. 그리고 Proxy - HTTP History
    Internet Explorer의 인터넷 옵션 - 연결 - LAN 설정 - 프록시 서버 - 사용자의 LAN에 프록시 서버 사용 체크
    DVWA - Brute Force에 Username:pablo, Password:1234로 임의로 로그인 시도
    Burp Suite의 상단 Proxy - HTTP history에 접속 기록을 클릭하여 하단의 Request를 확인해줍니다.

    pablo, 1234로 접속한 기록을 확인해줍니다.

    GET부터 Login까지 블럭 - 우클릭 - Send to Intruder
    그리고 상단의 Intruder을 들어갑니다.

    아래의 Payload Positions의 내용을 보면 형광색이 칠해져 있는 부분을 볼 수 있는데 password의 내용을 제외하고 모두 블럭을 씌어주어 우측의 가지런한 네 개의 버튼 중에 Clear를 눌러주어 형광색을 없애줍니다.

    만약 실수로 다른 내용을 Clear 했어도 Add를 누르면 되니 너무 걱정하지 않으셔도 됩니다.

    상단의 Payload 클릭

    Payload Sets를 확인해줍니다. Payload type를 Simple list로 바꿔줍니다.

    Payload Option

    아래의 Payload Option 확인 후 Load를 클릭해줍니다.

    그러면 첨부파일을 넣을 수 있는데 Dictionary 예시 파일인 password.txt 파일을 Open 해줍니다.

    open - Start attack

    Open 하면 Payload Options [Simple list]에 Dictionary의 내용이 채워지게 되고, Start attack을 눌러줍니다.

    Community Edition을 사용하면 Time Throttled이 적용되어 attack이 조금 느려질 수 있다는 내용이지만 연습이니 그냥 OK 눌러줍니다.

    하나씩 공격하는 중

    하지만 Password를 찾아도 attack은 멈추지 않습니다. Password를 어떻게 찾을 수 있을까요?

    Length가 다른 것을 확인

    Length가 다른 것을 확인했습니다. 다시 한번 확인해보겠습니다.

    DVWA - SQL Injection - ' union select user, password from users # Injection 구문으로 계정 정보 확인
    pablo의 surname을 Decode 해본 결과 비밀번호가 맞는 것으로 확인되었습니다.

    그리고 이에 대한 로그를 확인하는 방법

    Metasploitable2에 접속합니다.

    cd /var/log/apache2
    tail -30 access.log #로그 마지막의 30줄만 보겠다는 명령어

    Log의 구성은 누가 언제 어디서 무엇을 어떻게로 구성됩니다. (why는 없음)

    자세히 보시면 Password newyork, soccer, Thomas wizard 순으로 Burp Suite가 넣고 있는 게 보입니다.

     

    Brute Force Attack

    : 전수 대입법, 무차별 대입 공격이라고도 하며 모든 가능한 경우의 수를 대입하는 공격이며 시간이 많이 걸리는 것이 단점입니다.

    대응방법

    - 길고 복잡한 패스워드 사용

    - 횟수 제한 및 패스워드 틀림 지정 횟수 초과 시 잠금 설정 > 본인 확인 후 unlock(신분증, 휴대폰 인증 등)

    - Captcha를 활용 : 자동화된 스크립트를 대입하는 것을 차단해줍니다.

     

    Kali Linux의 Medusa를 사용해서 Dictionary Attack 시도

     

    Kali Linux의 Medusa 사용

    sudo ls
    sudo adduser winner#사진 상에는 추가되어 있지만 실습하기 전 추가해주었습니다.
    PW : smile
    cat /etc/passwd #계정들 확인 blackpink, itzy, winner, girlsday

    adduser와 useradd의 차이 : adduser는 Home Directory를 생성, useradd는 계정만 만듦 (Ubuntu와 Debian 계열)

    cf. Red Hat 계열에서는 useradd를 해도 Home Directory를 만들어줍니다. (Home Directory가 없으면 FTP Login이 안됩니다.

    sudo medusa --help ##medusa에서 사용할 수 있는 명령어 모음

    -h : host name

    -u : user name

    -P : password file

    -M : 실행 모듈 ex) ssh, ftp, telnet 등

     

    Dictionary 수정 (John the Ripper에 있는 Dictionary 사용)

    cd /usr/share/john
    sudo vi password.lst

    [ESC, Shift + ;]
    set nu#코드의 순서가 표시됩니다.
    DD#코드가 아니라 지우고 싶은 라인에서 DD를 누르게 되면 줄 전체가 지워집니다.
    [ESC, Shift + ;]
    wq#나가기

    23번에 smile을 추가한 모습

    sudo medusa -h 192.168.5.129 -u winner -P password.lst -M ssh

    성공적으로 smile을 찾았습니다.

     Password를 찾으면 medusa는 멈추게 됩니다.

     

    Dictionary 만들기 실습

     

    숫자 4자리로 구성된 Dictionary 만들기

    sudo crunch 4 4 012345678 -o pw1.txt#4의 길이로 012345678을 이용해서 pw1.txt로 Output한다는 뜻
    less pw1.txt#파일 내용 보기

    8까지 숫자만 사용된 Dictionary 파일 생성

    q#나가기

     

    주의사항으로는 너무 큰 파일을 생성하면 에러 발생의 우려가 있어 500MB 이하의 크기를 권장합니다.

    less charset.lst#파일 내용 보기

    ualpha : 대문자

    lalpha : 소문자

    numeric : 숫자

    lalpha-numeric : 소문자와 숫자의 조합

     

    영어 소문자 4자리로 구성된 Dictionary 만들기

    sudo crunch 4 4 -f charset.lst lalpha -o pw2.txt
    head -30 pw2.txt#맨 위의 30라인을 출력

    tail -30 pw2.txt#맨 아래의 30라인을 출력

     

    특정 문자가 들어가는 패턴을 생성하기(sk뒤에 숫자 2개가 들어가는 패턴)

    sudo crunch 4 4 0123456789 -t 'sk@@' -o pw3.txt
    less pw3.txt

    ' '를 사용하고 @를 넣으면 와일드 문자(아무거나 올 수 있음)로 사용되지만, ' '를 사용하지 않는 경우 아래와 같이 문자가 지정됩니다.

    @ will insert lower case characters  ---> 소문자

       , will insert upper case characters  ---> 대문자

    % will insert numbers                            ----> 숫자

      ^ will insert symbols                             ----> 특수문자

     

    applemoon 뒤에 숫자 세 자리, 특수 문자 한 자리로 구성된 Dictionary 생성

    sudo crunch 13 13 -t applemoon%%%^ -o pw4.txt
    less pw4.txt

     

    Crunch로 만든 Dictionary를 이용해서 Medusa로 공격

    sudo adduser redvelvet
    Sk#4 #비밀번호로 설정

    비밀번호를 입력할 때 커서가 안 움직이는데 자리수를 노출하지 않기 위해서라고 합니다.

    sudo crunch 4 4 -t ,@^% -o pw5.txt#Dictionary 생성

    Medusa로 공격하기

    sudo medusa -h 192.168.5.129 -u redvelvet -P pw5.txt -M ssh -t 10#metasploitable2의 IP Address, -t는 thread를 뜻함

    이렇게 계속 찾다가 제가 설정한 Sk#4의 순서에 오면 멈추게 됩니다. 시간 관계상 기다리지는 않았습니다..

     

    Metasploitable2에서 Log 확인

    cd /var/log
    tail -f auth.log#-f : finishless(실시간 로그 확인으로 Ctrl + c로 중지 됨)

     

    Log를 Kali Linux로 가져가서 분석하기

    sudo cp auth.log /var/www
    cd /var/www
    sudo chmod 777 auth.log#Metasploitable2에서 옮기기

    * Kali Linux에서 새로운 탭을 열어서 진행했습니다 *

    sudo wget http://192.168.5.129/auth.log#Kali Linux로 가져오기

    sudo tail -10 auth.log

    cat auth.log | awk '{print $12,$13,$14,$15}' | sort | uniq -c#sort는 정렬, uniq -c는 중복 제거 후 왼쪽에 count 명령

    .

    .

    .

    echo 11 22 33 44 | awk '{print $4,$3,$2,$1}'

    cat auth.log | awk '{print $5}' | sort -u

    cat auth.log | awk '{print $5}' | awk -F "["'{print $1}' | sort | uniq -c | sort -rn

    명령어만 골라 어떤 명령어가 가장 많이 사용되었는지 확인합니다.

     

    FTP Log 확인하기

     

    * 다시 첫 번째 탭으로 와서 진행됩니다. *

     

    sudo medusa -h 192.168.5.129 -u redvelvet -P pw5.txt -M ftp -t 10

    위에 작성한 점과 차이는 모듈이 ssh에서 ftp로 바뀌었다는 점입니다.

    sudo tail -10 /var/log/vsftpd.log

    sudo cp /var/log/vsftpd.log /var/www

    sudo chmod 777 vsftpd.log

     

    * 다시 두 번째 탭으로 와서 진행됩니다. *

     

    sudo wget http://192.168.5.129/vsftpd.log
    tail -10 vsftpd.log

    cat vsftpd.log | awk '{print $8,$12}' | sort | uniq -c | sort -rn#8번째와 12번째 Column을 골라서 중복 제거하고 내림차순 정렬

     

    파일을 가져오지 않고, Kali Linux에서 Metaexploitable2로 SSH 접속 후 Log 확인

    sudo ssh 192.168.5.129 -l msfadmin

    sudo cat /var/log/vsftpd.log | awk '{print $8,$12}' | sort | uniq -c | sort -rn

    댓글

Designed by Tistory.