- 3 way hand shake을 이용한 연결 수립
- Control Connection을 이용한 로그인
- Control Connection을 이용한 모드 설정 및 Data Connection 연결
- 4 way hand shake을 이용한 연결 종료
3번에서 결정하는, 파일을 전송하는 방법으로 두 가지의 모드가 있다.
Active와 Passive 방식이다.
각 모드에 따라 연결 방법과 사용 포트가 달라진다.
서버가 클라이언트에게 Data Connection의 연결을 요청하는 방식이다.
클라이언트의 포트는 M, 서버의 포트는 20을 사용하며,
서버쪽에서 요청하는 것이므로 방화벽 설정을 주의해야 한다.
모드를 설정할 때 클라이언트가 PORT를 전송하는데
이 때 전송되는 PORT 패킷에는 클라이언트가 Data Connection으로 사용할 포트가 담겨있다.
서버는 이 포트로 Data Connection 연결을 요청하고, 파일을 송수신할 때 클라이언트는 53701 포트를 사용하게 된다.
Active Mode와 반대로 클라이언트가 서버에게 Data Connection을 요청하는 방식이다.
클라이언트의 포트는 N, 서버의 포트는 M을 사용한다.
모드를 설정할 때 클라이언트가 PASV를 전송하면
서버는 응답으로 사용할 포트 M을 알려준다.
이제 클라이언트는 서버의 M 포트로 Data Connection 연결을 요청한 후 파일을 송수신한다.
취약점은 많지 않다.
1.평문 전송
평문으로 전송되기 때문에 스니핑에 취약하다.
2.Login Brute Force
연이은 로그인 시도가 가능하기 때문에 브루트 포스를 시도할 수 있다.
3.FTP Bounce Attack
Data Connection과 Control Connection을 따로 생성하며, Data Connection 연결시 대상 IP를 검사하지 않으므로 발생하는 취약점이다.
Active Mode에서 클라이언트가 PORT 명령어로 정보를 전달하면, 서버는 해당 주소로 Data Connection을 생성하는데, 만약 이 주소를 임의로 변경하더라도 서버는 해당 주소로 연결을 시도한다.
이 결과에 대한 반응으로 Indirectly 포트 스캐닝에 활용할 수 있으며 연결에 성공한다면 임의 파일을 전송하는 익스플로잇도 가능하 다.