* CSRF (Cross Site Request Forgery: 교차 사이트 요청 위조)
- 공격 대상: Web Server
- Client의 권한을 이용해서 위조된 요청을 Web Server에게 보내는 공격
- 대표적 사례: 자동 댓글 달기, 좋아요 눌러지기 비밀번호 변경, 회원 탈퇴 요청, 회원 승급 요청 등
- 사용자들이 원하지 않았지만 스크립트의 소스 안에 공격자의 의도가 포함되어 있는 상태로 웹서버에 요청이 보내짐
실습) Metasploitable2에 DVWA에 접속
123456으로 패스워드 변경
admin/password로 로그인이 안된다. --> admin/123456으로 변경됨
F12 개발자 모드를 누르면 디버거에 <form>~</form> 부분이 패스워드 변경 부분인 것을 확인할 수 있다. --> 복사
메모장에 붙여 넣고 CSRF.html로 저장해준다.
수정 --> 주소표시줄을 복사해서 #을 지우고 붙여 넣기
value="" 입력
보기 편하게 input type은 password에서 text로 변경해준다.
CSRF.html을 internet explorer로 열어본다.
위와 같은 창이 뜨며 패스워드를 korea로 바꿔본다.
change를 누르면
이런 화면이 나온다.
admin/korea 로그인이 되는 것을 확인할 수 있다.
- 공격자는 Client의 권한을 이용해서 Web Server에 위조된 요청을 보낸다.
- 댓글, 관리자에게 전달되는 내용 등
실습) Burp Suite를 활용한 Dictionary Attack
Burp Suite를 켠다. Intercept는 off
gordonb 계정 로그인을 한번 실패한다.
HTTP history에서 로그인 시도를 실패한 내역을 확인할 수 있다. GET 요청 -> 일반적으로 POST로 보냄
첫째 줄을 우클릭하여 send to intruder
1234를 제외한 $~$부분은 Clear를 클릭하여 해제시킨다.
payloads에서 simple list 선택
password.txt를 Load 한다.
Start Attack을 한다.(데모 버전은 Time Throatle 적용)
1234 로그인 실패했던걸 계속해서 반복해서 하는 것 -> 패스워드를 찾아도 멈추지 않는다.
길이가 다른 abc123 이것만 패스워드인 것을 알 수 있다.
Response의 길이가 다른 것이 정답
' union select user, password from users #으로 다른 계정을 찾아 그 계정의 패스워드도 찾아보자
1337과, pablo 계정도 해본다.
1337 비밀번호 charley
pablo 계정의 패스워드 letmein인 것을 확인할 수 있다.
* 로그 보는 방법
cd /var/log/apache2
tail -30 access.log
실습) Brute Force 실습
admin 계정 패스워드를 1234로 바꿔준다.
앞에서 했던 HTTP history 내역 중 하나를 Intruder에 보낸다.
password 부분을 $1111$ 로 남겨놓는다.
payloads에 type을 Numbers로 설정한 뒤 From 1111~9999로 1씩 증가시키게 입력해준다.
공격 시작
1234만 길이가 다른 것을 확인할 수 있다. ----> 1234가 패스워드
* Brute Force
- 전수 대입법, 무차별 대입 공격이라고도 한다.
- 모든 가능한 경우의 수를 대입하는 공격
- 시간이 많이 걸리는 것이 단점이다.
- 대응방법
1) 길고 복잡한 패스워드 사용
2) 횟수 제한 및 패스워드 틀림 횟수 초과 시 잠금(lock) 설정 ----> 본인 확인 후 unlock (신분증, 휴대폰 인증 등)
3) Captcha를 활용: 자동화 돈 스크립트를 대입하는 것을 차단해준다.
* Kali Linux의 Medusa를 사용해서 Dictionary Attack 시도
metasploitable2에 계정 winner/smile이라고 만들어준다.
* adduser와 useradd의 차이점 -> adduser는 홈 디렉터리 생성, useradd는 계정만 만든다 (ubuntu와 debian계열)
$ sudo medusa --help
-h: host name
-u: user name
-P: password file
-M: 실행 모듈 ex) ssh, ftp, telnet 등
* Dictionary 수정
$ cd /usr/share/john
$ sudo vi password.lst
dd --> 한줄 삭제
. --> 앞 명령 반복
123456 위에 주석들을 다 삭제해준다.
$ sudo medusa -h 192.168.5.129 -u winner -P password.lst -M ssh
----> 패스워드를 찾으면 멈춤
패스워드 smile을 찾고 멈췄다.
* 딕셔너리 만들기 실습
$ cd /usr/share/crunch
$ sudo man crunch
1) 숫자 4자리로 구성된 딕셔너리를 만들기
$ sudo crunch 4 4 0123456789 -o pw1.txt
0000-9999 ---> 10000 줄
$ less pw1.txt
주의사항) 너무 큰 파일을 생성하면 에러가 발생 우려 ex) 최대 500Mb 이하로 생성해야 한다.
2) 소문자 4자리로 구성된 딕셔너리를 만들기
$ less charset.lst --> 파일 내용 보기
ualpha: 대문자, lalpha: 소문자, numeric: 숫자, lalpha-numeric: 소문자와 숫자의 조합
$ sudo crunch 4 4 -f charset.lst lalpha -o pw2.txt
$ head -30 pw2.txt --> 위에서 30줄만 보기
$ tail -30 pw2.txt --> 밑에서 30줄만 보기
head --> old , tail --> new
3) 특정 문자가 들어가는 패턴을 생성하기 (sk뒤에 숫자 2개가 들어가는 패턴)
$ sudo crunch 4 4 0123456789 -t 'sk@@' -o pw3.txt
' '를 사용하고 @를 넣으면 와일드 문자(아무거나 올 수 있음)로 사용되지만,
' '를 사용하지 않는 경우 문자가 지정된다.
@ will insert lower case characters --> 소문자
, will insert upper case characters --> 대문자
% will insert numbers --> 숫자
^ will insert symbols --> 특수문자
4) skinfosec뒤에 숫자 세 자리, 특수문자 한자리로 된 딕셔너리를 만들려면?
$ sudo crunch 13 13 -t skinfosec%%%^ -o pw4.txt
실습) Crunch로 만든 딕셔너리를 이용해서 Medusa로 공격하기
- Meta2에 girlsday / Sk#4
- 딕셔너리를 만들고 Medusa로 공격하기
(너무 많다..)
* Metasploitable2에서 로그 확인하기
$ cd /var/log
$ tail -f auth.log ---> -f: finishless (실시간 로그 확인)
실시간으로 공격 로그가 찍힌다.
* 로그를 Kali Linux로 가져가서 분석하기
$ sudo cp auth.log /var/www
$ cd /var/www
$ sudo chmod 777 auth.log
Kali에서
$ sudo wget http://192.168.5.129/auth.log
$ sudo tail -10 auth.log
$ cat auth.log | awk '{print $12,$13,$14,$15}'| sort | uniq -c
uniq -c 는 중복을 제거하고 왼쪽에 개수를 표시하는 명령
sort는 정렬하라는 명령
$ echo 11 22 33 44 | awk '{print $4,$3,$2,$1}'
cat auth.log | awk '{print $5}'
cat auth.log | awk '{print $5}' | sort -u
* 명령어만 골라서 어떤 명령어가 가장 많이 사용되었는지 확인
$ cat auth.log | awk '{print $5}' | awk -F"[" '{print $1}' | sort | uniq -c | sort -rn
* FTP 로그 확인하기
- Kali에서 medusa로 FTP에 Dictionary Attack
- Meta2에서 FTP로그 확인
sudo tail -10 /var/log/vsftpd.log
sudo cp /var/log/vsftpd.log /var/www
sudo /var/www
sudo chmod 777 vsftpd.log
- Kali의 2번째 탭에서 다운로드
$ cat vsftpd.log | awk '{print $8,$12}' | sort | uniq -c | sort -rn
실습) 다른 로그도 위와 같은 방법으로 확인
* 파일을 가져오지 않고, Kali에서 Meta2로 SSH 접속 후 로그 확인
$ sudo ssh 192.168.5.129 -l msfadmin
$ sudo cat /var/log/vsftpd.log | awk '{print $8,$12}' | sort | uniq -c | sort -rn
(앞에서 실습했던것 보다 이 방법이 조금 더 빠르다.)
'보안' 카테고리의 다른 글
AWK, Argus IDS 로그 분석 (0) | 2022.05.18 |
---|---|
Ubuntu Server에 웹서버(Gnuboard) & 웹 방화벽(Modesecurity) 설치 (0) | 2022.05.17 |
웹 서버, 게시판 소스 + 웹 방화벽 설치 (0) | 2022.05.16 |
방화벽, IDS, Suricata (1) | 2022.05.13 |
SQL 인젝션 공격 자동화, 보안 솔루션 (0) | 2022.05.12 |
댓글