FTP(File Transfer Protocol)
파일을 주고 받기 위해 사용되는 대표적인 프로토콜
- OSI 계층상에서 7Layer(애플리케이션 계층)에 위치한다.
사용 포트
- 제어 포트: 21번
- 데이터 전송용 포트
- 액티브 모드인 경우: 20번
- 패시브 모드인 경우: 1024번 이상의 임의의 포트
두가지 모드
- 디폴트는 Active 모드이며, Passive 모드로의 변경은 FTP 클라이언트가 결정한다.
명령어
- ABOR : 현재 전송 중인 파일 전송 중단
- CWD : 작업 디렉터리 변경
- DELE : 원격지 파일 삭제
- LIST : 원격지 파일 목록
- MDTM : 파일의 수정 시간 확인
- MKD : 원격 디렉토리 생성
- MODE : 전송 모드 변경
- NLST : 원격 디렉터리 목록
- PASV : Passive모드로 변환
- PORT : data 포트 열기
- PWD : 작업 디렉토리 표시
- QUIT : 연결 종료
- RETR : 원격지 파일 가져오기
- RMD : 원격지 디렉터리 제거
- SIZE : 파일 사이즈 리턴
- STOR : 원격지 파일 저장
- USER : 사용자명 전송
공격 시나리오
- 바운스 공격(Bounce Attack)
- 익명 FTP 서버를 경유하여 호스트 스캔
- 네트워크 포트 스캐닝을 위해 사용
- FTP 바운스 공격을 통해서 전자메일을 보내는 공격을 Fake Mail이라고 함
- tFTP Attack
- 인증 절차를 요구하지 않기 때문에 설정이 잘못되어 있으면 누구나 해당 호스트에 접근하여 파일을 다운로드 할 수 있음
- FTP보다 간단함
- Anonymous FTP Attack
- 보안 절차를 거치지 않은 익명의 사용자에게 FTP 접근 허용
- 익명 사용자가 서버에 쓰기 권한이 있을 때 악성코드 생성 가능
- FTP 서버 취약점: wuftp 포맷 스트링 취약점 및 각종 BOF
- 스니핑: 기본 평문 전송 → sftp 로 보안
- Brute Froce
접근 통제
- /etc/ftpusers: 파일에 적용된 사용자에 대한 FTP 접근 제한
- /etc/hosts.deny: 특정 IP의 접근 제한
- /etc/hosts.allow: 특정 IP의 접근 허용