ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 ๊ฐ๊ฐ์˜ ํฌํŠธ ์ƒํƒœ์ด๋‹ค)

     

    https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html

     

     

     

    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

     

    --> ์—ฐ๊ฒฐ ํ•ด์ œ!

    https://gmlwjd9405.github.io/2018/09/19/tcp-connection.html

     

    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 ์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

    ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด 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

    [3] hsp1116.tistory.com/11

    [4] dheldh77.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP-RequestResponse

    .

    ๋Œ“๊ธ€

Designed by Tistory.