FTP(File Transfer Protocal)란?
FTP는 FTP는 TCP/IP프로토콜을 가지고 서버와 클라이언트 사이의 파일 전송을 하기 위한 프로토콜이다.
FTP의 종류
FTP는 FTPS(FTP over SSL), SFTP(SSH File Transfer Protocol), TFTP(Trivial FTP) 들이 있다.
- FTP : 가장 일반적인 FTP방식으로 포트는 21포트를 이용한다.
- FTPS : FTP보다 보안이 강화한 FTP 통신을 하는 방식이다.
- SFTP : SSH(Secure Shell)방식을 이용하여 FTP 보안을 강화한 방식입니다. SSH를 지원하는 서버에서 주로 지원하는 방식입니다.
- TFTP : FTP규약을 단순화 시킨 규약으로 운영체제가 설지최어 있지 않은 서버에서 TFTP를 통해 네트워크 부팅이미지를 내려 받아 부팅하는 방식이다.
FTP - 동작원리
FTP통신은 TCP통신을 하기 때문에, 처음에 3-way handshaking 과정을 거친후 통신을 주고 받는다.
위 그림과 같이 네트워크 21번 포트를 통해서 전송을 제어하기 위한 신호를 주고 받는다. 네트워크 20번 포트를 통해서 실제 데이터 전송에 사용된다.
FTP - 모드
FTP는 데이터(파일)를 전송함에 있어, 수동모드(Passive Mode)와 능동모드(Active Mode) 두가지를 지원한다.
Active Mode 데이터 전송을 할 때 서버는 20번 포트를 사용하고, Passive Mode 데이터 전송을 할 때 서버 1024~65535 사이의 랜덤한 비 특권 포트를 사용한다.
능동모드(Active Mode)
1. FTP서버의 21번 포트로 접속을 시도한다.(사용할 두번째 포트(5151)를 알려준다.)
2. 서버로 부터 ACK로 응답한다.
3. 20번 포트는 클라이언트가 알려준 두번째 포트(5151)로 접속을 시도한다.
4. 클라이언트로 부터 ACK로 응답한다.
이떄 능동모드의 특징이 TCP/IP의 '클라이언트가 서버에 접속을 시도하는 것'이 아니라 '서버가 클라이언트에 접속을 시도한다. '는 것이기 때문에 클라이언트 내부적인요인(방화벽)과 외부적인요인(FTP를 제대로 인지하지 못하는 공유기)으로 FTP가 접속이 제대로 안될 수도 있다.
즉, Active Mode의 경우 클라이언트PC에 방화벽이 설치되어 외부에서의 접속을 허용하지 않는다면 FTP접속은 되지만 이후 데이터채널 연결이 불가능하여 파일을 받을 수 없는 문제가 발생한다.
수동모드( Passive Mode )
1. 클라이언트가 서버의 21번 포트로 접속을 시도 한다.
2. 서버는 ACK 응답과 두번째로 사용할 포트번호(3267)을 클라이언트에게 전송한다.
3. 클라이언트는 다른 포트를 열어 서버가 알려준 포트(3267)로 접속을 시도한다.
4. 서버 포트(3267)은 클라이언트에게 ACK를 전송한다.
수동모드에서는 두번째 data포트로 능동모드에서 사용했던 20번 포트를 사용하지 않고 1024~65535사이의 임의의 비 특권 포트를 사용합니다.
Passive Model의 경우 데이터채널 생성을 위해 클라이언트가 서버에 접속하는 방식이므로 클라이언트 환경에 구애 받지 않고 파일 송수신 가능하다.
단순 FTP 보안 취약점
- FTP Bounce Attack : 제어채널과 데이터채널을 다르게 사용하고 데이터 채널을 생성할 때 목적지를 확인하지 않는 FTP 설계의 구조적 취약점을 이용하는 공격 / 익명 FTP서버를 이용하여 PORT 명령을 조작하여 공격대상 네트워크를 스캔하고 FTP 서버로 하여금 공격자가 원하는 곳으로 데이터를 전송하게 함
- Anonymous FTP : 일반 기업이나 공공기관에서 익명 계정을 허용하면 익명 계정을 사용하여 원격에서 익명 코드ㄹ를 업로드하는 공격
- Sniffing : 평문 전송 취약점을 가지므로 패스워드 노출 및 전송되는 정보 탈취 가능
참고 :
- https://hack-cracker.tistory.com/133