[yummyKit] 2 day

5 분 소요

※주의사항※
연구 목적으로 작성된 것이며, 허가 받지 않은 공간에서는 테스트를 절대 금지합니다. 악의적인 목적으로 이용할 시 발생할 수 있는 법적 책임은 자신한테 있습니다. 이는 해당 글을 열람할 때 동의하였다는 것을 의미합니다.


요즘 OS개발에서 헤어나오지 못하는 야미예여... 도대체 웨!!! 외않되?! ㅜㅠ

또한 yummyKit도 조큼씩 고쳐가며..(저의 코드가 1년전 코드이다보니 나닛... 내가 왜 이렇게 썩은 알고리즘을 쓴 것 인지 이해가 도통 안되는 부분이 넘나 많더라구여!!) Makefile을 만들어 쉘스크립트를 실행시키면 뙇!! 실행시킬 수 있는 바이너리가 등장하게 만들었어여!!! 허나 쓰레드를 돌리면 바로 Segmentation Fault란다 야미야~ 호롤로로롤~ 하고 놀리네여... 얼마나 고쳐야하니 늉늉..



다 부셔버리게따 투타타타 샷건쾅쾅!!

저번 포스팅에서 너무 큰 틀만 설명한 것 같아 오늘은 데이터 혹은 코드와 함께 진행하는 재밌는 네트워크를 하려고 해요!! 이야~ 재미지겠다~

야미의 글을 처음 읽는 분을 위해 귀띔을 드리자면... 저는 그림판 충이라 모든 그림을 그림판으로 작업해여!! 정말 쓸데없지않나여!? 신문물을 받아들여야하는데 머리가 못따라주네여... 물논 익숙해지면 잘 하겠져..? 두려운 것...


저번 포스팅에서 드린 pdf파일 기억나시나여?! 대충 보셨다구여? 뭐가 뭔지 모르겠는데 그냥 다운만 받아두셨다구여?! 이번에 상세히 설명드려볼게여!!


IP

자랑스런 컴공과라면 IP(Internet Protocol) 주소는 많이 들어보셨을거예요. 예전에 게임할 때에는 "야!! 인터넷 안돼!!" 라고 했는데 이제는 "야!! 아이피 안잡히는데?!" 라고 말하는 상태가 되어버렸어요.

우리가 웹 혹은 TCP/UDP통신을 이용하기 위해 기본적으로 있어야하는 IP주소는 국제 표준화 기구인 ISO에서 제정한 'OSI 7계층 모델'에 자세히 기재 되어있어요. 제가 드린 pdf파일을 보시면 IP Header와 함께 무엇을 규정하는지 자세히 나와있지 않나여!? 3계층인 Network계층(TCP/IP 모델에서는 IP계층이라고 부른답니다!)에서 사용되어지는 프로토콜이지요!


그렇다면 전 포스팅에서 언급했던 ARP는 어느 계층일까여? IP는 3계층인데 ARP는 IP와 MAC주소를 매핑해주는 프로토콜이니까 2계층이아닐까여?!

아주 좋은 추측이지만 아쉽게도 ARP는 3계층이예여!! 왜일까여.. 왜죠..? 왜때문에 정해지지도 않은 IP를 매핑시켜주는 ARP가 IP와 같은 계층에 있을까요!?


2계층은 Data-Link계층(TCP/IP 모델에서는 Ethernet계층이라고도 불러요!)은 1계층인 Physical계층에서의 물리적 장치를 컴퓨터의 고유 번호인 MAC주소와 매핑시켜 주는 것이예요. 그렇기 때문에 ARP는 3계층으로 쫒겨나버렸죠!(아니 진짜 쫒겨난건 아니예여... 그냥 비유가 그렇다는 거지여ㅜㅠㅜ 혼란을 드렸다면 죄송함다...쭈굴...) 그래서 저도 어디가서 ARP를 2.5계층이라고 설명해버려요! 그래야 뭔가 말이 맞는 것 같지 않나여?!


MAC

그런데 제가 전 포스팅에서 MAC주소(Media Access Control Address)에 대해 말씀을 안드린 것 같아요...

