SMTP 클라이언트와 서버는 두 개의 주요 요소를 갖고 있음
MUA : 메시지를 작성하고 메시지를 봉투에 담음
MTA : 메일을 인터넷 상으로 전송

이메일 형식은 한줄 띄는 것으로 헤더와 바디를 구분, 바디의 끝은 CRLT .(마침표)
base64(비효율적) -> 6비트씩 잘라서 8비트씩 인코딩 한글 -> 인코딩(base64), 2비트씩 늘어남
이메일 내용이 다 텍스트므로 조작도 쉽다.

MUA ex)Outlook는 SMTP로 동작, 웹으로 동작시에는 HTTP

SMTP 통신 모델
송신자 -> MUA -> Local Email Spool(발신 안되면 보낼 대기메일함(버퍼)) -> SMTP Client -> SMTP Server(송신자의 메일 서버) -> SMTP Server(수신자의 메일 서버) -> Server File System -> POP/IMAP Server(MAA) -> MUA -> 수신자

SMTP의 명령
HELO: SMTP 세션 초기화 요청
MAIL FROM: 송신자의 이메일 주소
RCPT TO: 수신자의 이메일 주소
DATA: 메시지 바디
QUIT: SMTP 연결 종료
RSET: 이메일 전송 취소
VRFY: 수신자에게 메일박스의 유효성 검증을 요청
EXPN: 수신자에게 메일 리스트 확인 요청
HELP: 수신자가 Help 정보 전송을 하도록 함
NOOP: 서버가 SMTP 수신자와 통신을 검증하도록 함

세션 생성과 종료
처음 TCP 연결 후 HELO 전송 -> 250(Extension List) -> 파일 전송(끝 .(마침표)) -> QUIT -> 221

메일 포워딩 : SMTP 서버는 자신에게 해당하지 않은 이메일을 받아들인 후에 적절한 목적지로 재전송할 수 있음
메일 게이트웨이 : SMTP 서버는 다른 이메일 시스템에 적합한 형태의 TCP/IP 이메일을 번역할 수 있음
메일 릴레잉 : SMTP는 특정한 조건이 만족되면 한 서버에서 다른 서버로 메일을 릴레이 할 수 있음
주소 디버깅 : VRFY 명령은 클라이언트가 송신자에게 수신자로 메일을 전송하지 않은 채로 수신자의 주소를 검증하도록 요구할 수 있음
메일 주소 확장 : EXPN 명령은 메일 리스트를 확장할 수 있음

SMTP 보안을 위한 기능은 없음 - 기밀성(평문), 무결성(검증), 인증 기능 X

'이론 > 해킹 및 바이러스' 카테고리의 다른 글

Email(1)  (0) 2023.04.03
FTP(3)  (0) 2023.04.03
FTP(2)  (0) 2023.03.20
FTP(1)  (0) 2023.03.14
인터넷과 웹의 개요(2)  (0) 2023.03.13

MUA(Mail User Agent) 사용자가 메일을 송수신하기 위해 사용하는 프로그램
MTA(Mail Transfer Agent) MUA로부터 전달받은 메일을 다른 MTA로 전송하는 서버 프로그램 (목적지는 수신자의 MTA)
MTA는 SMTP를 이용해 다른 MTA로 메일을 전달함 (SMTP 서버)
MDA(Mail Delivery Agent) MTA에서 메일을 받아 사용자의 메일함에 저장하는 프로그램
MAA(Mail Access Agent) 메일 서버에서 메일을 가져오는 프로그램

DNS 레코드
DNS(Domain Name System)는 인터넷에서 각 웹사이트 도메인 정보 보유
DNS 레코드 : DNS에 도메인에 관한 설정을 하기 위한 텍스트 파일들
MX 레코드: 메일 교환 레코드(Mail eXchanger record)
-메일을 수신할 서버를 지정해주는 값
-MX레코드를 입력하지 않을 시 상대방이 보낸 메일을 받아볼 수 없음

SMTP(Simple Mail Transfer Protocol) : 인터넷 전자우편을 보낼 때 사용하는 응용 계층에서 동작하는 표준 프로토콜
-Email을 보내기 위해서 TCP 25번 포트를 사용
-상대 서버에 지시하기 위해 DNS의 MX레코더가 사용

POP3(Post Office Protocol Version 3) : 원격 서버에서 TCP/IP 연결을 통해 Email을 읽어오는데 사용되는 응용 계층 프로토콜
-원격 서버에 접속해 Email을 읽은 후 원격 서버의 Email을 삭제(삭제모드)
-TCP 110번 포트를 사용해 메일 서버에 접속해 저장된 메일을 내려 받는 MAA 프로그램

