-
FORENSICS ์์ํ๊ธฐ - ๋คํธ์ํฌ ๊ธฐ์ด 02 :: ํ๋กํ ์ฝ ์์ธSECURITY/FORENSICS 2020. 9. 13. 21:35
1. TCP (Transmission Control Protocol)
: ์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํ๋ ๋ฐ์ดํฐ ํต์ ํ๋กํ ์ฝ์ ์ผ์ข .
(๋ง ๊ทธ๋๋ก ์ฐ๊ฒฐํด์ผ ํต์ ํ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค.)
์ธ๊ณ ํต์ ํ์ค์ผ๋ก ๊ฐ๋ฐ๋ OSI ๊ณ์ธต ๋ชจํ์์ 4๋ฒ์งธ ๊ณ์ธต์ธ ์ ์ก ๊ณ์ธต (Transport Layer) ์์ ์ฌ์ฉํ๋ ๊ท์ฝ์ผ๋ก, ํ์ ๊ณ์ธต์ธ ์ธํฐ๋ท ๊ณ์ธต์์ ์ฌ์ฉํ๋ IP ์ ์ฎ์ด์ TCP/IP ๋ผ๊ณ ๋ง์ด ํํํ๋ค.
- ์ ์ก ๊ณ์ธต์ IP ์ ์ํด ์ ๋ฌ๋๋ ํจํท์ ์ค๋ฅ๋ฅผ ๊ฒ์ฌํ๊ณ ์ฌ์ ์ก ์๊ตฌ ๋ฑ์ ์ ์ด๋ฅผ ๋ด๋นํ๋ ๊ณ์ธต.
(์ ์ก ๊ณ์ธต ํ๋กํ ์ฝ์ ์ด์์ฒด์ ๋ด๋ถ ๊ธฐ๋ฅ์ผ๋ก ๊ตฌํ๋๋ฏ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์์ ๊ณ์ธต์์ ์์คํ ์ฝ์ด๋ผ๋ ํ๋ก๊ทธ๋จ ํธ์ถ ๋ฐฉ์์ ์ด์ฉํด์ผ ํ๋ค.)
๋ฐ์ดํฐ๋ฅผ ์ธ๊ทธ๋จผํธ(Segment)๋ผ๋ ๋ธ๋ก ๋จ์๋ก ๋ถํ ํด ์ ์กํ๋๋ฐ, ํต์ฌ์ ์์ ์ ์ผ๋ก, ์์๋๋ก ์ค๋ฅ ์์ด ๊ตํํ๋ ๊ฒ์ด๋ฏ๋ก ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ค.
(๊ทธ๋์ TCP ํจํท ์ด๋ผ๊ณ ๋งํ๋ ์ฌ๋๋ ์์ง๋ง, ์ด๋ ํ๋ฆฐ ํํ์ด๋ค..)
์ ์ก๋๋ ๋ธ๋ก์ ํฌ๊ธฐ๋ ๋คํธ์ํฌ ๋ถํ ์ ๋, ์๋์ฐ ํฌ๊ธฐ ๋ฑ์ ์ํฅ์ ๋ฐ์ผ๋ฉฐ, ๊ฐ๋ณ ํฌ๊ธฐ๋ฅผ ์ง์ํ๋ค.
๋ํ, ์ธ๊ทธ๋จผํธ๋ฅผ ํ๋์ ๋จ์๋ก ๊ฐ์ฃผํ์ฌ ์์ ๋์ ์ธ๊ทธ๋จผํธ์ ์ค๋ ค ์ ์ก๋๋ ๋ฐ์ดํฐ์ ๋ฐ์ดํธ ๊ฐ์๋ฅผ ์์์ ๋ฐ์ํ๋ค.
2. 3 way handshaking / 4 way handshaking
3 way hanshaking ์ TCP ์์ ์ฅ์น๊ฐ ์ฐ๊ฒฐ์ด ์ ๋์๋์ง ํ์ธํ๋ ๊ณผ์ , ์ฆ ์ฐ๊ฒฐ์ ์ค์ (Connection Establish)ํ๋ ๊ณผ์ ์ด๋ค. ๋ฐ๋ฉด 4 way handshaking ์ ๊ทธ ์ฐ๊ฒฐ์ ํด์ (Connection Termination) ํ๋ ๊ณผ์ ์ด๋ค.
2.1. 3 way hanshaking
์์ชฝ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ก์์ ํ ์ค๋น๊ฐ ๋์๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ณ , TCP ์ ํน์ง์ธ ์์ ์ ์ด๊ณ ์ค๋ฅ ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด ์ฐ๊ฒฐ์ ํ์ธํ๊ณ ํ ๋๋ฅผ ๋ค์ง๋ ๊ณผ์ ์ด๋ค.
client A ์ server B ๊ฐ ์๋ค๊ณ ํ์. (A ๊ฐ B ์๊ฒ ์ฐ๊ฒฐ ์์ฒญ)
- SYN(Synchronize Sequence Number, 000010) : ์ฐ๊ฒฐ ์ค์ -> Sequence Number ์ ๋๋ค์ผ๋ก ์ค์ , ์ธ์ ์ ์ฐ๊ฒฐํ๋ ๋ฐ ์ฌ์ฉ, Sequence Number ์ ์ก
- ACK(Acknowledgement, 010000) : ์๋ต ํ์ธ -> ํจํท์ ๋ฐ์์์ ์๋ฏธ. Acknowledgement Number ํ๋๊ฐ ์ ํจํ์ง ๋ํ๋
๊ณผ์ ์ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1) A -> B : SYN ํจํท
2) B -> A : ์์ฒญ์ ์๋ฝํ๋ค๋ ACK + SYN flag ๊ฐ ์ค์ ๋ ํจํท
3) A -> B : ACK
--> ์ฐ๊ฒฐ๋จ!
(์๋ ๊ทธ๋ฆผ์์ ์ข์ฐ์ ์๋ ๋นจ๊ฐ ๊ธ์จ๋ A์ B ๊ฐ๊ฐ์ ํฌํธ ์ํ์ด๋ค)
2.2. 4 way handshaking
ํต์ ํ ์ฐ๊ฒฐ์ ํด์ ํ๋ ๊ณผ์ ์ด๋ค.
์์ ์์ ๊ฐ์ด, client A ์ server B ๊ฐ ์๋ค๊ณ ํ์. (A ๊ฐ B ์๊ฒ ์ฐ๊ฒฐ ํด์ ์์ฒญ)
- FIN(Finish, 000001) : ์ฐ๊ฒฐ ํด์ -> ์ธ์ ์ข ๋ฃํ ๋ ์ฌ์ฉ. ๋์ด์ ์ ์กํ ๋ฐ์ดํฐ ์์์ ์๋ฏธ
๊ณผ์ ์ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1) A -> B : FIN (B ๊ฐ FIN ํ๋๊ทธ๋ก ์๋ตํ๊ธฐ ์ ๊น์ง ๊ณ์ ์ฐ๊ฒฐ ์ ์ง)
2. B -> A : ACK (ACK ํ๋๊ทธ ๋นํธ๋ฅผ 1๋ก ์ค์ ํ ์ธ๊ทธ๋จผํธ๋ฅผ ์ ์ก. ๋ฐ์ดํฐ ์ ์ก์ด ๋จ์์์ผ๋ฉด ์ด์ด์ ์ ์ก)
3) B -> A : FIN (B ๊ฐ ํต์ ๋๋ฌ๊ณ ์ฐ๊ฒฐ ์ข ๋ฃ ์์ฒญ์ ์ต์ข ํฉ์)
4) A -> B : ACK
--> ์ฐ๊ฒฐ ํด์ !
3. UDP
: ๋น์ฐ๊ฒฐํ ์๋น์ค๋ฅผ ์ง์ํ๋ ๋ฐ์ดํฐ ํต์ ํ๋กํ ์ฝ์ ์ผ์ข .
(๋ ผ๋ฆฌ์ ์ธ ๊ฐ์ํ์ ์ฐ๊ฒฐ์ด ํ์์์ -- No Hanshaking)
UDP ์ญ์ ์ธ๊ณ ํต์ ํ์ค์ผ๋ก ๊ฐ๋ฐ๋ OSI ๊ณ์ธต ๋ชจํ์์ 4๋ฒ์งธ ๊ณ์ธต์ธ ์ ์ก ๊ณ์ธต (Transport Layer) ์์ ์ฌ์ฉํ๋ ๊ท์ฝ์ด๋ค.
๋ฐ์ดํฐ ์ ์ก ๋จ์๋ ๋ฉ์ธ์ง๋ก, ํต์ ๊ณ์ธต๋ณ ๋ฐ์ดํฐ ๋จ์์์ ์ธ๊ทธ๋จผํธ์์ ์ฐจ์ด๋ฅผ ํ์ธํ ์ ์๋ค.
(www.ktword.co.kr/abbr_view.php?nav=2&m_temp1=436&id=294)
ํค๋๊ฐ ๋จ์ํ์ฌ ํค๋ ์ฒ๋ฆฌ์ ๋ง์ ์๊ฐ์ ์ํ์ง ์๋๋ค.
๋ํ, ๋ฉ์ธ์ง๊ฐ ์ ๋๋ก ๋์ฐฉํ๋์ง ํ์ธํ์ง ์๊ณ (ํ์ธ์๋ต x), ์์ ๋ ๋ฉ์ธ์ง์ ์์๋ฅผ ๋ง์ถ์ง ์๊ณ (์์์ ์ด x , TCP ํค๋์ ๋ฌ๋ฆฌ ์์๋ฒํธ ํ๋๊ฐ ์์), ํ๋ฆ ์ ์ด๋ฅผ ์ํ ํผ๋๋ฐฑ์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ ์ค๋ฅ ๊ฒ์ถ ๋ฐ ์ ์ด๋ฅผ ํ์ง ์๋๋ค.
๋๋ฌธ์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅธ ์๋๋ก ์ ์กํ ์ ์๋ค.
4. TCP ์ UDP ์ ์ฐจ์ด์ ๊ณผ ์ฌ์ฉ ๋ถ์ผ
TCP ์ UDP ์ ์ฐจ์ด์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ฐ๋จํ ๋งํ๋ฉด TCP ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ณด๋๋์ง ๊ผผ๊ผผํ ํ์ธํ๋ ๊ฒ์ด๊ณ , UDP ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ค๋ ์๋์๋ณด๋ ๊ฒ์ด๋ค.
TCP ๊ฐ ์ ๋ขฐ์ฑ์ ๋ณด์ฅํ๋ ๋งํผ HTTP, Email ์๋น์ค, File transfer ๋ฑ์์ ์ฌ์ฉํ๊ณ ,
UDP ๊ฐ ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์ด๋ ๋งํผ DNS, ์ค์๊ฐ ๋์์ ์๋น์ค์์ ์ฌ์ฉํ๋ค.
5. request / response
ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ ํต์ ์, ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ request(์์ฒญ)์ ๋ณด๋ด๊ณ ์๋ฒ๋ response(์๋ต)์ ๋ณด๋ธ๋ค.
request ๋ฉ์์ง ๊ตฌ์ฑ:
<๋ฉ์๋><๊ณต๋ฐฑ><URI><๊ณต๋ฐฑ><HTTP๋ฒ์ > request ๋ผ์ธ. ๋๋ต์ ์ธ request ๋ด์ฉ ๋ฑ <ํ๋๋ช > : <ํ๋๊ฐ>
.
.
.๋ฉ์์ง ํค๋, ํด๋ผ์ด์ธํธ ์ ๋ณด, ์ฌ์ฉ์ธ์ด ์ข ๋ฅ ๋ฑ request ๋ถ๊ฐ ์ ๋ณด <๋ฉ์์ง ๋ณธ๋ฌธ> POST ๋ฉ์๋๋ก ์ ์ก ์ ์ก์ ๋๋ ๋ฐ์ดํฐ response ๋ฉ์์ง ๊ตฌ์ฑ:
<HTTP ๋ฒ์ ><๊ณต๋ฐฑ><status ์ฝ๋><๊ณต๋ฐฑ><์๋ต๋ฌธ๊ตฌ> status ๋ผ์ธ, ์๋ต์ ์ํ ๋ฑ <ํ๋๋ช > : <ํ๋๊ฐ>
.
.
.๋ฉ์์ง ํค๋, ์๋ฒ ์ ๋ณด, ์ฌ์ฉ ์ธ์ด ์ข ๋ฅ ๋ฑ response ๋ถ๊ฐ ์ ๋ณด <๋ฉ์์ง ๋ณธ๋ฌธ> ์์ฒญ์ ์๋ต์ผ๋ก ์ ์ก๋๋ ๋ฐ์ดํฐ (ํ ์คํธ, ๋ฐ์ด๋๋ฆฌ ๋ฑ๋ฑ) HTTP Request Method
HEAD ํค๋ ์ ๋ณด ํ๋ (๋ฌธ์ ์ ๋ณด ์์ฒญ) GET ์ค์ ๋ฌธ์ ์์ฒญ (URL ํ์์ผ๋ก ์๋ฒ ์ธก ๋ฆฌ์์ค ์์ฒญ. URI ์ ํฌํจ๋์ด ์ ์ก๋จ) POST ๋ฐ์ดํฐ ์ก์ (์ฃผ๋ก ๋ง์ ์์ ๋ฐ์ดํฐ. ๋ฉ์์ง ๋ณธ๋ฌธ์ ํฌํจ๋์ด ์ ์ก๋จ) PUT ์๋ฒ์ ํ์ผ ์นํ ํน์ ์์ฑ (์ ์ฒด ๊ฐฑ์ ) PATCH ์๋ฒ์ ํ์ผ ์ผ๋ถ ๊ฐฑ์ DELETE ์๋ฒ์ ํ์ผ ์ญ์ OPTION ๋ฉ์๋ ๋ฌธ์(์ง์) TRACE ์์ฒญํ ๋ฆฌ์์ค์ ์์ ๊ฒฝ๋ก CONNECT (์์ฒญํ ๋ฆฌ์์ค์ ๋ํด) ์๋ฐฉํฅ ์ฐ๊ฒฐ ์์ฒญ HTTP Response Code
์๋ต ๋์ญ ์๋ต ์ฝ๋ ์ ์ ๋ณด์ ์ก ์์ ์๋ต 1XX ์ฑ๊ณต 2XX 200: OK (์์ฒญ ์ฑ๊ณต์ ์ผ๋ก ์ํ)
201: Created (PUT ๋ฉ์๋์ ์ํด ์๊ฒฉ์ง ์๋ฒ์ ํ์ผ ์์ฑ)๋ฆฌ๋ค์ด๋ ์ 3XX ํด๋ผ์ด์ธํธ ์์ฒญ ์๋ฌ 401: Unauthorized (์ธ์ฆ ํ์ํ ํ์ด์ง ์์ฒญ ์)
404: Not found (์์ฒญํ ํ์ด์ง ์์)
405: Method not allowed (ํ์ฉ๋์ง ์์ http method ์ฌ์ฉ ์)์๋ฒ ์๋ฌ 5XX 500: Internal server error (๋ด๋ถ ์๋ฒ ์ค๋ฅ) . References
[1] https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4
[2] https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html
[4] dheldh77.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP-RequestResponse
.
'SECURITY > FORENSICS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