방금 전에 말씀 드린 것처럼 MAC주소는 컴퓨터의 고유 번호라고 했는데, 사람이 태어나면 주민번호가 있듯이 컴퓨터 외의 모든 장비에는 각자의 고유 번호를 가지고 있어요. 바코드나 QR코드를 보아도 각자의 고유 정보를 가지고 있잖아요?! 시리얼 넘버라고도 부르고, 라이센스 넘버라고도 부르는 그 고유 번호를 NIC(Network Interface Controller)에서는 MAC주소라고 불러요. 인터넷 통신을 하기 위해 있는 NIC는 보통 LAN카드라고도 부르는 하드웨어예요.


갑자기 막 용어들이 또 양파마냥 까도까도 나오지여?! 넓디 넓은 컴공의 세카이~~

그렇다면 LAN(혹은 Wireless LAN)과 MAC주소를 잇는 것은 2계층, MAC주소와 IP를 잇는 것은 2.5계층, IP는 3계층!!

뭔가 순서대로 착챡 기차놀이 하듯이 연결되어 있으니 머리에 쏙쏙 들어오지않나여?! 쏘옥쏙쏙! 방울! 빙글빙글! 방울! 여기저기 내방울! 어라 이거 노래 모르시나여? 넵... 전 아재가 되었구여~ 아기공룡 둘리 노래인데... ㅠㅜㅠ 둘리는 아시져...? 쭈굴...



늙지 않았어여ㅜㅠㅜ 제가 나이를 먹는게 아니라 그냥 시간이 빨리 지나갈 뿐이에여...흉흉

그럼 4계층에는 무엇이 있을까여!! 눈치가 빠르신 분이라면 아까부터 제가 TCP/IP 모델을 따로 언급했을 때 아셨으리라 믿어여! 바로 TCP가 있는 계층이예요!


TCP

TCP(Transmission Control Protocol)는 연결 지향성 프로토콜로, 신뢰성이 보장돼요. 컴퓨터에서 말하는 신뢰성이 보장된다는 것이란, 오류 발생이 적고 데이터의 손실이 현저히 적으며(완전히 없다고 할 수는 없어요.) 데이터의 중복도 배제시키고 순차적인 전송으로 순서도 정확히 보내는 성질을 의미해요. 만약 신뢰성이 없다면 어떨까여!? 간혹 인터넷에서 이미지가 ? 로 표시되거나, 이쁘게 꾸며놓은 UX/UI의 페이지가 이상하게 하이퍼텍스트만 있던 적이 있지 않나여?! 물론 인터넷 속도가 느려서 그렇다고는 하지만, 그로 인해 패킷을 다 받지 못해 보이지 못할 때 나타내는 현상이라구여!!


그런데 TCP까지 설명하면 UDP가 나와야하고... 서버와 클라이언트의 통신이 나오며... 소켓이 등장하고... 그렇게 6계층의 SSL, TLS와 같은 소켓통신의 보안... 넵 전 ARP Spoofing을 주제로 할테니 아직은 저것과 관련이 없답니다! 나중~에 프로그램 브리핑하다가 튀어나올 때가 있을테니 그 때 같이 설명드릴게여!!


그리고 우리가 사용하는 웹 브라우저를 위한 웹 프로토콜인 HTTP !! 너무나 많이 들어보시거나 직접 보시지 않으셨나여?! 전 포스팅에서도 이경문 선생님의 사이트를 소개할 때에도 나왔던 것 같아요! http://urlurlurl.urlurl(넵 없는 사이트입니당 꺌꺌~~)에서 나오는 URL의 맨 앞부분!! 저것입니다!!(그러고보니 티스토리는 아직 http더라구여... 왜 ssl로 갈아타시지 않는 것인지...)


자... 이제 선행 학습이 얼추 마무리 된 것 같으니...(야미님 뭔가 대충대충 넘어가시지 않나여? 사퇴하세여!!!) 제가 대충하는게 아니라 네트워크는 정말정말 시작하면 끝이없어여... ㅜㅠ 네트워크는 네트워크 포스팅에서 자세히할게여!! 죄송해여 ㅜㅠ여긴 그래두 제 yummyKit 프로그램 브리핑과 ARP Spoofing이 주제이다 보니 훅~훅~ 넘어가게되네영 ㅜㅠ


Http Get Header example