특징
-항상 연결 상태가 아닌 네트워크 접근에 유리
-사용자는 메일의 로컬 복사본을 검색하고 오프라인으로 읽을 수 있음
-서버에 읽지 않은 메일만 보관

IMAP4 (Internet Mail Access Protocol version 4) : 메일을 내려 받아도 메일 박스에 원본을 계속 저장

특징
-온라인 및 오프라인에서도 유효함
-오프라인 작업 시 MUA 측에서 트랜잭션을 저장하고 서버에 연결되면 Commit 한 것으로 반영
1-메일은 메일 서버에 항상 저장되고 로컬 복사본을 검색한 시점에 서버에서
제거할 수 있음
-메일 상태를 중앙에서 관리할 수 있고 여러 단말을 통해서 동일한 email을
읽을 수 있음
-메일 소프트웨어와 관계없이 메일을 관리할 수 있으며 메일의 헤더만 검색
해서 텍스트 부분만 가져오기 등의 작업이 가능함
-IMAP4는 프로토콜의 복잡성과 보안 문제를 개선함

SMTP 동작 - 아스키코드만 보내짐(MIME 으로 풍성해짐), 파일 -> 텍스트로 모두 변환(1.2~1.3배 커짐 즉, 대용량에 좋지 않음)

이메일은 텍스트 파일임
봉투: 봉투에는 송신자 주소와 수신자 주소 그리고 다른 정보가 포함
메시지: 메시지에는 메일 헤더와 메일 바디가 포함
메일 헤더: 메일 헤더에는 송신자, 수신자, 그리고 메시지 주제와 다른 정보가 정의됨
메일 바디: 메시지의 실제 내용이 포함

'이론 > 해킹 및 바이러스' 카테고리의 다른 글

Email(2)  (0) 2023.04.03
FTP(3)  (0) 2023.04.03
FTP(2)  (0) 2023.03.20
FTP(1)  (0) 2023.03.14
인터넷과 웹의 개요(2)  (0) 2023.03.13

FTP 명령
USER username
PASS password
LIST 현재 디렉토리 리스트를 리턴
CWD dirname 디렉토리 변경
RETR filename 특정 파일 전송
STOR filename 파일을 서버에 저장
EPRT |1|ip|port| Active 모드 세팅
PASV(EPSV) Passive 모드 세팅
DELE 서버에서 파일 삭제
QUIT 종료

응답 코드 중 앞자리에 따른 의미
1,2,3 : 긍정적 4,5 : 부정적

Active 모드
FTP 클라이언트는 1023보다 큰 랜덤 포트와 바인드[bind]한 후 EPRT 명령을 사
용해 FTP 서버로 랜덤 포트를 전달
FTP 서버가 FTP 클라이언트에 데이터 연결을 시작할 때, 서버는 송신 포트 20
과 바인드하고 클라이언트가 보내준 랜덤 포트를 사용해 FTP 클라이언트에 연


EPRT |1|ip|port|
EPRT |2|ipv6|port|

Passive 모드
FTP 클라이언트는 “EPSV/PASV” 명령을 서버로 보내고, 서버가 1023보다 큰
랜덤 포트와 바인드하도록 하고 그 결과 랜덤 포트를 반환하도록 함
데이터 연결을 시작할 때, FTP 클라이언트는 랜덤 포트를 통해서 FTP 서버에
연결하고 그 포트를 통해 데이터를 반환
EPSV  Server 응답: 229 Entering Extended Passive Mode (|||1868|)
PASV  Server 응답: 227 Entering Passive Mode (h1,h2,h3,h4,p1,p2)
※ IP:port (6 bytes)  h1,h2,h3,h4,p1,p2
예) 140.113.17.215:45678 140,113,17,215,178,110

방화벽이란 IP, Port 정보를 보고 차단할 수 있는 기능 -> 필터
내부 -> 외부 다 허용, 외부 -> 내부 다 차단

Active 모드에서 클라이언트 측의 NAT/방화벽이 설치된 경우 -> Passive 모드로 풀 수 있다.

Passive모드에서 서버측의 NAT/방화벽이 설치된 경우 -> Active 모드로 풀 수 있다.

양측 모두 NAT/방화벽 사용시 문제가 생긴다.

이땐 프록시를 이용하면 된다.

