EASY7

FTP 취약점 및 보안대책 & 실행 오류 본문

보안 공부/취약점 실습

FTP 취약점 및 보안대책 & 실행 오류

E.asiest 2019. 8. 6. 00:29

FTP 연결 실습

File Transfer Protocol 서버와 클라이언트 간의 파일 전송 규약

Active 모드와 Passive모드가 있으며 각각의 모드에서 2개 또는 2개 이상의 포트가 작동한다.

21번 포트는 접속할 때 쓰이는 포트이며, 20번 또는 1024 이후의 포트는 DATA 전송용 포트이다. 

Active 모드의 문제점은 TCP/IP의 특징인 '클라이언트가 서버에 접속'이 아니라 '서버가 클라이언트에 접속'라는 것이다. 이 때문에 클라이언트 PC에 방화벽이 설치되어있거나 공유기의 설정으로 막아둔다면 FTP접속이 불가하다는 문제점이 있다. 이런 경우 FTP접속은 되지만 데이터 목록을 받아오지 못하는 문제점이 있다. 방화벽에는 인바운드 정책과 아웃바운드 정책이 있다. 아웃바운드에 더 강력한 정책을 가지고 있기 때문에 막혀있을 가능성이 높다.

그래서 Passive모드에서는 FTP서버가 연결할 포트번호를 알려주어 클라이언트가 접속하는 방법을 취한다. 서버의 Unknown port(1024~65535)를 방화벽에서 모두 열어두어야한다는 또다른 문제점을 낳았다.

 

FTP 종류 : FTP, vsftp(Very Secure FTP), sFTP(Secure FTP), TFTP

 


FTP에서 쓸 수 있는 명령어들.. (http://joobumi.egloos.com/v/11006)

quote pasv : Passive mode로 전환 (윈도우)

passvice : Passive mode로 전환(kali)

ls, ls -al 

cd 

quit : ftp 종료

hash : 파일전송과정 보여주기 진행사항이 #(해시)로 나타난다. 테스트에서는 너무 빨라서 #이 안보인다.

 

bin : 파일 전송 형식을 아스키에서 바이너리로 바꿈(안깨지고 좋은)

ascii : 파일 전송 형식을 바이너리에서 아스키로 바꿈

get /etc/passwd (C:\Users\User 에 passwd 파일 다운로드) 

get passwd (해당 디렉터리로 가서 파일 다운로드 받기 위가 안될때도 있다.)

 

** cat 명령어는 사용불가!!!

 

** FTP Port 명령이란?

Port 204,152,155,1,9,17

Active 모드에서 클라이언트가 자신의 데이터 포트에 대해 알려줄 때 Port 명령으로 임의의 포트를 지정할 수 있다.  뒤에 숫자 두 개는 포트 계산에 사용된다. 숫자가 a와 b라고 할 때, 256*a+b가 전송 포트가 된다. 위의 예시에서는 256*9+17=2321이다. (참고 : https://anow.tistory.com/253 )

사진 출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mmarine&logNo=70098938002

 

 

!오류 발생시 참고!

더보기

FTP 연결이 거부된다면?

 -> service vsftpd start

 

 

 

 

다음과 같이 Root접속이 안된다면?

root로 접속은 설정이 필요하다. 이 파일은 FTP 접속을 불허하는 아이디들을 나타낸다.

nano /etc/ftpusers

#root (각주처리하기)

 

cannot change directory: /home/cent1 접근 불가인 경우.

allow_ftpd_full_access on해주기

getsebool -a | grep ftp
setsebool allow_ftpd_full_access on
service vsftpd restart

 

 

passive모드가 안된다면?

 

음.. 윈도우에서는 passive모드를 해도 20번 포트 이용했었는데

칼리에서 "passive"명령하니까 됩니다!

윈도우에서는 왜 안되는 것이였을까요? 

 

 

 

 

Put 명령어가 막힌다면?

1) ftp 설정에서 put을 막을 경우

put C:\aaa.py -> permission denied

write_enable=YES -> service vsftpd restart

 

2) Could not create file.-> 해당 디렉터리에서 쓸 권한이 없다는 뜻

cd /home/사용자이름 에서 put해볼것!

 

 

 

 

 

!FTP 취약점!

*인증 시 평문으로 보이는 아이디, 패스워드

 

*파일 전송 시 암호화하지 않음

 

 

*anonymous ftp 취약점

사용자 아이디 : anonymous / 패스워드 : 공백 으로 로그인이 되며 시스템 정보를 획득할 수 있다.

또한 쓰기 권한이 있을 경우 공격도 가능하다.

*FTP 바운스 공격.

Active Mode의 취약점.

Active mode에서 FTP 서버의 파일을 요청하면 클라이언트에서 파일을 받을 목적지 IP, Port를 지정해서 전달해줌(PORT 명령) 이때 IP, Port를 요청한 클라이언트가 아닌 임의의 주소로 지정할 수 있는데 이러한 FTP설계의 취약점을 이용함)

명령채널과 파일 전송 채널이 별도로 존재한다. 이에 따른 취약점이 존재. 실제 파일을 전송받는 클라이언트가 바뀔 수 있다.

제3의 익명 FTP서버를 이용하여 공격대상의 포트를 스캐닝한다.

FTP서버가 데이터 채널을 생성할 때 목적지를 검사하지 않는 FTP 설계의 구조적 취약점 이용

https://www.thesecuritybuddy.com/vulnerabilities/what-is-ftp-bounce-attack/

익명 FTP 서버를 이용하여 그 FTP 서버를 경유하여 호스트를 스캔한다. FTP Port 명령어를 이용한다. FTP 서버를 통해 임의의 네트워크의 접속을 릴레이하여 수행한다. 네트워크 포트를 스캐닝하는 데 사용한다.   

 

*metasploit을 이용한 ftp 해킹

https://pjya0321.github.io/penetration%20testing/vsftp2.3.4/

 

*bruteforcing 패스워드 크랙(https://bob3rdnewbie.tistory.com/195)

metasploit을 이용해서 bruteforcing하였다. 패스워드 파일과 user파일에 간단하게 4개씩 넣었지만 그냥 첫번째로 찾아버렸네.. 

 

 

 

 

 

 

보안 대책 

1. anonymous 계정 삭제

/etc/passwd 파일에서 userdel ftp 

 

2. ftp 설정파일에서 anonymous 불허

/etc/vsftpd.conf 에서 

anonymous_enable =NO

 

(참고 : https://montble86.tistory.com/84)

http://joobumi.egloos.com/v/11006

 

보안대책 참고

https://mazinga83.blogspot.com/2015/10/ftp.html


 

'보안 공부 > 취약점 실습' 카테고리의 다른 글

와이파이 WEP 패스워드 해킹 실습  (0) 2019.08.07
bwapp - sql injection  (0) 2019.08.06
Metasploit 무차별 대입 공격  (0) 2019.08.05
Metasploit Scanning  (0) 2019.08.05
SQL injection  (0) 2019.08.04
Comments