제가 포스팅 서두에 그림판을 말씀 드린 이유가 바로 이것이예여!! 이게 바로 한땀한땀 정신이랍니다!! 사실 이 작업두 1년 전 처음으로 네트워크 및 보안을 접했을 때 저도 공부하면서 정리한거라... 지금 보니 뭔가 무지 없어보이네여 ㅜㅠㅜ 이렇게 저의 치부를 드러내며 포스팅하기란... 부끄부끄


네이버를 들어갈 때 Wireshark로 캡쳐한 패킷에서 Hex Dump부분만 캡쳐하여 가져온 후 각 헤더의 멤버별로 빨간 색으로 끊어주고, 그 아래에서 설명하고 있는 그림이예요.

이 순서는 전부 규정되어 있는 것이라 헤더의 기본 멤버 순서는 변하지 않는답니다!(각 헤더 말미에 Options 혹은 Data가 붙었을 때 순서를 잘 찾아야 한다는 단점도 있지요!)


Destination이란 어디로 가야할지의 목적지가 기재되는 곳이예요. 그렇다면 Source라는 것은 어디서 출발하는지의 출발지가 기재되는 곳이겠죠?!

헤더를 왜 굳이 저렇게 다 따로따로 나눠서 보여주고, 설명하려는지 이해가 안되신다구여?! 왜냐니여!! 제가 브리핑 하는 것은 ARP Spoofing이니까여!! 바로 저 패킷들을 변조해야 스푸핑을 할 수 있단 말이예여!!


그런데 지금 위 그림은 HTTP에 대한 패킷을 캡쳐하여 설명하고 있는데, 우리는 ARP가 궁금한거 아니었나여!? 넵!! 네이버는 우리에게 넘나 친숙한 포털사이트이기 때문에 먼저 이렇게 돌아간다~ 라고 설명드리려고 보여드렸어여!!!

자 그럼 정녕 필요한 ARP를 보러 가시져!


ARP Request & Reply example


우왕 Request와 Reply를 모두 표현해주었어여!! 1년 전의 야미를 쓰담쓰담.. pdf파일에서 ARP Header를 보시면 어떻게 구성되어 있는지 더 자세히 나와있지만, 전 실전 속에서의 모습이 더 기억에 남더라구여! 사진처럼 찰칵! 하구 말이예요 ㅎㅎ

여기서도 나타나는 ARP 프로토콜이 2.5계층이라는 사실은 바로바로 Ethernet Frame을 지나(참고로 OSI 7계층의 Data-Link 부분은 TCP/IP모델에서 Ethernet이라 한다고 말씀 드렸는데, 여기서는 패킷을 "Frame"이라고 불러요. 참 명칭 외우기 어렵져?ㅜㅠ 제가 정한거 아니니까 저한테 뭐라하시지 마세여...쭈굴...) ARP Datagram(혹은 Packet)에 Protocol Type 멤버가 0x0800인 것!! 이 Hex값은 IP를 의미하는 코드거든요!! 그렇기에 2.5계층이라고 부를 수도 있는거죠! 아니 이게 이렇게 깊은 뜻이!



여러분 이거 아시나여!? 저 정말 아재되는거 아니져!? 서경석님과 이윤석님이 "웃으면 복이 와요" 라는 코너의 최고 유행어였는데... 모르시면 제가 아재할게영 ㅜㅠㅜ


자 그럼! 이제! 전 포스팅에서 Spoofing에 대한 시나리오를, 이번 포스팅에서 ARP 패킷 헤더의 값을 분석해 보았으니, 다음 포스팅에서 무엇을 할지 알아보고 오늘은 여기까지 해보아요!!

뭔가 짧은 것 같으면서도 적당한 것 같지 않으신가여?! 아닌가여... 넹... 왜냐면 다음 포스팅에서는 이제 코드 리뷰 및 코드를 직접 짜보도록 할 거니깐여!! 꺄륵 코딩을 넘나 재밌지 않나여?! 머리를 하이퍼큐브처럼 마구 굴리는 그느낌!! 하앍...

다음에 보아영!!!


Check out the yummyhit’s website for more info on who am i. If you have questions, you can ask them on E-mail.

카테고리:

업데이트:

댓글남기기