-
DVWA - CSRF, Burp Suite - Dictionary Attack, Kali Linux -Medusa, Crunch - Brute ForceSecurity 2022. 5. 17. 20:18
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하면 로그인됨
CSRF
공격자는 Client의 권한을 이용해서 Web Server에 위조된 요청을 보냅니다.
댓글, 관리자에게 전달되는 내용 등
OWASP 2013년 버전에는 8위였으나, 2017년 버전에서는 순위 밖으로 내려감 (대응 방법이 많이 나와있어서 심각 수준이 내려감)
Burp Suite를 이용한 Dictionary Attack
pablo, 1234로 접속한 기록을 확인해줍니다.
아래의 Payload Positions의 내용을 보면 형광색이 칠해져 있는 부분을 볼 수 있는데 password의 내용을 제외하고 모두 블럭을 씌어주어 우측의 가지런한 네 개의 버튼 중에 Clear를 눌러주어 형광색을 없애줍니다.
만약 실수로 다른 내용을 Clear 했어도 Add를 누르면 되니 너무 걱정하지 않으셔도 됩니다.
Payload Sets를 확인해줍니다. Payload type를 Simple list로 바꿔줍니다.
아래의 Payload Option 확인 후 Load를 클릭해줍니다.
그러면 첨부파일을 넣을 수 있는데 Dictionary 예시 파일인 password.txt 파일을 Open 해줍니다.
Open 하면 Payload Options [Simple list]에 Dictionary의 내용이 채워지게 되고, Start attack을 눌러줍니다.
Community Edition을 사용하면 Time Throttled이 적용되어 attack이 조금 느려질 수 있다는 내용이지만 연습이니 그냥 OK 눌러줍니다.
하지만 Password를 찾아도 attack은 멈추지 않습니다. Password를 어떻게 찾을 수 있을까요?
Length가 다른 것을 확인했습니다. 다시 한번 확인해보겠습니다.
그리고 이에 대한 로그를 확인하는 방법
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#나가기
sudo medusa -h 192.168.5.129 -u winner -P password.lst -M ssh
Password를 찾으면 medusa는 멈추게 됩니다.
Dictionary 만들기 실습
숫자 4자리로 구성된 Dictionary 만들기
sudo crunch 4 4 012345678 -o pw1.txt#4의 길이로 012345678을 이용해서 pw1.txt로 Output한다는 뜻
less pw1.txt#파일 내용 보기
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를 뜻함
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
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
'Security' 카테고리의 다른 글
PCRE, awk, Shell Script, Log Check - 정규 표현식, awk, 쉘 스크립트, 로그 확인 (0) 2022.05.18 Ubuntu - Web Server (GNU Board), Web Firewall (Modsecurity) (0) 2022.05.17 Linux E325 : ATTENTION 해결하기 (0) 2022.05.17 SAST, DAST - Sparrow (0) 2022.05.16 VMware - Ubuntu에 Suricata 설치하기 (0) 2022.05.13