프록시는 대신 처리함으로 효율성과 보안에 좋다. 이러한 프록시는 vpn 사용시 활용된다.

즉 방화벽 위에 프록시를 두면 프록시를 통해 통신할 수 있다.

FTP 연결은 (명령 연결 및 데이터 연결 모두) 평문으로 전달하므로 네트워크 스니핑에 취약하여 암호화가 필요하다.

해당 문제를 해결할 암호화 방법은 2가지로, 먼저 SSH를 사용하는 방법이 있다.

SSH를 적용한 방법은 secure-FTP(sftp)라고 하고, 전송 중 명령 연결 및 데이터 연결 모두가 암호화가 되므로 매우 낮은 전송 속도를 보인다.

TLS를 적용한 방법은 명령 연결만 전송 중 암호화가 이루어지므로 전송 속도가 훨씬 우수하다.

FXP(File eXchange Protocol) : 한 호스트의 사용자가 한 서버에서 다른 서버로 파일 전송을 수행

NVT(Network Virtual Terminal) : 공통언어, 대표적으로 아스키코드가 있다.

IFTP - UDP를 이용하여 빠르게 송수신, 69번 포트 사용
SFTP - 전송구간 암호화 기법을 사용하여 기밀성 제공

FTP 보안 취약점
Bounce 공격 : 직접 공격X, 쿠션을 주고 공격, 예로 포트 스캐닝이 있다. 익명 FTP 서버를 경유하여 호스트를 스캔한다. 이것을 메일에 적용하면 Fake mail이 된다.
IFTP 공격 : 인증절차 자체가 없으므로 누구나 다운로드 할 수 있음
Anonymous FTP 공격 : 익명 사용자가 서버에 쓰기 권한이 있을 때 악성코드 생성이 가능하다.
FTP 서버 취약점 : Wu-FTP 포맷 스트링 취약점 및 각종 버퍼 오버플로 공격
스니핑 : ID, PASSWORD 입력 후 접속 시도 시 암호화가 이루어지지 X
브루트포스 공격 : 무작위 대입법 공격

보안 대책
Anonymous : 권한 설정 잘 하기, 불필요한 항목 제거
IFTP : tfpt가 불필요한 경우 secure mode 운영

'이론 > 해킹 및 바이러스' 카테고리의 다른 글

Email(2)  (0) 2023.04.03
Email(1)  (0) 2023.04.03
FTP(2)  (0) 2023.03.20
FTP(1)  (0) 2023.03.14
인터넷과 웹의 개요(2)  (0) 2023.03.13

클라이언트는 서버에게 port번호를 먼저 알려줌


FTP 존재 이유 : 초기에는 언어 체계가 달라 소통이 힘들었음, 서로 소통을 돕기 위해 나온 것
FTP는 정확하게 전송하기 위해 TCP를 사용하고 서버 - 클라이언트 모델을 사용
FTP 클라이언트 프로그램을 이용하여 FTP 서버에 접속 후 파일을 송수신
초기 FTP 세션은 암호화X - 인증 정보가 평문으로 전달 -> 스니핑으로 정보 유출 위험

FTP는 포트를 2개 사용(명령 포트, 데이터 포트)

명령 포트(상시 동작)
21번 고정
USER, PASS, GET 등 FTP 명령을 FTP 서버에 전송하기 위한 포트

데이터 포트(전송할 때만 켜짐)
데이터포트는 전송모드에 따라 변경
Active Mode(서버 -> 클라이언트)는 포트 20번 사용
Passive Mode(클라이언트 -> 서버)는 FTP 서버가 자신의 데이터 포트를 결정하여 FTP 클라이언트에 포트번호를 보내줌

FTP 클라이언트의 데이터 포트는 클라이언트가 결정

명령 채널과 데이터 전송 채널이 독립적으로 동작
클라이언트가 명령 채널을 통해 서버에게 파일을 요구하면 서버는 데이터 전송 채널을 통해 데이터를 전송
서버의 명령 채널은 21번, 데이터 전송은 20번 포트

PI(Protocol Interpreter) : 제어 명령 송/수신하는 역할 (port : 21)
DTP(Data Transmission Process) : 데이터를 송/수신하는 역할 (port : 20)

'이론 > 해킹 및 바이러스' 카테고리의 다른 글

Email(1)  (0) 2023.04.03
FTP(3)  (0) 2023.04.03
FTP(1)  (0) 2023.03.14
인터넷과 웹의 개요(2)  (0) 2023.03.13
인터넷과 웹의 개요(1)  (0) 2023.03.07

+ Recent posts