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

Address Mask - 덧씌움 (prefix 길이만큼 전부 1, suffix 길이만큼 전부 0)
주소의 총 개수 : NOT(MASK) +1 (기계에게 편한 방법)
첫 주소 : IP Address AND (MASK)
마지막 주소 : IP Address OR[NOT[MASK]]

첫 주소 = 네트워크 주소 -> 라우터에 네트워크 주소가 들어있다.

prefix길이는 라우터에 있음. 라우터는 네트워크 주소로 비교하며 찾음

Block Allocation - ICANN에서 2의 power승만큼 주소를 준다.

ISP가 1000개 주소 요구시 최소 1024개를 준다. -> 2의 power승

Subnetting - 여러 레벨의 계층을 갖는다.

네트워크 주소의 개수 -> 2의 거듭제곱, 서브넷도 2의 거듭제꼽 꼴

만약 14.24.74.0/24에서 하나는 10개 주소, 하나는 60개 주소, 하나는 120개 주소로 총 3개의 subblocks로 나누고 싶다면 가장 큰 주소부터 작은주소 순서로 할당해야 한다.

먼저 120 -> 가장 근접한 2의 power승인 128이므로 32-log2(128) = 25
-> 14.24.74.0/25 ~ 14.24.74.127/25

64 -> 32-log2(64) = 26
-> 14.24.74.128/26 ~ 14.24.74.191/26

16 -> 32-log2(16) = 28
-> 14.24.74.192/28 ~ 14.24.74.207/28

Address aggregation (주소 통합) - 주소 요약, 경로 요약
여러개의 주소를 통합하여 더 큰 블록의 주소가 된다.

This-host address 0.0.0.0/32 -> 자기 자신의 주소
Limited-broadcast address(제한된 브로드캐스트 주소) 255.255.255.255/32
Loopback address 127.0.0.0/8 되돌아오는 주소
private address(사설 주소) 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 169.254.0.0/16 -> 주소가 부족해서 생긴 대안 보통 집 공유기는 192.168.0.0/16을 사용하고 효과는 하나의 사설 망을 만든 것과 같다. 여기서 인터넷 연결을 위해선 NAT(공유기에서 사설 네트워크 주소를 인터넷을 쓸 수 있게 번역해주는 역할)을 사용
Multicast address 224.0.0.0/4

대부분 컴퓨터들이 인터넷에 연결될 수 있는데 반드시 1:1로 자신이 통신에 참여할 필요 X
Network Address Translation(NAT) : 네트워크 주소를 번역해주는 장치
이와 비슷한 개념 VPN(Virtual private network) : Address Translation -> 패킷들의 주소 값을 변환시켜줌(사설망 -> 인터넷)

NAT의 Translation Table 방식
Using One IP Address -> 한쌍의 컬럼으로 사설주소와 인터넷 주소가 매핑되는데 이는 만약 사설망 내 모든 주소가 같은 주소를 요청할 때 되돌아오며 누구것인지 알 수 없어지므로 사용X

Using a pool of IP Address(여러 주소를 사용하는 방식) : 풀 안에 있는 주소들이 같은 주소로 갈 때 다른 걸로 적절히 조정 -> 자원소모가 크므로 좋은 해결책이 아님

Using Both IP Address and Port address : 이는 보편적인 방법으로 IP 값만 비교하는 것이 아닌 IP와 Port 번호 그리고 프로토콜로 검증

포워딩 : 가장 인접한 홉으로 패킷을 보내는 것
포워딩은 표를 기반으로 사용, 네트워크 주소에 따라 어느 홉으로 보낼지 결정

Packet -> Extract destination address -> Search Table -> Next hop

라우팅 테이블은 Prefix의 길이가 가장 큰 순서(구체적인) 부터 시작한다. -> Longest mask matching
거대한 포워딩 테이블을 피하기 위해 계층적으로 구성되어야 한다.

IPv4 - unreliable datagram protocol - best effort delivery service
-> connection less protocol : 패킷이 들어오면 아무리 같은 소스에서 만들어진거라 하더라도 라우터는 신경 안쓰고 독립적으로 처리, 그때 그때 최선의 경로로 보내기 때문에 목적지에 다른 경로로 도착할 수 있음

IPv4의 구조
Version Number(4비트) : 처음은 IPv4인지 IPv6인지를 표시
HLEN(4비트) : 2^4 = 16인데 적어도 20~60 6비트(2^6 = 64)가 필요하다. 즉 부족하므로 4의 배수 단위로 보면 5~15를(20~60) 나타낸다.
ServiceType(8비트) : 어떻게 갈지 정의하는 것인데 안쓴다. -> 그냥 0으로 채워 넣음(But, QoS에서 사용하는 경우도 있다)
Total Length(16비트) : 패킷의 크기(헤더 크기 포함) 0-65535지만 최소 헤더의 길이는 20bytes므로 20~65535
Identitication(16비트) : 패킷의 이름, ID(랜덤값)
Flags(3비트) : 정보를 표시 첫 비트는 만약 쪼개지 말라고 하면 쪼개지 않고 버리게 되는 것 두번째 비트는 내 뒤에 더 있는지 여부 마지막 1비트는 안씀
Fragmentation offset(13비트) : 기준점으로부터 얼마나 떨어져 있는가 패킷을 쪼갰을 때 이어붙이는 정보 -> 시작 바이트 위치, 쪼개질 수 있는 offset 크기는 8의 배수(앞 flag의 3비트 손실 때문)
TTL(8비트) : 패킷의 수명, 라우터는 어디로 내보낼지만 생각 -> 만약 도착지가 2개라 무한 전달되는 상황이 발생할 수 있음. 이 때 전달하는 총 수명을 정해주는 것이 TTL 수명을 다하면 버린다. -> 홉의 개수를 정해주는 것
Protocol : 무슨 종류인가? ex) TCP,UDP, ICMP 등 페이로드의 종류
Header checksum : 페이로드에 대해서는 검증X 헤더만 검증
헤더길이를 16bits인 반으로 쪼개버림 -> ex) 010101... 다 더함 -> 다 더한값을 옆의 다 더한 값으로 뺌 -> 두개 더해서 0이 된다면 같다고 생각, 다르면 100% 오류 -> 버림(오류발생시)
Source IP Address(32bits)
Destination IP Address(32bits)
Options + Padding (0 to 40bytes) : 라우팅 경로 설정하는데 사용, IP 패킷에 있는 경우는 거의 없다 지원 안하면 다 무시

'이론 > 컴퓨터 네트워크' 카테고리의 다른 글

네트워크 층(4)  (2) 2023.03.20
네트워크 층(3)  (0) 2023.03.20
네트워크 층(2)  (0) 2023.03.13
네트워크 층(1)  (0) 2023.03.08

+ Recent posts